2016-04-13 5 views
0

私は経験はなく、まだ文法について学んでいません。空白と特殊文字をサポートする文法の例が必要です。& 私の現在の文法やルールでは、空白と特殊記号をサポートするいくつかの文字列が表示されるためです。 )(空白&文字ANTLR 4 - 空白と特殊文字をサポートする文字列のための文法

を投げ - Hello Worldの出力が< HelloWorldのです!!!!!
を:!。私は入力を与える場合例えば

翻弄されている空白を)知っていますこの画像を見てください: problem

なぜですか?? ANTLR parse strings (keep whitespaces) and parse normal identifiers

しかし、私が起こるのかを理解カント:

は、ここに私の現在の文法は、私は、このリンクを読みました

string 
    : '"' (~'"'|'\"')* '"' 
    ; 

Id 
    : Letter(Letter|Digit)* 
    ; 

Num 
    : Digit 
    ; 

fragment 
    Digit 
    : [0-9]+ 
    ; 

Letter 
    : [a-zA-Z] 
    ; 


LINE_COMMENT 
    : '//' ~[\r\n]* -> skip 
    ; 

をexample.g4です。私はアドバイスが必要です。ありがとう。

+0

文法に空白と一致するレクサールールはありません。 'WS:[\ t \ r \ n] +; ' –

+0

親愛なる友人のようなものをここに追加して私を助けてくれてありがとう。 しかし、WS:[\ t \ r \ n] +の後にparsetreewalkerでエラーが発生しました。文法には、 私の文字列はnullになります。 オブジェクト参照がオブジェクトのインスタンスに設定されていません。 –

答えて

1

Finnaly私は解決策を与える人を見つけました。 彼はjim

です。ここでは彼の解答は です。パーサールールとしてstringのルールを宣言しています。
レクサールールは、UPPER CASEで始まる必要があります:STRING:....

あなたの手紙のルールはフラグメントではないので、それはあなたがあなたのレクサーに空白をどうするかを指定していないので、それは意志同上
と競合します一致しないとエラーが発生します。
オンラインチュートリアルの1つを見つけるか、本を購入するか、より良い方法で両方を実行します。今、私の問題が解決

ジム


は、私の中に空白文字列をプリントアウトすることができます。

関連する問題