我正在研究“The Definitive ANTLR 4 Reference”一书,我正在尝试运行ArrayInit.g4示例。我已经提供了必要的一切,但是当我运行示例并将值输入控制台时,没有任何反应(第29和30页)。
这是语法:
grammar ArrayInit;
init : '{' value ( ',' value)* '}';
value : init | INT ;
INT : [0-9]+ ; WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
这是Test.java
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;
public class Test {
public static void main(String[] args) throws Exception {
ANTLRInputStream input = new ANTLRInputStream(System.in);
ArrayInitLexer lexer = new ArrayInitLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
ArrayInitParser parser = new ArrayInitParser(tokens);
ParseTree tree = parser.init();
System.out.println(tree.toStringTree(parser));
}
}
给定输入为:{1,{2,3},4}
预期输出为:(init {(值1),(值(init {(值2),(值3)})),(值4)})