diff options
Diffstat (limited to 'comp/lucas-standen-NEA/code/tokenizer')
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/parser.c | 1 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/tokenizer.c | 26 |
2 files changed, 9 insertions, 18 deletions
diff --git a/comp/lucas-standen-NEA/code/tokenizer/parser.c b/comp/lucas-standen-NEA/code/tokenizer/parser.c index 69ec458..6ce8c5b 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/parser.c +++ b/comp/lucas-standen-NEA/code/tokenizer/parser.c @@ -1,6 +1,7 @@ #include <stdio.h> #include <stdlib.h> +#include "../global/types.h" #include "../global/util.h" char *ReadFile(char *fileName); // reads the file into a single var diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c index a76760b..0c30d36 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c +++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c @@ -141,8 +141,14 @@ ast_node *tokenize(char *input){ } if (tok[0] != '(' && tok[strlen(tok)-1] != ')' && depth == 0){ if (node->args[argCount] == NULL){ - node->literalArgs[argCount] = malloc(strlen(tok)+1); - node->literalArgs[argCount] = tok; + node->literalArgs[argCount] = CheckedMalloc(sizeof(litteral)); + if (isNum(tok) != NULL){ + node->literalArgs[argCount]->i64 = isNum(tok); + } else if (isFloat(tok) != NULL){ + node->literalArgs[argCount]->fl = isFloat(tok); + } else if (isChar(tok) != NULL){ + node->literalArgs[argCount]->ch = isChar(tok); + } } argCount++; } @@ -152,22 +158,6 @@ ast_node *tokenize(char *input){ tok = strtok(NULL, " "); } while (tok != NULL); - if (strcmp(function, "set") == 0 || strcmp(function, "let") == 0){ - char *varName; - char *varType; - varName = strtok(node->literalArgs[0], ":"); - varType = strtok(NULL, ":"); - if (strcmp(varType, "function") == 0){ - userDefinedFunctions[userFuncCount] = CheckedMalloc(25); - userDefinedFunctions[userFuncCount] = varName; - userFuncCount++; - }else { - userDefinedVars[userVarCount] = CheckedMalloc(15); - userDefinedVars[userVarCount] = varName; - userVarCount++; - } - } - CheckedFree(exp); return node; |