如何为调用表达式编写递归下降语法分析器



我有下一个规则:

factor ::= id | func | ( expr )  
func ::= id ( list )  
list ::= list , expr | expr

我写了一个简单的下降解析器:

function factor() {
  if (lookahead === "(") {
    match("(");
    expr();
    return match(")");
  } else {
    id();
  } // How to understand what it can be a func here?
};
​
function func() {
  id();
  match("(");
  list();
  match(")");
};

但是如何将func和id结合起来呢?

左因子语法如下:

 factor ::= id ( '(' list ')' )? | '(' expr ')' 
 list ::=  expr ( ',' expr ); 

注意小心区分文字括号"("one_answers")"和语法分组括号(…)

编码留给读取器:-}

查看我关于如何编写递归解析器的答案以了解详细信息。

最新更新