diff options
Diffstat (limited to 'src/ipgoto.h')
-rw-r--r-- | src/ipgoto.h | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/src/ipgoto.h b/src/ipgoto.h deleted file mode 100644 index 1ec51bbf..00000000 --- a/src/ipgoto.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2001-2018 Adrian Thurston <thurston@colm.net> - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef IPGOTO_H -#define IPGOTO_H - -#include <iostream> -#include "goto.h" - -/* Forwards. */ -struct CodeGenData; - -/* - * class FGotoCodeGen - */ -class IpGoto - : public Goto -{ -public: - IpGoto( const CodeGenArgs &args ) - : - Goto( args, Ip ), - stLabel(0), - ctrLabel(0), - outLabel(0), - popLabel(0) - {} - - std::ostream &EXIT_STATES(); - std::ostream &TRANS_GOTO( RedTransAp *trans ); - std::ostream &COND_GOTO( RedCondPair *trans ); - std::ostream &FINISH_CASES(); - std::ostream &AGAIN_CASES(); - std::ostream &STATE_GOTOS(); - std::ostream &STATE_GOTO_CASES(); - - /* unused. */ - virtual std::ostream &ACTION_SWITCH() { return out; } - virtual std::ostream &EXEC_FUNCS() { return out; } - virtual std::ostream &TO_STATE_ACTION_SWITCH() { return out; } - virtual std::ostream &FROM_STATE_ACTION_SWITCH() { return out; } - virtual std::ostream &EOF_ACTION_SWITCH() { return out; } - - /* Unused */ - virtual void FROM_STATE_ACTIONS() {} - virtual void TO_STATE_ACTIONS() {} - virtual void REG_ACTIONS() {} - virtual void EOF_ACTIONS() {} - - void GOTO( ostream &ret, int gotoDest, bool inFinish ); - void CALL( ostream &ret, int callDest, int targState, bool inFinish ); - void NCALL( ostream &ret, int callDest, int targState, bool inFinish ); - void NEXT( ostream &ret, int nextDest, bool inFinish ); - void GOTO_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish ); - void NEXT_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish ); - void CALL_EXPR( ostream &ret, GenInlineItem *ilItem, int targState, bool inFinish ); - void NCALL_EXPR( ostream &ret, GenInlineItem *ilItem, int targState, bool inFinish ); - void RET( ostream &ret, bool inFinish ); - void NRET( ostream &ret, bool inFinish ); - void CURS( ostream &ret, bool inFinish ); - void TARGS( ostream &ret, bool inFinish, int targState ); - void BREAK( ostream &ret, int targState, bool csForced ); - void NBREAK( ostream &ret, int targState, bool csForced ); - - virtual void genAnalysis(); - virtual void writeData(); - virtual void writeExec(); - -protected: - bool useAgainLabel(); - - /* Called from Goto::STATE_GOTOS just before writing the gotos for - * each state. */ - bool IN_TRANS_ACTIONS( RedStateAp *state ); - void GOTO_HEADER( RedStateAp *state ); - void STATE_GOTO_ERROR(); - - /* Set up labelNeeded flag for each state. */ - void setLabelsNeeded( RedCondPair *pair ); - void setLabelsNeeded( GenInlineList *inlineList ); - void setLabelsNeeded(); - - void NFA_PUSH_ACTION( RedNfaTarg *targ ); - void NFA_POP_TEST( RedNfaTarg *targ ); - virtual void NFA_FROM_STATE_ACTION_EXEC(); - - void NFA_PUSH_ST( RedStateAp *state ); - - void tableDataPass(); - - IpLabel *stLabel; - IpLabel *ctrLabel; - IpLabel *outLabel; - IpLabel *popLabel; -}; - -namespace C -{ - class IpGoto - : - public ::IpGoto - { - public: - IpGoto( const CodeGenArgs &args ) - : ::IpGoto( args ) - {} - }; -} - -#endif |