上帝保佑!!如何编写一个简单的jison语法,用于识别带有段落的文档???我正在使用以下语法:
%lex
%%
(\r?\n)+\s* return 'NL'
[^\S\r\n]+ return 'SPACE'
. return 'CHAR'
<<EOF>> return 'NL'
/lex
%s document
%%
document : paragraphs { console.log($1); return $1; }
;
paragraphs : paragraph { $$ = [$1] }
| paragraphs paragraph { $$ = $1.concat($2) }
;
paragraph : NL
| text NL { $$ = $1 }
;
text : string { $$ = [$1] }
| text SPACE string { $$ = $1.concat($3) }
;
string : CHAR
| string CHAR { $$ = $1 + $2 }
;
对于我正在使用的测试:
Hello world
Monkey beast
Hi
我想要的是,我的语法可以看出,一个段落成了一系列词语。
在JISON网站上试试这件事,让我一直在给予:
[["Hello","world"],"Monkey","beast","Hi"]
而我所期待的是
[["Hello","world"],["Monkey","beast"],["Hi"]]
任何人都可以帮助我????
答案 0 :(得分:0)
没关系!!问题出在我身上,但供将来参考:只需替换:
| paragraphs paragraph { $$ = $1.concat($2) }
通过
| paragraphs paragraph { $$ = $1.concat([$2]) }
:)
干杯!