Class ElementCreatorCompiler

  • Direct Known Subclasses:
    ComputedElementCompiler, FixedElementCompiler

    public abstract class ElementCreatorCompiler
    extends ToPushCompiler
    Generate bytecode. An instruction that creates an element node. There are two subtypes, FixedElement for use where the name is known statically, and ComputedElement where it is computed dynamically.
    • Constructor Detail

      • ElementCreatorCompiler

        public ElementCreatorCompiler()
    • 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
      • outputNamespaceNodes

        protected void outputNamespaceNodes​(CompilerService compiler,
                                            Expression expression)
        Callback for subclasses to implement: generate code to output namespace nodes
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
      • pushNodeName

        protected abstract void pushNodeName​(CompilerService compiler,
                                             Expression expression)
                                      throws CannotCompileException
        Callback from the superclass ElementCreatorCompiler to get the name of the element. Leaves the name code for the element name on the stack for the element name
        Parameters:
        compiler - the compiler service
        expression - the expression to be compiled
        Throws:
        CannotCompileException - if the expression cannot be compiled to bytecode
      • addTypeStripper

        protected static void addTypeStripper​(CompilerService compiler)
        Add a filter to the output pipeline that removes type annotations. This method adds a new entry to the receiver stack, whether it creates a new filter or not.
        Parameters:
        compiler - the compiler service
      • identifyExpression

        public abstract void identifyExpression​(CompilerService compiler,
                                                Expression expression,
                                                java.lang.String evalMode)