文法をコンパイルANTLRWorksエラー:「構文エラー:無効な文字リテラル:INVALID」

StackOverflow https://stackoverflow.com/questions/1872751

質問

私は(唯一のこれまでのところコメントは一致する)文法のスタブを書き、それは私にエラーを与えています:

  

構文エラー:無効な文字リテラル:

また、私は、次のコマンドであることにエラーを突き止めました:

... ~LINE_ENDING* ...
LINE_ENDING     : ( '\n' | '\r' | '\r\n');

誰かが私はこの問題を解決する手助けすることはできますか?

役に立ちましたか?

解決

~演算子はセットのみに適用することができます。レクサーでは、集合の要素は、入力ストリームの文字です。言い換えれば、あなたはこれを持つことができます:

~(  'a'..'z'
|   'C'
|   '\r'
|   '\n'
)

しかし、それは代わりにの設定の(2文字の)のシーケンスのだから、あなたがこれを持つことはできません。

~('\r\n')

あなたが遭遇した問題は、この第2の例を拡張したものです。

他のヒント

あなたがそのエラーを取得する理由はわからない(私は現時点ではそれを自分自身をテストする手段を持ちません)。おそらく、あなたはどちらかの単一のchar(\rまたは\n)または二重文字(\r\nを)否定しているという事実が問題ありますか?

あなたがしようとした場合どうなります:

SingleLineComment
    :   '//' (~LineBreakChar)* (NewLine | EOF)
    ;

LineBreakChar
    :   '\r' | '\n'
    ;

NewLine
    :   '\r'? '\n' | '\r'
    ;

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top