Antlr 不匹配双令牌
在ANTLR中,我有一个Antlr 不匹配双令牌,antlr,Antlr,在ANTLR中,我有一个不匹配的TokenException,定义如下: type : IDENTIFIER ('<' (type (',' type)*) '>')?; 其中明确指示ANTLR单独处理每个标记 我怎样才能解决这个问题呢?我无法重现这个问题。由以下程序生成的解析器: grammar T; type : IDENTIFIER ('<' (type (',' type)*) '>')?; IDENTIFIER : 'A'..'Z'; 语法T;
不匹配的TokenException
,定义如下:
type : IDENTIFIER ('<' (type (',' type)*) '>')?;
其中明确指示ANTLR单独处理每个标记
我怎样才能解决这个问题呢?我无法重现这个问题。由以下程序生成的解析器:
grammar T;
type : IDENTIFIER ('<' (type (',' type)*) '>')?;
IDENTIFIER : 'A'..'Z';
语法T;
类型:标识符('')?;
标识符:'A'..'Z';
将输入A
(不带空格)解析到以下解析树中:
您需要提供导致此输入产生不匹配的TokenException
的语法
也许您正在使用AntlWorks的解释器(或者Eclipse的ANTLR-IDE,它使用相同的解释器)?在这种情况下,那可能就是问题所在:它是出了名的小车。不要使用它,而是使用AntlWorks的调试器:它很棒(上面发布的图像来自调试器)
拉兹洛·博宁写道:
明白了。我有个主意,明白了。我定义了一个
>
令牌。很快,有没有办法让代币识别优先于其他识别?
A<B,C<D> >
grammar T;
type : IDENTIFIER ('<' (type (',' type)*) '>')?;
IDENTIFIER : 'A'..'Z';