我正在读一本VDM++语言手册。我的问题是,在某些情况下,他在语句的末尾使用";“,而在同一语句中的某个地方,他没有使用";”。
下面是示例
public Top : () ==> Elem
Top() ==
return (hd stack);
if test
then OpCall()
else return FunCall()发布于 2013-03-23 18:01:47
分号在VDM中是分隔符,而不是Java和C中的终止符。因此,您需要使用分号,其中两个内容是顺序的,例如两个定义或两个语句。但是,如果“块”中只有一样东西,则不需要分隔符。
因此,如果后面有另一个定义,则第一个示例可能需要尾随分号,但如果"Top“是类/模块中的最后一个定义,则不需要。
第二个示例在OpCall()之后不需要分号,因为它是"then“子句中的单个语句。如果if/then/else后面跟着另一个语句,那么在FunCall()之后可能需要一个分号,而不是其他语句。
话虽如此,VDMJ解析器是容错的,并将允许在某些地方使用虚假的分号,即使它们严格地不是必需的。
https://stackoverflow.com/questions/15578521
复制相似问题