usql update

usql is still very primitive..it just barely works
This commit is contained in:
2021-07-23 00:00:39 +02:00
parent 4f113ab2c5
commit 5005644d98
26 changed files with 877 additions and 472 deletions

View File

@@ -13,12 +13,12 @@ namespace usql {
Lexer::Lexer() {
k_words_regex =
"[0-9]+\\.[0-9]+|[0-9][0-9_]+[0-9]|[0-9]+|[A-Za-z]+[A-Za-z0-9_#]*|[\\(\\)\\[\\]\\{\\}]|[-\\+\\*/"
"[-+]?[0-9]+\\.[0-9]+|[-+]?[0-9][0-9_]+[0-9]|[0-9]+|[A-Za-z]+[A-Za-z0-9_#]*|[\\(\\)\\[\\]\\{\\}]|[-\\+\\*/"
",;:\?]|==|>=|<=|~=|>|<|=|;|~|\\||or|and|\n|\r|\r\n|'([^']|'')*'|\".*?\"|%.*?\n";
k_int_regex = "[0-9]+";
k_int_underscored_regex = "[0-9][0-9_]+[0-9]";
k_double_regex = "[0-9]+\\.[0-9]+";
k_identifier_regex = "[A-Za-z]+[A-Za-z0-9_#]*";
k_int_regex = "[-+]?[0-9]+";
k_int_underscored_regex = "[-+]?[0-9][0-9_]+[0-9]";
k_double_regex = "[-+]?[0-9]+\\.[0-9]+";
k_identifier_regex = "[A-Za-z]+[A-Za-z0-9_#]*";
}
void Lexer::parse(const std::string &code) {
@@ -156,6 +156,9 @@ namespace usql {
if (token == "<=")
return TokenType::lesser_equal;
if (token == "as")
return TokenType::keyword_as;
if (token == "create")
return TokenType::keyword_create;
@@ -195,6 +198,9 @@ namespace usql {
if (token == "load")
return TokenType::keyword_load;
if (token == "save")
return TokenType::keyword_save;
if (token == "not")
return TokenType::keyword_not;
@@ -202,7 +208,7 @@ namespace usql {
return TokenType::keyword_null;
if (token == "integer")
return TokenType::keyword_int;
return TokenType::keyword_integer;
if (token == "float")
return TokenType::keyword_float;
@@ -326,6 +332,9 @@ namespace usql {
case TokenType::lesser_equal:
txt = "<=";
break;
case TokenType::keyword_as:
txt = "as";
break;
case TokenType::keyword_create:
txt = "create";
break;
@@ -356,13 +365,16 @@ namespace usql {
case TokenType::keyword_load:
txt = "load";
break;
case TokenType::keyword_save:
txt = "save";
break;
case TokenType::keyword_not:
txt = "not";
break;
case TokenType::keyword_null:
txt = "null";
break;
case TokenType::keyword_int:
case TokenType::keyword_integer:
txt = "integer";
break;
case TokenType::keyword_float: