我正在读先生写的http://www.ics.uci.edu/~pattis/misc/ebnf2.pdf一章。理查德·帕蒂斯。他的材料对我很有用,也很清楚。但在它之前我读了ISO/IEC 14977 : 1996(E)标准..。我看到EBNF的符号和语法由mr。理查德·E·帕蒂斯( Richard E. Pattis )在标准中不一样。我不明白为什么.
例如,standard写道:
a)引用语言的结束符号,以便任何字符,包括在扩展BNF中使用的字符,都可以定义为所定义语言的终端符号。
但是..。Pattis在自己的样本中不使用引号。此外,他还使用不方便的方式将非终端符号写入终端符号:例如,他放入框中的|
字符(看起来就像MS中字符周围的边框)。通常的文本编辑器做不到。因此这种方式是不方便的。
此外,standard还写道:
( d)每一条规则都有明确的最终性质,因此对于某一规则的结尾,永远不会有任何含糊不清之处。
但是..。Pattis在自己的样本中不使用任何最终字符。
根据标准,"=“字符是定义-符号,但是mr。Pattis使用的是"⇐“,而不是这个。
等
章节代码示例:
digit ⇐ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
integer ⇐ [+|-]digit{digit}
比较:在ISO/IEC 14977 : 1996(E)标准中,每个数字都是用引号分隔的,分号作为最终字符:
decimal digit = ’0’ | ’1’ | ’2’ | ’3’ | ’4’ | ’5’ | ’6’ | ’7’ | ’8’ | ’9’;
章名上的"EBNF“这个词让我困惑.也许"BNF“这个词必须写在章节的名字上,而不是"EBNF”?或者我发现了不正确的标准变体?
附加问题:,有人知道论坛的地址,我可以问我关于EBNF及其标准的问题吗?我什么也没找到..。
向你问好,安德烈
发布于 2016-11-10 14:45:57
我的教程是我在编程课的介绍中给出的第一节课:我教EBNF作为一种迷你编程语言,包括命名规则(类似函数)和控制结构(序列、if、循环、递归)。学生学习成为语言律师(确定字符串是否与EBNF规则匹配)和程序员(从英语描述中合成EBNF规则,包括正面和负面范例)。
因此,我的目标不是教任何人ISO标准,而是把最简单的EBNF形式传授给绝对的新手。
富帕蒂斯
https://stackoverflow.com/questions/31020443
复制相似问题