diff options
Diffstat (limited to 'comp/lucas-standen-NEA/code/tokenizer/parser.c')
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/parser.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/comp/lucas-standen-NEA/code/tokenizer/parser.c b/comp/lucas-standen-NEA/code/tokenizer/parser.c index d4fec18..81ddde1 100644 --- a/comp/lucas-standen-NEA/code/tokenizer/parser.c +++ b/comp/lucas-standen-NEA/code/tokenizer/parser.c @@ -57,11 +57,13 @@ FILE *preProcess(char *contents){ } char **getExpressions(char *file){ + char **code = CheckedMalloc((strlen(file)/2)*sizeof(char *)); + int counter = 0; int depth = 0; char *str = CheckedMalloc(strlen(file)+1); int pos = 0; for (int i = 0; i < strlen(file); i++){ - str[pos] = str[i]; + str[pos] = file[i]; pos++; if (file[i] == '(') depth++; @@ -71,14 +73,16 @@ char **getExpressions(char *file){ if (depth == 0) { str[pos] = '\0'; printf("%s\n", str); + code[counter] = str; + counter++; pos = 0; } } - - return NULL; + return code; + } -char *parser(char *fileName){ +char **parser(char *fileName){ FILE *tmp = preProcess(readFile(fileName)); fseek(tmp, 0, SEEK_END); int len = ftell(tmp); @@ -86,6 +90,5 @@ char *parser(char *fileName){ char *buf = CheckedMalloc(len); fgets(buf, len, tmp); fclose(tmp); - getExpressions(buf); - return buf; + return getExpressions(buf); } |