我正在为文档解析编写一些Extended Backus-Naur Form语法。这些定义的语法有很多优秀的指南,但很少有关于如何设计和构造它们的在线。
任何人都可以提出一些好的文章(或一般提示),关于你如何写这些文章,因为 似乎是风格的元素,即使最终的解析树可以是等价的。
e.g。比如:
谢谢,
答案 0 :(得分:1)
你应该朝着你最舒服的方向工作 - 自下而上,自上而下或“三明治”(做两件事,在中间的某个地方见面)。
任何可以派生并具有其自身含义的“组”应该从它自己的非终端开始。因此,例如,我将使用非终端用于所有与换行相关的空格,一个用于所有其他空格,一个用于所有空格(基本上是前者2的联合)。
语法中的命名约定一般是非终端是大写字母,或者以大写字母开头,终端以非大写字母开头(但这当然取决于你设计的语言)。
关于错误的语法检查,我不熟悉这个概念。我对EBNF的了解是,你只需要编写你的语言接受的所有东西,而且只写那个。
一般情况下,只需浏览一些来自不同网站的不同语言的EBNF,了解它们的外观,然后做适合自己的事情。