如何理解此EBNF 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

我正在用这个实现一个Pascal解析器。以下规范中有一些我不理解的地方:

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。这是有道理的。我不知道选择没有顺序。