Ich dachte an Grammatiken für indendationssensitive Sprachen und es sieht so aus, als würden CF-Grammatiken in Kombination mit Parametern den Trick machen. Betrachten Sie als Beispiel dieses Fragment für eine vereinfachte Python-Grammatik im ANTLR-ähnlichen Format:
// 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 ' ')+)
;
Meine Frage: Hat diese Art von Grammatik (CFG mit Parametern) einen Namen?
Es sieht so aus, als ob es nicht schwierig wäre, einen rekursiven Abstiegsparser für diese Grammatik zu schreiben (Parameter sollten im Grunde Parser sein). Was könnten die Schwierigkeiten bei diesem Ansatz sein?
Erhöht das Hinzufügen von Parametern die unterstützte Sprachklasse über kontextfrei?