实际上,我想在Antlr语法中使用静态Java类,例如从该类获取值并仅使用语法在控制台上进行打印。有办法吗?
例如
parse
: block EOF
;
block
: System.out.println(javaClass.getValue())
最佳答案
嵌入式代码在ANTLR中称为“动作”:https://github.com/antlr/antlr4/blob/master/doc/lexicon.md#actions
换句话说,执行以下操作:
grammar T;
@header {
// Code will be placed outside the parser class
static class JavaClass {
public String getValue() {
return "TODO";
}
}
}
@members {
// Code will be placed inside the parser class
private final JavaClass javaClass = new JavaClass();
}
parse
: block EOF
;
block
: stat+ {System.out.println(javaClass.getValue());}
;
stat
: ...
;