Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Allow identifiers in expressions | Thomas Voss | 2024-06-14 | 2 | -0/+7 |
| | |||||
* | Add a basic arena allocator | Thomas Voss | 2024-06-14 | 2 | -1/+116 |
| | |||||
* | Support gperf | Thomas Voss | 2024-06-14 | 1 | -4/+31 |
| | |||||
* | Fix alignof() usage and a very sneaky bug | Thomas Voss | 2024-06-12 | 2 | -26/+28 |
| | | | | | | | | | | | | | | | | | | It might seem innocuous, but the following expression is actually quite prone to breakage: ast->kids[i].lhs = parseexpr(ast, toks); The reason is that parseexpr() and the other parsing functions return indicies into the AST, however in doing so they may find that the AST needs to grow and call astresz(). Should astresz() be called there is a chance that we will realloc() a new buffer somewhere else in memory, causing the left-hand side of the above expression to now be pointing to an invalid location in memory. To combat this we’re forced to break it up into two statements: idx_t_ lhs = parseexpr(ast, toks); ast->kids[i].lhs = lhs; | ||||
* | Use smaller default capacities in debug mode | Thomas Voss | 2024-06-12 | 2 | -13/+15 |
| | |||||
* | Strip U+0027 APOSTROPHE from integer literals | Thomas Voss | 2024-06-12 | 1 | -1/+11 |
| | |||||
* | Mark bufalloc with __attribute__((alloc_size)) | Thomas Voss | 2024-06-12 | 1 | -1/+1 |
| | |||||
* | Assert that we aren’t freeing anything | Thomas Voss | 2024-06-12 | 1 | -0/+2 |
| | |||||
* | Allow disabling the sanitizer | Thomas Voss | 2024-06-12 | 1 | -5/+19 |
| | |||||
* | Assert that we don’t have too many tokens | Thomas Voss | 2024-06-11 | 2 | -0/+10 |
| | |||||
* | Dispose the LLVM module after use | Thomas Voss | 2024-06-11 | 1 | -0/+1 |
| | |||||
* | Add some unreachables in places | Thomas Voss | 2024-06-11 | 1 | -1/+5 |
| | |||||
* | Code reshuffling | Thomas Voss | 2024-06-11 | 8 | -17/+33 |
| | |||||
* | Remove ‘soa’ from lots of identifiers | Thomas Voss | 2024-06-11 | 7 | -59/+57 |
| | |||||
* | Be consistent with the *_t_ suffix for typedefs | Thomas Voss | 2024-06-11 | 2 | -6/+6 |
| | |||||
* | Switch size_t indicies to be idx_t_ | Thomas Voss | 2024-06-11 | 4 | -36/+23 |
| | |||||
* | Add basic LLVM codegen | Thomas Voss | 2024-06-11 | 8 | -152/+306 |
| | |||||
* | Get building & linking with LLVM working | Thomas Voss | 2024-06-11 | 5 | -17/+67 |
| | |||||
* | Parse very basic declarations | Thomas Voss | 2024-06-11 | 2 | -24/+174 |
| | |||||
* | Begin work on a basic parser | Thomas Voss | 2024-06-11 | 3 | -71/+151 |
| | |||||
* | Lex number literals | Thomas Voss | 2024-06-11 | 2 | -0/+27 |
| | |||||
* | Use alignof() instead of hardcoding 8 | Thomas Voss | 2024-06-11 | 1 | -1/+1 |
| | |||||
* | Formatting | Thomas Voss | 2024-06-11 | 2 | -34/+22 |
| | |||||
* | Color functions with __attribute__() | Thomas Voss | 2024-06-11 | 2 | -4/+4 |
| | |||||
* | Define GCC-specific macros in make.c | Thomas Voss | 2024-06-11 | 2 | -8/+8 |
| | |||||
* | Slightly simplify code | Thomas Voss | 2024-06-09 | 1 | -10/+8 |
| | |||||
* | Use CHAR_BIT | Thomas Voss | 2024-06-09 | 1 | -1/+3 |
| | |||||
* | Add likely() and unlikely() macros | Thomas Voss | 2024-06-08 | 1 | -5/+13 |
| | |||||
* | Switch to an SOA for lexemes | Thomas Voss | 2024-06-08 | 5 | -67/+190 |
| | |||||
* | Switch to C11 | Thomas Voss | 2024-06-08 | 1 | -1/+1 |
| | |||||
* | Sort lexeme kinds | Thomas Voss | 2024-06-08 | 1 | -7/+6 |
| | |||||
* | Do some lexer work | Thomas Voss | 2024-06-08 | 9 | -30/+2335 |
| | |||||
* | Fix some undefined behavior | Thomas Voss | 2024-06-08 | 1 | -6/+4 |
| | |||||
* | Use -march and -mtune on Darwin | Thomas Voss | 2024-06-08 | 1 | -4/+1 |
| | |||||
* | Genesis commit | Thomas Voss | 2024-06-08 | 17 | -0/+1541 |