имею крайне раздраженное мнение - во-первых все примеры даются на склизком неповоротливом бессмысленно многословном
Во-вторых я умею использовать bison уже лет 15 и всегда считал что lalr парзеры рвут ll с их backtrackingом по скорости как тузик грелку.
Но по прочтении выяснилось и кое-что полезное:
- antlr умеет генерить код не только для java, но и для более приличных языков
- antlr умеет также автоматически строить в процессе разбора AST дерево, чего мне в bison всегда не хватало
- и даже более того - вместе с построением AST умеет также строить к нему tree walker
- и даже tree pattern matcher ! правда во всей книге дано ровно полтора примера как с его помощью можно делать tree rewriting
Вторая часть самая содержательная - в ней объясняется как строить AST, как по нему ходить, как строить символьные таблицы и scope trees. Крайне рекомендую главу 8 - даны вполне понятные примеры построения static type checker
Третья часть очень лихо пробегает по техникам построения виртуальных машин - стековых и регистровых. Не особо подробно впрочем, как прикрутить к AST генератор байт-кода вы из нее не узнаете.
А вот четвертая часть, посвященная самому интересному - трансляции языков и созданию генераторов, откровенно лажает - в главе 11 кратко упоминается про существование rule engines для создания генераторов и дальше автор съезжает на использование templates, в особенности на применение StringTemplate
Прочитать книжку определенно стоило, но некоторые вещи описаны весьма поверхностно
Комментариев нет:
Отправить комментарий