Logo Search packages:      
Sourcecode: maude version File versions  Download package

Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends

AU_LhsAutomaton Class Reference

Inheritance diagram for AU_LhsAutomaton:
Inheritance graph
[legend]
Collaboration diagram for AU_LhsAutomaton:
Collaboration graph
[legend]

List of all members.

Classes

struct  RigidBlock
struct  Subterm
struct  TopVariable

Public Types

enum  MatchStrategy {
  GROUND_OUT, LONE_VARIABLE, FAST_LONE_VARIABLE, GREEDY,
  FULL
}

Public Member Functions

void addFlexAbstractionVariable (int index, Sort *sort, int upperBound, bool takeIdentity, bool awkward, LhsAutomaton *abstracted)
void addFlexGroundAlien (Term *alien, int shiftFactor)
void addFlexNonGroundAlien (LhsAutomaton *automaton, int shiftFactor)
void addFlexVariable (const VariableTerm *variable, int shiftFactor, bool idPossible)
void addRigidGroundAlien (Term *alien, bool leftEnd)
void addRigidNonGroundAlien (LhsAutomaton *automaton, bool leftEnd)
void addRigidVariable (const VariableTerm *variable, bool leftEnd, bool idPossible)
 AU_LhsAutomaton (AU_Symbol *symbol, bool matchAtTop, bool collapsePossible, LhsAutomaton *uniqueCollapseAutomaton, int nrVariables)
void complete (MatchStrategy strategy)
bool match (DagNode *subject, Substitution &solution, Subproblem *&returnedSubproblem, ExtensionInfo *extensionInfo)

Private Types

enum  Special { STALLED = -1, NOT_FIXED = -1 }
enum  SubtermType { VARIABLE, GROUND_ALIEN, NON_GROUND_ALIEN }

Private Member Functions

void addRemainingPaths (AU_DagNode *subject, Substitution &solution, AU_Subproblem *subproblem)
void addVariableBlocks (Substitution &solution, AU_Subproblem *subproblem, SubproblemAccumulator &subproblems)
void bindUnboundVariablesToIdentity (Substitution &solution, int exception)
AU_SubproblembuildLeftmostPath (AU_DagNode *subject, Substitution &solution, AU_ExtensionInfo *extensionInfo)
bool checkForRigidEnds (AU_DagNode *subject, Substitution &solution, SubproblemAccumulator &subproblems)
int checkLeftEnd (AU_DagNode *subject, Substitution &solution, SubproblemAccumulator &subproblems, int &mustLeave, bool &rightStalled)
int checkRightEnd (AU_DagNode *subject, Substitution &solution, SubproblemAccumulator &subproblems, int &mustLeave, bool &leftStalled)
bool collapseMatch (DagNode *subject, Substitution &solution, Subproblem *&returnedSubproblem, ExtensionInfo *extensionInfo)
int dequeMatch (AU_DequeDagNode *subject, Substitution &solution, Subproblem *&returnedSubproblem)
void determineRigidBlocks (Substitution &solution)
bool forcedLoneVariableCase (AU_DagNode *subject, Substitution &solution, Subproblem *&returnedSubproblem)
bool fullMatch (AU_DagNode *subject, Substitution &solution, SubproblemAccumulator &subproblems, AU_ExtensionInfo *extensionInfo)
bool fullMatchFixedLengthBlock (ArgVec< DagNode * > &args, int blockStart, int attemptedShift, SubproblemAccumulator &subproblems, int &shiftFactor)
bool fullMatchRigidBlock (AU_DagNode *subject, Substitution &solution, RigidBlock &block, int minShift, int maxShift, int &matchShift, Subproblem *&subproblem)
bool fullMatchRigidBlock2 (AU_DagNode *subject, RigidBlock &block, int nextSubject, Subproblem *&subproblem, int &shiftFactor)
void greedyBindVariables (AU_DagNode *subject, Substitution &solution)
int greedyMatch (AU_DagNode *subject, Substitution &solution, AU_ExtensionInfo *extensionInfo)
int greedyMatchBlocks (AU_DagNode *subject, AU_ExtensionInfo *extensionInfo)
int greedyMatchFixedLengthBlock (ArgVec< DagNode * > &args, int blockStart, int attemptedShift, int &shiftFactor)
int greedyMatchRigidBlock (AU_DagNode *subject, RigidBlock &block, int minShift, int maxShift, int &matchShift)
int greedyMatchRigidBlock2 (AU_DagNode *subject, RigidBlock &block, int nextSubject, int &shiftFactor)
bool greedyMatchVariableBlock (ArgVec< DagNode * > &args, int blockStart, int blockLength, int firstSubject, int nrSubjects, int spare, bool leftExtend, bool rightExtend, AU_ExtensionInfo *extensionInfo)
bool matchRigidPart (AU_DagNode *subject, Substitution &solution, SubproblemAccumulator &subproblems)
bool multiwayCollapseMatch (DagNode *subject, Substitution &solution, Subproblem *&returnedSubproblem, ExtensionInfo *extensionInfo)
 NO_COPYING (AU_LhsAutomaton)
bool uniqueCollapseMatch (DagNode *subject, Substitution &solution, Subproblem *&returnedSubproblem, ExtensionInfo *extensionInfo)
void updateFlexBounds (int min, int max)
void updateWholeBounds (int min, int max)

Private Attributes

const bool collapsePossible
int flexLeftPos
int flexLowerBound
Vector< SubtermflexPart
int flexRightPos
int flexUpperBound
int leftPos
Substitution local
const bool matchAtTop
MatchStrategy matchStrategy
int nrSubjectsForRightVars
int nrSubjectsUsed
int rightPos
Vector< RigidBlockrigidBlocks
Vector< SubtermrigidPart
Substitution scratch
AU_Symbol *const topSymbol
LhsAutomaton *const uniqueCollapseAutomaton
int wholeLowerBound
int wholeUpperBound

Friends

ostream & operator<< (ostream &s, SubtermType type)

Detailed Description

Definition at line 30 of file AU_LhsAutomaton.hh.


The documentation for this class was generated from the following files:

Generated by  Doxygen 1.6.0   Back to index