preparing for functions

This commit is contained in:
2021-07-14 23:18:54 +02:00
parent eebfaacde4
commit 24d4fb2567
9 changed files with 535 additions and 467 deletions

View File

@@ -32,6 +32,7 @@ namespace usql {
load_table,
column_name,
column_value,
function,
column_def,
error
};
@@ -49,13 +50,6 @@ namespace usql {
Node(NodeType::column_name), name(col_name) {}
};
struct ColValueNode : Node {
std::string value;
ColValueNode(const std::string col_value) :
Node(NodeType::column_value), value(col_value) {}
};
// TODO add order in row
struct ColDefNode : Node {
std::string name;
@@ -69,6 +63,20 @@ namespace usql {
null(nullable) {}
};
struct ColValueNode : Node {
std::string value;
ColValueNode(const std::string col_value) :
Node(NodeType::column_value), value(col_value) {}
};
struct FunctionNode : Node {
std::string function;
std::vector<std::unique_ptr<Node>> params;
FunctionNode(const std::string func_name, std::vector<std::unique_ptr<Node>> pars) :
Node(NodeType::function), function(func_name), params(std::move(pars)) {}
};
struct TrueNode : Node {
TrueNode() : Node(NodeType::true_node) {}
@@ -193,10 +201,10 @@ namespace usql {
struct InsertIntoTableNode : Node {
std::string table_name;
std::vector<ColNameNode> cols_names;
std::vector<ColValueNode> cols_values;
std::vector<std::unique_ptr<Node>> cols_values;
InsertIntoTableNode(const std::string name, std::vector<ColNameNode> names, std::vector<ColValueNode> values) :
Node(NodeType::insert_into), table_name(name), cols_names(names), cols_values(values) {}
InsertIntoTableNode(const std::string name, std::vector<ColNameNode> names, std::vector<std::unique_ptr<Node>> values) :
Node(NodeType::insert_into), table_name(name), cols_names(names), cols_values(std::move(values)) {}
};
struct SelectFromTableNode : Node {
@@ -252,6 +260,8 @@ namespace usql {
std::unique_ptr<Node> parse_insert_into_table();
std::unique_ptr<Node> parse_value();
std::unique_ptr<Node> parse_select_from_table();
std::unique_ptr<Node> parse_delete_from_table();