如何理解这个EBNF Pascal定义

时间:2019-01-15 00:28:57

标签: pascal ebnf

我正在此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 

假设我们要在variable上应用a.b[0]生产。由于a符合entire-variable的要求,因此这将阻止component-variable检测到field-designator a.b,从而检测到{{1}之后的. }将停止解析器。

1 个答案:

答案 0 :(得分:3)

由于EBNF没有排序选项,因此最长匹配通常用于确定适用哪些规则。