syntax - 最短 REPEAT 语句 Modula-2

标签 syntax ebnf modula-2

我正在做一项家庭作业,其中有一段标题为“Modula-2 语法的 EBNF 描述”的文本片段,问题如下:

“给出 Modula-2 中最短的 REPEAT 语句的示例。(‘最短’意味着词位数量最少。)”

很抱歉无法提供文本,它位于受密码保护的页面上,但文本如标题所示。基本上这就是我的想法,我想知道这是否有效。

REPEAT 及其以下语句的 EBNF 描述如下:

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 如果我只是说EXIT,那么 EBNF 语句的其余部分将无效?

最佳答案

嗯,EBNF 非常清楚:

RepeatStatement = `REPEAT` StatementSequence `UNTIL` Expression.

所以你必须有一个REPEAT关键字、一个语句序列(可以只是EXIT)、UNTIL 关键字和表达式。只有这四个部分共同构成有效的重复语句...

所以我想这样的事情是你能做到的最短的:

REPEAT EXIT UNTIL TRUE

关于syntax - 最短 REPEAT 语句 Modula-2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28590058/

相关文章:

syntax - 如何在 F# 中引用任意大小的元组的特定成员

flutter - @运算符在 Dart 中到底是什么意思?

syntax - 数学表达式的语法规则(无左递归)

compiler-construction - 在哪里可以获得学习EBNF的 Material ?

language-design - 为什么在主体之后重复模块和过程名称?

oop - Oberon 的面向对象模型与标准 OOP 有何不同?

legacy-code - Modula-2 开发者?

parsing - 语法和 s 表达式有什么区别

php - 变量声明中的逗号是什么意思?

parsing - Prolog DCG 中的可选或重复项