Commit graph

171 commits

Author SHA1 Message Date
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
78e6a5c0ee Add readme and tweak spec 2026-03-22 13:00:41 +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
ae01f53d15 Improve interpreter input handling 2026-03-18 18:48:01 +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
84f193befd Add mandelbrot example 2026-03-13 14:26:28 +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
11656fb296 Support printing multiline error context in interpreter 2026-03-13 13:39:28 +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
7f574eabbd Fix extending register after logical not in aarch64 compiler 2026-03-13 11:05:20 +03:00
c8cd86dd0b Add foreign functions (stub in interpreter, implemented in aarch64 compiler) 2026-03-13 11:01:53 +03:00
cb433d87bf Fix short-circuit || for small integer types 2026-03-12 23:13:42 +03:00
13a9ba24f2 Refactor: split function definition & declaration in ast 2026-03-12 21:45:21 +03:00
927368aa80 Add short-circuiting versions of and/or (&& and ||) and implement them for bools and integers in interpreter and aarch64 compiler 2026-03-12 21:37:15 +03:00
76f80f8135 Update spec 2026-03-12 20:17:17 +03:00
c7e0232b15 Aarch64 JIT: check function pointer support 2026-01-19 15:14:13 +03:00
30b88d4add Aarch64 JIT compiler: Fix else blocks 2026-01-19 15:13:55 +03:00
7a3c7cca5d Support mutually recursive functions in identifier resolution & type checker 2026-01-16 15:25:44 +03:00
aab10621cc Don't check the host OS when determining host ABI 2026-01-11 16:25:48 +03:00
687cf31063 Check for mmap call failure 2026-01-11 15:47:57 +03:00
4def0b096d Fix parsing half-floats on non-clang 2026-01-07 14:47:57 +03:00
1dc60011d7 Implement function calls 2026-01-06 22:10:22 +03:00
cb32ec3459 Refactor jit-compiling interface: introduce common global program context with shared code & symbol tables 2026-01-06 19:10:52 +03:00
668851f6bf Aarch64 jit compiler wip: fix loading/storing floating-point values 2026-01-06 12:45:12 +03:00
00d8f0fe52 Aarch64 jit compiler wip: implement integer & floating-point type conversions 2026-01-06 12:11:56 +03:00
12a4f64aed Aarch64 jit compiler wip: suppport floating-point variables 2026-01-05 10:46:53 +03:00
c9f4a9c19d Aarch64 jit compiler wip: suppport floating-point arguments 2026-01-05 10:29:46 +03:00
428283dbf8 Aarch64 jit compiler wip: floating-point comparisons 2026-01-05 10:23:33 +03:00
45004ce812 Fix inferring type of a != expression node 2026-01-05 10:23:13 +03:00
8f5744c3f4 Aarch64 jit compiler wip: floating-point arithmetic operators 2026-01-05 01:03:52 +03:00
c253041068 Aarch64 jit compiler wip: support f16 literals 2026-01-05 00:49:47 +03:00