воскресенье, 1 августа 2010 г.

Language Implementation Patterns

дочитал давеча subj
имею крайне раздраженное мнение - во-первых все примеры даются на склизком неповоротливом бессмысленно многословном монстре языке java
Во-вторых я умею использовать bison уже лет 15 и всегда считал что lalr парзеры рвут ll с их backtrackingом по скорости как тузик грелку.

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

Прочитать книжку определенно стоило, но некоторые вещи описаны весьма поверхностно

Комментариев нет:

Отправить комментарий