самый короткий тип записи в Модуле-2

Домашнее задание 1. Приведите пример самого короткого типа записи в Модуле-2. («Самый короткий» означает наименьшее количество лексем.)

Определение EBNF для ЗАПИСЬ

RecordType = RECORD FieldListSequence END.

FieldListSequence = FieldList {“;” FieldList}.

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

Что я придумал, так это ... я близок

RecordType = RECORD, FieldList, END.

person john r    schedule 26.09.2015    source источник


Ответы (1)


Это недопустимый синтаксис M2 для любого диалекта M2.

Самый короткий список полей — это одно объявление поля:

field : SomeType

Таким образом, самое короткое определение типа записи:

TYPE Foo = RECORD
  bar : Baz
END;

Это справедливо для всех диалектов.

ОБНОВИТЬ:

Как упоминалось в моем комментарии, чтобы изучить EBNF, я рекомендую изучить схемы железных дорог и сравнить их с EBNF. Вот ссылка на синтаксические диаграммы Модулы-2 специально для 4-го издания книги Вирта "Программирование в Модуле-2", она же PIM4.

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

Диаграмма типов записей находится по адресу:

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

person trijezdci    schedule 29.09.2015
comment
Тем не менее, вы действительно должны сделать свою домашнюю работу самостоятельно ;-) Возможно, подсказка, если у вас есть трудности с EBNF, нарисуйте несколько схем железных дорог, чтобы визуализировать синтаксис. Вы можете найти скрипт для рисования синтаксических диаграмм M2 в моем репозитории bitbucket (ищите по никнейму). - person trijezdci; 29.09.2015