1

家庭作业 1. 举一个Modula-2 中最短记录类型的例子。(“最短”意味着最少的词位。)

RECORD的EBNF定义

RecordType = RECORD FieldListSequence END.

FieldListSequence = FieldList {“;” FieldList}.

FieldList = [IdentList ";" Type | CASE [Ident] ";" 
Qualident OF Variant  {"|" Variant} ELSE FieldListSequence]END].

我想出的是......我接近了吗

RecordType = RECORD, FieldList, END.
4

1 回答 1

2

这不是任何 M2 方言的合法 M2 语法。

最短的字段列表是单个字段声明:

field : SomeType

因此,最短的记录类型定义是:

TYPE Foo = RECORD
  bar : Baz
END;

这对所有方言都有效。

更新:

正如我在学习 EBNF 的评论中提到的,我建议学习铁路图并将其与 EBNF 进行比较。这是一个指向 Modula-2 语法图的链接,专门用于 Wirth 的书“Modula-2 中的编程”的第 4 版,又名 PIM4。

http://modula-2.info/m2pim/pmwiki.php/SyntaxDiagrams/PIM4NonTerminals

记录类型的图表位于:

http://modula-2.info/m2pim/pmwiki.php/SyntaxDiagrams/PIM4NonTerminals#recordType

于 2015-09-29T14:03:08.530 回答