小编JPT*_*JPT的帖子

antlr4 / java:漂亮的打印解析树到标准输出

初学者的问题:如何将解析树的可读版本打印到stdout?

CharStream input = CharStreams.fromFileName("testdata/test.txt");
MyLexer lexer = new MyLexer(input);
CommonTokenStream tokens = new CommonTokenStream(lexer);
MyParser parser = new MyParser(tokens);     
parser.setBuildParseTree(true);
RuleContext tree = parser.record();
System.out.println(tree.toStringTree(parser));
Run Code Online (Sandbox Code Playgroud)

这将整棵树打印在由方括号'()'分隔的一行上。

(record (husband <4601>   (name KOHAI   Nikolaus) \n (birth *   um.1872   (place Ploschitz)) \n\n) (wife      (marriage oo) \n      (name SCHLOTTHAUER   Maria) \n      (birth *   um.1877  
...
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西

record 
  husband
    <id>
    name
       <name>
...
  wife
Run Code Online (Sandbox Code Playgroud)

java antlr pretty-print antlr4

6
推荐指数
2
解决办法
2329
查看次数

标签 统计

antlr ×1

antlr4 ×1

java ×1

pretty-print ×1