Commit Graph

30 Commits

Author SHA1 Message Date
Christoffer Lerno
3bdfe3e05e Refactored structs. 2020-06-01 21:00:21 +02:00
Christoffer Lerno
c9ab05bfec Prepare for struct refactoring. 2020-05-30 20:58:09 +02:00
Christoffer Lerno
2b97241908 Nicer print of errors when using typedef. Error cast of pointers should not have error when optionally implicit. Improved func pointer printout. 2020-05-20 16:51:44 +02:00
Christoffer Lerno
b2bfd87a06 Started work on ranges. Added weak/noreturn/inline/cname/stdcall/section/alignment attributes. Some work on subarrays. Fixes to throws. Function pointers work. 2020-05-20 14:22:22 +02:00
Christoffer Lerno
dbce72146f More AST dumps fixed. Throw simplified by removing "DECL_THROW", which also unearthed a bug. 2020-05-07 11:46:16 +02:00
Christoffer Lerno
89ce6064e1 Started work on cleaning up dumping the AST. Lots still to do but... Split try expr further and fixed emit of statement. 2020-05-06 22:23:53 +02:00
Christoffer Lerno
373001fd12 Error -> errset (temporarily). Catch / throw now works, but it will not yet correctly handle defer. 2020-05-03 02:04:13 +02:00
Christoffer Lerno
78aa49cc0e Work on getting typeof up and running. Try-else now works. 2020-04-22 20:19:55 +02:00
Christoffer Lerno
8e80091da4 Create CI 2020-04-22 16:07:42 +02:00
Christoffer Lerno
6117a1be7c Lots of fixes and optimizations to structs. Now there are no unnecessary intermediary types. 2020-04-18 14:29:17 +02:00
Christoffer Lerno
1d73338fb0 Order of function resolution is different. Function prototypes resolved first. Same with LLVM gen. Designated initializer and anonymous fields fixed mostly. 2020-04-12 21:35:25 +02:00
Christoffer Lerno
400c38b95b Use correct sizes and alignments. Fix designated initializers and literals. Added todo 2020-04-06 13:45:58 +02:00
Christoffer Lerno
60c60a3205 Enum fixes 2020-04-05 11:31:05 +02:00
Christoffer Lerno
336e6cf47d Type cleanup 2020-04-04 01:35:20 +02:00
Christoffer Lerno
bbef467317 Codegen of enum and error 2020-04-04 01:28:15 +02:00
Christoffer Lerno
ded367399e Some work towards automated testing. Fixes to bigint. Removed implicit assign cast. Updated cast rules. Fixes *%=. Simplified case. Unified shift code. Major casts rework. Fixed error handling of pointer + integer adds. Removed &&= and ||=. Unified more expression handling and fixed bugs in sematic analysis on expressions. 2020-04-02 23:13:04 +02:00
Christoffer Lerno
b1aa64cdcc TypeInfo gained a span. Hex lexing fixed. Basic block returns fixed. Removal of Ast.exit. Enum parameter list parses. Enum analysis improved. Exit deduction improved. Switch over a bool allowed. Switch analysis improved. Added -% operator. Updated implicit casts. Use of bigint. Signed-unsigned comparisons. 2020-03-29 17:41:31 +02:00
Christoffer Lerno
f4b4bab947 Restructuring the parser & split parser into parts. Parsing more constructs now, like enums with extended syntax. Corrected handling of function block to be an expression. Added expression block codegen. 2020-03-29 17:40:42 +02:00
Christoffer Lerno
ebbea2ac42 Lookahead cleanup. Start work on throws. Fix try expressions. Beginning work on initializer. Some fixes on LLVM types. Moving more target info into C3. Moving alignment into types Introducing a meta type (incomplete). Start work on macros. Splitting '@' from macro name. 2020-03-29 17:39:33 +02:00
Christoffer Lerno
ad404315d6 Fix some bugs, satisfy more compilers. 2020-03-26 16:37:41 +01:00
Christoffer Lerno
7b4ed09517 Introduced a Lexer context, comment parsing now actually works properly. Token use in decl/ast/expr is moved to SourceRange instead. And the SourceRange used start/end, which is better than using start + len for many uses. 2020-01-25 17:56:17 +01:00
Christoffer Lerno
cdc1bfe267 Start using UnaryOp/PostUnaryOp ++/-- now works post/pre and also on pointers. Fix ++/-- on any number. Added examples. c3c now compiles files by default. Extended symbol resolution. Addition of 'extern'. Multi-level paths. 2020-01-16 21:28:13 +01:00
Christoffer Lerno
fc3bd57ecf Major type check rewrite. Fixed params to be writable. Conditionals work. Lots of assign operators fixed. Struct access works. 2019-12-08 16:52:29 +01:00
Christoffer Lerno
acf7efded4 Initial work on throws. Cleanup of AST printout (incomplete!). Fixed issues with dead code after return. 2019-11-28 22:24:10 +01:00
Christoffer Lerno
aee3f99ea7 Added some codegen & .o generation and (hopefully correct) optimization. Hacked strings in together with i++/i--. Fixed up parsing of strings supporting \u \U \x => UTF8 2019-11-27 16:16:44 +01:00
Christoffer Lerno
990918b609 LLVM Codegen 2019-11-20 17:09:25 +01:00
Christoffer Lerno
a3b90b9500 Removed non-null references. 2019-09-30 13:29:41 +02:00
Christoffer Lerno
3b2051ea80 More casts done, bugs fixed, codegen expanded, correct ordering in codegen, if, label, goto, break, switch, continue, compile time if analysed, 2019-09-07 00:58:56 +02:00
Christoffer Lerno
0dba2b8569 Partial codegen 2019-09-04 12:51:01 +02:00
Christoffer Lerno
2eb91083a6 Refactor type handling, some extremely simple codegen, but mostly work on casts (not finished) 2019-09-01 01:58:21 +02:00