2

我想匹配 \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 只输出已处理数据的字节值,但是我必须实现额外的逻辑才能使用我的实际文本数据。

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

4

1 回答 1

3

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

编辑:另见Lexer.MIN_CHAR_VALUELexer.MAX_CHAR_VALUE常量。

于 2013-02-28T18:40:35.377 回答