【发布时间】:2013-05-28 15:39:02
【问题描述】:
我有这样的语法规则:
a returns [string expr] : (b | c) {$expr = "Build expression from b OR c here";}
b returns [string expr] : 'B' {$expr = "From b";}
c returns [string expr] : 'C' {$expr = "From c";}
我想更换
$expr = "Build expression from b OR c here";
使用将 b OR c 返回的任何内容放入 $expr 变量的指令。我知道通过执行这个任务可以解决这个问题:
a returns [string expr] : b {$expr = $b.expr;} | c {$expr = $c.expr;}
但想知道是否有更简单的方法,例如用变量命名整个组并使用它来代替:
a returns [string expr] : group = (b | c) {$expr = $group.expr;}
我已经尝试过了,但它在 ANTLR 中不起作用,即使 group 变量用于获取“b”返回的值。
【问题讨论】:
-
-1 用于从 ANTLR 语法转换为非 ANTLR 语法,仅用于发布有关 ANTLR 语法的问题。这是什么
->运算符?那是 ANTLR 3 中的重写运算符和 ANTLR 4 中的词法分析器命令运算符,但您似乎在这里将其用于其他目的?