【发布时间】:2019-01-15 00:28:57
【问题描述】:
我正在从 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 后面的. 将停止解析器。
【问题讨论】:
-
我面前没有 Pascal 规范,但我可以做一些观察。当解析器看到“a”时,它应该已经知道“a”的定义是什么。解析器也可以提前看到'.'。
-
这个问题的读者可能还想看看How to define Pascal variables in PetitParser