2016-07-11 6 views
0

Für GOTT AUFNEHMEN !! Wie schreibe ich eine einfache Jison-Grammatik, die ein Dokument mit Absätzen erkennt ??? Ich verwende die folgende Grammatik:Einfacher JISON-Parser zum Auffinden von Absätzen

%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 } 
      ; 

Und für Test ich verwende:

Hello world 
Monkey beast 
Hi 

, was ich will, wie Sie durch meine Grammatik sehen kann, ist, dass ein Absatz wurde Array von Wörtern.

dieser Versuch, die in der Jison Webseite mich halten zu geben:

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

während das, was ich erwarten Sie ist

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

Kann mir jemand helfen ????

Antwort

0

Gern geschehen !! Das Problem war, mit mir, aber für die Zukunft: einfach ersetzen:

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

von

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

:)

Prost!

Verwandte Themen