Eu estava pensando em gramáticas para linguagens sensíveis a indendências e parece que as gramáticas CF fariam o truque se combinadas com parâmetros. Como exemplo, considere este fragmento para gramática simplificada do Python no formato 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 ' ')+)
;
Minha pergunta: esse tipo de gramática (CFG com parâmetros) tem um nome?
Parece que não seria difícil escrever um analisador de descida recursiva para esta gramática (os parâmetros devem ser basicamente analisadores). Quais poderiam ser as dificuldades com essa abordagem?
A adição de parâmetros eleva a classe de idioma suportada acima de livre de contexto?