Каковы процессы анализа интерпретируемого языка программирования?

StackOverflow https://stackoverflow.com/questions/1921660

  •  20-09-2019
  •  | 
  •  

Вопрос

Я хотел бы знать, как лучше всего создать синтаксическое дерево.

Это было полезно?

Решение 2

Стандартный ресурс Stack Overflow для обучения написанию компиляторов и интерпретаторов: Учимся писать компилятор

Другие советы

Вот некоторые пояснения по поводу абстрактные синтаксические деревья (AST) из проекта LLVM.

Тизер:

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

На самом деле, он ничем не отличается от любого другого языка.Разница между интерпретируемыми и компилируемыми языками заключается в первую очередь во внутреннем интерфейсе, а не во внешнем интерфейсе.У конкретных языков могут быть особые требования к синтаксическому анализу, но вы не можете провести значимое сравнение технологий синтаксического анализа между двумя классами языков.

Вы не указываете требования к языку для вашего парсера, поэтому, если возможен C или C++, вам следует начать с просмотра yacc: http://en.wikipedia.org/wiki/Yacc

Yacc генерирует синтаксический анализатор C для вашего конкретного синтаксиса.Начало работы с этим может потребовать немного дополнительной работы, но как только вы начнете работать, поддерживать его станет проще.

Отказ от ответственности:Я использовал yacc только в одном проекте, и это было более 10 лет назад, поэтому ваш опыт может отличаться.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top