如何在 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 $1;}
;
e
| FUNCTION '('e')'
{$$=$3}
| NUMBER
{$$ = Number(yytext);}
;

我收到错误

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

我想在这个解析器中传递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之类的东西。

相关内容

  • 没有找到相关文章

最新更新