如何理解此EBNF Pascal定义
我正在用这个实现一个Pascal解析器。以下规范中有一些我不理解的地方:如何理解此EBNF Pascal定义,pascal,ebnf,Pascal,Ebnf,我正在用这个实现一个Pascal解析器。以下规范中有一些我不理解的地方: variable entire-variable | component-variable | referenced-variable entire-variable variable-identifier | field-identifier component-variable indexed-variable | field-designator | file-buffer field-de
variable
entire-variable | component-variable | referenced-variable
entire-variable
variable-identifier | field-identifier
component-variable
indexed-variable | field-designator | file-buffer
field-designator
record-variable "." field-identifier
假设我们希望在
a.b[0]
上应用变量生产。由于a
符合整个变量的产生,这将阻止组件变量
检测字段指示符
a.b
,因此后面的
将停止解析器。因为EBNF没有顺序选择,最长匹配通常用于确定应用哪些规则 我面前没有Pascal规范,但我可以做一些观察。当解析器看到“a”时,它应该已经知道“a”的定义。解析器还可以向前看,看到“.”。这个问题的读者可能还想看看Thank Uran。这是有道理的。我不知道选择没有顺序。