9
virtual ~ListData () {};
10
virtual void Print (void) = 0;
18
ListEntry (ListData* New);
19
void Insert (ListEntry *Behind, ListEntry* Before);
21
ListEntry* NextEntry (void);
22
ListEntry* PrevEntry (void);
23
ListData* GetData (void);
26
class List : public ListData
36
void Append (ListData* New);
37
void Remove (ListData* ToRemove);
38
void StartScanning (ListEntry*& Context);
39
ListData* GetNext (ListEntry*& Context);
40
void ShiftEntries (List& List);
41
void CopyEntries (List& ToCopy);
42
int IsIn (ListData* ToFind);
43
int IsEqual (List& List);
44
virtual void Print (void);
47
class Stack : public List
50
void PushList (List& List);
51
void Push (ListData* New);
55
typedef enum { EPSILON_TRANS, CHAR_CLASS_TRANS, CLASS_NAME_TRANS,
61
class Transition : public ListData
64
State* TransitionState;
71
Transition (TransitionType Type, State* State);
72
Transition (TransitionType Type, char Char, State* State);
73
Transition (TransitionType Type, char* Name, State* State);
74
Transition (TransitionType Type, ClassId Id, State* State);
79
typedef enum { NORMAL_STATE, END_STATE , LOOK_AHEAD_END_STATE } StateType;
81
class State : public ListData
87
List EpsilonTransitions;
88
List NonEpsilonTransitions;
91
State* Representative;
96
void AddTransition (TransitionType Type, State* State);
97
void AddTransition (TransitionType Type, char Char, State* State);
98
void AddTransition (TransitionType Type, char* Name, State* State);
99
void AddTransition (TransitionType Type, ClassId Id, State* State);
100
void ShiftTransitionList (State* State);
112
void ShiftStates (Automaton& Automaton);
113
State* AddState (void);
114
void RemoveState (State* State);
115
void ShiftState (Automaton& From, State* State);
116
void Automaton::ScanStates (ListEntry*& Context);
117
State* Automaton::NextState (ListEntry*& Context);
121
class DFAStateDescriptor : public ListData