У меня есть файл грамматики для нового программирования общего назначения язык, который я пытаюсь построить. Я пытаюсь сделать язык надежным и естественным в использовании (он в значительной степени вдохновлен Ruby, среди прочего), и при этом я ввел некоторые леворекурсивные правила.
Я видел несколько примеров, которые, кажется, укажите следующее леворекурсивное правило:
rule l_recurse
l_recurse / 'something else'
end
можно сделать не леворекурсивным, изменив его на:
rule r_recurse
'something else' / r_recurse
end
Мне кажется, что это будет иметь другую проблему и все равно не удастся. Я прав, или это «просто сработает»?
Конкретные левые рекурсии, которые я пытаюсь (найти и) устранить, находятся в этом файле грамматики . Я не уверен, какие правила затронуты, но, по крайней мере , на некоторых было указано, что они имеют левую рекурсию. (Между прочим, я попытался устранить конкретную проблему диапазона, о которой он упомянул, ужесточив правило диапазона.)