VDM ++语言分号

时间:2013-03-22 19:37:20

标签: vdm++

我正在阅读VDM ++语言手册。我的问题是,在某些情况下,他使用“;”在声明的最后和同一声明的某个地方,他没有使用“;”。

以下是示例

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


if test
then OpCall()
else return FunCall()

1 个答案:

答案 0 :(得分:1)

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

所以你的第一个例子可能需要尾部分号,如果有另一个定义,但是如果“Top”是类/模块中的最后一个定义则不需要。

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

话虽如此,VDMJ解析器是宽容的,并且在某些地方会允许虚假的冒号,即使它们是严格不需要的。