А можно транслировать LEX и YACC в Java?

psihodog

Если да, то как?
В любом случае, чем сейчас принято пользоваться для этих целей?

Helga87

Есть jay - JACC для Java. Поищи по гуглу.

psihodog

Спасибо, посмотрю.
Только что нашёл вот это: JACK.
Кто-нть пользовался?

pitrik2

самые распространненые вещи: javaCC, antlr

pitrik2

есть еще CUP и SLK
про Jack впервые слышу...

sasha79

javaCC, antlr
они LL(k а yacc LALR(1)

psihodog

а в чём разница?

sasha79

LL(k) разбирается рекурсивным спуском сверху вниз, LALR разбирается снизу вверх ("подъемом" от токенов к правилам).
Если у тебя грамматика для LALR-парсера (например, yacc/bison вероятно, тебе придется её преобразовывать для разбора LL(k)-парсером (избавляться от левых рекурсий и т.п. и наоборот.
Вообще, вот, какой-то текст, более-менее понятно написано про разные грамматики, кажется. Ну, или почитай в какой-нибудь книжке.

psihodog

угу, спасибо. и за ссылку тоже.

psihodog

Спасибо, ботаю 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.

rosali

CUP - генератор LR парсеров, все правильно, ботай дальше Кстати вопрос, а разве сам YACC не может генерить Яву? Странно если нет, CUP отличается от YACC-а просто тем, что он сам написан на Яве, а что генерить вроде бы нет разницы.

bastii

antlr рулит, довольно легко пишется парсинг сложных синтаксисов.

Lanosova

угу antlr, ещё можно javacc посмотреть. А вообще вот здесь много хорошего посмотреть: http://java-source.net/open-source/parser-generators
Оставить комментарий
Имя или ник:
Комментарий: