Class ForLoop

All Implemented Interfaces:
Comparable<AstNode>, Iterable<Node>

public class ForLoop extends Loop
C-style for-loop statement. Node type is Token.FOR.
for ( ExpressionNoInopt; Expressionopt ; Expressionopt ) Statement
 for ( var VariableDeclarationListNoIn; Expressionopt ; Expressionopt ) Statement
 
  • Constructor Details

    • ForLoop

      public ForLoop()
    • ForLoop

      public ForLoop(int pos)
    • ForLoop

      public ForLoop(int pos, int len)
  • Method Details

    • getInitializer

      public AstNode getInitializer()
      Returns loop initializer variable declaration list. This is either a VariableDeclaration, an Assignment, or an InfixExpression of type COMMA that chains multiple variable assignments.
    • setInitializer

      public void setInitializer(AstNode initializer)
      Sets loop initializer expression, and sets its parent to this node. Virtually any expression can be in the initializer, so no error-checking is done other than a null-check.
      Parameters:
      initializer - loop initializer. Pass an EmptyExpression if the initializer is not specified.
      Throws:
      IllegalArgumentException - if condition is null
    • getCondition

      public AstNode getCondition()
      Returns loop condition
    • setCondition

      public void setCondition(AstNode condition)
      Sets loop condition, and sets its parent to this node.
      Parameters:
      condition - loop condition. Pass an EmptyExpression if the condition is missing.
      Throws:
      IllegalArgumentException - } if condition is null
    • getIncrement

      public AstNode getIncrement()
      Returns loop increment expression
    • setIncrement

      public void setIncrement(AstNode increment)
      Sets loop increment expression, and sets its parent to this node.
      Parameters:
      increment - loop increment expression. Pass an EmptyExpression if increment is null.
      Throws:
      IllegalArgumentException - } if increment is null
    • toSource

      public String toSource(int depth)
      Description copied from class: AstNode
      Emits source code for this node. Callee is responsible for calling this function recursively on children, incrementing indent as appropriate.

      Note: if the parser was in error-recovery mode, some AST nodes may have null children that are expected to be non-null when no errors are present. In this situation, the behavior of the toSource method is undefined: toSource implementations may assume that the AST node is error-free, since it is intended to be invoked only at runtime after a successful parse.

      Overrides:
      toSource in class Scope
      Parameters:
      depth - the current recursion depth, typically beginning at 0 when called on the root node.
    • visit

      public void visit(NodeVisitor v)
      Visits this node, the initializer expression, the loop condition expression, the increment expression, and then the loop body.
      Overrides:
      visit in class Scope
      Parameters:
      v - the object to call with this node and its children