Реализация функции TinyPG
В последнее время я очень заинтересовался генераторами парсеров и компиляторами. Чтобы поиграть, я скачал TinyPG и теперь у меня есть простой язык для разбора строк и операций с плавающей точкой. Теперь мне интересно реализовать простые функции с параметрами. Мне удалось создать беспараметрические функции, оценив тело с одним выражением и сохранив его в таблице, а затем получить значение при вызове функции. Как мне реализовать простые функции с одним выражением и параметрами в TinyPG (или любом другом генераторе парсера)?
1 ответ
Хорошо, я действительно нашел ответ на этот вопрос случайно. Я наткнулся на Tiny Expression Evaluator, который был написан с TinyPG. Чтобы проверить возможности функции, я положил в последовательности Фибоначчи, fib(x) := x=0 ? 0 : (x=1 ? 1 : fib(x - 2) + fib(x - 1))
и это сработало, как и ожидалось. Теперь я должен выяснить, как они это сделали.