2017-12-02 9 views
0

は、私は、パーサー規則が定義されている:「」テキストに句読点が含まれている場合antlr4:トークン認識エラー "。"ドットや他の句読点

text: '"'.*?'"' ; 

しかし、これはfailes。

",;:!?./§/*-+)({}[]abc" 
line 1:1 token recognition error at: ',' 
line 1:2 token recognition error at: ';' 
line 1:4 token recognition error at: '!' 
line 1:5 token recognition error at: '?' 
line 1:6 token recognition error at: '.' 
line 1:7 token recognition error at: '/' 
line 1:8 token recognition error at: '§' 
line 1:9 token recognition error at: '/' 
line 1:10 token recognition error at: '*' 
line 1:11 token recognition error at: '-' 
line 1:12 token recognition error at: '+' 
line 1:13 token recognition error at: ')' 
line 1:14 token recognition error at: '(' 

奇妙なことに、奇妙なものが認識されます。 受け入れるヘルプ何かの文字列の一部として

+0

おそらく、文字列を消費しようとしている文法に別のルールが関係する問題です。 「curlies」はヒントです。トークンストリームをダンプしてみてください。 – GRosenberg

答えて

1

次のような字句解析ルールとして定義するtextを必要とする:パーサールールANTLRでワイルドカード演算子を使用すると、任意のルールの代わりに任意の文字にマッチする場合は

TEXT: '"'.*?'"' ; 

+0

確かにうまくいった – dgan

+0

私はいつも各パーサールールに対してレクサールールを定義すべきですか? – dgan

+0

いいえ...レクサールールは入力文字をトークン化するためにあり、パーザルールはこれらのトークンを特定の方法でグループ化するためのものです – Raven