forked from opengaussexamples/examples
add function
This commit is contained in:
parent
0bcc3c21b7
commit
ff0b115ecc
|
|
@ -4,9 +4,10 @@
|
|||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="revise">
|
||||
<list default="true" id="d8d12963-4777-48e3-9669-309cf5e41d60" name="更改" comment="add parser function">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/AST/CreateTable/TableNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/CreateTable/TableNode.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/AST/ASTNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/ASTNode.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/AST/CreateTable/ColumnNode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/AST/CreateTable/ColumnNode.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/Parser/OracleParser.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
|
@ -18,6 +19,7 @@
|
|||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Class" />
|
||||
<option value="Interface" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
@ -39,15 +41,15 @@
|
|||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"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"
|
||||
<component name="PropertiesComponent">{
|
||||
"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"
|
||||
}
|
||||
}]]></component>
|
||||
}</component>
|
||||
<component name="RunManager" selected="应用程序.Main">
|
||||
<configuration name="App" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||
<option name="MAIN_CLASS_NAME" value="org.example.App" />
|
||||
|
|
@ -165,7 +167,14 @@
|
|||
<option name="project" value="LOCAL" />
|
||||
<updated>1724165047441</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="10" />
|
||||
<task id="LOCAL-00010" summary="add parser function">
|
||||
<created>1724166047929</created>
|
||||
<option name="number" value="00010" />
|
||||
<option name="presentableId" value="LOCAL-00010" />
|
||||
<option name="project" value="LOCAL" />
|
||||
<updated>1724166047929</updated>
|
||||
</task>
|
||||
<option name="localTasksCounter" value="11" />
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
|
|
@ -186,6 +195,7 @@
|
|||
<MESSAGE value="add AST node" />
|
||||
<MESSAGE value="add functions" />
|
||||
<MESSAGE value="revise" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="revise" />
|
||||
<MESSAGE value="add parser function" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="add parser function" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -10,6 +10,9 @@ public abstract class ASTNode {
|
|||
private ASTNode parent;
|
||||
private List<ASTNode> children = new ArrayList<>();
|
||||
|
||||
public ASTNode() {
|
||||
}
|
||||
|
||||
public ASTNode(List<Token> tokens) {
|
||||
this.tokens = tokens;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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!");
|
||||
|
|
|
|||
Loading…
Reference in New Issue