Подтвердить что ты не робот

Эквивалент Yacc для Java

Я работаю над проектом проектирования компилятора на Java. Лексический анализ сделан (с использованием jflex), и мне интересно, какой инструмент yacc-like был бы лучшим (наиболее эффективным, простым в использовании и т.д.) Для синтаксического анализа и почему.

4b9b3361

Ответ 1

Если вы специально хотите поведение YACC-типа (управляемое таблицей), единственное, что я знаю, это CUP.

В мире Java кажется, что больше людей склоняются к рекурсивным парсерам спуска, например ANTLR или JavaCC.

И эффективность редко является причиной выбора генератора парсера.

Ответ 2

В прошлом я использовал ANLTR как для лексера, так и для парсера, а на домашней странице JFlex говорится, что он может взаимодействовать с ANTLR. Я бы не сказал, что онлайн-документация ANTLR настолько велика. Я закончил тем, что инвестировал в "Определяющая ссылка ANTLR" , которая значительно помогла.

Ответ 4

Существует также jacc.

Jacc близок к yacc, как вы можете получить, но он реализован в чистой java и генерирует Java-парсер.

Он хорошо взаимодействует с jFlex

http://web.cecs.pdx.edu/~mpj/jacc/

Ответ 5

Другим вариантом будет GOLD Parser.

В отличие от многих альтернатив, анализатор GOLD генерирует таблицы разбора из грамматики и помещает их в двоичный, неисполняемый файл. Каждый поддерживаемый язык имеет механизм, который считывает двоичные таблицы и анализирует исходный файл.

Я не использовал реализацию Java специально, но использовал движок Delphi с довольно хорошими результатами.