Привет.
Требуется написать транслятор с языка JavaScript 1.6 на C++.
Есть несколько особенностей:
1. Требуется написать транслятор ядра JavaScript (ECMAScript) на С++.
2. Нам заранее известно, что во входном .JS файле нет синатаксических, семантических ошибок.
Как я делаю:
— Для лексического анализа, я использую flex-generated анализатор.
— Для трансляции я сам строю синтаксический граф. Граф содержит переходы от состояния к состоянию по токену.
На некоторые состояния графа я вешаю операции.
Тривиальный пример (JavaScript function definition):
Переходы между токенами: Function->Variable->Open_parenthesis->Variable->Comma->Variable->Comma->Variable->Close_parenthesis
Для первого токена Variable: операция create_function_name
Для остальных токенов Variable: операция add_function_parameter
Как можно реализовать транслятор?
1. Может удобнее использовать flex+bison? И анализировать синтаксическое дерево, которое строит bison?
2. Или использовать boost парсеры?
Спасибо.
17.02.10 18:56: Перенесено модератором из 'C/C++' — Кодт