diff --git a/sqlTranslate/.idea/workspace.xml b/sqlTranslate/.idea/workspace.xml
index 267180b4..d6262f71 100644
--- a/sqlTranslate/.idea/workspace.xml
+++ b/sqlTranslate/.idea/workspace.xml
@@ -4,9 +4,10 @@
-
+
-
+
+
@@ -18,6 +19,7 @@
@@ -39,15 +41,15 @@
- {
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "last_opened_file_path": "F:/oracle2opengauss/examples/sqlTranslate",
+ "settings.editor.selected.configurable": "preferences.pluginManager"
}
-}]]>
+}
@@ -165,7 +167,14 @@
1724165047441
-
+
+ 1724166047929
+
+
+
+ 1724166047929
+
+
@@ -186,6 +195,7 @@
-
+
+
\ No newline at end of file
diff --git a/sqlTranslate/src/main/java/Parser/AST/ASTNode.java b/sqlTranslate/src/main/java/Parser/AST/ASTNode.java
index d89a6918..4f22066b 100644
--- a/sqlTranslate/src/main/java/Parser/AST/ASTNode.java
+++ b/sqlTranslate/src/main/java/Parser/AST/ASTNode.java
@@ -10,6 +10,9 @@ public abstract class ASTNode {
private ASTNode parent;
private List children = new ArrayList<>();
+ public ASTNode() {
+ }
+
public ASTNode(List tokens) {
this.tokens = tokens;
}
diff --git a/sqlTranslate/src/main/java/Parser/AST/CreateTable/ColumnNode.java b/sqlTranslate/src/main/java/Parser/AST/CreateTable/ColumnNode.java
index 671912fb..90381ea1 100644
--- a/sqlTranslate/src/main/java/Parser/AST/CreateTable/ColumnNode.java
+++ b/sqlTranslate/src/main/java/Parser/AST/CreateTable/ColumnNode.java
@@ -6,6 +6,12 @@ import Parser.AST.ASTNode;
import java.util.List;
public class ColumnNode extends ASTNode {
+ private Token name;
+ private Token type;
+ private Token constraint;
+ public ColumnNode() {
+ super();
+ }
public ColumnNode(ASTNode node)
{
super(node);
@@ -24,4 +30,28 @@ public class ColumnNode extends ASTNode {
}
}
+ public Token getName() {
+ return name;
+ }
+
+ public void setName(Token name) {
+ this.name = name;
+ }
+
+ public Token getType() {
+ return type;
+ }
+
+ public void setType(Token type) {
+ this.type = type;
+ }
+
+ public Token getConstraint() {
+ return constraint;
+ }
+
+ public void setConstraint(Token constraint) {
+ this.constraint = constraint;
+ }
+
}
diff --git a/sqlTranslate/src/main/java/Parser/OracleParser.java b/sqlTranslate/src/main/java/Parser/OracleParser.java
index 205c8601..5d237cc1 100644
--- a/sqlTranslate/src/main/java/Parser/OracleParser.java
+++ b/sqlTranslate/src/main/java/Parser/OracleParser.java
@@ -4,6 +4,7 @@ import Lexer.OracleLexer;
import Lexer.Token;
import Parser.AST.ASTNode;
import Exception.ParseFailedException;
+import Parser.AST.CreateTable.ColumnNode;
import Parser.AST.CreateTable.CreateTabNode;
import Parser.AST.CreateTable.TableNode;
import Parser.AST.CreateTable.TableTypeNode;
@@ -77,11 +78,31 @@ public class OracleParser {
currentNode = child;
}
else if (lexer.getTokens().get(i).hasType(Token.TokenType.IDENTIFIER)) {
+ // Token.TokenType.IDENTIFIER ... , -> column node
+ tokens.clear();
+ ColumnNode child = new ColumnNode();
+ child.setName();
+ tokens.add();
+ for (int j = i + 1; j < lexer.getTokens().size(); j++) {
+ if (j == i + 1) {
+
+ }
+ tokens.add(lexer.getTokens().get(j));
+ if ((lexer.getTokens().get(j).hasType(Token.TokenType.SYMBOL) && lexer.getTokens().get(j).getValue().equals(",")) ||
+ (lexer.getTokens().get(j).hasType(Token.TokenType.SYMBOL) && lexer.getTokens().get(j).getValue().equals(")")) ) {
+ i = j;
+ break;
+ }
+ }
+ child.setTokens(tokens);
+ currentNode.addChild(child);
+ currentNode = child;
+ }
+ else if (lexer.getTokens().get(i).hasType(Token.TokenType.KEYWORD) && lexer.getTokens().get(i).getValue().equalsIgnoreCase("CONSTRAINT")) {
+ // Table constraint
tokens.clear();
tokens.add(lexer.getTokens().get(i));
- for (int j = i + 1; j < lexer.getTokens().size(); j++) {
- // TODO: Token.TokenType.IDENTIFIER ... , -> column node
- }
+
}
else {
throw new ParseFailedException("Parse failed!");