74e6beda67
more fixes for latest zig
2020-04-01 21:58:30 -03:00
049a388660
more fixes for latest zig
2020-04-01 21:48:08 -03:00
a623d9b2ca
minor fixes on main file
2020-04-01 16:10:47 -03:00
5ae47fb962
zig fmt pass
2020-04-01 16:09:52 -03:00
7976b64cf6
tuple-inator pass
2020-04-01 16:09:39 -03:00
cf22d47e13
ast_printer: tuple-ify
2020-04-01 16:03:46 -03:00
ebf4af6537
fixes for latest zig
2019-12-07 20:28:55 -03:00
9a9008247f
move x86 to codegen.x86
2019-11-25 21:44:04 -03:00
e42a97e192
use 'as' builtin
...
- move src/codegen.zig to src/codegen/llvm.zig
2019-11-25 21:42:24 -03:00
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