Class AssemblyParseBranch

    • Constructor Detail

      • AssemblyParseBranch

        public AssemblyParseBranch​(AssemblyGrammar grammar,
                                   AssemblyProduction prod)
        Construct a branch from the given grammar and production
        Parameters:
        grammar - the grammar containing the production
        prod - the production applied to create this branch
    • Method Detail

      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • addChild

        public void addChild​(AssemblyParseTreeNode child)
        Prepend a child to this branch
        Parameters:
        child - the child Because LR parsers produce rightmost derivations, they necessarily populate the branches right to left. During reduction, each child is popped from the stack, traversing them in reverse order. This method prepends children so that when reduction is complete, the children are aligned to the corresponding symbols from the RHS of the production.
      • expects

        protected AssemblySymbol expects()
        See what symbol is expected next The child added next must be associated with the token expected next.
        Returns:
        the symbol
      • isComplete

        protected boolean isComplete()
        Check if the branch is full
        Returns:
        true if every symbol on the RHS has a corresonding child
      • getSym

        public AssemblyNonTerminal getSym()
        Description copied from class: AssemblyParseTreeNode
        Get the symbol for which this node is substituted For a branch, this is the LHS of the corresponding production. For a token, this is the terminal whose tokenizer matched it.
        Specified by:
        getSym in class AssemblyParseTreeNode
        Returns:
        the symbol
      • print

        protected void print​(java.io.PrintStream out,
                             java.lang.String indent)
        Description copied from class: AssemblyParseTreeNode
        For debugging: Display the tree with the given indent
        Specified by:
        print in class AssemblyParseTreeNode
        Parameters:
        out - the stream
        indent - the indent
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getProduction

        public AssemblyProduction getProduction()
        Get the production applied to create this branch
        Returns:
      • getSubstitutions

        public java.util.List<AssemblyParseTreeNode> getSubstitutions()
        Get the list of children, indexed by corresponding symbol from the RHS
        Returns:
      • getSubstitution

        public AssemblyParseTreeNode getSubstitution​(int i)
        Get the ith child, corresponding to the ith symbol from the RHS
        Parameters:
        i - the position
        Returns:
        the child
      • isConstructor

        public boolean isConstructor()
        Description copied from class: AssemblyParseTreeNode
        Check if this node yields a subconstructor resolution
        Overrides:
        isConstructor in class AssemblyParseTreeNode
        Returns:
        true if this node yields a subconstructor resolution