我正在此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}之后的.
}将停止解析器。
答案 0 :(得分:3)
由于EBNF没有排序选项,因此最长匹配通常用于确定适用哪些规则。