public override void ExitWhile_statement(NewDecafParser.While_statementContext context)
 {
     Template selfTemplate = getNodeTemplate(context);
     selfTemplate.Add("expression", getNodeTemplate(context.expression()).Render());
     selfTemplate.Add("code", getNodeTemplate(context.whileBlock()).Render());
 }
 public override void ExitParens_expression(NewDecafParser.Parens_expressionContext context)
 {
     Template selfTemplate = getNodeTemplate(context);
     selfTemplate.Add("code", getNodeTemplate(context.expression()).Render());
 }
 public override void ExitReturn_statement(NewDecafParser.Return_statementContext context)
 {
     Template selfTemplate = getNodeTemplate(context);
     if (!context.expression().IsEmpty())
         selfTemplate.Add("expression", getNodeTemplate(context.expression()).Render());
 }
 public override void ExitIf_else_statement(NewDecafParser.If_else_statementContext context)
 {
     Template selfTemplate = getNodeTemplate(context);
     selfTemplate.Add("expression", getNodeTemplate(context.expression()).Render());
     selfTemplate.Add("ifcode", getNodeTemplate(context.ifBlock()).Render());
     selfTemplate.Add("elseCode", getNodeTemplate(context.elseBlock()).Render());
 }
 public override void ExitAssign_statement(NewDecafParser.Assign_statementContext context)
 {
     Template selfTemplate = getNodeTemplate(context);
     selfTemplate.Add("expression", getNodeTemplate(context.expression()).Render());
     selfTemplate.Add("local", context.Id());
 }
 public override void EnterWhile_statement(NewDecafParser.While_statementContext context)
 {
     Template selfTemplate = stg.GetInstanceOf("While");
     string BTrue = LabelNameGenerator.getLabelName();
     string BFalse = LabelNameGenerator.getLabelName();
     string LBegin = LabelNameGenerator.getLabelName();
     selfTemplate.Add("LTrue", BTrue);
     selfTemplate.Add("LFalse", BFalse);
     selfTemplate.Add("LBegin", LBegin);
     setNodeTemplate(context, selfTemplate);
     setNodeTrueLabel(context.expression(), BTrue);
     setNodeFalseLabel(context.expression(), BFalse);
 }
 public override void EnterParens_expression(NewDecafParser.Parens_expressionContext context)
 {
     Template selfTemplate = stg.GetInstanceOf("Expression");
     setNodeTemplate(context, selfTemplate);
     setNodeTrueLabel(context.expression(), getNodeTrueLabel(context));
     setNodeFalseLabel(context.expression(), getNodeFalseLabel(context));
 }
 public override void EnterIf_else_statement(NewDecafParser.If_else_statementContext context)
 {
     Template selfTemplate = stg.GetInstanceOf("IfElse");
     string BTrue = LabelNameGenerator.getLabelName();
     string BFalse = LabelNameGenerator.getLabelName();
     string IfEnd = LabelNameGenerator.getLabelName();
     selfTemplate.Add("LTrue", BTrue);
     selfTemplate.Add("LFalse", BFalse);
     selfTemplate.Add("LEnd", IfEnd);
     setNodeTemplate(context, selfTemplate);
     setNodeTrueLabel(context.expression(), BTrue);
     setNodeFalseLabel(context.expression(), BFalse);
 }