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("--"); + } } }