Class LetExpressionCompiler


  • public class LetExpressionCompiler
    extends ToIteratorCompiler
    Generate bytecode for evaluation of an LetExpression
    • 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