Я делаю домашнее задание, в котором я был обеспечен фрагмент текста под названием «EBNF Описание Modula-2 Синтаксис» и вопрос спрашивает:Кратчайший REPEAT заявление Modula-2
«Приведите пример кратчайший REPEAT
в Modula-2. («Самый короткий» означает меньшее количество лексем.) «
Я извиняюсь за то, что не смог предоставить текст, он находится на странице, защищенной паролем, однако текст как говорится в названии. В основном это то, что я придумал, и я хочу знать, работает ли это.
Описание EBNF из REPEAT
и это после заявлений как таковой:
RepeatStatement = `REPEAT` StatementSequence `UNTIL` Expression.
StatementSequence = Statement {“;” Statement}.
Statement = [Assignment | ProcedureCall | IfStatement | CaseStatement |
WhileStatement | RepeatStatement | LoopStatement |
ForStatement | WithStatement | `EXIT`
Итак, это описание я мог просто сказать:
REPEAT EXIT.
и быть сделано? или мне абсолютно необходимо использовать описание UNTIL
и/или полное описание StatementSequence
EBNF?
TL; DR - остальная часть заявления EBNF void, если я только что скажу EXIT
?
Но тем не менее, используя это описание абсолютов при использовании EBNF для написания кода, не следует ли мне теперь использовать полный оператор StatementSequence = Statement {";" Statement} .' и т. Д.? –
@ RyanTibbetts: это означает, что 'StatementSequence' - это один оператор, необязательно сопровождаемый точкой с запятой и другим выражением. Так что ** абсолютно верно **, чтобы иметь ** отдельный оператор ** заменить слово 'StatementSequence' ... –
Хорошо круто! Спасибо за вашу помощь marc, я получил больше работы по этому заданию, поэтому продвигаться вперед с этим пониманием очень поможет. * Upvote + * –