Я думал о грамматиках для чувствительных к индендангу языков, и похоже, что грамматики CF сработают, если их объединить с параметрами. В качестве примера рассмотрим этот фрагмент для упрощенной грамматики Python в ANTLR-подобном формате:
// on top-level the statements have empty indent
program
: statement('')+
;
// let's consider only one compound statement and one simple statement for now
statement(indent)
: ifStatement(indent)
| passStatement(indent)
;
passStatement(indent)
: indent 'pass' NEWLINE
;
// statements under if must have current indent plus 4 spaces
ifStatement(indent)
: indent 'if' expression ':' NEWLINE (statement(indent ' ')+)
;
Мой вопрос: есть ли у этого вида грамматик (CFG с параметрами) имя?
Похоже, что для этой грамматики не составит труда написать парсер рекурсивного спуска (параметры должны быть в основном парсерами). Какие могут быть трудности с этим подходом?
Повышает ли добавление параметров поддерживаемый языковой класс над контекстно-свободным?