Подтвердить что ты не робот

Может ли Marpa использоваться для ускорения анализа интерпретатора Perl?

Можно ли использовать существующий парсер Marpa для улучшения анализа Perl 5 (например, заменить все или фрагменты существующего анализатора Perl-интерпретатора)?

Я задаю теоретический уровень, например. игнорируя практические соображения, такие как "если это возможно", это будет стоить 10 000 человеко-часов работы ".

Если нет, каковы конкретные проблемы, препятствующие использованию Marpa? (опять же, предпочтительно теоретические).

Для фона, почему это интересно, Джеффри Кеглер (автор Marpa) опубликовал несколько знаменитую статью "Perl не может быть проанализирован: формальное доказательство" на PerlMonks в 2008, на который повлияла его тогдашняя работа над Марпой.

4b9b3361

Ответ 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. На данный момент это действительно вопрос комфорта.