Есть ли в Ruby аддон, похожий на грамматику Perl 6? - PullRequest
5 голосов
/ 28 октября 2009

Perl был одним из моих самых популярных языковых инструментов на протяжении многих лет. Perl 6 грамматик выглядит как отличная языковая особенность. Я хотел бы знать, если кто-то начал что-то подобное для Руби.

Ответы [ 3 ]

11 голосов
/ 28 октября 2009

Если вы хотите использовать настоящие грамматики Perl 6 в Ruby, лучшим вариантом будет Cardinal , рубиновый компилятор в Parrot. В настоящее время он еще не закончен и ОЧЕНЬ МЕДЛЕН, но я очень надеюсь, что в конечном итоге он станет жизнеспособной рубиновой реализацией. В настоящее время он в основном неактивен, ожидая некоторых изменений инфраструктуры в Parrot для поддержки улучшенной скорости анализа и дополнительных функций.

6 голосов
/ 29 октября 2009

Нет. А поскольку грамматики Perl6 являются функцией language , а Ruby не позволяет расширять язык, фактически невозможно реализовать это в «аддоне».

Однако существует множество библиотек для Ruby, которые реализуют различные виды систем синтаксического анализа или грамматики. Стандартная библиотека уже содержит racc, который является генератором синтаксического анализатора LALR (1) (сравнимым и несколько совместимым с почтенным yacc). Затем есть генератор синтаксического анализатора ANTLR , который имеет бэкэнд Ruby (хотя я не уверен, работает ли он на самом деле).

Наиболее близким к грамматике Perl6 в Ruby был бы проект Ruby-OMeta (обязательно взгляните также на форк Райана Дэвиса ), который, к сожалению, все еще находится в стадии разработки , (Вернее, уже не в активной разработке.)

Итак, в продолжение того, что на самом деле существует , я рекомендую вам взглянуть на Грамматический проект и Treetop .

2 голосов
/ 29 октября 2009

Не знаю ничего подобного для Ruby.

Однако в Perl5 есть нечто похожее, см. Regexp::Grammars

...