.
This commit is contained in:
parent
08769c7a6d
commit
7e685785be
1 changed files with 20 additions and 24 deletions
|
|
@ -85,22 +85,6 @@ Node :: struct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Node_Print :: struct {
|
|
||||||
#as using n: Node;
|
|
||||||
n.kind = .print;
|
|
||||||
|
|
||||||
expr: *Node;
|
|
||||||
}
|
|
||||||
|
|
||||||
Node_Procedure_Call :: struct {
|
|
||||||
#as using n: Node;
|
|
||||||
n.kind = .procedure_call;
|
|
||||||
|
|
||||||
call_expr: *Node;
|
|
||||||
named_arguments: kv.Kv(*Node, *Node);
|
|
||||||
all_arguments: [..]*Node;
|
|
||||||
}
|
|
||||||
|
|
||||||
Node_Var :: struct {
|
Node_Var :: struct {
|
||||||
#as using n: Node;
|
#as using n: Node;
|
||||||
n.kind = .variable;
|
n.kind = .variable;
|
||||||
|
|
@ -189,27 +173,23 @@ Node_Type :: struct {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
fn add(x int, y int) int do return x + y end
|
|
||||||
*/
|
|
||||||
|
|
||||||
Node_Procedure :: struct {
|
Node_Procedure :: struct {
|
||||||
#as using n: Node;
|
#as using n: Node;
|
||||||
n.kind = .procedure;
|
n.kind = .procedure;
|
||||||
|
|
||||||
header: *Node_Procedure_Header;
|
header: *Node_Procedure_Header;
|
||||||
|
|
||||||
args: [..]Node_Argument;
|
args: [..]Node_Parameter;
|
||||||
rets: [..]Node_Argument;
|
rets: [..]Node_Parameter;
|
||||||
body: *Node_Block;
|
body: *Node_Block;
|
||||||
flags: Flag;
|
flags: Flag;
|
||||||
|
|
||||||
Flag :: enum_flags {
|
Flag :: enum_flags {
|
||||||
inline_;
|
must_inline;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Node_Argument :: struct {
|
Node_Parameter :: struct {
|
||||||
symbol: *Node_Symbol;
|
symbol: *Node_Symbol;
|
||||||
type: *Node_Type;
|
type: *Node_Type;
|
||||||
value: *Node; // always an expression, can be null
|
value: *Node; // always an expression, can be null
|
||||||
|
|
@ -220,6 +200,22 @@ Node_Procedure_Header :: struct {
|
||||||
rets: [..]*Node_Type;
|
rets: [..]*Node_Type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Node_Print :: struct {
|
||||||
|
#as using n: Node;
|
||||||
|
n.kind = .print;
|
||||||
|
|
||||||
|
expr: *Node;
|
||||||
|
}
|
||||||
|
|
||||||
|
Node_Procedure_Call :: struct {
|
||||||
|
#as using n: Node;
|
||||||
|
n.kind = .procedure_call;
|
||||||
|
|
||||||
|
call_expr: *Node;
|
||||||
|
named_arguments: kv.Kv(*Node, *Node);
|
||||||
|
all_arguments: [..]*Node;
|
||||||
|
}
|
||||||
|
|
||||||
Node_Block :: struct {
|
Node_Block :: struct {
|
||||||
#as using n: Node;
|
#as using n: Node;
|
||||||
n.kind = .block;
|
n.kind = .block;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue