Package com.saxonica.ee.bytecode

## Class ForExpressionCompiler

- java.lang.Object
- - com.saxonica.ee.bytecode.ExpressionCompiler
  - - com.saxonica.ee.bytecode.ToIteratorCompiler
    - - com.saxonica.ee.bytecode.ForExpressionCompiler

-     public class ForExpressionCompiler
      extends ToIteratorCompiler

  Generate bytecode for a call to the ForExpression()

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ForExpressionCompiler()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `compileToIterator​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the ForExpression as an iterator Precondition: none.
    `void` | `compileToPush​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the ForExpression in push mode Precondition: none.
    `static java.lang.Class` | `generateSequenceMappingAction​(CompilerService compiler, ForExpression expression, Expression action, int slotNumber)` | Generate a mapping function with a map() method that returns an iterator over the results of one iteration of the loop

    - ### Methods inherited from class com.saxonica.ee.bytecode.ToIteratorCompiler

      `compileToBoolean, compileToItem`

    - ### Methods inherited from class com.saxonica.ee.bytecode.ExpressionCompiler

      `allocateStatic, compileItemFromInt, compileToPrimitive, generateMethod, handleEmptyStringResult, printStackTop, verify, visitAnnotation, visitLineNumber`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ForExpressionCompiler

          public ForExpressionCompiler()

  - ### Method Detail

    - #### compileToPush

          public void compileToPush​(CompilerService compiler,
                                    Expression expression)
                             throws CannotCompileException

      Generate bytecode to evaluate the ForExpression in push mode Precondition: none. Postcondition: the stack is empty
      Overrides:
        `compileToPush` in class `ToIteratorCompiler`
      Parameters:
        `compiler` - the compiler service
        `expression` - the expression to be compiled
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode

    - #### compileToIterator

          public void compileToIterator​(CompilerService compiler,
                                        Expression expression)
                                 throws CannotCompileException

      Generate bytecode to evaluate the ForExpression as an iterator Precondition: none. Postcondition: the stack contains an iterator representing the result of the expression
      Specified by:
        `compileToIterator` in class `ExpressionCompiler`
      Parameters:
        `compiler` - the compiler service
        `expression` - the expression to be compiled
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode

    - #### generateSequenceMappingAction

          public static java.lang.Class generateSequenceMappingAction​(CompilerService compiler,
                                                                      ForExpression expression,
                                                                      Expression action,
                                                                      int slotNumber)
                                                               throws CannotCompileException

      Generate a mapping function with a map() method that returns an iterator over the results of one iteration of the loop
      Parameters:
        `compiler` - the CompilerService
        `expression` - the "for" expression itself
        `action` - the body of the "for" loop, which represents the expression to be compiled
        `slotNumber` - the slot number
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode