ANTLR
ANother Tool for Language Recognition
Содержание
Типы используемых алгоритмов[править]
В основе ANTLR 4 лежит ALL(*)-алгоритм adaptive LL(*) который переносит анализ грамматики на время исполнения
для ANTRL3 использовался LL(*)
adaptive algorithm is much stronger than the static LL(*) grammar analysis algorithm in v3
Типы используемых "механизмов"[править]
ANTLR automatically can build parse trees for you and generate listeners and visitors. This is not only a huge productivity win, but also an important step forward in building grammars that don't depend on embedded actions. If we keep all of the actions out of the grammar and put them into external visitors, we can reuse the same grammar to generate code in any language for which we have an ANTLR target.
The biggest problem for the average practitioner is that most parser generators do not produce code you can load into a debugger and step through. This immediately removes bottom-up parser generators and the really powerful GLR parser generators from consideration by the average programmer.
понимаемые грамматики[править]
EBNF - https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form
целевые языки[править]
- C++
- Java
- C#
- Python
- Ruby
Ссылки[править]
- Исходники - https://github.com/antlr/antlr4
- прямые web-ссылки на строчки исходного кода - там же
- Документация - https://theantlrguy.atlassian.net/wiki/display/ANTLR4/ANTLR+4+Documentation
- для задавания новичковых вопросов:
- IRC-канал - oftc.net, канал #antlr
- Google-группы - https://groups.google.com/forum/#!forum/antlr-discussion
- тег antlr4 на stackoverflow - http://stackoverflow.com/tags/antlr4/info
- Репортить баги - https://github.com/antlr/antlr4/issues
- Домашняя страница проекта - http://www.antlr.org/
- Страницы в википедии:
- русскоязычная - https://ru.wikipedia.org/wiki/ANTLR
- англоязычная - https://en.wikipedia.org/wiki/ANTLR
- Инструкция для опакечивания - https://github.com/antlr/antlr4/wiki/How-to-build-ANTLR-itself
Коммьюнити[править]
Terence Parr = мейнтейнер, профессор в University of San Francisco.
v4 is the culmination of 25 years of research into parsers and parser generators.
Поэтому когда вам кто-то говорит (а мне говорили), что распарсить что-то может любой студент за час... Ну может, если вы ему методику предоставите (и я распарсил, GOLD-парсером, за час, только они с ним запарились ПОТОМ).
Как устанавливать[править]
Есть пакет dev-java/antlr-4.4, номер последней версии можно посмотреть на http://gpo.zugaina.org/Search?search=antlr
Ссылаться на строчки из ebuild-файла можно тут - https://github.com/gentoo/gentoo/tree/master/sys-devel/bison
Команды на установку:
emerge antlr
cave resolve antlr
equo i antlr
Ограничения[править]
ANTLR 4 deals with left recursion correctly (except for indirect left recursion, i.e. grammars rules x which refer to y which refer to x)
Лицензионные ограничения версии Antlr3 были убраны в Antrl4 - https://theantlrguy.atlassian.net/wiki/pages/viewpage.action?pageId=1900547
some languages are so complicated, such as C++, that parser generators might build parsers slower than compiler developers want. The compiler developers also like the control of a recursive-descent parser for predicating the parse to handle context-sensitive constructs such as T(i) in C++.