【问题标题】:changing the text field in parser of antlr tool更改antlr工具解析器中的文本字段
【发布时间】:2016-09-15 19:37:15
【问题描述】:

在 Antlr4 语法中,我有一个简单的规则,相当于

a : b    
  ;

我想在a的文本末尾连接一个字符串('hello')

我尝试了类似的东西

a : b
  {
       $b.text.concat('Hello');
  };

但这不起作用..我怎样才能做到这一点?

注意:a不是语法的最外层规则或开始规则

【问题讨论】:

    标签: parsing antlr grammar


    【解决方案1】:

    不,这是不可能的。 b 是一个解析器规则,它是 0 个或多个令牌的有序集合。您不能只在其中附加一个字符串,也不能即时插入一个标记。

    【讨论】:

    • 更具体地说,这是手头的问题,我有一种具有一些语法的语言..我开发了另一种语法稍作修改的语言..现在将语言 1 中的代码转换为语言 2,我已经构建了语言 1 的 antlr 语法,我正在尝试更改一些规则的文本,使其与语言 2 同步 ..那么我可以使用 antlr 来实现吗?
    • 我建议您创建一个新问题并通过几个示例来解释您的问题。评论框不适合问答。
    • 这可以通过 setText 方法实现
    • @MysticForce 一个词法分析器规则,是的,但也有一个解析器规则?如果这确实是真的(最好使用有效的语法),请随意发布答案:这样其他人可能会从中受益。
    • 是的,我刚刚发现它只适用于词法分析器规则。唯一的方法是遍历 AST
    猜你喜欢
    • 2011-11-22
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    相关资源
    最近更新 更多