Commit graph

104 commits

Author SHA1 Message Date
3ddc6c61c8 add basic x86 struct 2019-11-13 20:27:39 -03:00
c743c804be analysis: check current_scope being null for VarDecl 2019-10-12 13:56:39 -03:00
192baf0725 analysis: remove 'else', replace by dedicated Block
It isn't possible to make Blocks at root scope. the parser does not
allow such constructions, however, it is still a Node, and it should be
handled accordingly.
2019-10-05 10:40:36 -03:00
5348e2b5c4 remove Stmt as an AST node
it was only used for printing purposes, even though we can use the
existing printStmt() function.
2019-10-05 10:37:28 -03:00
9d1c9cab7f analysis: fix ret type 2019-10-05 10:33:37 -03:00
d69a64dbfb analysis: add bump-dump scope to loop analysis 2019-10-05 10:30:01 -03:00
881833b187 s/TypeSolver/Analyzer 2019-10-05 10:27:38 -03:00
5c58ac0238 analysis: add contextual checks for Assign expr 2019-10-05 10:26:47 -03:00
809dad1095 codegen: add Grouping expr support
- entry: return value of rayoko main
2019-10-05 10:08:27 -03:00
34481c8ea8 main: call gcc to make out executable 2019-09-29 13:16:49 -03:00
88e505b524 parser: rename main function to __rayoko_main 2019-09-29 12:46:31 -03:00
f00741deca add main() to example 2019-09-29 12:03:17 -03:00
f84eb16490 codegen: emit Store for Assign exprs 2019-09-29 11:41:16 -03:00
5d8efd657f analysis: add analysis of Assign expressions 2019-09-28 22:48:59 -03:00
2fea745df4 codegen: use current_scope's meta_map instead of resolveVarType 2019-09-28 22:18:22 -03:00
f2520e7d02 change bits and pieces everywhere about var meta 2019-09-28 22:16:33 -03:00
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
182d831408 comp_ctx: use more pointers to variable metadata 2019-09-28 20:52:45 -03:00
ea4dd5fde4 move to llvm 9
- comp_ctx: add VariableMetadata.llvm_alloca
 - comp_ctx: make VariableMetadataMap use ptrs to VariableMetadata
2019-09-28 20:40:07 -03:00
9869cca2ae remove mutability/publicability
i may implement those in a better way, which isn't V's
2019-09-28 18:09:58 -03:00
c7920246a5 codegen: add emitting of unary exprs 2019-09-28 17:58:17 -03:00
3d47c0cca8 parser: fix unary operators causing stack overflow 2019-09-28 17:52:30 -03:00
65a9e58a9a emit a store for the stack fn arguments 2019-09-28 13:40:11 -03:00
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
518d2daeb4 Merge branch 'master' of https://gitdab.com/luna/rayoko 2019-09-28 13:18:28 -03:00
a136a377ce change symbol table to use pointers to heap allocated symbols 2019-09-28 13:17:11 -03:00
93811c986d codegen: use Parameter.llvm_alloca 2019-09-28 12:46:23 -03:00
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
58713b20e3 add llvmvalueref to Parameter 2019-09-28 11:32:36 -03:00
178acc656f codegen: allow for mutable statements
- ast: add llvm_alloca llvmvalueref pointer in VarDeclStmt
2019-09-28 11:30:21 -03:00
81fd718403 codegen: emit vardecl initializer 2019-09-27 22:49:33 -03:00
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
77c88fad34 update readme with usage instructions 2019-09-27 21:23:11 -03:00
dfb7989123 add necessary hello.c code as we dont have linking step 2019-09-27 21:22:03 -03:00
849bbc0e94 add support for resolving parameters in function body 2019-09-27 20:39:16 -03:00
3f48be3420 codegen: prepare for variable emitting 2019-09-27 17:18:38 -03:00
7def9abc5a add "variable metadata"
this is inserted in the analysis pass into a map from expr ptrs to
metadata in the compilation context itself, this enables codegen to
fetch that metadata with the expr pointer

the other approach was embedding it into the variable expr itself (as
seen by VariableExpr), but that causes a compiler crash
2019-09-27 17:08:01 -03:00
362fc7e3ef analysis: add name type resolution
this only adds resolution for the types. for the actual metadata, such
as e.g parameters, that isn't available, so codegen isn't helped by
this.
2019-09-27 15:12:30 -03:00
4346636cfa analysis: add check for call expr's arguments 2019-09-27 14:31:59 -03:00
3f94082477 analyze: make VarDecl statements insert symbols to current scope 2019-09-27 14:07:42 -03:00
466243fc2b add checking of numeric types around boolean operators 2019-09-27 13:49:53 -03:00
68b9855309 remove _start from examples/hello.ry 2019-09-27 13:40:05 -03:00
86c7f7dd6a comp_ctx: remove Environment in favor of UnderlyingTypeMap 2019-09-27 13:39:04 -03:00
a081de93ce comp_ctx: remove isSymUnTypeEnumSubset 2019-09-27 12:08:25 -03:00
7e41d03eb9 add proper Integer32 and Integer64 literals 2019-09-27 12:07:20 -03:00
76d888bde8 analysis: create err ctx buffer on init()
- do better error message for resolveGlobalType
2019-09-27 10:47:34 -03:00
c3d3486163 rename types.zig to analysis.zig 2019-09-27 00:00:06 -03:00
2cb328c3f9 analysis: ensure Get.name exists in enum 2019-09-26 22:27:05 -03:00
6543884366 analysis: add check of composite types (structs and enums)
- analysis: add bool check for loop condition exprs
2019-09-26 22:22:11 -03:00
dfb954c39c analysis: insert "incomplete" function as soon as possible
by inserting it before we analyze statements, we allow ourselves to
analyze statements *with the data we already have*, for example, we can
now check the return statements' type, and see if it matches with the
functions' declared return type.

this is done via setting CompilationContext.cur_function on insertFn()

 - don't just ignore function analysis if its incomplete, do an error
2019-09-26 22:00:32 -03:00