87 Commits

Author SHA1 Message Date
0d628c8df3 docs: Add initial language spec
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-03-17 01:14:49 -04:00
99f52e02b2 core: include sys/types.h
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-24 22:35:44 -05:00
4325c809a1 lexer: add token for 'break' keyword
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-24 22:32:54 -05:00
fa4f8f7825 core+backend: Add support for label sections
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-23 13:56:24 -05:00
c3bbf59303 core: Allow assembly only outputs
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-18 09:37:32 -05:00
29479b5ac6 core: Assemble with NASM
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-18 09:28:32 -05:00
9645df1e27 core: Bump version to v0.0.2
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-17 09:22:57 -05:00
9be4ce179e parser+codegen: Add support for loops
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-17 01:49:22 -05:00
197965f173 backend: Add interface to generate branch to label
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-17 01:48:58 -05:00
011cfaee11 sample: Update func.rifle
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-17 01:11:15 -05:00
aae74f06ed lexer: Add token for 'loop' keyword
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-17 01:10:48 -05:00
271c9750ea parser: Prevent double rets
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 14:29:06 -05:00
316d49e132 backend/x86_64: Insert 'ret' in mu_gen_retimm()
Signed-off-by: Ian Moffett <ian@mirocom.org>
2026-02-16 14:28:37 -05:00
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