Простая арифметическая грамматика с бесконечно рекурсивным верхушкой дерева - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь написать простую грамматику расчета с Treetop. Чтобы упростить мой пример для этого вопроса, я использую только переменные, числа и оператор +. Я хотел бы иметь возможность писать выражения, как это:

  • A
  • 1
  • A+B
  • A+1
  • A+1+B

Вот моя грамматика:

grammar Calculation

  rule expression
    (plus / number / variable)
  end

  rule plus
    expression "+" expression
  end

  rule number
    '-'? [0-9]+ ('.' [0-9]+)?
  end

  rule variable
    [A-Za-z0-9]+
  end
end

Когда я запускаю это, оно бесконечно повторяется. Подумав некоторое время, я думаю, что моя проблема как-то связана с левой рекурсией, но я новичок в парсерах и не очень понимаю, что это значит. Может кто-нибудь объяснить, почему мой конкретный пример не работает и как я могу это исправить?

...