如何在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
.
之类的内容
我的 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
.