简单的JISON解析器来检测段落



看在上帝的份上!!如何编写一个简单的jison语法来识别带有段落的文档???我使用以下语法:

%lex
%%
(r?n)+s*                 return 'NL'
[^Srn]+                  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"]]

谁能帮我????

关系!!问题出在我身上,但供将来参考:只需替换:

| paragraphs paragraph       { $$ = $1.concat($2) }

| paragraphs paragraph       { $$ = $1.concat([$2]) }

:)

干杯!

相关内容

  • 没有找到相关文章

最新更新