是不正确的EBNF标准的在线版本,还是先生的章节名称不正确。 Pattis的?

时间:2015-06-24 07:33:30

标签: grammar bnf ebnf

我正在阅读先生的 EBNF: A Notation to Describe Syntax 章节。 Richard E. Pattis。他的材料对我来说非常有用和清晰。但在此之前我读了ISO/IEC 14977 : 1996(E)标准......我看到先生的EBNF符号和语法。 Richard E. Pattis与标准中的不同。我不明白这个原因...

例如,标准写入:

  

a)引用语言的终端符号,以便任何字符,   包括在扩展BNF中使用的一个,可以定义为终端   被定义语言的象征。

但先生。 Pattis不使用自己样本中的引号。此外,他使用非常方便的方式将非终端符号写为终端符号:例如,他将|字符放入一个框(它看起来像 border 在MS Word中的字符周围)。通常的文本编辑不能这样做。因此这种方式很不方便。

此外,标准写道:

  

d)每条规则都有一个明确的最终字符,以便永远不会   任何关于规则结束的模糊性。

但先生。 Pattis不会在自己的样本中使用任何最终字符。

根据标准,“=”字符是定义符号,但先生。 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及其标准的问题的论坛地址吗?我什么都没找到......

祝你好运, 安德烈

1 个答案:

答案 0 :(得分:0)

我的教程是我在编程类介绍中给出的第一个讲座:我将EBNF教授为一种迷你编程语言,包括命名规则(如函数)和控制结构(序列,if,loop,recursion)。学生学习语言律师(确定字符串是否符合EBNF规则)和程序员(从英语描述中综合EBNF规则,包括正面和负面样本)。

因此,我的目标不是向任何人教授ISO标准,而是向绝对新手讲授最简单的EBNF形式。

Rich Pattis