/// <summary> /// This method type checks the ElseStatementNode node in the AST. /// </summary> /// <param name="elseStatement">The node to check.</param> /// <returns>Returns null</returns> public override object Visit(ElseStatementNode elseStatement) { CurrentScope = GlobalScope.FindChild($"ELSESTMNT_{elseStatement.Line}"); elseStatement.Statements.ForEach(stmnt => stmnt.Accept(this)); CurrentScope = CurrentScope?.Parent ?? GlobalScope; return(null); }
public void Visit(ElseStatementNode node) { currentElseCount++; builder.AppendLine($"\tIf_{currentIfId}_{currentElseCount}_condition:"); VisitChildren(node); builder.AppendLine($"\t\tbr If_{currentIfId}_End"); builder.AppendLine(); }
public Node ElseStatement() { var else_node = new ElseStatementNode() { AnchorToken = Expect(TokenCategory.ELSE) }; else_node.Add(ZeroOrMore(firstOfStatement, Statement)); return(else_node); }
/// <summary> /// This method prints the elseStatement and make an indentation /// It then accepts all the statement and then outdent /// </summary> /// <param name="elseStatement">The node to print.</param> /// <returns>Returns null</returns> public override object Visit(ElseStatementNode elseStatement) { Print("ElseStatementNode"); Indent++; if (elseStatement.Statements.Any()) { elseStatement.Statements.ForEach(node => node.Accept(this)); } Indent--; return(null); }
/// <summary> /// This method visits an else statement node /// If accepts any statements /// </summary> /// <param name="elseStatement">The name of the node</param> /// <returns>It returns an else string or nothing, if there is not a else string</returns> public override object Visit(ElseStatementNode elseStatement) { if (elseStatement.Statements.Any()) { string elseString = "else{"; elseStatement.Statements.ForEach(node => node.Parent = elseStatement); elseStatement.Statements.ForEach(node => elseString += node.Accept(this)); elseString += "}"; return(elseString); } return(""); }
public Type Visit(ElseStatementNode node) { VisitChildren(node); return(Type.VOID); }
/// <summary> /// This visits an Else statement /// </summary> /// <param name="elseStatement">The visited node</param> /// <returns></returns> public abstract object Visit(ElseStatementNode elseStatement);