Вопрос

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

Это было полезно?

Решение

Если вам нужно поведение, подобное YACC (управляемое таблицами), я знаю только CUP .

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

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

Другие советы

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

GNU Bison имеет интерфейс Java,

http://www.gnu.org /software/bison/manual/html_node/Java-Bison-Interface.html

Вы можете использовать его для генерации кода Java.

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

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

Хорошо взаимодействует с jFlex

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

Другой вариант - GOLD Parser .

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top