diff options
Diffstat (limited to 'comp/lucas-standen-NEA/code/tokenizer')
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/Makefile | 4 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/parser.c | 19 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/parser.h | 2 | ||||
-rwxr-xr-x | comp/lucas-standen-NEA/code/tokenizer/test | bin | 0 -> 28320 bytes | |||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/test.c | 6 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/tokenizer.c | 12 | ||||
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/tokenizer.h | 2 |
7 files changed, 26 insertions, 19 deletions
diff --git a/comp/lucas-standen-NEA/code/tokenizer/Makefile b/comp/lucas-standen-NEA/code/tokenizer/Makefile index 73e4033..38f92bf 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/Makefile +++ b/comp/lucas-standen-NEA/code/tokenizer/Makefile @@ -1,9 +1,9 @@ all: tokenizer parser $(info done tokenizer!) tokenizer: tokenizer.c - cc tokenizer.c -c -o tokenizer.o + cc tokenizer.c -c -o tokenizer.o -ggdb parser: parser.c - cc parser.c -c -o parser.o + cc parser.c -c -o parser.o -ggdb clean: rm -rf *.o diff --git a/comp/lucas-standen-NEA/code/tokenizer/parser.c b/comp/lucas-standen-NEA/code/tokenizer/parser.c index 6ce8c5b..4bb9c3a 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/parser.c +++ b/comp/lucas-standen-NEA/code/tokenizer/parser.c @@ -4,10 +4,10 @@ #include "../global/types.h" #include "../global/util.h" -char *ReadFile(char *fileName); // reads the file into a single var -char *Parse(char *fileName); // general parser function +char *readFile(char *fileName); // reads the file into a single var +char *parse(char *fileName); // general parser function -char *ReadFile(char *filename){ +char *readFile(char *filename){ FILE *f = fopen(filename, "r"); if (f == NULL) Die(); @@ -16,7 +16,7 @@ char *ReadFile(char *filename){ size_t len = ftell(f); rewind(f); - char *out = malloc(len+1); + char *out = CheckedMalloc(len+1); char c; for (int i = 0; i < len; i++){ @@ -32,6 +32,13 @@ char *ReadFile(char *filename){ return out; } -char *Parser(char *fileName){ - return ReadFile(fileName); +char *preProcess(char *contents){ + char *out = CheckedMalloc(strlen(contents)+1); + for (char c = contents[0]; c != '\0'; c = (contents += 1)[0]){ + printf("%c", c); + } +} + +char *parser(char *fileName){ + return readFile(fileName); } diff --git a/comp/lucas-standen-NEA/code/tokenizer/parser.h b/comp/lucas-standen-NEA/code/tokenizer/parser.h index e4f69a8..f90b777 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/parser.h +++ b/comp/lucas-standen-NEA/code/tokenizer/parser.h @@ -1,3 +1,3 @@ char *Parse(char *fileName); // general parser function - char *ReadFile(char *fileName); // reads the file into a single var +char *preProcess(char *contents); diff --git a/comp/lucas-standen-NEA/code/tokenizer/test b/comp/lucas-standen-NEA/code/tokenizer/test Binary files differnew file mode 100755 index 0000000..797a447 --- /dev/null +++ b/comp/lucas-standen-NEA/code/tokenizer/test diff --git a/comp/lucas-standen-NEA/code/tokenizer/test.c b/comp/lucas-standen-NEA/code/tokenizer/test.c new file mode 100644 index 0000000..49d6160 --- /dev/null +++ b/comp/lucas-standen-NEA/code/tokenizer/test.c @@ -0,0 +1,6 @@ +#include "parser.h" + +int main(){ + char *sample = "(write \"hello\")"; + preProcess(sample); +} diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c index 0c30d36..3a59d88 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c +++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.c @@ -141,14 +141,8 @@ ast_node *tokenize(char *input){ } if (tok[0] != '(' && tok[strlen(tok)-1] != ')' && depth == 0){ if (node->args[argCount] == NULL){ - 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); - } + node->literalArgs[argCount] = giveType(tok); + } argCount++; } @@ -158,7 +152,7 @@ ast_node *tokenize(char *input){ tok = strtok(NULL, " "); } while (tok != NULL); - CheckedFree(exp); + free(exp); return node; } diff --git a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h index 3cfaaf2..9e07921 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h +++ b/comp/lucas-standen-NEA/code/tokenizer/tokenizer.h @@ -9,4 +9,4 @@ int getBuiltIn(char *func, ast_node *node); // checks if a function is built in void expressFunction(char *function, ast_node *node); // puts a string into the ast_node struct ast_node *tokenize(char *input); // does the tokenization void printAst(ast_node *root); // shows an ast and its sub nodes - +void freeAst(ast_node *head); // frees most of the ast; |