aboutsummaryrefslogtreecommitdiff
path: root/cup/parser.c
Commit message (Collapse)AuthorAgeFilesLines
* Rename `cup` directory to `src`Mustafa Quraish2022-01-301-562/+0
|
* Functions, yay!Mustafa Quraish2022-01-301-12/+122
| | | | | | | | | | | | | | | 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.
* Add for and while loop support (w/o declarations in `for`)Mustafa Quraish2022-01-291-0/+29
| | | | | | 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-291-22/+134
|
* Allow uninitialized variable declarationsMustafa Quraish2022-01-291-6/+30
|
* Now supporting local variables! :^)Mustafa Quraish2022-01-291-13/+33
|
* Add parsing + storing offsets for locals / move around headersMustafa Quraish2022-01-291-3/+38
|
* Add relational and logical operators + refactor binop parserMustafa Quraish2022-01-291-35/+31
| | | | | | | | | 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-281-8/+82
|
* Lexer+Parser: Add support for some unary operationsMustafa Quraish2022-01-281-4/+25
|
* Add a parser, dump the AST in mainMustafa Quraish2022-01-281-0/+141
Very, very rudimentary, and can only parse integer literals, but it's a start