3.3 Integrating a Generated Parser into a Java Program
优质
小牛编辑
141浏览
2023-12-01
生成 lexer 和 parser 后,就可以开始将 parser 与 language application 集成了:
// 导入 ANTLR runtime
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.*;
public class Test {
public static void main(String[] args) throws Exception {
// 从标准输入创建 CharStream
ANTLRInputStream input = new ANTLRInputStream(System.in);
// 创建 lexer,处理输入的 CharStream
ArrayInitLexer lexer = new ArrayInitLexer(input);
// 创建 buffer of tokens,保存 lexer 生成的 token
CommonTokenStream tokens = new CommonTokenStream(lexer);
// 创建 parser,处理 token 缓冲区中的 token
ArrayInitParser parser = new ArrayInitParser(tokens);
// 从 init rule,开始语法分析
ParseTree tree = parser.init();
// 输入 LISP 风格的 parse tree,效果类似 -trees
System.out.println(tree.toStringTree(parser));
}
}
编译 parser 等和 Test.java
:
javac *.java
运行 Test
:
array [master●] % java Test
{1, 2, 3}
(init { (value 1) , (value 2) , (value 3) })