summaryrefslogtreecommitdiff
path: root/src/headers
diff options
context:
space:
mode:
Diffstat (limited to 'src/headers')
-rw-r--r--src/headers/abstract.h129
-rw-r--r--src/headers/codegen.h13
-rw-r--r--src/headers/freeast.h70
-rw-r--r--src/headers/kat.h175
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