Как понять это определение Паскаля EBNF - PullRequest
0 голосов
/ 15 января 2019

Я реализую парсер 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, остановит синтаксический анализатор.

1 Ответ

0 голосов
/ 15 января 2019

Поскольку у EBNF нет упорядоченных вариантов выбора, для определения применимых правил часто используется самое длинное совпадение.

...