Для того, чтобы использовать инструменты нужна грамматика и однозначная
+ нужно для любого правила указать, как ты из AST частей правила собираешь
AST целого.
Собственно это и есть семантика.
Есть модули которые сразу могут построить AST в своем виде искать нужно
в Parse:: на CPAN
Т.е. самое сложное написать грамматику, которую эти инструменты смогут
переварить.
14.01.2015 12:40, Харпалёв Иван пишет:
что-то вроде "f(1,2) + 3" в {function=>'+', args=>[{function=>'f',
args=>[1, 2]}, 3]}
14 января 2015 г., 12:34 пользователь Харпалёв Иван
<[email protected] <mailto:[email protected]>> написал:
Доброго времени, могучий MoscowPM!
Сейчас пишу небольшой язык.
То есть пишу транслятор из него в awk и С. (Сначала в awk, чтобы
потренироваться, а потом в C, там типизация, там сложнее).
Когда язык был совсем примитивный, я его парсил регэкспами и по
рабоче-крестьянски собирал код на целевом языке.
Но язык подростает. И рефакторить оказывается очень печально.
Как я понимаю весь процесс работы транслятора состоит из
стандартных стадий, например:
токенизация
построение дерева разбора
сбор кода на целевом языке из полученного описания.
В общем тория у меня хромает и очень интересна. Но первым делом
практика.
Скажите, чем строить дерево синтаксического разбора?
что-то вроде
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org