Stavo pensando alle grammatiche per i linguaggi sensibili alle indendenze e sembra che le grammatiche CF farebbero il trucco se combinate con i parametri. Ad esempio, considera questo frammento per la grammatica Python semplificata in formato simile a 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 ' ')+)
;
La mia domanda: questo tipo di grammatiche (CFG con parametri) ha un nome?
Sembra che non sarebbe difficile scrivere un parser di discesa ricorsivo per questa grammatica (i parametri dovrebbero essere fondamentalmente parser). Quali potrebbero essere le difficoltà con questo approccio?
L'aggiunta di parametri aumenta la classe di lingue supportata sopra senza contesto?