Аксиома "Только Perl может анализировать Perl", где "perl" - это двоичный файл интерпретатора, а "Perl" - это язык, в значительной степени проистекающий из того факта, что правила синтаксического анализа могут изменяться во время синтаксического анализа файла.В Perl 5 это происходит из объявлений прототипов подпрограмм, из различных прагм и из фильтров исходного кода.
По моему мнению, это только станет более серьезной проблемой в Perl 6. В Perl 5 числоколичество мест, где правила парсера могут измениться, ограничено, тогда как в Perl 6 они широки и разнообразны.В дополнение ко всему, что есть в Perl 5, Perl 6 позволяет вам определять свои собственные операторы, и, поскольку это определение сделано в коде Perl, для его понимания необходим интерпретатор Perl.
Насколько я знаю, ни одна реализация пока не поддерживает его, но спецификация Perl 6 также включает в себя макросы реального языкового уровня, которые могут реструктурировать код Perl 6 либо в текстовом виде, либо путем манипулирования AST.И то и другое требует наличия интерпретатора Perl для выполнения своей магии.
Итак, в заключение я чувствую, что Perl 6 сделает аксиому сильнее, чем для Perl 5. (И будет еще большекошмара для авторов подсветки синтаксиса :)) Конечно, это все для увеличения выразительности языка, поэтому я согласен с уступкой.
Следствием вышесказанного является то, что в отличие от Perl 5, Perl 6 имеет формальную спецификацию, поэтому аксиому, возможно, придется изменить на «Только интерпретатор, реализующий спецификацию Perl 6, может анализировать Perl 6», но этонемного педантично.
За обновление:
Я не думаю, что вышесказанное исключает идею JIT-компилятора для Perl 6, поскольку по определению такой компилятор также должен был бысодержит интерпретатор Perl 6Что касается статической компиляции, это МОЖЕТ быть возможным, но это сильно ограничит возможности языка во время выполнения, так как любая конструкция, включающая eval, не будет работать.
PPI полезен в земле Perl 5, потому что интерпретатор perl необеспечить множество богатых и простых в использовании интерфейсов для его AST.В Perl 6 уровень самоанализа намного выше, поэтому сам интерпретатор может предоставить все необходимые инструменты.