}
};
-class XMLCodeGen
+struct GenBase
+{
+ GenBase( char *fsmName, ParseData *pd, FsmAp *fsm, XmlParser &xmlParser );
+
+ void appendTrans( TransListVect &outList, Key lowKey, Key highKey, TransAp *trans );
+ void reduceActionTables();
+
+ char *fsmName;
+ ParseData *pd;
+ FsmAp *fsm;
+ XmlParser &xmlParser;
+
+ ActionTableMap actionTableMap;
+ int nextActionTableId;
+};
+
+class XMLCodeGen : protected GenBase
{
public:
XMLCodeGen( char *fsmName, ParseData *pd, FsmAp *fsm,
std::ostream &out, XmlParser &xmlParser );
+
void writeXML( );
- void makeBackend( );
private:
- void appendTrans( TransListVect &outList, Key lowKey, Key highKey, TransAp *trans );
void writeStateActions( StateAp *state );
void writeStateList();
void writeStateConditions( StateAp *state );
void writeActionList();
void writeActionTableList();
void reduceTrans( TransAp *trans );
- void reduceActionTables();
void writeTransList( StateAp *state );
void writeEofTrans( StateAp *state );
void writeTrans( Key lowKey, Key highKey, TransAp *defTrans );
void writeMachine();
void writeActionExec( InlineItem *item );
+ std::ostream &out;
+};
+
+class BackendGen : protected GenBase
+{
+public:
+ BackendGen( char *fsmName, ParseData *pd, FsmAp *fsm, XmlParser &xmlParser );
+ void makeBackend( );
+
+private:
void makeGenInlineList( GenInlineList *outList, InlineList *inList );
void makeKey( GenInlineList *outList, Key key );
void makeText( GenInlineList *outList, InlineItem *item );
void makeStateConditions( StateAp *state );
void makeTransList( StateAp *state );
void makeTrans( Key lowKey, Key highKey, TransAp *trans );
-
- char *fsmName;
- ParseData *pd;
- FsmAp *fsm;
- std::ostream &out;
- XmlParser &xmlParser;
-
- ActionTableMap actionTableMap;
- int nextActionTableId;
};