1

我正在阅读 VDM++ 语言手册。我的问题是在某些情况下他使用“;” 在语句的末尾和同一语句的某处,他没有使用“;”。

下面是例子

public Top : () ==> Elem
Top() ==
return (hd stack);


if test
then OpCall()
else return FunCall()
4

1 回答 1

1

分号是 VDM 中的分隔符,而不是 Java 和 C 中的终止符。因此,您需要分号,其中两个事物是按顺序排列的,例如两个定义或两个语句。但是如果“块”中只有一件事,则不需要分隔符。

因此,如果后面有另一个定义,您的第一个示例可能需要尾随分号,但如果“Top”是类/模块中的最后一个定义,则不需要。

您的第二个示例在 OpCall() 之后不需要分号,因为它是“then”子句中的单个语句。如果此 if/then/else 后跟另一个语句,则在 FunCall() 之后可能需要一个分号,否则不需要。

话虽如此,VDMJ 解析器是宽容的,将允许在某些地方使用虚假的分号,即使它们不是严格要求的。

于 2013-03-23T10:01:47.267 回答