* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifndef _XMLDOTGEN_H
-#define _XMLDOTGEN_H
+#ifndef _XMLCODEGEN_H
+#define _XMLCODEGEN_H
#include <iostream>
#include "avltree.h"
struct FsmAp;
struct ParseData;
struct GenInlineList;
+struct CodeGenData;
struct RedActionTable
:
struct GenBase
{
- GenBase( char *fsmName, ParseData *pd, FsmAp *fsm, XmlParser &xmlParser );
+ GenBase( char *fsmName, ParseData *pd, FsmAp *fsm );
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 );
+ XMLCodeGen( char *fsmName, ParseData *pd, FsmAp *fsm, std::ostream &out );
void writeXML( );
class BackendGen : protected GenBase
{
public:
- BackendGen( char *fsmName, ParseData *pd, FsmAp *fsm, XmlParser &xmlParser );
+ BackendGen( char *fsmName, ParseData *pd, FsmAp *fsm, CodeGenData *cgd );
void makeBackend( );
private:
void makeSetAct( GenInlineList *outList, long lmId );
void makeSubList( GenInlineList *outList, InlineList *inlineList,
GenInlineItem::Type type );
- void makeTargetItem( GenInlineList *outList, long targetId, GenInlineItem::Type type );
+ void makeTargetItem( GenInlineList *outList, NameInst *nameTarg, GenInlineItem::Type type );
void makeExecGetTokend( GenInlineList *outList );
void makeExports();
void makeMachine();
void makeStateConditions( StateAp *state );
void makeTransList( StateAp *state );
void makeTrans( Key lowKey, Key highKey, TransAp *trans );
-};
+ void close_ragel_def();
+
+ CodeGenData *cgd;
+
+ /* Collected during parsing. */
+ int curAction;
+ int curActionTable;
+ int curTrans;
+ int curState;
+ int curCondSpace;
+ int curStateCond;
+
+};
-#endif /* _XMLDOTGEN_H */
+#endif