2009-12-17 3 views
0

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

+0

При гугле «разбор», что вы нашли? Большинство интерпретируемых выражений языка являются открытыми. Вы можете просто загрузить их. Что вам нужно знать? На каких языках вы говорите? –

ответ

3

Стандартный Stack Overflow ресурс для обучения писать компилятор и интерпретатор является Learning to write a compiler

2

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

1

Вы не перечисляют требования языка для вашего синтаксического анализатора, так что если C или C++ является возможность, вы должны начать смотреть на Yacc:

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

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

+1

O'Reilly только что выпустил книгу о flex и bison, эквивалентах GNU для lex и yacc (ISBN 978-0596155971). Flex и bison намного легче справиться с lex и yacc. –

3

Вот несколько пояснений относительно abstract syntax trees (AST) проекта LLVM.

Teaser:

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