Я хотел бы знать, как наилучшим образом создать дерево синтаксиса.Каковы процессы для анализа интерпретируемого языка программирования?
ответ
Стандартный Stack Overflow ресурс для обучения писать компилятор и интерпретатор является Learning to write a compiler
Ничем не отличается от любого другого языка, действительно. Разница между интерпретируемыми и скомпилированными языками связана прежде всего с бэкэнд, а не с интерфейсом. Специфические языки могут иметь специфические требования к синтаксическому анализу, но вы не можете сделать значимого сравнения в технологиях разбора между двумя классами языков.
Вы не перечисляют требования языка для вашего синтаксического анализатора, так что если C или C++ является возможность, вы должны начать смотреть на Yacc:
Yacc генерирует C парсер для вашего конкретного синтаксиса. Приступая к работе с этим может быть немного дополнительной работы, но как только вы получите вещи и прокатки, ее должно быть проще поддерживать.
Отказ от ответственности: Я использовал только yacc в одном проекте, и это было 10+ лет назад, поэтому ваше перемещение может отличаться.
O'Reilly только что выпустил книгу о flex и bison, эквивалентах GNU для lex и yacc (ISBN 978-0596155971). Flex и bison намного легче справиться с lex и yacc. –
Вот несколько пояснений относительно abstract syntax trees (AST) проекта LLVM.
Teaser:
АСТ для программы фиксирует свое поведение таким образом, что это легко для более поздних стадий компилятора (например, генерации кода) для интерпретации. В основном мы хотим, чтобы один объект для каждой конструкции на языке, и AST должен тщательно моделировать язык.
При гугле «разбор», что вы нашли? Большинство интерпретируемых выражений языка являются открытыми. Вы можете просто загрузить их. Что вам нужно знать? На каких языках вы говорите? –