我当时在考虑对倾向性敏感的语言的语法,如果将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)是否有名称?
看起来为这种语法编写递归下降解析器并不难(参数基本上应该是解析器)。这种方法可能会有什么困难?
添加参数是否将支持的语言类提高到上下文无关?