文法をコンパイルANTLRWorksエラー:「構文エラー:無効な文字リテラル:INVALID」
-
18-09-2019 - |
質問
私は(唯一のこれまでのところコメントは一致する)文法のスタブを書き、それは私にエラーを与えています:
構文エラー:無効な文字リテラル:
また、私は、次のコマンドであることにエラーを突き止めました:
... ~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'
;
所属していません StackOverflow