【问题标题】:ANTLR using a symbol as a token nameANTLR 使用符号作为令牌名称
【发布时间】:2021-02-21 18:16:25
【问题描述】:

我想在 ANTLR 词法分析器文件中使用 ( 作为标记名称。我已经尝试了几个版本,但它们似乎都没有工作并在构建时导致错误。这是我的(失败的)尝试:

(1)(: '(';

(2)'(': '(';

(3)'\(': '(';

(4)\(: '(';

这可能吗?如果可以,我该怎么做?

【问题讨论】:

  • 有必要吗?可能不是。 (1) 您可以在语法的解析器规则中使用字符串文字。注意:在拆分语法中,只要您在 RHS 上有带有字符串文字的词法分析器规则,就可以使用字符串文字;在组合语法中,您甚至可能不需要为字符串文字定义词法分析器规则。因此,您可以在解析器语法中编写“a: '(' foobar ')';” (2) 对于tree walker,测试token text。否则,您可能必须声明令牌类型以与 tree walker 协调。这是因为 Antlr 会声明一个生成的令牌符号名称。

标签: token antlr lexical-analysis


【解决方案1】:

这是不可能的。规则名称必须以下划线或字母开头,后跟零个或多个下划线、字母或数字。所以'(' 或它的任何变体都不是有效的规则名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2011-08-16
    • 2021-12-05
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多