Я использую jison, и я видел документацию по грамматике ebnf, но я не могу сделать мои грамматические работы:
Вот изображения моей грамматики, ввода и ошибки
В ошибке грамматика распознает только одну строку, но звезда клина должна распознавать от 0 до нескольких случаев.
Я новичок в jison, так что, возможно, способ использовать ebnf не такой, как я, если вы можете помочь, я был бы очень благодарен
Минимальная полная версия моей грамматики:
METODO
: 'void' id '(' ')' '{' INSTR '}'
;
INSTR
: INSTRUCCION*
;
Instrucción
: IF
| id '=' EXP ';'
| id ':' INSTR
;
Введите:
void metodo_1 () {
t2 = p + 1;
l2:
t6 = heap[t4];
print("%c", t6);
t5 = t5 + 1;
if t6 != 0 goto l2;
l0: }
Ошибка:
Error
Я добавил %ebnf
в начале моего парсера