Package com.saxonica.ee.bytecode

## Class LetExpressionCompiler

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

-     public class LetExpressionCompiler
      extends ToIteratorCompiler

  Generate bytecode for evaluation of an LetExpression

- - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static void` | `compileCommonExpr​(CompilerService compiler, Expression exp, EvaluationMode evaluationMode, int refCount)` | Helper method to generate bytecode the same for both compileToIterator and compileToItem Precondition: none.
    `void` | `compileToItem​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the LetExpression as an Item Precondition: none.
    `void` | `compileToIterator​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the LetExpression as an Iterator Precondition: none.
    `void` | `compileToPush​(CompilerService compiler, Expression expression)` | Generate bytecode to evaluate the LetExpression as an Item Precondition: none.

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

      `compileToBoolean`

    - ### 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

    - #### LetExpressionCompiler

          public LetExpressionCompiler()

  - ### Method Detail

    - #### compileToItem

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

      Generate bytecode to evaluate the LetExpression as an Item Precondition: none. Postcondition: the stack contains an Item representing the result of the expression
      Overrides:
        `compileToItem` in class `ToIteratorCompiler`
      Parameters:
        `compiler` - the compiler service
        `expression` - the expression to be compiled
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode

    - #### compileToPush

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

      Generate bytecode to evaluate the LetExpression as an Item Precondition: none. Postcondition: the stack contains an Item representing the result of the expression
      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 LetExpression as an Iterator Precondition: none. Postcondition: the stack contains an Item 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

    - #### compileCommonExpr

          public static void compileCommonExpr​(CompilerService compiler,
                                               Expression exp,
                                               EvaluationMode evaluationMode,
                                               int refCount)
                                        throws CannotCompileException

      Helper method to generate bytecode the same for both compileToIterator and compileToItem Precondition: none. Postcondition: the stack contains the variable(s) already evaluated in the form of a Sequence object
      Parameters:
        `compiler` - the compiler service
        `exp` - the expression to be compiled
        `evaluationMode` - the evaluation mode
        `refCount` -
      Throws:
        `CannotCompileException` - if the expression cannot be compiled to bytecode