0

GOD SAKEのために!! 段落を含む文書を認識する簡単なジソン文法の書き方??? 私は次の文法を使用しています:

%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 Web サイトでこれを試してみると、次のことがわかります。

[["Hello","world"],"Monkey","beast","Hi"]

私が期待しているのは

[["Hello","world"],["Monkey","beast"],["Hi"]]

誰か助けてくれませんか????

4

1 に答える 1

0

どうでも!!問題は私にありましたが、将来の参考のために:単に置き換えてください:

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

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

:)

乾杯!

于 2016-07-11T15:13:05.413 に答える