如何理解这个 EBNF Pascal 定义

How to understand this EBNF Pascal Definition

我正在从这个 EBNF defintion 中实现一个 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] 上应用 variable 产生式。由于 a 符合 entire-variable 生产,这将阻止 component-variable 检测到 field-designator a.b,因此 . 跟随 a 将停止解析器。

由于 EBNF 没有有序的选择,因此通常使用最长匹配来确定应用哪些规则。