2017-04-24 7 views
0

私はANTLR4をプロジェクトに使用していますが、私は非常に把握していないことがあります。私はレクサールールで、アンダースコアまたは文字で始まり、 'xml'で始めることはできず、ピリオド、ダッシュ、文字、数字およびアンダースコアを含むことができるものをトークン化しています。初めが文字かアンダースコアかどうか、またそれが 'xml'ではないことを確認するにはどうすればよいですか?特定の場所にANTLR4固有の文字

+0

質問は非常に抽象的です。具体的な事例を挙げることができますか? – Rnet

+0

私は具体的には、アンダースコアや文字で始まり文字 'xml'で始まらない文字列をどのように認識すると思いますか?したがって、 '_hello'と 'hello'は受け入れますが、 'xmlhello'は受け入れません – Alex5775

+0

あなたのトークンを定義する際に、ネガティブルックアヘッドの正規表現パターンを使用することができます。例:^(?! xml)。+はxmlで始まらないものと一致します – Rnet

答えて

0

文法:

grammar Expr; 
prog: word+ EOF; 
word : STRING ; 
STRING : ~[xml]STRINGCHAR+; 
WS : [ \t\r\n]+ -> skip; 
fragment 
STRINGCHAR : [_a-z] ; 

マッチ「少年」と「_girl」ではなく、文字列の定義の中で明示的に除外〜演算子を使用して、「xmlboy」。

関連する問題