Commit Graph

74 Commits

Author SHA1 Message Date
0a8a7cddd0 lexer: Handle differentation between zero and prefix
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 14:20:23 -05:00
68e7f41181 lexer: Handle '_' digit seperator properly
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 14:19:58 -05:00
0317c6a4ca lexer: Putback non-numerical token in number scanning
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 14:01:19 -05:00
3e8a45a156 parser+codegen: Add support for 'return' statement
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 13:49:15 -05:00
3d6cc301f3 core: Add data_raw_type() helper macro
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 13:48:56 -05:00
222b96f20e backend+mu: Add helper to return immediate values
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 13:48:00 -05:00
38fab3f7e5 lexer: Remove unneeded isxdigit() check
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 13:45:49 -05:00
04b253ce26 lexer: Add token for 'return' keyword
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 13:12:21 -05:00
e90de9ced5 parser: Move function scope check to parse_func()
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 13:11:50 -05:00
fb0303c7a6 parser+lexer: Add proper counting of line numbers
Since the compiler is two-pass, having the incrementation performed in
the lexer would result in extraneous incrementations during the
preprocessing phase. We want line numbers for diagnostics during the
parsing phase and therefore a fix would be to have the parser filter
newlines out itself.

Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 12:12:30 -05:00
0d273de7cc core: Disallow nested functions
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 12:05:22 -05:00
1c2eed0a0d core: Associate data type with symbol, not ast node
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 03:39:07 -05:00
995f40aa85 build: Add rifleout.asm to .gitignore
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 23:12:28 -05:00
07db3ee834 parser+codegen: Handle function epilogue
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 23:11:52 -05:00
87f0cfcdb0 backend: Add interface to generate ret instruction
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 23:11:37 -05:00
ae1a50e78b parser: Remove redundant newline
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 23:11:18 -05:00
e2c729a0f9 parser+backend: Add support for public symbols
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 22:58:06 -05:00
022770df16 lexer: Add token for '.pub' keyword
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 22:57:39 -05:00
8d0c0520b5 codegen: Return 0 in cg_resolve_node();
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 22:46:35 -05:00
154a71b1f6 core: Add initial codegen sources
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 22:17:40 -05:00
1db0ed78e1 core: Add 'void' data type
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 21:39:40 -05:00
009bdcf281 parser: Add function parsing groundwork
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 21:31:57 -05:00
9b68588153 core: Add scope management
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 21:30:54 -05:00
695f408369 parser: Add newline to end of utok()
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 21:11:25 -05:00
1ad72ea5a2 core: Add program data types
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 18:08:20 -05:00
a2a866a010 core: Add abstract syntax tree helpers
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 17:15:40 -05:00
e41c006ad3 lexer: Add token for ','
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 17:09:28 -05:00
d437fb258f lexer: Add token for '.struct' token
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 17:05:03 -05:00
41f5633198 parser: Use all lower-case for logs
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 17:01:28 -05:00
e9865d346e sample: Drop end comment
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:58:32 -05:00
b670320934 lexer: Add token for numbers
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:48:03 -05:00
378259a873 lexer: Add token for semicolon
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:31:46 -05:00
babcf9d3cf lexer: Add tokens for LBRACE and RBRACE
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:30:16 -05:00
48c2e7eb73 sample: Conform to style
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:28:07 -05:00
32b8c79fc2 parser: Document parse_ifdef()
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:27:56 -05:00
fc6643ff3f lexer: Handle line numbers
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:25:34 -05:00
54391f4c60 parser: Keep track of if directive depth
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:17:51 -05:00
8a47858fb7 parser: Don't return error in parse_ifndef()
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:17:19 -05:00
c1d128cf20 parser: Decrement ifx_depth in parse_skip_to_endif()
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 16:16:09 -05:00
869735c25f parser: Add support for '#ifndef' directive
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 15:56:25 -05:00
7708c3d89e lexer: Add token for '#ifndef' directive
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 15:55:43 -05:00
508ef51fc8 core: Add support for '#ifdef' directive
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:38:35 -05:00
b057cdf597 core: Increment files_compiled before compile() call
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:38:11 -05:00
a164a18d67 lexer: Add '#ifdef' and '#endif' tokens
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:37:54 -05:00
e95916f08d parser: Handle '#define' directive
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:20:07 -05:00
cdb4309006 core: Remove redunant whitespace
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:19:45 -05:00
c1a9413ef3 symbol: Make symbol result optional
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:19:24 -05:00
49169dda1c build: Use dep files
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 14:06:39 -05:00
b876cd7edf lexer: Putback non-identifier token
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 13:28:42 -05:00
8a54fa74ba lexer: Add scanning of '#define' directive
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-15 13:27:49 -05:00