私は、インデンテーションに敏感な言語の文法を考えていましたが、パラメータと組み合わせた場合、CF文法がトリックを行うようです。例として、ANTLRのような形式の単純化されたPython文法の次のフラグメントを考えます。
// 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)には名前がありますか?
この文法の再帰降下パーサーを書くのは難しくないようです(パラメーターは基本的にパーサーでなければなりません)。このアプローチの難しさは何でしょうか?
パラメータを追加すると、サポートされている言語クラスがコンテキストフリーになりますか?