support if conditionals

This commit is contained in:
Andrew Kelley
2015-12-01 21:19:38 -07:00
parent 1ed926c321
commit 08a2311efd
10 changed files with 400 additions and 64 deletions

View File

@@ -39,6 +39,7 @@ enum NodeType {
NodeTypeFnCallExpr,
NodeTypeUse,
NodeTypeVoid,
NodeTypeIfExpr,
};
struct AstNodeRoot {
@@ -167,6 +168,12 @@ struct AstNodeUse {
ZigList<AstNode *> *directives;
};
struct AstNodeIfExpr {
AstNode *condition;
AstNode *then_block;
AstNode *else_node; // null, block node, or other if expr node
};
struct AstNode {
enum NodeType type;
int line;
@@ -190,6 +197,7 @@ struct AstNode {
AstNodePrefixOpExpr prefix_op_expr;
AstNodeFnCallExpr fn_call_expr;
AstNodeUse use;
AstNodeIfExpr if_expr;
Buf number;
Buf string;
Buf symbol;