summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/ast-tree.c8
-rw-r--r--src/compiler/parser.c2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c
index 3ea860e..f5867cc 100644
--- a/src/compiler/ast-tree.c
+++ b/src/compiler/ast-tree.c
@@ -554,6 +554,7 @@ AstTree *astTreeParse(ParserNode *parserNode, AstTreeVariables **variables,
case PARSER_TOKEN_OPERATOR_SUM:
return astTreeParseSum(parserNode, variables, variables_size);
case PARSER_TOKEN_VARIABLE:
+ return astTreeParseVariable(parserNode, variables, variables_size);
case PARSER_TOKEN_CONSTANT:
case PARSER_TOKEN_SYMBOL_EOL:
case PARSER_TOKEN_SYMBOL_PARENTHESIS:
@@ -638,10 +639,6 @@ AstTree *astTreeParseFunction(ParserNode *parserNode,
if (!astTreeParseConstant(node, variables, variables_size)) {
goto RETURN_ERROR;
}
- } else if (node->token == PARSER_TOKEN_VARIABLE) {
- if (!astTreeParseConstant(node, variables, variables_size)) {
- goto RETURN_ERROR;
- }
} else {
AstTree *tree = astTreeParse(node, variables, variables_size);
@@ -1263,6 +1260,9 @@ bool setTypesOperatorAssign(AstTree *tree) {
} else if (!typeIsEqual(infix->left.type, infix->right.type)) {
printLog("Type mismatch");
return false;
+ } else if(isConst(&infix->left)){
+ printLog("Constants can't be assigned");
+ return false;
} else {
tree->type = copyAstTree(infix->left.type);
return true;
diff --git a/src/compiler/parser.c b/src/compiler/parser.c
index d5f61c5..d54b6de 100644
--- a/src/compiler/parser.c
+++ b/src/compiler/parser.c
@@ -837,7 +837,7 @@ ParserNode *parserVariable(LexerNode *node, LexerNode *begin, LexerNode *end,
if (node1 < end && node1->token == LEXER_TOKEN_SYMBOL_COLON) {
node1->parserNode = variableNode;
token = PARSER_TOKEN_CONSTANT;
- } else if (node1 < end && node1->token == LEXER_TOKEN_SYMBOL_COLON) {
+ } else if (node1 < end && node1->token == LEXER_TOKEN_SYMBOL_ASSIGN) {
node1->parserNode = variableNode;
} else {
node1 = NULL;