diff --git a/sqlTranslate/.idea/workspace.xml b/sqlTranslate/.idea/workspace.xml
index b09a789a..c80ee9da 100644
--- a/sqlTranslate/.idea/workspace.xml
+++ b/sqlTranslate/.idea/workspace.xml
@@ -4,8 +4,12 @@
-
-
+
+
+
+
+
+
@@ -355,7 +359,14 @@
1726066806993
-
+
+ 1726068883795
+
+
+
+ 1726068883795
+
+
@@ -387,7 +398,8 @@
-
+
+
diff --git a/sqlTranslate/src/main/java/Parser/AST/Join/JoinColumnNode.java b/sqlTranslate/src/main/java/Parser/AST/Join/JoinColumnNode.java
new file mode 100644
index 00000000..e0a59f5e
--- /dev/null
+++ b/sqlTranslate/src/main/java/Parser/AST/Join/JoinColumnNode.java
@@ -0,0 +1,34 @@
+package Parser.AST.Join;
+
+import Lexer.Token;
+import Parser.AST.ASTNode;
+import java.util.List;
+
+public class JoinColumnNode extends ASTNode {
+ private String keyword;
+ public JoinColumnNode(List tokens)
+ {
+ super(tokens);
+ this.keyword = "";
+ }
+
+ public JoinColumnNode(ASTNode node)
+ {
+ super(node);
+ this.keyword = "";
+ }
+
+ public void setKeyword(String keyword) {
+ this.keyword = keyword + " ";
+ }
+
+ @Override
+ public void visit(ASTNode node, StringBuilder queryString)
+ {
+ queryString.append(this.keyword + toString() + " ");
+ for (ASTNode child : getChildren())
+ {
+ child.visit(child, queryString);
+ }
+ }
+}
diff --git a/sqlTranslate/src/main/java/Parser/AST/Join/JoinSourceTabNode.java b/sqlTranslate/src/main/java/Parser/AST/Join/JoinSourceTabNode.java
new file mode 100644
index 00000000..1a07b676
--- /dev/null
+++ b/sqlTranslate/src/main/java/Parser/AST/Join/JoinSourceTabNode.java
@@ -0,0 +1,23 @@
+package Parser.AST.Join;
+
+import Lexer.Token;
+import Parser.AST.ASTNode;
+import java.util.List;
+
+public class JoinSourceTabNode extends ASTNode {
+ public JoinSourceTabNode(List tokens) {
+ super(tokens);
+ }
+
+ public JoinSourceTabNode(ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void visit(ASTNode node, StringBuilder queryString) {
+ queryString.append(toString() + " ");
+ for (ASTNode child : getChildren()) {
+ child.visit(child, queryString);
+ }
+ }
+}
diff --git a/sqlTranslate/src/main/java/Parser/AST/Join/JoinTargetTabNode.java b/sqlTranslate/src/main/java/Parser/AST/Join/JoinTargetTabNode.java
new file mode 100644
index 00000000..e4becba2
--- /dev/null
+++ b/sqlTranslate/src/main/java/Parser/AST/Join/JoinTargetTabNode.java
@@ -0,0 +1,23 @@
+package Parser.AST.Join;
+
+import Lexer.Token;
+import Parser.AST.ASTNode;
+import java.util.List;
+
+public class JoinTargetTabNode extends ASTNode {
+ public JoinTargetTabNode(List tokens) {
+ super(tokens);
+ }
+
+ public JoinTargetTabNode(ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void visit(ASTNode node, StringBuilder queryString) {
+ queryString.append(toString() + " ");
+ for (ASTNode child : getChildren()) {
+ child.visit(child, queryString);
+ }
+ }
+}
diff --git a/sqlTranslate/src/main/java/Parser/AST/Join/JoinTypeNode.java b/sqlTranslate/src/main/java/Parser/AST/Join/JoinTypeNode.java
new file mode 100644
index 00000000..9d559069
--- /dev/null
+++ b/sqlTranslate/src/main/java/Parser/AST/Join/JoinTypeNode.java
@@ -0,0 +1,24 @@
+package Parser.AST.Join;
+
+import Lexer.Token;
+import Parser.AST.ASTNode;
+import java.util.List;
+
+public class JoinTypeNode extends ASTNode {
+ public JoinTypeNode(List tokens) {
+ super(tokens);
+ }
+
+ public JoinTypeNode(ASTNode node) {
+ super(node);
+ }
+
+ @Override
+ public void visit(ASTNode node, StringBuilder queryString) {
+ queryString.append(toString() + " ");
+ for (ASTNode child : getChildren())
+ {
+ child.visit(child, queryString);
+ }
+ }
+}