Saya sedang memikirkan tata bahasa untuk bahasa indendasi-sensitif dan sepertinya tata bahasa CF akan melakukan trik jika dikombinasikan dengan parameter. Sebagai contoh, pertimbangkan fragmen ini untuk tata bahasa Python yang disederhanakan dalam format seperti 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 ' ')+)
;
Pertanyaan saya: Apakah tata bahasa semacam ini (CFG dengan parameter) memiliki nama?
Tampaknya tidak akan sulit untuk menulis parser keturunan rekursif untuk tata bahasa ini (parameter pada dasarnya harus parser). Apa yang bisa menjadi kesulitan dengan pendekatan ini?
Apakah penambahan parameter meningkatkan kelas bahasa yang didukung di atas bebas konteks?