Marpa, Parse::RecDescent, Parse::Yapp, Parse::Eyapp. Первый мне очень нравиться. Попрбуйте с MarpaX::Repa. "Репу" написал сам и мне очень удобно с ним писать парсеры ибо можно написать грамматику и не определить все токены, то есть итеративно дополнять в процессе свой парсер без фатальных ошибок на этапе компиляции парсера. В новых версиях Marpa есть Scanless интерфейс - это самое близкое к Repa так как включает лексер и самое простое для начала.
2015-01-14 12:34 GMT+03:00 Харпалёв Иван <ivan.kharpa...@gmail.com>: > Доброго времени, могучий MoscowPM! > > Сейчас пишу небольшой язык. > То есть пишу транслятор из него в awk и С. (Сначала в awk, чтобы > потренироваться, а потом в C, там типизация, там сложнее). > > Когда язык был совсем примитивный, я его парсил регэкспами и по > рабоче-крестьянски собирал код на целевом языке. > Но язык подростает. И рефакторить оказывается очень печально. > > Как я понимаю весь процесс работы транслятора состоит из стандартных > стадий, например: > токенизация > построение дерева разбора > сбор кода на целевом языке из полученного описания. > > В общем тория у меня хромает и очень интересна. Но первым делом практика. > Скажите, чем строить дерево синтаксического разбора? > что-то вроде > > -- > Moscow.pm mailing list > moscow-pm@pm.org | http://moscow.pm.org > > -- Best regards, Ruslan.
-- Moscow.pm mailing list moscow-pm@pm.org | http://moscow.pm.org