sic

The sic programming language, compiler and tools (WIP)
Log | Files | Refs

commit ca3f37004b1a2b05297cccf87aa1c982e4673371
parent c0e066466b66293808a97943b1c8bd6018c1025c
Author: citbl <citbl@citbl.org>
Date:   Sat,  9 May 2026 21:21:54 +1000

reformat2

Diffstat:
M.clang-format | 34+++++++++++++++++++++++++++-------
Mmakefile | 5++---
Msrc/common.h | 101+++++++++++++++++++++++++++++++++----------------------------------------------
Msrc/lexer.c | 26+++++++++++++++-----------
Msrc/main.c | 31++++++++++++++-----------------
Msrc/utils.c | 58++++++++++++++++++++++++++++++++--------------------------
6 files changed, 132 insertions(+), 123 deletions(-)

diff --git a/.clang-format b/.clang-format @@ -1,8 +1,28 @@ -UseTab: Never -IndentWidth: 4 -TabWidth: 4 -ColumnLimit: 150 -SpacesBeforeTrailingComments: 2 +BasedOnStyle: Webkit +IndentWidth: 8 +ContinuationIndentWidth: 8 +UseTab: AlignWithSpaces + PointerAlignment: Right -AlignArrayOfStructures: Right -AlignConsecutiveAssignments: Consecutive + +AlignTrailingComments: true +SpacesBeforeTrailingComments: 1 +KeepEmptyLinesAtTheStartOfBlocks: false +AllowShortBlocksOnASingleLine: true +AllowShortIfStatementsOnASingleLine: true +AllowShortCaseLabelsOnASingleLine: false +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: false +AlignConsecutiveDeclarations: false +AlignConsecutiveAssignments: false +AlignConsecutiveMacros: false +SortIncludes: false + +IndentCaseLabels: false +ColumnLimit: 135 +PenaltyBreakBeforeFirstCallParameter: 1 +AlignAfterOpenBracket: DontAlign +BinPackArguments: false +BinPackParameters: false + +BreakAfterReturnType: TopLevelDefinitions diff --git a/makefile b/makefile @@ -2,9 +2,8 @@ cmp = clang warn = -Wall -Wextra pedantic = -Werror release = -02 -std = -std=c99 +std = -std=c99 -Wdeclaration-after-statement -Werror=declaration-after-statement sane = -fsanitize=address -silly = -Wdeclaration-after-statement -Werror=declaration-after-statement cfiles = src/**.c includes = -i src/**.h out = -o sicc @@ -12,4 +11,4 @@ out = -o sicc export ASAN_OPTIONS := allocator_may_return_null=1 default: - $(cmp) $(warn) $(std) $(silly) $(out) $(cfiles) + $(cmp) $(warn) $(std) $(out) $(cfiles) diff --git a/src/common.h b/src/common.h @@ -4,70 +4,53 @@ #include <stddef.h> typedef enum TokenType { - TERMINUS = 4, - IDENT, - KEYWORD, - SYMBOL, - PLUS, - MIN, - STAR, - SLASH, - BACKSLASH, - PERCENT, - LBRACE, - RBRACE, - LPAREN, - RPAREN, - EQ_EQ, - BANG_EQ, - EQ_GT, - LT_EQ, - LT_DASH, - DASH_GT, - EQ, - BANG, - NAMESPACE + TERMINUS = 4, + IDENT, + KEYWORD, + SYMBOL, + PLUS, + MIN, + STAR, + SLASH, + BACKSLASH, + PERCENT, + LBRACE, + RBRACE, + LPAREN, + RPAREN, + EQ_EQ, + BANG_EQ, + EQ_GT, + LT_EQ, + LT_DASH, + DASH_GT, + EQ, + BANG, + NAMESPACE } TokenType; -typedef enum Keyword { - IF = 130, - ELSE, - WHILE, - OPT, - LAZY, - MATCH, - DEF, - FOR, - EACH, - SOME, - NONE, - OK, - ERR, - IN, - IS, - CAST -} Keyword; +typedef enum Keyword { IF = 130, ELSE, WHILE, OPT, LAZY, MATCH, DEF, FOR, EACH, SOME, NONE, OK, ERR, IN, IS, CAST } Keyword; typedef struct Token { - TokenType type; - union Value { - char *as_string; - char as_char; - size_t as_int; - bool as_bool; - } value; - const char *path; - const char *filename; - size_t line; - size_t col; + TokenType type; + union Value { + char* as_string; + char as_char; + size_t as_int; + bool as_bool; + } value; + const char* path; + const char* filename; + size_t line; + size_t col; } Token; typedef struct Lexer { - const char *code; - const char *path; - const char *filename; - size_t pos; - Token *tokens; - size_t count; - size_t cap; + const char* code; + const char* path; + const char* filename; + size_t pos; + Token* tokens; + size_t count; + size_t cap; } Lexer; diff --git a/src/lexer.c b/src/lexer.c @@ -2,18 +2,22 @@ #include <stdio.h> #include <stdlib.h> -static void add_token(Lexer *l, Token t) { - if (l->count >= l->cap) { - l->cap *= 2; - l->tokens = realloc(l->tokens, l->cap * sizeof(Token)); - } +static void +add_token(Lexer *l, Token t) +{ + if (l->count >= l->cap) { + l->cap *= 2; + l->tokens = realloc(l->tokens, l->cap * sizeof(Token)); + } - l->tokens[l->count++] = t; + l->tokens[l->count++] = t; } -Lexer *lexer_lex(Lexer *l) { - Token tok = {0}; - l->tokens = calloc(250, sizeof(Token)); - add_token(l, tok); - return l; +Lexer * +lexer_lex(Lexer *l) +{ + Token tok = { 0 }; + l->tokens = calloc(250, sizeof(Token)); + add_token(l, tok); + return l; } diff --git a/src/main.c b/src/main.c @@ -2,26 +2,23 @@ #include "utils.h" #include <stdio.h> -int main(int argc, char **args) { - char *filename; - char *contents; - Lexer lexer = {0}; +int +main(int argc, char **args) +{ + char *filename; + char *contents; + Lexer lexer = { 0 }; - if (argc < 1) - return 1; + if (argc < 1) return 1; - filename = args[1]; + filename = args[1]; + if (filename == NULL) return 1; - if (filename == NULL) - return 1; + contents = read_file(filename); + if (contents == NULL) return 1; - contents = read_file(filename); + printf("%s\n", contents); - if (contents == NULL) - return 1; - - printf("%s\n", contents); - - lexer = *lexer_lex(&lexer); - return 0; + lexer = *lexer_lex(&lexer); + return 0; } diff --git a/src/utils.c b/src/utils.c @@ -2,37 +2,43 @@ #include <stdlib.h> #include <string.h> -char *read_file(const char *filename) { - FILE *fp = fopen(filename, "r"); - if (fp == NULL) { - fprintf(stderr, "file not found\n"); - return NULL; - } +char * +read_file(const char *filename) +{ + long fsize; + char *source; + FILE *fp = fopen(filename, "r"); + if (fp == NULL) { + fprintf(stderr, "file not found\n"); + return NULL; + } - fseek(fp, 0, SEEK_END); - long fsize = ftell(fp); - fseek(fp, 0, SEEK_SET); + fseek(fp, 0, SEEK_END); + fsize = ftell(fp); + fseek(fp, 0, SEEK_SET); - char *source = malloc(fsize + 1); - fread(source, fsize, 1, fp); - fclose(fp); + source = malloc(fsize + 1); + fread(source, fsize, 1, fp); + fclose(fp); - source[fsize] = 0; - return source; + source[fsize] = 0; + return source; } -void separate_file_from_path(const char *fullpath, char **out_path, char **out_filename) { - char *path = strdup(fullpath); - char *filename = strrchr(path, '/'); +void +separate_file_from_path(const char *fullpath, char **out_path, char **out_filename) +{ + char *path = strdup(fullpath); + char *filename = strrchr(path, '/'); - if (filename == NULL) { - printf("No path found\n"); - exit(1); - } + if (filename == NULL) { + printf("No path found\n"); + exit(1); + } - *filename = '\0'; - filename++; - *out_path = strdup(path); - *out_filename = strdup(filename); - free(path); + *filename = '\0'; + filename++; + *out_path = strdup(path); + *out_filename = strdup(filename); + free(path); }