+tAST_Node *AST_NewIf(tAST_Node *Condition, tAST_Node *True, tAST_Node *False)
+{
+ tAST_Node *ret = malloc( sizeof(tAST_Node) );
+ ret->NextSibling = NULL;
+ ret->Type = NODETYPE_IF;
+ ret->If.Condition = Condition;
+ ret->If.True = True;
+ ret->If.False = False;
+ return ret;
+}
+
+tAST_Node *AST_NewLoop(tAST_Node *Init, int bPostCheck, tAST_Node *Condition, tAST_Node *Increment, tAST_Node *Code)
+{
+ tAST_Node *ret = malloc( sizeof(tAST_Node) );
+ ret->NextSibling = NULL;
+ ret->Type = NODETYPE_LOOP;
+ ret->For.Init = Init;
+ ret->For.bCheckAfter = !!bPostCheck;
+ ret->For.Condition = Condition;
+ ret->For.Increment = Increment;
+ ret->For.Code = Code;
+ return ret;
+}
+