Perl был одним из моих дежурных инструментов языка программирования в течение многих лет и лет. Perl 6 грамматик похож на большую функцию языка. Я хотел бы знать, запустил ли кто-то что-то вроде этого для Ruby.
Нет. И поскольку грамматики Perl6 являются функцией языка , а Ruby не позволяет расширять язык, на самом деле невозможно реализовать это в «аддоне».
Однако существует множество библиотек для Ruby, которые реализуют различные виды систем синтаксического анализа или грамматики. Стандартная библиотека уже содержит racc
, который является генератором синтаксического анализатора LALR (1) (сопоставимым и в некоторой степени совместимым с почтенным yacc
). Затем есть генератор парсера ANTLR , который имеет бэкэнд Ruby (хотя я не уверен, действительно ли это работает).
Самым близким к грамматикам Perl6 в Ruby будет Ruby- Проект OMeta (не забудьте также взглянуть на вилку Райана Дэвиса ), который, к сожалению, все еще находится в стадии разработки. (Или, скорее, больше не находится в активной разработке.)
Итак, придерживаясь того, что на самом деле существует , я рекомендую вам взглянуть на Grammar project и Treetop .
Если вы хотите использовать настоящие грамматики Perl 6 в Ruby, лучше всего будет Cardinal , компилятор Ruby для Parrot. В настоящее время он незавершенный и ОЧЕНЬ МЕДЛЕННЫЙ, но я очень надеюсь, что в конечном итоге он станет жизнеспособной реализацией Ruby. В настоящее время он в основном неактивен, ожидаются некоторые изменения инфраструктуры в Parrot для поддержки улучшенной скорости синтаксического анализа и дополнительных функций.
Ничего подобного для Руби не знаю.
Однако есть нечто подобное для Perl5, см. Regexp :: Grammars