| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | optimize lexer a bit more | 2025-12-20 | 1 | -2/+2 | |
| | | |||||
| * | lexer: convert pp-idents to keywords only after preprocessing | 2025-12-20 | 1 | -8/+10 | |
| | | |||||
| * | create distinct interned string type | 2025-12-15 | 1 | -1/+2 | |
| | | | | | | | | | | | | | | | Interned strings are used pervasively, so it's a good idea to add a layer of type safety to differentiate them from general cstrs and avoid potential bugs from comparing non-interned and interned strings. Not that that's happened so far that I can remember, but it could. I'm 90% sure it's legal to alias `struct {char c;}` pointers with `char` pointers. This specific typedef gives type safety but with a simple one-way `internstr -> const char *` typecast (with `&istr->c`). Converting the other way around is more intentional: a straight up cast `(internstr)cstr` which sticks out as unchecked and probably wrong, or calling the intern(cstr) function, which is the right way. | ||||
| * | move intern() to mem.c | 2025-12-15 | 1 | -1/+0 | |
| | | | | | | Being in lex.c was vestigial, since it was being used all over the frontend and backend. | ||||
| * | lex: use pmap for macro lookup | 2025-12-12 | 1 | -1/+1 | |
| | | | | | To reduce hashmap code repetition. Also add pmap_del for this purpose | ||||
| * | preprocessor: add #ifndef...#endif include guard optimization | 2025-12-02 | 1 | -0/+3 | |
| | | |||||
| * | cpp: fix bugs with recursive macro expansion (hopefully) | 2025-11-23 | 1 | -0/+1 | |
| | | |||||
| * | c: move warning for extension keyword til after preprocessor | 2025-11-22 | 1 | -0/+1 | |
| | | |||||
| * | factor type stuff into type.h | 2025-11-16 | 1 | -0/+1 | |
| | | |||||
| * | lex: fix bugs filling char buffer | 2025-10-27 | 1 | -1/+1 | |
| | | |||||
| * | refactor vec_of(T) and misc | 2025-10-20 | 1 | -0/+1 | |
| | | |||||
| * | Organize source files into directories | 2025-10-19 | 1 | -0/+115 | |