Утилиты лексирования и разбора - PullRequest
5 голосов
/ 13 февраля 2011

Я ищу утилиты для лексического анализа и генерации парсеров, которые не являются Flex или Bison. Требования:

  • Parser указывается с использованием неконтекстной грамматики LL (*) или GLR. Я также хотел бы рассмотреть PEGs.
  • Тесно интегрируется с языком программирования, который можно использовать как для написания сценариев, так и для разработки приложений. Язык также должен иметь возможности для простого взаимодействия с C. Хорошими примерами являются Python, Ruby и Guile. Нет C, Java или Perl, пожалуйста. Я хочу, чтобы язык был однородным; Я хочу, чтобы генератор парсера выводил код на том же языке.
  • Хорошо документировано и качество продукции.
  • Открытый исходный код. Бесплатно также желательно (хотя и не обязательно).
  • Совместимо с дистрибутивами Linux или одним из BSD с открытым исходным кодом. Я бы рассмотрел OpenSolaris.
  • Быстрое развитие является гораздо более серьезной проблемой, чем эффективность.
  • Подходит для анализа как естественного, так и формального языков. Разбор естественного языка ограничен короткими простыми предложениями с очень небольшой неопределенностью.

Я смотрю на ANTLR, хотя никогда не использовал его. Комментарии на этот счет приветствуются. Дайте мне знать, какие ваши любимые утилиты отвечают этим требованиям и почему вы бы порекомендовали их.

Ответы [ 3 ]

2 голосов
/ 13 февраля 2011

Список современных парсеров Packrat здесь .

1 голос
/ 14 февраля 2011

NL текст имеет тенденцию к значительной неопределенности. Если вы хотите проанализировать естественный язык, я не думаю, что какой-либо из классических генераторов синтаксического анализатора типа компилятора (LALR, LL [включая ANTLR]) вам сильно поможет, и генераторы синтаксического анализатора типа компилятора обычно вообще не обрабатывают это.

Анализатор GLR, который обрабатывает неоднозначность, может быть полезным; Бизон предлагает это как опцию.

0 голосов
/ 13 февраля 2011

Guile 2.0 (выйдет примерно через несколько дней) имеет библиотеку синтаксического анализа LALR (1) .

...