Вам нужно реализовать как синтаксический анализатор, так и интерпретатор.
Есть отличный бесплатный учебник под названием "Языки программирования: Применение и интерпретация", в котором используется схема для создания все более сложных интерпретаторов. Она также служит отличным введением в особенности языков программирования.
Посмотрите ее здесь: http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/
Если Scheme вам не по душе, возможно, стоит обратить внимание на следующие книги.
Взгляните на парсер LL "spirit" библиотеки ускорений.
Несколько шагов:
Во-первых, создайте лексер и парсер. Это очень легко сделать с помощью обычных инструментов, таких как lex и yacc, или используя более современный фреймворк, такой как Antlr (именно его я и рекомендую). Эти инструменты генерируют исходный код для вашего целевого языка, который вы можете затем скомпилировать и включить в свой проект.
Лексер и синтаксический анализатор создадут внутреннее представление исходного файла. Существует несколько различных подходов к этому:
Exec()
на корневом объекте (который в свою очередь вызывает Exec()
на своих дочерних объектах и т.д.). По сути, это метод, который я использую для своего интерпретируемого доменно-специфического языка Phonix. Чтобы создать интерпретируемый язык, вам нужно создать две вещи:
Как только вы определили сам язык, существует несколько инструментов, помогающих создать синтаксический анализатор языка. Классическими инструментами являются lex и yacc , а также их версии с открытым исходным кодом flex и bison .