4

我试图在 ANTLR 中使用 UNICODE 语法,但这总是会导致错误(语法片段):

grammar Expression;

options {
  charVocabulary='\u000'..'\uFFFE';
}

parse
  :  exp EOF
;

exp
  : 'a'
 ;

它总是以:'\uFFFE' not expected ';'. 如何编写正确的 UNICODE 语法——正确的charVocabulary定义是什么?

我正在使用 ANTLR 3.2,但在新版本中也会导致相同的错误。

4

1 回答 1

3

charVocabulary是一个 ANTLR v2 选项,在 ANTLR v3 语法中不可用。从 ANTLR v3 语法生成的所有词法分析器都接受范围内的字符\u0000..\uFFFF(确保在创建ANTLRInputStream时使用正确的编码!)。

使用 ANTLRWorks 时,您可以通过定义Any匹配任何字符的规则来看到这一点:

Any : . ; 

你会看到下图显示在 ANTLRWorks 的下半部分:

在此处输入图像描述

于 2012-06-10T13:24:50.130 回答