А можно транслировать LEX и YACC в Java?
Есть jay - JACC для Java. Поищи по гуглу.
самые распространненые вещи: javaCC, antlr
есть еще CUP и SLK
про Jack впервые слышу...
про Jack впервые слышу...
javaCC, antlrони LL(k а yacc LALR(1)
а в чём разница?
LL(k) разбирается рекурсивным спуском сверху вниз, LALR разбирается снизу вверх ("подъемом" от токенов к правилам).
Если у тебя грамматика для LALR-парсера (например, yacc/bison вероятно, тебе придется её преобразовывать для разбора LL(k)-парсером (избавляться от левых рекурсий и т.п. и наоборот.
Вообще, вот, какой-то текст, более-менее понятно написано про разные грамматики, кажется. Ну, или почитай в какой-нибудь книжке.
Если у тебя грамматика для LALR-парсера (например, yacc/bison вероятно, тебе придется её преобразовывать для разбора LL(k)-парсером (избавляться от левых рекурсий и т.п. и наоборот.
Вообще, вот, какой-то текст, более-менее понятно написано про разные грамматики, кажется. Ну, или почитай в какой-нибудь книжке.
угу, спасибо. и за ссылку тоже.
Спасибо, ботаю CUP/JFlex.
Кстати, более тщательный поиск дал:

Кстати, более тщательный поиск дал:
Since its development, the engineers responsible for Jack created their own company called Metamata. The Jack product name was changed to JavaCC, and now Metamata is part of WebGain.

CUP - генератор LR парсеров, все правильно, ботай дальше
Кстати вопрос, а разве сам YACC не может генерить Яву? Странно если нет, CUP отличается от YACC-а просто тем, что он сам написан на Яве, а что генерить вроде бы нет разницы.
Кстати вопрос, а разве сам YACC не может генерить Яву? Странно если нет, CUP отличается от YACC-а просто тем, что он сам написан на Яве, а что генерить вроде бы нет разницы.antlr рулит, довольно легко пишется парсинг сложных синтаксисов.
угу antlr, ещё можно javacc посмотреть. А вообще вот здесь много хорошего посмотреть: http://java-source.net/open-source/parser-generators
Оставить комментарий
psihodog
Если да, то как?В любом случае, чем сейчас принято пользоваться для этих целей?