gpt4 book ai didi

sql - 如何处理 Antlr 4 生成的 LISP 样式树?

转载 作者:行者123 更新时间:2023-12-05 03:13:32 24 4
gpt4 key购买 nike

我使用 Antlr 4 语法解析了一个 SQL 查询。tree.toStringTree() 的结果是这样的:([] ([845] 选择 ([878 845] ([1473 878 845] ([1129 1473 878 845] ([1700 1129 1473 878 845] col1))) 作为 ([1477 878 845] a)) 从 ( [887 845] ([1487 887 845] ([1694 1487 887 845] 表 1)))))

Antlr 文档告诉我这是一个 LISP 风格的树。如何进一步处理 LISP 树?

最佳答案

如果您提供 Parser 实例,对您的眼睛会更友好:

SQLiteLexer lexer = new SQLiteLexer(new ANTLRInputStream(sql));
SQLiteParser parser = new SQLiteParser(new CommonTokenStream(lexer));
ParseTree tree = parser.select_stmt();
System.out.println(tree.toStringTree(parser));

至于你处理这个字符串的问题:你不应该。它仅用于显示树。就像普通的 toString() 一样工作。你不应该解析这个字符串,因为不能保证它在不同版本之间看起来是一样的。

我之前已经建议过,但我会再次这样做:如果你想获得层次结构,只需使用 ParseTree,它有父引用和子引用。如果这不是您想要的,请更好地解释自己。

关于sql - 如何处理 Antlr 4 生成的 LISP 样式树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com