Commit graph

137 commits

Author SHA1 Message Date
6d69f846f4 Add compound assignment operators 2026-03-30 13:33:16 +03:00
171e07c58d Fix type expression parsing precedence: (t -> t mut *) caused shift/reduce conflict 2026-03-30 13:32:36 +03:00
38fd23b50e Add left/right shift operators 2026-03-30 12:04:34 +03:00
138bddf187 Remove old aarch64 compiler and update plans 2026-03-29 23:22:29 +03:00
e771542773 Implement array-types function arguments & return values in Aarch64 compiler 2026-03-29 22:52:48 +03:00
1404437324 IR & Aarch64 compiler arrays support wip 2026-03-29 19:37:49 +03:00
46c33b2acf Implement proper struct field assigment in IR compiler 2026-03-29 12:20:49 +03:00
79101ff3bd Fix computing struct layouts 2026-03-29 12:20:17 +03:00
041513f33e Support struct return values in aarch64 compiler 2026-03-27 20:25:16 +03:00
7622a882b5 Support struct function arguments + fixes 2026-03-27 20:02:50 +03:00
62fc4c88de Fix floating-point function arguments in Aarch64 compiler v2 2026-03-27 16:17:37 +03:00
0dc740d656 IR & Aarch64 compiler structs support wip: struct constructors, assignment, field access 2026-03-27 14:53:36 +03:00
14cb393076 Support comparison operators for integers of different types 2026-03-26 23:49:28 +03:00
81825aee7f Tweak reporting function call type error 2026-03-26 15:53:06 +03:00
d31758eb4a Support frame pointers 2026-03-25 19:23:12 +03:00
64514d9bf4 Fix storing <8 byte sized objects on stack 2026-03-25 19:22:52 +03:00
5d7968c30b Implement IR + Aarch64 pointers 2026-03-25 16:30:43 +03:00
42e7f7961e New IR -> Aarch64 compiler wip: basic operations done (no pointers, structs, arrays) 2026-03-25 00:22:50 +03:00
c3c5010e04 Store node list via shared_ptr in module_context 2026-03-23 21:53:42 +03:00
dd3eb5d14b Implement pointer support in IR via load/store instructions 2026-03-23 15:35:28 +03:00
0c11b09548 Pointers wip 2026-03-23 14:41:47 +03:00
776c12f6b5 Update plans 2026-03-23 00:26:58 +03:00
b267f09ea4 Fix abi.cpp indentation 2026-03-23 00:17:26 +03:00
e084b48fd3 Refactor IR compiler: get rid of useless scoping 2026-03-23 00:12:55 +03:00
ebc19fad20 Refactor type checker: remove useless scoping, resolve type layouts all in one go 2026-03-22 23:49:29 +03:00
c4d1252462 Refactor return AST node: store direct function node reference instead of relative scope level 2026-03-22 20:18:39 +03:00
5d00f1ddb7 Refactor AST: store direct references to AST nodes in indentifiers 2026-03-22 20:02:40 +03:00
292d6eeabf Refactor: split pre-AST (contains if/else if/else blocks, field definitions, no hierarchy) and the actual AST obtained after resolving scoping & indentation (contains if chains, no field definitions) 2026-03-22 14:06:34 +03:00
56c63d50ac Struct types refactor v2: store AST node pointer in struct type 2026-03-22 13:34:35 +03:00
d363be0eef Replace some usages of ostringstream with std::format 2026-03-22 12:51:38 +03:00
357baa9652 Fix printing function types like (a -> b) -> c 2026-03-22 12:50:22 +03:00
7d5795d9bf Fix compilation to IR, in particular initializing a variable with a copy of another variable 2026-03-19 15:05:08 +03:00
29c936c19c Rework grammar to support input files without a newline in the end 2026-03-18 19:03:31 +03:00
25672d3f05 First common arch-independent IR prototype (no structs or arrays yet) 2026-03-18 18:35:47 +03:00
1a0dd2a48f Aarch64 JIT compiler wip: partial struct support 2026-03-17 18:08:23 +03:00
53be7b92df Store inferred struct field type in the field node itself 2026-03-16 12:44:27 +03:00
ab028c9d7a Hard-code size of bool as 1 just in case 2026-03-15 20:12:18 +03:00
8c0b371fdb Implement computing struct layout (size, alignment, field offsets) in type checking 2026-03-15 20:12:01 +03:00
0d6b491fd4 Fix resolving top scope variables in resolve_identifiers (were considered global, but not anymore) 2026-03-15 16:34:14 +03:00
bcdcc9e752 Fix identifier & literal source locations in parser 2026-03-15 16:33:29 +03:00
b25400ad65 Properly implement inner functions in aarch64 compiler & support module entry point 2026-03-15 14:16:33 +03:00
4b555c2ad4 Fix filename tracking in locations & separate prelude location and full block location for AST nodes containing statement lists 2026-03-14 00:48:46 +03:00
3981b78b2d Rename parser::finilize -> finalize 2026-03-13 17:18:55 +03:00
89b6b09be5 Fix scope stack offset cleanup in aarch64 compiler 2026-03-13 14:25:05 +03:00
51c78169b3 Validate functions with no return & automatically add return in the end of a function returning unit 2026-03-13 13:40:09 +03:00
902d272deb Fix empty location in if chains 2026-03-13 13:39:01 +03:00
ad46b230d8 Fix missing handling of expression statements in aarch64 compiler 2026-03-13 12:53:18 +03:00
e5ce32d25f Fix handling empty returns in aarch64 compiler 2026-03-13 12:53:03 +03:00
788e98409a Implement remainder operator in aarch64 compiler 2026-03-13 11:24:43 +03:00
0541068c2b Improve 'not implemented' error messages 2026-03-13 11:09:39 +03:00