diff options
| author | Kai Stevenson <kai@kaistevenson.com> | 2023-02-16 14:32:56 -0800 |
|---|---|---|
| committer | Kai Stevenson <kai@kaistevenson.com> | 2023-02-16 14:32:56 -0800 |
| commit | 05540fc6038f452f5dc5f18412c918c33ad96027 (patch) | |
| tree | bb9f572a1cc6f3a66cbf9835593f62db87481e0a /precedent.c | |
| parent | 10a1f7e4ad1bc90436f58269a52cddfd0587be33 (diff) | |
changed project structure
Diffstat (limited to 'precedent.c')
| -rw-r--r-- | precedent.c | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/precedent.c b/precedent.c deleted file mode 100644 index 81555b9..0000000 --- a/precedent.c +++ /dev/null @@ -1,104 +0,0 @@ -#include <stdlib.h> -#include <ctype.h> -#include <stdio.h> -#include <string.h> -#include <libgen.h> -#include "precedent.h" -#include "hashtable.h" -#include "parse.h" -#include "eval.h" - -int main(int argc, char** argv) { - int visual = 0; - if (argc > 1) { - for (int i = 1; i < argc; i++) { - if (strcmp("--version", argv[i]) == 0) { - printf("precedent, version 0.1\n"); - printf("Copyright 2023 Kai Stevenson\n"); - printf("All rights reserved. No part of the software may be sold\nor used in derivative works without explicit consent\n"); - return 0; - } - else if (strcmp("--help", argv[i]) == 0) { - printf("usage: precedent <file> [--visualize] [--version] [--help]\n"); - return 0; - } - else if (strcmp("--visualize", argv[i]) == 0) { - visual = 1; - } - } - } - else { - printf("usage: precedent <file> [--visualize] [--version] [--help]\n"); - return 0; - } - /* dirname may modify path, copy first */ - char* path = argv[1]; - char* pathCpy = malloc((strlen(path) + 1) * sizeof(char)); - strcpy(pathCpy, path); - char* dirName = dirname(pathCpy); - char* baseDir = malloc((strlen(dirName) + 2) * sizeof(char)); - strcpy(baseDir, dirName); - strcat(baseDir, "/"); - sym_t* finalSymbol = parse_symbol_final(read_file(path)); - if (visual) { - printf("--BEGIN VISUALIZATION--\n"); - write_symbol_visual(finalSymbol, 0); - printf("--END VISUALIZATION--\n"); - } - init_eval(); - eval(finalSymbol); - free(dirName); - free(pathCpy); - free(baseDir); - return 0; -} -char* read_file(char* path) { - FILE* file = fopen(path, "r"); - fseek(file, 0, SEEK_END); - unsigned long int length = ftell(file); - fseek(file, 0, SEEK_SET); - char* out = malloc((length + 1) * sizeof(char)); - fread(out, length, 1, file); - fclose(file); - out[length] = '\0'; - return out; -} -/* wtf */ -char* preprocess(char* str, char* baseDir) { - char* final = str; - while (1) { - int i = 0; - while (str[i] != '@') { - i++; - if (str[i] == '\0') { - printf("%s\n", final); - return final; - } - } - i++; - char* includeName = malloc(20 * sizeof(char)); - int f = 0; - while (isalnum(str[i]) || str[i] == '/' || str[i] == '.' || str[i] == '_') { - includeName[f] = str[i]; - str[i] = ' '; - i++; - f++; - } - final = str; - includeName[f] = '\0'; - char* path = malloc((strlen(baseDir) + strlen(includeName) + 1) * sizeof(char)); - strcpy(path, baseDir); - strcat(path, includeName); - char* toInclude = preprocess(read_file(path), baseDir); - char* newStr = malloc((strlen(toInclude) + strlen(final) + 1) * sizeof(char)); - strcpy(newStr, toInclude); - strcat(newStr, final); - /* - free(includeName); - free(path); - free(str); - free(toInclude); - */ - final = newStr; - } -} |
