Грако покинул рекурсию
Я пытаюсь использовать грако для описания простой леворекурсивной грамматики, но у меня проблемы с этим.
Правая рекурсия работает без проблем:
symbol = /[a-z]/ ;
condition = symbol "AND" condition | symbol ;
start = condition $ ;
Согласно всем найденным примерам левая рекурсия должна быть описана так:
symbol = /[a-z]/ ;
condition = condition "AND" symbol | symbol ;
start = condition $ ;
Тем не менее, это не работает для правила, приведенного ниже:
a AND b AND c
Я получаю эту ошибку:
grako.exceptions.FailedParse: srecur(1:3) Expecting end of text. :
a AND b AND c
^
start
На данный момент я понимаю, что первый символ правила соответствует symbol
и не condition "AND" symbol
так что grako хотел бы использовать его. Но мое правило запуска заставляет всех персонажей быть уничтоженными.
Я пытался использовать много обходных путей, но я не смог найти подходящий.
1 ответ
Решение