Я быстро написал интерпретатор для какого-то экспериментального языка программирования, с которым я столкнулся, в PHP (да, в PHP). Сам язык не имеет ничего особенного, я просто хотел попробовать.Иерархия заявлений в языках программирования
Я получил основные вещи, работающие (Hello World, ввод данных, манипуляция строками, арифметика), но я застрял в управлении блоками и сгруппированными утверждениями.
Что я имею в виду: PHP и большинство других языков позволяют вам делать это: ((2+2)*(8+2)+2)
, конечно, не только с математическими вычислениями.
Моя структура программы в данный момент состоит из многомерного массива, построенного так:
ID => Type (Identifier, String, Int, Newline, EOF, Comma, ...)
Contents (If identifier, int or string)
- Как я мог позволить заявления должны быть выполнены в определенном порядке, как и в на примере PHP выше?
Если он просто хочет оценить выражения, нет необходимости явно строить дерево. То же самое, если он использует метод рекурсивного спуска для более полного языка - не требуется явное дерево. – 2010-03-30 09:15:13
@Neil: да, книга Дракона называет это "синтаксически направленным переводом" –