summaryrefslogtreecommitdiff
path: root/comp/lucas-standen-NEA/code/tokenizer
diff options
context:
space:
mode:
Diffstat (limited to 'comp/lucas-standen-NEA/code/tokenizer')
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/Makefile4
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/parser.c19
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/parser.h2
-rwxr-xr-xcomp/lucas-standen-NEA/code/tokenizer/testbin0 -> 28320 bytes
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/test.c6
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/tokenizer.c12
-rw-r--r--comp/lucas-standen-NEA/code/tokenizer/tokenizer.h2
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
new file mode 100755
index 0000000..797a447
--- /dev/null
+++ b/comp/lucas-standen-NEA/code/tokenizer/test
Binary files differ
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;