Для того, чтобы использовать инструменты нужна грамматика и однозначная + нужно для любого правила указать, как ты из 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

Ответить