将小写字母与 ANTLR 匹配

发布于 2024-12-17 21:47:51 字数 250 浏览 2 评论 0原文

我使用 ANTLRWorks 来实现简单的语法:

grammar boolean;

// [...]
lowercase_string
        :   ('a'..'z')+ ;

但是,根据解释器,lowercase_stringfoobar 不匹配 (MismatchedSetException(10!={}). 想法?

I use ANTLRWorks for a simple grammar:

grammar boolean;

// [...]
lowercase_string
        :   ('a'..'z')+ ;

However, the lowercase_string doesn't match foobar according to the Interpreter (MismatchedSetException(10!={}). Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江南烟雨〆相思醉 2024-12-24 21:47:51

您不能在解析器规则中使用 .. 运算符。要匹配 'a''z' 范围,请为其创建一个词法分析器规则(词法分析器规则以大写字母开头)。

尝试这样:

lowercase_string
  :  Lower+ 
  ;

Lower
  :  'a'..'z'
  ;

或者:

lowercase_string
  :  Lower
  ;

Lower
  :  'a'..'z'+
  ;

另请参阅之前的问答:ANTLR 中解析器规则和词法分析器规则之间的实际区别?

You can't use the .. operator inside parser rules like that. To match the range 'a' to 'z', create a lexer rule for it (lexer rules start with a capital).

Try it like this:

lowercase_string
  :  Lower+ 
  ;

Lower
  :  'a'..'z'
  ;

or:

lowercase_string
  :  Lower
  ;

Lower
  :  'a'..'z'+
  ;

Also see this previous Q&A: Practical difference between parser rules and lexer rules in ANTLR?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文