Javascript 吉森多行发行
我用Jison编写了一个小型pharser,并编写了以下代码:Javascript 吉森多行发行,javascript,parsing,jison,Javascript,Parsing,Jison,我用Jison编写了一个小型pharser,并编写了以下代码: %lex %% "BISMILLAH" return "BM"; [0-9]+("."[0-9]+)?\b return "NUMBER"; \n return "LB"; \s+ /* skip whitespace */ "ST" re
%lex
%%
"BISMILLAH" return "BM";
[0-9]+("."[0-9]+)?\b return "NUMBER";
\n return "LB";
\s+ /* skip whitespace */
"ST" return "START";
"ED" return "END";
"AD" return 'ADD';
"SU" return 'SUBSTRACTION';
<<EOF>> return 'EOF'
/lex
%start abn
%%
abn
:
| abn bm
| abn start
| abn exp {arra.push($2);}
| abn end
;
number
: NUMBER {$$=Number($1);}
| ADD NUMBER NUMBER {$$=Number($2)+Number($3);}
| SUBSTRACTION NUMBER NUMBER {$$=Number($2)-Number($3);}
;
end
: END EOF
;
bm
: BM LB
;
start
: START LB
;
exp
: number LB {$$=$1}
;
%%
arra=[]
%lex
%%
“BISMILLAH”返回“BM”;
[0-9]+(“[0-9]+)?\b返回“数字”;
\n返回“LB”;
\s+/*跳过空格*/
“ST”返回“START”;
“ED”返回“END”;
“AD”返回“ADD”;
“SU”返回“减法”;
返回“EOF”
/莱克斯
%启动abn
%%
荷兰银行
:
|荷兰银行
|abn启动
|abn exp{arra.push($2);}
|abn端
;
数
:NUMBER{$$=NUMBER($1);}
|添加数字{$$=数字($2)+数字($3);}
|减法数{$$=NUMBER($2)-NUMBER($3);}
;
结束
:结束EOF
;
bm
:BM磅
;
开始
:开始磅
;
经验
:编号LB{$$=$1}
;
%%
阿拉=[]
我使用以下代码对其进行了测试,它可以正常工作(单行):
比斯米拉
装货单
公元6年8月
预计起飞时间
它返回14你到底是怎么测试的?您的解析器不会“返回”任何内容;它所做的只是尝试将数字添加到
arra
。如果解析器可以看到一个名为arra
的数组,那么就我所见,它工作得很好。因此,有必要对你所做的事情进行更精确的描述。