【发布时间】:2011-11-23 14:50:04
【问题描述】:
我将 ANTLRWorks 用于一个简单的语法:
grammar boolean;
// [...]
lowercase_string
: ('a'..'z')+ ;
但是,根据解释器的说法,lowercase_string 与 foobar 不匹配 (MismatchedSetException(10!={}). 想法?
【问题讨论】:
标签: antlr antlrworks
我将 ANTLRWorks 用于一个简单的语法:
grammar boolean;
// [...]
lowercase_string
: ('a'..'z')+ ;
但是,根据解释器的说法,lowercase_string 与 foobar 不匹配 (MismatchedSetException(10!={}). 想法?
【问题讨论】:
标签: antlr antlrworks
您不能在这样的解析器规则中使用.. 运算符。要匹配'a' 到'z' 的范围,请为其创建词法分析器规则(词法分析器规则以大写字母开头)。
试试这样:
lowercase_string
: Lower+
;
Lower
: 'a'..'z'
;
或:
lowercase_string
: Lower
;
Lower
: 'a'..'z'+
;
另请参阅之前的问答:Practical difference between parser rules and lexer rules in ANTLR?
【讨论】: