Christoffer Lerno
|
4d552ae44d
|
Update $include syntax and behaviour. Remove top level $if completely.
|
2023-06-21 16:27:53 +02:00 |
|
Christoffer Lerno
|
4c1edfb941
|
Dev (#777)
* The new @if directive.
|
2023-06-10 23:16:28 +02:00 |
|
Christoffer Lerno
|
cc19168c7b
|
Some general cleanup.
|
2023-02-28 01:15:30 +01:00 |
|
Christoffer Lerno
|
3b49b87784
|
Fix for nolibc (eg wasm). Add multi global declarations. Simplicity wasm export / import. Prevent "extern" functions to have a function body.
|
2023-02-11 11:16:31 +01:00 |
|
Christoffer Lerno
|
ef7365224f
|
Added $include.
|
2022-12-29 16:12:03 +01:00 |
|
Christoffer Lerno
|
02374c6aab
|
Generic modules also accepts integers and booleans.
|
2022-10-23 19:16:38 +02:00 |
|
Christoffer Lerno
|
bd0e8f1ef1
|
Allow imports anywhere in the module outside of ct statements.
|
2022-10-20 23:54:36 +02:00 |
|
Christoffer Lerno
|
7d58ce0dcb
|
Take code from stdin. Version bump.
|
2022-10-18 19:45:56 +02:00 |
|
Christoffer Lerno
|
4f4bc80953
|
Symtab has a new hash map type. New, small, sourcespan, external symbols simplified. Updated docs.
|
2022-03-01 10:32:52 +01:00 |
|
Christoffer Lerno
|
1d5ff71b21
|
Rearchitecture contexts. Fixing macro resulution, hash arguments and defers.
|
2022-01-04 20:45:58 +01:00 |
|
Christoffer Lerno
|
fd1353f0f1
|
Removed scratch hash table use for parameter checks. Faster symtab setup. Scrubbed the lexer somewhat without changing behaviour.
|
2022-01-01 22:08:07 +01:00 |
|
Christoffer Lerno
|
a0be188902
|
Lexing updated with simpler code. Note: may have bugs.
|
2021-12-27 15:45:54 +01:00 |
|
Christoffer Lerno
|
f6de1f7b74
|
Somewhat clearer code around lexing.
|
2021-12-24 01:09:21 +01:00 |
|
Christoffer Lerno
|
39b1b59011
|
Removal of #pragma mark for better compiler compatibility
|
2021-11-21 21:15:05 +01:00 |
|
Christoffer Lerno
|
84fa680568
|
Allow multiple modules in a single file.
|
2021-05-30 16:30:16 +02:00 |
|
Christoffer Lerno
|
f7919edb35
|
Split modules into generic and normal modules on the top level. Prepare for static. Change local -> static as keyword. Add private include. Remove old sub module search.
|
2021-05-09 19:26:05 +02:00 |
|
Christoffer Lerno
|
954a90dae3
|
Fix of arch target. Experimental linker support.
|
2021-04-09 18:47:41 +02:00 |
|
Christoffer Lerno
|
4f064e7da2
|
Initial checkin of docs parsing. char is now unsigned, and signed char is "ichar".
|
2021-01-29 18:46:17 +01:00 |
|
Christoffer Lerno
|
3a24fbfa6d
|
Moved examples around. Updated (and corrected) const initialization. Removed "in" keyword. Added "member" attribute domain. Many fixes in struct padding and alignment and tests. Fixed extern global.
|
2021-01-24 00:55:09 +01:00 |
|
Christoffer Lerno
|
77ccfc1f7c
|
Added CT_SWITCH parsing in top level. Nil changed to null. Parsing more in line with grammar. Parse type as expressions. Zero init by default for locals. Corrected bool/fp conversion. Add memcpy pass to fix issue with value load/stores.
|
2020-09-21 11:38:12 +02:00 |
|
Christoffer Lerno
|
b45c866071
|
Adding $switch and rearranging parser somewhat. Removing the need for "store" of context.
|
2020-08-02 13:53:17 +02:00 |
|
Christoffer Lerno
|
21357c4fc1
|
Fix crash when having return value errors. Updated docs. Find and load builtin.c3 locate std lib.
|
2020-07-31 16:29:52 +02:00 |
|
Christoffer Lerno
|
380c1c8ab4
|
Support for $assert. Also change order of checking global declarations from parsing to semantic analysis.
|
2020-07-30 17:44:41 +02:00 |
|
Christoffer Lerno
|
8586bf3f8d
|
Constants are now variables. Constant compile time constants are typeless and act as #define and are now also correctly parsed. Enums are also correctly lowered. And expressions are copied when inlining constants. Compile time ints can no longer be bitnegated.
|
2020-07-29 22:08:47 +02:00 |
|
Christoffer Lerno
|
75dd644e52
|
Corrected parsing for incremental arrays. Correctly handle failed declarations. More tests.
|
2020-07-25 21:54:32 +02:00 |
|
Christoffer Lerno
|
e3566ba838
|
Fixed crash bug on missing module, and on file name == keyword. Added summary to tester and corrected filename.
|
2020-07-25 21:54:32 +02:00 |
|
Christoffer Lerno
|
ed01616f1e
|
Changed how structs/unions are parsed so that recovery becomes more robust. Allow for more complex error data. Fixed recursive structs/unions. Corrected prefix precedence rules. Begin work on checking initializer constant-ness. Fixed error on failed arithmetic promotion. Added checks on constant overflow of sub/add/mult. Allow "current_module_name::x" to refer to globals. Added many tests.
|
2020-07-23 18:04:18 +02:00 |
|
Christoffer Lerno
|
f45d6ef84b
|
Fix, separate out the function pass from the decl pass. Diagnose non-visible symbols as not visible rather than missing. Fix crash when module identifier is incorrect. !! operator added. New character literal parsing. Added simple test framework.
|
2020-07-21 23:43:28 +02:00 |
|
Christoffer Lerno
|
b4c661eaad
|
Pre lexing and mmap allocation together with exact exits.
|
2020-07-15 15:42:54 +02:00 |
|
Christoffer Lerno
|
1ddcb99711
|
More fixes for warnings.
|
2020-07-09 16:11:29 +02:00 |
|
Christoffer Lerno
|
dc86c21210
|
New failable based error handling. Labelled break/continue/next.
|
2020-07-09 13:07:08 +02:00 |
|
Christoffer Lerno
|
50c36789bf
|
Fixes bug handling chained && ||. Work towards more macro functionality. Correctly emit stdcall. Corrected character parsing in escaped string entries.
|
2020-06-11 15:45:58 +02:00 |
|
Christoffer Lerno
|
f96ab76195
|
Type parsing and expr parsing unified.
|
2020-06-02 00:41:35 +02:00 |
|
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
|
1b69423f45
|
Method functions now work.
|
2020-05-27 12:26:38 +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
|
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
|
6da6b0f571
|
Compound literal works properly.
|
2020-04-18 14:29:17 +02:00 |
|
Christoffer Lerno
|
50c3604dd2
|
Fixed variadic error. Fixed incorrect token type on decimal numbers(!)
|
2020-04-09 15:08:48 +02:00 |
|
Christoffer Lerno
|
96c8c77e89
|
Work on unions and anonymous structs/unions.
|
2020-04-06 23:48:51 +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
|
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
|
2e3bbf119c
|
Lexer cleanup
|
2020-03-29 17:40:03 +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 |
|