Class ParserWalker


  • public class ParserWalker
    extends java.lang.Object
    Class for walking the Sleigh Parser tree. The nodes of the tree are the Sleigh Constructors arranged for a particular instruction. This tree is walked for various purposes:
    • SleighInstructionPrototype.resolve - initial parsing of instruction and building the tree
    • SleighInstructionPrototype.resolveHandles - filling in Varnode values for all the Constructor exports
    • PcodeEmit - for weaving together p-code for an instruction
    • Method Detail

      • baseState

        public void baseState()
        Initialize a walk of the tree
      • snippetState

        public void snippetState()
        Create state suitable for parsing a just a p-code semantics snippet
      • isState

        public boolean isState()
        Are we at the end of the tree walk
        Returns:
        true if there is more walk to go
      • pushOperand

        public void pushOperand​(int i)
        Move down to a particular child of the current node. Store what would be the next sibling to walk
        Parameters:
        i - is the index of the desired child
      • popOperand

        public void popOperand()
        Move to the parent of the current node
      • getOperand

        public int getOperand()
        Find the next child that needs to be traversed
        Returns:
        the index of the child
      • getFixedHandle

        public FixedHandle getFixedHandle​(int i)
      • getParentHandle

        public FixedHandle getParentHandle()
      • getOffset

        public int getOffset​(int i)
        Get the offset into the instruction for the current node (i=-1) or one of the current node's children
        Parameters:
        i - selects the desired child of the current node
        Returns:
        the offset (in bytes) for the selected node
      • setOffset

        public void setOffset​(int off)
      • getCurrentLength

        public int getCurrentLength()
      • setCurrentLength

        public void setCurrentLength​(int len)
      • calcCurrentLength

        public void calcCurrentLength​(int minLength,
                                      int numopers)
        Calculate the length of the current constructor state assuming all its operands are constructed
      • getConstructor

        public Constructor getConstructor()
        Returns:
        the Constructor for the current node in the walk
      • setConstructor

        public void setConstructor​(Constructor ct)
      • getAddr

        public Address getAddr()
      • getNaddr

        public Address getNaddr()
      • getFlowRefAddr

        public Address getFlowRefAddr()
      • getFlowDestAddr

        public Address getFlowDestAddr()
      • getContextBytes

        public int getContextBytes​(int byteoff,
                                   int numbytes)
      • getContextBits

        public int getContextBits​(int startbit,
                                  int size)
      • getCurrentSubtableName

        public java.lang.String getCurrentSubtableName()