我已经编写了一个 ANTLR 语法,现在正在从中构建一个 AST。手头的问题是,应该根据上下文从规则生成不同的子树。谷歌给了我这个:
http://www.antlr.org/wiki/display/~admin/2008/04/11/Rewrite+rules#Rewriterules-Grammaticalcontext
但是我无法从这些示例中获得正确的语法。所以问题是:在 ANTRL3.4 中使用上下文敏感重写的正确语法是什么(使用 C 目标,如果此信息有任何用处)?
一个最小的例子是在这里,我的一个非工作试验让它工作:
grammar foo;
tokens {
A;
B;
}
start
: a
| b
;
a
: foo
;
b : foo
;
foo
:
[... a foo]: 'x' -> ^(A 'x')
[... b foo]: 'x' -> ^(B 'x')
;
谢谢,约斯特