From 0245c1d0ed14a522fe4282a2b67f2837695fadae Mon Sep 17 00:00:00 2001 From: XudongXie Date: Sat, 24 Aug 2024 16:18:05 +0800 Subject: [PATCH] add function --- sqlTranslate/.idea/workspace.xml | 12 +++++++--- sqlTranslate/src/main/java/Main.java | 1 + .../src/main/java/Parser/AST/ASTNode.java | 23 ++++++++++++++++--- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/sqlTranslate/.idea/workspace.xml b/sqlTranslate/.idea/workspace.xml index 49395dcc..f14b0abc 100644 --- a/sqlTranslate/.idea/workspace.xml +++ b/sqlTranslate/.idea/workspace.xml @@ -6,9 +6,8 @@ + - - diff --git a/sqlTranslate/src/main/java/Main.java b/sqlTranslate/src/main/java/Main.java index fc8e3791..c7211486 100644 --- a/sqlTranslate/src/main/java/Main.java +++ b/sqlTranslate/src/main/java/Main.java @@ -18,5 +18,6 @@ public class Main { OracleParser parser = new OracleParser(lexer); ASTNode root = parser.parse(); System.out.println(root.toQueryString()); + System.out.println(root.getASTString()); } } diff --git a/sqlTranslate/src/main/java/Parser/AST/ASTNode.java b/sqlTranslate/src/main/java/Parser/AST/ASTNode.java index ed5bfdc9..5cc95157 100644 --- a/sqlTranslate/src/main/java/Parser/AST/ASTNode.java +++ b/sqlTranslate/src/main/java/Parser/AST/ASTNode.java @@ -121,8 +121,25 @@ public abstract class ASTNode { } public String getASTString() { - String str = ""; - // TODO: implement - return str; + StringBuilder ASTString = new StringBuilder(); + VisitAST(this, ASTString, 0); + return ASTString.toString(); + } + + private void VisitAST(ASTNode node, StringBuilder ASTString, int depth) { + addASTStructure(depth, ASTString); + ASTString.append(node.getClass() + ":" + node.toString() + "\n"); + for (ASTNode child : node.getChildren()) { + if (child.getClass() == node.getClass()) + VisitAST(child, ASTString, depth); + else + VisitAST(child, ASTString, depth + 1); + } + } + + private void addASTStructure(int depth, StringBuilder ASTString) { + for (int i = 1; i <= depth; i++) { + ASTString.append("--"); + } } }