如何在jison中编写自定义函数和变量?

how to write custom function and variable in jison?

我的 lex 代码是

/* description: Parses end executes mathematical expressions. */

/* lexical grammar */
%lex
%%

\s+                   /* skip whitespace */
[0-9]+("."[0-9]+)?\b  return 'NUMBER'
[a-zA-Z]              return 'FUNCTION'
  <<EOF>>               return 'EOF'
.                     return 'INVALID'

/lex

/* operator associations and precedence */

%start expressions

%% /* language grammar */

expressions
    : e EOF
        {return ;}
    ;

e
    | FUNCTION '('e')'
      {$$=}
    | NUMBER
        {$$ = Number(yytext);}
    ;

我遇到了错误

Parse error on line 1:
balaji()
-^
Expecting '(', got 'FUNCTION'

我想在此 parser.thank 中传递 myfun(a,b,...) 和 myfun(a) 的内容,感谢您为我花费的宝贵时间。

[a-zA-Z] 匹配单个字母字符(在本例中为字母 b),返回 FUNCTION。当需要下一个标记时,它再次匹配单个字母字符 (a),返回另一个 FUNCTION 标记。但是语法当然不允许两个连续的 FUNCTION;正如它所说,它期待 (

您可能打算 [a-zA-Z]+,尽管更好的标识符模式是 [A-Za-z_][A-Za-z0-9_]*,它匹配诸如 my_function_2.

之类的内容