我正在做一项家庭作业,其中有一段标题为“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/