Class FixedAttributeCompiler


  • public class FixedAttributeCompiler
    extends ToPushCompiler
    Generate bytecode for a fixed attribute constructor
    • Constructor Detail

      • FixedAttributeCompiler

        public FixedAttributeCompiler()
    • Method Detail

      • compileToPush

        public void compileToPush​(CompilerService compiler,
                                  Expression expression)
                           throws CannotCompileException
        Description copied from class: ExpressionCompiler
        Generate bytecode to evaluate the expression in push mode Precondition: none. Postcondition: at execution time, the stack is unchanged, and the value of the expression has been written to the current receiver
        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
      • generateAttributeValidationPushCode

        protected static void generateAttributeValidationPushCode​(CompilerService compiler,
                                                                  ValidatingInstruction instr,
                                                                  NodeName nodeName,
                                                                  int nodeNameVar)
        Generate code to validate the contents of the attribute against schema definitions. Both on entry and exit, the bytecode stack holds: SequenceReceiver(out), NodeName(nodeName) int(annotation), UnicodeString(value) As well as validating the value, the method may modify the type annotation that is held on the stack.
        Parameters:
        compiler - the compiler service
        instr - the instruction (fixed or computed attribute)
        nodeName - the (fixed) nodeName of the attribute, or null if the name is computed
        nodeNameVar - the slot number of the variable holding the computed node name, or -1 if the name is fixed
      • compileToItem

        public void compileToItem​(CompilerService compiler,
                                  Expression expression)
                           throws CannotCompileException
        Description copied from class: ExpressionCompiler
        Generate bytecode to evaluate the expression as an Item Precondition: none. Postcondition: at execution time, the stack contains either an item (the result of the expression), or null (representing an empty sequence).
        Overrides:
        compileToItem in class ToPushCompiler
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode