aboutsummaryrefslogtreecommitdiff
path: root/cup
Commit message (Collapse)AuthorAgeFilesLines
* Rename `cup` directory to `src`Mustafa Quraish2022-01-3014-1781/+0
|
* Functions, yay!Mustafa Quraish2022-01-305-19/+183
| | | | | | | | | | | | | | | We now support function calls! We don't have support for forward declaring functions right now though, so no mutual recursion is possible. The arguments are passed via the stack instead of through registers (unlike the x86_64 calling convention, I think). We'll probably need some sort of primitives built into the language for syscalls eventually because of this. Return types are also not checked, and right now it's possible to have a function that doesn't return anything even when the caller expects it to, error checking and reporting definitely needs to be improved.
* Make the compiler / scripts work on Linux too (yay!)Mustafa Quraish2022-01-291-0/+12
|
* Add for and while loop support (w/o declarations in `for`)Mustafa Quraish2022-01-295-14/+90
| | | | | | We can now loop and do stuff, yay! However, we don't yet allow declarations inside the for-loop initializer, since that is a bit more annoying to implement.
* Implement blocks (lexically scoped) and conditionalsMustafa Quraish2022-01-295-35/+197
|
* Add i64{max,min} helper functionsMustafa Quraish2022-01-292-1/+7
|
* Allow uninitialized variable declarationsMustafa Quraish2022-01-295-12/+51
|
* Now supporting local variables! :^)Mustafa Quraish2022-01-295-29/+84
|
* Restore line/col count in Lexer_peek to get correct locationsMustafa Quraish2022-01-291-0/+4
|
* Add separator in `die_location()`Mustafa Quraish2022-01-291-0/+1
|
* Add parsing + storing offsets for locals / move around headersMustafa Quraish2022-01-298-24/+114
|
* Add relational and logical operators + refactor binop parserMustafa Quraish2022-01-293-50/+159
| | | | | | | | | We now support OR and AND with short circuiting! (Yet to be tested since we don't yet have local variables to play with). The binop parser took a bit of an overhaul factoring out the common code so that it's easier to describe the operator precendence relationships without being overly repetitive.
* Add some arithmetic binary operations into lex+parse+generationMustafa Quraish2022-01-284-19/+181
|
* Corrent incorrect `break` in LexerMustafa Quraish2022-01-281-5/+6
|
* Add some basic args parsing so we can test stuff from the CLIMustafa Quraish2022-01-281-23/+66
|
* Lexer: Support inline commentsMustafa Quraish2022-01-281-1/+10
| | | | | Inline comments are now supported with `// Comment here`. No block comments (for now)
* Add initial code generation capabilitiesMustafa Quraish2022-01-282-0/+91
| | | | | | Currently we output the assembly to a hard-coded file called `output.nasm`. Until the compiler is more mature this should be OK enough
* Lexer+Parser: Add support for some unary operationsMustafa Quraish2022-01-286-8/+50
|
* Add a parser, dump the AST in mainMustafa Quraish2022-01-283-5/+156
| | | | | Very, very rudimentary, and can only parse integer literals, but it's a start
* Add AST/type definitionsMustafa Quraish2022-01-282-0/+142
| | | | | Just the basic building blocks for now, probably need to re-think how these are stored.
* Shorten Lexer method names to next/peekMustafa Quraish2022-01-282-7/+10
|
* Use custom macro for tokens enum+namesMustafa Quraish2022-01-282-81/+75
|
* Initial commit + start of lexerMustafa Quraish2022-01-247-0/+425