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
093a8003b6
ast_printer: fix children printing
...
- add scope ids for debug purposes
- add children to parent on Scope.createChild
- types: add validation of if's condition expr type
- types: add scopes to ifs
2019-09-26 21:36:26 -03:00
fc9f5d9ce0
add get expr analysis
...
- rename GetExpr.struc to GetExpr.target
2019-09-26 18:03:39 -03:00
64e39a6f1e
ast_printer: print scopes inside functions
...
- comp_ctx: add children attr for debug info
2019-09-26 16:58:57 -03:00
97c2437d97
add basic business logic for scopes
2019-09-26 16:04:11 -03:00
e91c2dfdaf
fix errs
2019-09-26 14:32:23 -03:00
ae27995eb6
add rudimentary type analysis for return, if, loop
2019-09-26 14:23:15 -03:00
8065d0d905
s/nodePass/stmtPass
2019-09-26 00:12:47 -03:00
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
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
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
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
5036be02e3
add rudimentary return type analysis for call exprs
2019-09-25 17:17:47 -03:00
04c624e210
codegen: add emitting of const declarations
2019-09-25 17:05:37 -03:00
cb8908dc80
add type analysis for consts
...
- add the basics of recursive type resolving for expressions
- set err context for enum
2019-09-25 14:34:32 -03:00
1040eef79f
codegen: add emitting for enum get expressions
2019-09-25 12:28:22 -03:00
5188dac3c0
add type analysis of enums
2019-09-25 11:59:36 -03:00
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
6b3d54aed7
embed FnDecl inside FunctionSymbol for correct param order
2019-09-25 10:53:10 -03:00
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
8afab8e4ed
comp_ctx: add FunctionSymbol.findSymbol
...
- add Variable symbol
2019-09-24 23:09:00 -03:00
bfe9f4fe0d
s/testfile/output.ll
2019-09-24 18:59:00 -03:00
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
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
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
1ac63cdbef
resolve llvm types for function parameters
2019-09-24 13:32:00 -03:00
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
f08d613198
switch BinaryExpr.op to BinaryOperator instead of token
...
less strings, more fun!
2019-09-23 23:18:31 -03:00
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
4c1bdb5f91
codegen: add incomplete generation of expressions
2019-09-23 18:34:12 -03:00
05c480c364
initialize all llvm features befbore emitting
2019-09-22 18:40:15 -03:00
469625d32a
add CompileError error type
2019-09-22 18:26:00 -03:00
4a2cc4b524
gitignore: add object files
2019-09-21 23:56:35 -03:00
a1bf15fe4d
add support for target machine
2019-09-21 23:56:22 -03:00
86e899e771
cgen: output .bc file
2019-09-21 12:37:41 -03:00
243e3cc694
fix llvm linking
2019-09-21 12:31:47 -03:00
6c3d20bbbb
add the basics of llvm codegen
2019-09-20 23:40:21 -03:00
250631ff41
move Parser.mkFnDecl => ast.Node.mkFnDecl
2019-09-20 13:54:52 -03:00