Parsers
Подборка ссылок
Lexer and Parser Generators
Парсеры и парсер-генераторы
Dick Grune and Ceriel J.H. Jacobs
"Parsing Techniques - A Practical Guide"
ftp://ftp.cs.vu.nl/pub/dick/PTAPG_1st_Edition/FrontPage.pdf
ftp://ftp.cs.vu.nl/pub/dick/PTAPG_1st_Edition/BookBody.pdf
AnaGram
EBNF syntax, LALR(1) parser generator.
Лучший, наверное, из бесплатных генераторов. Разработчик программы
Jerome T. Holland умер в 2003 г. и ее поддержка прекращена (сайт
сохраняется вдовой).
Из документации - только то, что доступно на сайте + встроенный Help.
Печатный мануал высылался тем, кто оплатил $500 при покупке.
Примеры парсеров, сделанных с использованием AnaGram можно найти здесь:
Tiny Basic Interpreter и C Compiler
Признаться, AnaGram - это не обычный коммерческий продукт. Это - любимая
игрушка. AnaGram сам написан с использованием AnaGram и в нем есть все,
что может потребоваться профессионалу, включая визуальную отладку,
контекстный хелп, подборку примеров и тщательно сконструированную
библиотеку классов. Разработчик вложил в программу душу (или продал ее
дьяволу - ради такого фантастического результата) и, полагаю, вдова
Джерома Холланда поступила наилучшим возможным образом, чтобы сохранить и
преумножить память о муже.
Coco/R
EBNF syntax, LL(1) recursive descent parser generator.
Академическая игрушка. Да и чего ждать от людей, пишущих на паскале.
IMHO, все идеи заимствованы из AnaGram. Зато есть книга по его использованию:
Pat Terry "Compilers and Compiler Generators. An introduction with C++"
http://www.scifac.ru.ac.za/compilers/pdfvers.zip
Если вы умеете делать что-то серьезное в LL(1) грамматике, то может быть интересен,
как крохотный парсер в исходниках, подходящий для встраивания в собственный код.
Flex
Fast lexical analyzer generator.
Аналог платного LEX. Написан на С и, якобы, переносим. Исходный код ужасен
Я как-то собрался было переписать его под MSVC/MFC, но не закончив, плюнул
- ну, не стоит овчинка выделки.
На sourceforge/flex почему-то лежит старая (2.5.35) версия, которая НЕ
компилируется (в сборке недостает файлов), но зато в другом месте можно
найти рабочий бинарник и исходные тексты 2.5.4a-1.
GOLD Parsing System
BNF, LALR(1) parser generator.
Не пользовался, но описание выглядит достаточно интересным.
Заявлена поддержка большого числа языков и Юникода.
© Gazlan 2009 * gazlan@yandex.ru
|