Я реализую парсер Pascal из этого определения EBNF . В следующих спецификациях есть что-то, чего я не понимаю:
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
, и поэтому .
, следующий за a
, остановит синтаксический анализатор.