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
-
-
-
-
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 classToIteratorCompiler
- Parameters:
compiler
- the compiler serviceexpression
- 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 classExpressionCompiler
- Parameters:
compiler
- the compiler serviceexpression
- 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 CompilerServiceexpression
- the "for" expression itselfaction
- the body of the "for" loop, which represents the expression to be compiledslotNumber
- the slot number- Throws:
CannotCompileException
- if the expression cannot be compiled to bytecode
-
-