我有这样的语法规则:
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”返回的值。