Example #1
0
 /// <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);
 }
Example #2
0
 public void Visit(ElseStatementNode node)
 {
     currentElseCount++;
     builder.AppendLine($"\tIf_{currentIfId}_{currentElseCount}_condition:");
     VisitChildren(node);
     builder.AppendLine($"\t\tbr If_{currentIfId}_End");
     builder.AppendLine();
 }
Example #3
0
        public Node ElseStatement()
        {
            var else_node = new ElseStatementNode()
            {
                AnchorToken = Expect(TokenCategory.ELSE)
            };

            else_node.Add(ZeroOrMore(firstOfStatement, Statement));
            return(else_node);
        }
Example #4
0
 /// <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("");
        }
Example #6
0
 public Type Visit(ElseStatementNode node)
 {
     VisitChildren(node);
     return(Type.VOID);
 }
Example #7
0
 /// <summary>
 /// This visits an Else statement
 /// </summary>
 /// <param name="elseStatement">The visited node</param>
 /// <returns></returns>
 public abstract object Visit(ElseStatementNode elseStatement);