【发布时间】: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