diff options
| author | czjstmax <jstmaxlol@disroot.org> | 2025-12-21 21:24:46 +0100 |
|---|---|---|
| committer | czjstmax <jstmaxlol@disroot.org> | 2025-12-21 21:24:46 +0100 |
| commit | 9201d978d0c4d4f4bdffd4e686ef116d7fdaa982 (patch) | |
| tree | d78d98f3b157d39b2353165445b4a47569658da0 /src/headers | |
| parent | 05033cc80fc9839e402106ae60e92b69266d1595 (diff) | |
Fixed `#include` directives for `heads/` folder in `rbc.c`
Signed-off-by: czjstmax <jstmaxlol@disroot.org>
Diffstat (limited to 'src/headers')
| -rw-r--r-- | src/headers/abstract.h | 129 | ||||
| -rw-r--r-- | src/headers/codegen.h | 13 | ||||
| -rw-r--r-- | src/headers/freeast.h | 70 | ||||
| -rw-r--r-- | src/headers/kat.h | 175 |
4 files changed, 0 insertions, 387 deletions
diff --git a/src/headers/abstract.h b/src/headers/abstract.h deleted file mode 100644 index efecaa0..0000000 --- a/src/headers/abstract.h +++ /dev/null @@ -1,129 +0,0 @@ -#ifndef CRBC_ABSTR -#define CRBC_ABSTR - -#include <stdlib.h> -#include <string.h> -#include <stdbool.h> - -// ===== EXPRESSIONS ===== -enum ExprKind { - EXPR_INT, EXPR_BOOL, - EXPR_CHAR, EXPR_STRING, - EXPR_IDENT -}; - -typedef struct Expr { - enum ExprKind kind; - void *as; -} Expr; - -typedef struct ExprInt { - int value; -} ExprInt; -// -typedef struct ExprChar { - char value; -} ExprChar; -// -typedef struct ExprBool { - bool value; -} ExprBool; -// -typedef struct ExprString { - char *value; -} ExprString; -// -typedef struct ExprIdent { - char *name; -} ExprIdent; - -// ===== STATEMENTS ===== -typedef struct Stmt { - int _dummy; -} Stmt; - -typedef struct Block { - int _dummy; -} Block; - -// ===== DECLARATIONS ===== -enum DeclKind { - DECL_VAR, - DECL_FUNC, - DECL_TYPE_STRUCT, - DECL_TYPE_ENUM, - DECL_TYPE_UNION -}; - -typedef struct Decl { - enum DeclKind kind; - void *as; -} Decl; - -// variable declaration -typedef struct DeclVar { - char *ident; - char *type; // TODO: replace with Type* - Expr *init; // NULL => declaration only -} DeclVar; - -// function declaration -typedef struct DeclFunc { - char *ident; - char *return_type; // NULL => inferred - char *params; // TODO: param list - Block *body; // NULL => forward declaration -} DeclFunc; - -// struct type declaration -typedef struct DeclTypeStruct { - char *ident; - char *members; // TODO: member list -} DeclTypeStruct; - -// enum type declaration -typedef struct EnumMember { - char *name; - char *value; // NULL => implicit -} EnumMember; - -typedef struct DeclTypeEnum { - char *ident; - EnumMember *members; -} DeclTypeEnum; - -// union type declaration -typedef struct DeclTypeUnion { - char *ident; - char *members; // TODO: member list -} DeclTypeUnion; - -// ===== FUNCTIONS ===== -static inline Decl *DeclareVariable(const char *ident, const char *type, Expr *init) { - Decl *decl = malloc(sizeof *decl); - DeclVar *var = malloc(sizeof *var); - - var->ident = strdup(ident); - var->type = type ? strdup(type) : NULL; - var->init = init; - - decl->kind = DECL_VAR; - decl->as = var; - - return decl; -} - -static inline Expr *ExprIntLiteral(int value) { - Expr *expr = malloc(sizeof *expr); - ExprInt *lit = malloc(sizeof *lit); - - lit->value = value; - - expr->kind = EXPR_INT; - expr->as = lit; - - return expr; -} - -#endif - diff --git a/src/headers/codegen.h b/src/headers/codegen.h deleted file mode 100644 index d629caf..0000000 --- a/src/headers/codegen.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef CRBC_CODEGEN -#define CRBC_CODEGEN - -// Header file for CReborn's Codegen API - -#include <stdlib.h> -#include <string.h> - -static inline int fb(int x) { - return x; -} - -#endif diff --git a/src/headers/freeast.h b/src/headers/freeast.h deleted file mode 100644 index 544d183..0000000 --- a/src/headers/freeast.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef CRBC_FREEAST -#define CRBC_FREEAST - -// Free memory functions, utilize after having used the AST - -#include <stdlib.h> - -void FreeExpr(Expr *expr) -{ - if (!expr) return; - - switch (expr->kind) { - case EXPR_INT: - free(expr->as); - break; - case EXPR_BOOL: - break; - case EXPR_CHAR: - break; - case EXPR_STRING: - break; - case EXPR_IDENT: - break; - default: - break; - } - - free(expr); -} - -static inline void FreeDeclVar(DeclVar *var) -{ - if (!var) return; - - free(var->ident); - free(var->type); - - free(var); -} - -void FreeDecl(Decl *decl) -{ - if (!decl) return; - - switch (decl->kind) { - case DECL_VAR: - FreeDeclVar((DeclVar *)decl->as); - break; - - case DECL_FUNC: - /* FreeDeclFunc(...) later */ - break; - - case DECL_TYPE_STRUCT: - /* FreeDeclTypeStruct(...) later */ - break; - - case DECL_TYPE_ENUM: - /* ... */ - break; - - case DECL_TYPE_UNION: - /* ... */ - break; - } - - free(decl); -} - -#endif diff --git a/src/headers/kat.h b/src/headers/kat.h deleted file mode 100644 index f5a3a00..0000000 --- a/src/headers/kat.h +++ /dev/null @@ -1,175 +0,0 @@ -// kat.cfg (kat.h) -// with love by czjstmax <jstmaxlol@disroot.org> -// header version 2 - -#pragma once - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> - -#ifndef KAT -#define KAT - -struct kat_api { - int (*create)(const char*); - int (*add)(const char*, const char*, const char*); - int (*read)(const char*, const char*, char*, size_t); - int (*del)(const char*, const char*); - int (*edit)(const char*, const char*, const char*); - int (*addComment)(const char*, const char*); -}; - -// Creates a file -static inline int katcreate(const char *path) { - FILE *f = fopen(path, "w"); - if (!f) return 1; - fclose(f); - return 0; // success -} - -// Appends a key=val to file -static inline int katadd(const char *key, const char *val, const char *path) { - FILE *f = fopen(path, "a"); - if (f) { - fprintf(f, "%s=%s\n", key, val); - fclose(f); - return 0; - } - return 1; -} - -// Appends a comment to file -static inline int kataddcomment(const char *str, const char *path) { - FILE *f = fopen(path, "a"); - if (f) { - fprintf(f, "#%s\n", str); - fclose(f); - return 0; - } - return 1; -} - -// Reads a key from file -static inline int katreadkey(const char *key, const char *path, char *buffer, size_t bufsize) { - FILE *f = fopen(path, "r"); - if (!f) return 1; - - char line[1024]; - size_t key_len = strlen(key); - - while (fgets(line, sizeof(line), f)) { - // TODO: skip leading whitespace maybe? - // check if line starts with key and '=' right after - if (strncmp(line, key, key_len) == 0 && line[key_len] == '=') { - if (line[0] == '#' || line[0] == ';' || line[0] == '\n') continue; - // copy everything after '=' until newline or buffer full (aka bad) - char *val_start = line + key_len + 1; - size_t len = strcspn(val_start, "\r\n"); // length until newline - if (len >= bufsize) len = bufsize - 1; - strncpy(buffer, val_start, len); - buffer[len] = '\0'; - fclose(f); - return 0; // success - } - } - - fclose(f); - return 1; -} - -// Deletes a key from file -static inline int katdelkey(const char *key, const char *path) { - FILE *f = fopen(path, "r"); - if (!f) return 1; - - char temp_path[1024]; - snprintf(temp_path, sizeof(temp_path), "%s.tmp", path); - FILE *temp = fopen(temp_path, "w"); - if (!temp) { - fclose(f); - return 1; - } - - char line[1024]; - size_t key_len = strlen(key); - int deleted = 0; - - while (fgets(line, sizeof(line), f)) { - // skip line if it matches 'key=' - if (strncmp(line, key, key_len) == 0 && line[key_len] == '=') { - deleted = 1; - continue; - } - fputs(line, temp); - } - - fclose(f); - fclose(temp); - - if (deleted) { - // replace original file with temp - if (remove(path) != 0) return 1; - if (rename(temp_path, path) != 0) return 1; - } else { - remove(temp_path); - } - - return deleted ? 0 : 1; // 0 if deleted, 1 if not found -} - -// Edits a key's value from file -static inline int kateditkey(const char *key, const char *new_val, const char *path) { - FILE *f = fopen(path, "r"); - if (!f) return 1; - - char temp_path[1024]; - snprintf(temp_path, sizeof(temp_path), "%s.tmp", path); - FILE *temp = fopen(temp_path, "w"); - if (!temp) { - fclose(f); - return 1; - } - - char line[1024]; - size_t key_len = strlen(key); - int found = 0; - - while (fgets(line, sizeof(line), f)) { - // skip leading whitespace for accurate matching - char *start = line; - while (*start == ' ' || *start == '\t') start++; - - if (strncmp(start, key, key_len) == 0 && start[key_len] == '=') { - // replace line with new key=val - fprintf(temp, "%s=%s\n", key, new_val); - found = 1; - } else { - fputs(line, temp); - } - } - - if (!found) { - // key not found, add it at the end - fprintf(temp, "%s=%s\n", key, new_val); - } - - fclose(f); - fclose(temp); - - if (remove(path) != 0) return 1; - if (rename(temp_path, path) != 0) return 1; - - return 0; -} - -struct kat_api kat = { - .create = katcreate, - .add = katadd, - .read = katreadkey, - .del = katdelkey, - .edit = kateditkey, - .addComment = kataddcomment, -}; - -#endif |