Как работать с левой рекурсией Treetop

У меня есть файл грамматики для нового программирования общего назначения язык, который я пытаюсь построить. Я пытаюсь сделать язык надежным и естественным в использовании (он в значительной степени вдохновлен Ruby, среди прочего), и при этом я ввел некоторые леворекурсивные правила.

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

rule l_recurse
  l_recurse / 'something else'
end

можно сделать не леворекурсивным, изменив его на:

rule r_recurse
  'something else' / r_recurse
end

Мне кажется, что это будет иметь другую проблему и все равно не удастся. Я прав, или это «просто сработает»?

Конкретные левые рекурсии, которые я пытаюсь (найти и) устранить, находятся в этом файле грамматики . Я не уверен, какие правила затронуты, но, по крайней мере , на некоторых было указано, что они имеют левую рекурсию. (Между прочим, я попытался устранить конкретную проблему диапазона, о которой он упомянул, ужесточив правило диапазона.)

6
задан Community 23 May 2017 в 12:04
поделиться