Проблема с грамматикой yecc - PullRequest
1 голос
/ 10 июня 2011

В настоящее время я пишу небольшой парсер на erlang, используя yecc, и столкнулся с некоторыми проблемами.Проблемы возникают, когда я разбираю правила с 'lbrack'.Следующее правило является иллюстрацией моей проблемы:

program -> 'char' 'ident' 'lbrack' 'int_constant' 'rbrack' 'semi'

Он компилируется нормально, но когда я пытаюсь проанализировать следующие токены:

[{char,1},
 {ident,1,1,t},
 {lbrack,1},
 {int_constant,1,10},
 {rbrack,1},
 {semi,1}]

анализатор падает с

{error,
 {1,parser,["syntax error before: ","lbrack"]}}}

1 Ответ

3 голосов
/ 12 июня 2011

Я попытался использовать следующий файл yecc, yt.yrl:

Nonterminals
program.

Terminals
char ident lbrack int_constant rbrack semi.

Rootsymbol
program.

program -> 'char' 'ident' 'lbrack' 'int_constant' 'rbrack' 'semi'.

с вашим вводом, и он работал нормально.Он ничего не возвращал, ну '$undefined', но так и должно быть, поскольку мой пример ничего не возвращает.Обратите внимание, что ни один из ваших терминальных символов не нужно заключать в кавычки, поскольку они являются обычными атомами с «обычными» именами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...