Ответ 1
Спасибо, что спросили. Сообщение perlmonks и моя текущая работа по анализу адресуют два разных, если есть связанные вопросы. Вопрос 1: Разрабатывает ли Perl синтаксический анализ в своей полной общности, разрешимый машиной Тьюринга? Вопрос 2: Может ли Марпа, как практический вопрос, разобрать Perl 5?
Вы можете сравнить два вопроса: "Является ли поведение каждой программы C разрешимой?" и "Может ли компьютер запускать программы, скомпилированные в C?" Ответы, соответственно, "нет" и "да для всех практических целей и разумных выборов X". Итак, мой пост perlmonks (обновленный здесь) посвящен теоретическому вопросу о том, разрешен ли синтаксис программ Perl в своей полной общности. Обратите внимание, что разрешимость Perl-анализа в этом контексте не имеет ничего общего с Marpa, рекурсивным спуском, бизоном и т.д. - это о машинах Тьюринга.
Вопрос 2: "Может ли Марпа управлять практическим парсером Perl 5?" Текущий анализатор Perl 5 - LALR, с отдельным лексером и много процедурной помощи. Marpa более мощная, чем LALR, позволяет использовать отдельный лексер и предлагает гораздо большую помощь процессуальному коду, чем LALR. Я рассмотрел вопрос о скорости в недавнем сообщении в блоге: "Является ли Эрли достаточно сильным?" То, что я только что сказал, очень телеграфно, но я надеюсь, что это будет сделано, чтобы изложить, как я оправдываю свой ответ "да" на вопрос 2.
Никакая глубокая архитектурная проблема не стоит на пути парсера Perl 5, управляемого Marpa. На данный момент это действительно вопрос комфорта.