如何匹配ANTLR4中的任何字符?

时间:2013-02-28 17:29:08

标签: antlr4

我想将\ u0000范围内的任何字符与\ uFFFF匹配,以下代码是不够的:

grammar CharacterClass;

start   :       CH* EOF;
CH      :       [\u0000-\uFFFF];

修改

我问,因为我想在XML结构中插入二进制数据:

<binary:key>uhihahdudi    some binary data, that should be ignored by ANTLR
izgizgio</binary:key>

当然可以将自己限制在[\ u0000 \ u00FF]范围内,而我的Inputstream只输出已处理数据的字节值,但是我必须实现额外的逻辑才能使用我的实际文本数据。< / p>

对我来说最好的解决方案是,ANTLR以某种方式跳过二进制部分,因此我可以处理文本数据(处理二进制部分我只需要这些部分的开始和结束位置);

1 个答案:

答案 0 :(得分:3)

ANTLR 4只能匹配范围[\u0000-\uFFFE]。如果您确实需要匹配所有可能的输入,则需要匹配[\u0000-\u00FF]并将输入作为字节而不是UTF-16字符提供给解析器。

编辑:另请参阅Lexer.MIN_CHAR_VALUE and Lexer.MAX_CHAR_VALUE常量。