Commit Graph

48 Commits

Author SHA1 Message Date
Luna 9a9008247f move x86 to codegen.x86 2019-11-25 21:44:04 -03:00
Luna e42a97e192 use 'as' builtin
- move src/codegen.zig to src/codegen/llvm.zig
2019-11-25 21:42:24 -03:00
Luna c743c804be analysis: check current_scope being null for VarDecl 2019-10-12 13:56:39 -03:00
Luna 5c58ac0238 analysis: add contextual checks for Assign expr 2019-10-05 10:26:47 -03:00
Luna 809dad1095 codegen: add Grouping expr support
- entry: return value of rayoko main
2019-10-05 10:08:27 -03:00
Luna f84eb16490 codegen: emit Store for Assign exprs 2019-09-29 11:41:16 -03:00
Luna 5d8efd657f analysis: add analysis of Assign expressions 2019-09-28 22:48:59 -03:00
Luna 2fea745df4 codegen: use current_scope's meta_map instead of resolveVarType 2019-09-28 22:18:22 -03:00
Luna f2520e7d02 change bits and pieces everywhere about var meta 2019-09-28 22:16:33 -03:00
Luna a95d0e7fd8 comp_ctx: make resolveVarType's return type be nullable
- add a parameter to prevent unwanted side-effects of resolveVarType
 - add basics of resolving scope variables
2019-09-28 21:30:52 -03:00
Luna 182d831408 comp_ctx: use more pointers to variable metadata 2019-09-28 20:52:45 -03:00
Luna c7920246a5 codegen: add emitting of unary exprs 2019-09-28 17:58:17 -03:00
Luna 65a9e58a9a emit a store for the stack fn arguments 2019-09-28 13:40:11 -03:00
Luna 21dcb3e65d codegen: emit load instruction for (now-stack) params
- comp_ctx: make ParameterMap use ptrs to Parameter
2019-09-28 13:30:05 -03:00
Luna a136a377ce change symbol table to use pointers to heap allocated symbols 2019-09-28 13:17:11 -03:00
Luna 93811c986d codegen: use Parameter.llvm_alloca 2019-09-28 12:46:23 -03:00
Luna 61c8493484 add basics of stack-stored arguments
this requires some changes regarding the const-ability of the passed
nodes into codegen.
2019-09-28 11:40:56 -03:00
Luna 178acc656f codegen: allow for mutable statements
- ast: add llvm_alloca llvmvalueref pointer in VarDeclStmt
2019-09-28 11:30:21 -03:00
Luna d235ce0d13 add codegen for allocating vardecls onto stack (not init yet)
codegen pass needs type information about the variable. thankfully,
analyze pass already did the hard work for it, and scope info has types
of all its declared names. we use that info to generate the alloca

to have information about which current scope we are, we add a "child
index" to scopes so we can repoint current context at them instead of
bumpScope(), which always creates new, empty ones.

initializer exprs are next
2019-09-27 22:36:35 -03:00
Luna 849bbc0e94 add support for resolving parameters in function body 2019-09-27 20:39:16 -03:00
Luna 3f48be3420 codegen: prepare for variable emitting 2019-09-27 17:18:38 -03:00
Luna 7e41d03eb9 add proper Integer32 and Integer64 literals 2019-09-27 12:07:20 -03:00
Luna c3d3486163 rename types.zig to analysis.zig 2019-09-27 00:00:06 -03:00
Luna fc9f5d9ce0 add get expr analysis
- rename GetExpr.struc to GetExpr.target
2019-09-26 18:03:39 -03:00
Luna bf035abadf add lots of TODOs for variables and type analysis of statements
- comp_ctx: replace Function.symbols to Function.env
2019-09-26 00:11:48 -03:00
Luna 45275d73db change variable declarations to statements
doing them as expressions was a hack since no 'var' keyword,
also, yeet the := operator from the parser.
2019-09-25 22:22:13 -03:00
Luna e69451cdd9 example: function calls can't happen on consts yet
- add suggestion to make it work as TODO
2019-09-25 18:10:17 -03:00
Luna 0b72462954 codegen: add emitting of call exprs
- codegen: add llvm value ref table to more easily fetch function
    values
 - comp_ctx: add fetchGlobalSymbol
 - types: use ctx.fetchGlobalSymbol
2019-09-25 18:05:56 -03:00
Luna 04c624e210 codegen: add emitting of const declarations 2019-09-25 17:05:37 -03:00
Luna 1040eef79f codegen: add emitting for enum get expressions 2019-09-25 12:28:22 -03:00
Luna 5188dac3c0 add type analysis of enums 2019-09-25 11:59:36 -03:00
Luna 0b0a8896bb add basic resolution of enums to llvm types
- pass ctx to codegen
 - add better type solver error for unhandled nodes
2019-09-25 11:29:47 -03:00
Luna e2cca03d52 add type resolving for structs and fn params
- add a printer for the symbol table
 - add error contexts to type pass
2019-09-25 00:26:30 -03:00
Luna bfe9f4fe0d s/testfile/output.ll 2019-09-24 18:59:00 -03:00
Luna 9e80ad4c23 fix if statement emitting
- don't emit br instructions (or any other) if branch emits ret
 - remove phi node (ifs are statements, not exprs)

 - emit to testfile (even if ir is broken)
2019-09-24 18:49:35 -03:00
Luna c1d6939c43 add the rest of (currently nonfunctional) emitting of if stmts
- add compilation context and basics of type solver
2019-09-24 17:47:17 -03:00
Luna 1bb1fb813d add basics of if statement emitting
- add util mkLLVMBool
 - add left/right paren to if statements
 - lowkey fix for statements' semicolon
2019-09-24 14:12:37 -03:00
Luna 1ac63cdbef resolve llvm types for function parameters 2019-09-24 13:32:00 -03:00
Luna e25621350a fix boolean operators
- remove Logical expressions
 - add basic token return type to LLVMTypeRef converter
 - add codegen for Bool literals
 - fix "and" and "or" being identified as identifiers
2019-09-24 13:23:23 -03:00
Luna f08d613198 switch BinaryExpr.op to BinaryOperator instead of token
less strings, more fun!
2019-09-23 23:18:31 -03:00
Luna 013aafa8a4 add emitting of integer and float literals
- remove panics
 - add emitting for return statements
 - remove default emitting of return a+b;
2019-09-23 22:07:19 -03:00
Luna 4c1bdb5f91 codegen: add incomplete generation of expressions 2019-09-23 18:34:12 -03:00
Luna 05c480c364 initialize all llvm features befbore emitting 2019-09-22 18:40:15 -03:00
Luna 469625d32a add CompileError error type 2019-09-22 18:26:00 -03:00
Luna a1bf15fe4d add support for target machine 2019-09-21 23:56:22 -03:00
Luna 86e899e771 cgen: output .bc file 2019-09-21 12:37:41 -03:00
Luna 243e3cc694 fix llvm linking 2019-09-21 12:31:47 -03:00
Luna 6c3d20bbbb add the basics of llvm codegen 2019-09-20 23:40:21 -03:00