Stone语言为了简化语法,省去了if语句及while语句的条件表达式两侧的括号,并允许用户省略可以省略的句尾分号。如果同一行中写有多句语句,各句句尾的分号则不能省略。此时,分号用于区分不同的语句。 此外,{}括起来的代码块中最后一条语句的句尾分号能够省略。也就是说,如果句尾直接跟着},就不必使用分号。 { x = 1; y = 2 } 在上例中,y = 2之后没有分号。分号并不是一句语句结束的标识,而是代码块中语句之间的分隔符。因此,下面的代码块中含有3条语句,而不是2条: { x = 1; y = 2; } 其中第三条应该被视为一条空语句。空语句指的是没有内容的语句。 Stone语言中,行末的句尾分号也能省略。也就是说,如果该语句之后是换行符,就不需要另外添加分号。因此,空行也应被视为一句空语句,只不过省略了句尾的分号。 x = 1 y = 2 在上面的代码中,第1与第3行之间的空行是一句空语句。 由于Stone语言的句尾分号能够省略,换行与否将会大有不同。和Java等语言不同,此时换行符不会被简单地当作空白符处理。因此,Stone语言的表达式和语句不能中途换行。只有语句的句尾,或if、while等语句的语句体之前的{后能够换行。}与else之间,或else与{之间不能换行。例如: if i % 2 == 0 // error { even = even + i } // error else //error { odd = odd + i } 第1行的换行出现在{之前,这是不允许的。第4行没有将} else {写在一起,同样是错误的。只有下面的格式才是唯一正确的写法。 if i % 2 == 0 { even = even + i } else { odd = odd + i } 只不过,else部分的换行规则,也许不能符合所有人的喜好。 上述限制尽管增加了代码书写的难度,但如果允许代码在各种情况下换行,语言处理器的实现就会变得复杂。本书为了保持实现的简洁性,对能够换行的情况做了尽可能多的限制。