summaryrefslogtreecommitdiff
path: root/src/tables.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tables.h')
-rw-r--r--src/tables.h265
1 files changed, 0 insertions, 265 deletions
diff --git a/src/tables.h b/src/tables.h
deleted file mode 100644
index 258f869e..00000000
--- a/src/tables.h
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright 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 _TABLES_H
-#define _TABLES_H
-
-#include <iostream>
-#include "codegen.h"
-
-struct Tables
-:
- public CodeGen
-{
- Tables( const CodeGenArgs &args )
- :
- CodeGen( args ),
-
- pa( "_pa" ),
- klen( "_klen" ),
- ckeys( "_ckeys" ),
- cekeys( "_cekeys" ),
- trans( "_trans" ),
- cond( "_cond" ),
- keys( "_keys" ),
- acts( "_acts" ),
- nacts( "_nacts" ),
- inds( "_inds" ),
-
- cont( "_cont" ),
- nfa_repeat( "_nfa_repeat" ),
- nfa_test( "_nfa_test" ),
- ps( "_ps" ),
- nbreak( "_nbreak" ),
- have( "__have" ),
- ic( "_ic" ),
-
- _out("_out"),
- _pop("_pop"),
- _test_eof( "_test_eof" ),
- _resume( "_resume" ),
- _match_cond( "_match_cond" ),
- _again( "_again" ),
- _match( "_match" ),
- _eof_goto( "_eof_goto" ),
-
- actions( "actions", *this ),
- transKeys( "trans_keys", *this ),
- charClass( "char_class", *this ),
- flatIndexOffset( "index_offsets", *this ),
- indices( "indices", *this ),
- indexDefaults( "index_defaults", *this ),
- transCondSpaces( "trans_cond_spaces", *this ),
- transOffsets( "trans_offsets", *this ),
- condTargs( "cond_targs", *this ),
- condActions( "cond_actions", *this ),
- toStateActions( "to_state_actions", *this ),
- fromStateActions( "from_state_actions", *this ),
- eofCondSpaces( "eof_cond_spaces", *this ),
- eofCondKeyOffs( "eof_cond_key_offs", *this ),
- eofCondKeyLens( "eof_cond_key_lens", *this ),
- eofCondKeys( "eof_cond_keys", *this ),
- eofActions( "eof_actions", *this ),
- eofTrans( "eof_trans", *this ),
-
- keyOffsets( "key_offsets", *this ),
- singleLens( "single_lengths", *this ),
- rangeLens( "range_lengths", *this ),
- indexOffsets( "index_offsets", *this ),
- transCondSpacesWi( "trans_cond_spaces_wi", *this ),
- transOffsetsWi( "trans_offsets_wi", *this ),
- transLengthsWi( "trans_lengths_wi", *this ),
- transLengths( "trans_lengths", *this ),
- condKeys( "cond_keys", *this )
- {}
-
- Variable pa;
- Variable klen;
- Variable ckeys;
- Variable cekeys;
- Variable trans;
- Variable cond;
- Variable keys;
- Variable acts;
- Variable nacts;
- Variable inds;
- Variable cont;
- Variable nfa_repeat;
- Variable nfa_test;
- Variable ps;
- Variable nbreak;
- Variable have;
- Variable ic;
-
- GotoLabel _out;
- GotoLabel _pop;
- GotoLabel _test_eof;
- GotoLabel _resume;
- GotoLabel _match_cond;
- GotoLabel _again;
- GotoLabel _match;
- GotoLabel _eof_goto;
-
- TableArray actions;
- TableArray transKeys;
- TableArray charClass;
- TableArray flatIndexOffset;
- TableArray indices;
- TableArray indexDefaults;
- TableArray transCondSpaces;
- TableArray transOffsets;
- TableArray condTargs;
- TableArray condActions;
- TableArray toStateActions;
- TableArray fromStateActions;
- TableArray eofCondSpaces;
- TableArray eofCondKeyOffs;
- TableArray eofCondKeyLens;
- TableArray eofCondKeys;
- TableArray eofActions;
- TableArray eofTrans;
-
- TableArray keyOffsets;
- TableArray singleLens;
- TableArray rangeLens;
- TableArray indexOffsets;
- TableArray transCondSpacesWi;
- TableArray transOffsetsWi;
- TableArray transLengthsWi;
- TableArray transLengths;
- TableArray condKeys;
-
- int errCondOffset;
-
- virtual void TO_STATE_ACTION( RedStateAp *state ) = 0;
- virtual void FROM_STATE_ACTION( RedStateAp *state ) = 0;
- virtual void EOF_ACTION( RedStateAp *state ) = 0;
- virtual void COND_ACTION( RedCondPair *cond ) = 0;
-
- virtual void NFA_PUSH_ACTION( RedNfaTarg *targ ) = 0;
- virtual void NFA_POP_TEST( RedNfaTarg *targ ) = 0;
- virtual void NFA_FROM_STATE_ACTION_EXEC() = 0;
-
- virtual void FROM_STATE_ACTIONS() = 0;
- virtual void REG_ACTIONS( std::string cond ) = 0;
- virtual void TO_STATE_ACTIONS() = 0;
- virtual void EOF_ACTIONS() = 0;
-
- void CURS( ostream &ret, bool inFinish );
- void TARGS( ostream &ret, bool inFinish, int targState );
- void NEXT( ostream &ret, int nextDest, bool inFinish );
- void NEXT_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish );
- void EOF_TRANS();
- void COND_EXEC( std::string expr );
-};
-
-struct TabGoto
-:
- public virtual Tables
-{
- TabGoto( const CodeGenArgs &args )
- :
- Tables( args )
- {}
-
- void CONTROL_JUMP( ostream &ret, bool inFinish );
-
- void GOTO( ostream &ret, int gotoDest, bool inFinish );
- void GOTO_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish );
- void CALL( ostream &ret, int callDest, int targState, bool inFinish );
- void NCALL( ostream &ret, int callDest, int targState, 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 BREAK( ostream &ret, int targState, bool csForced );
- void NBREAK( ostream &ret, int targState, bool csForced );
-
- void NFA_POP() {}
-
- void writeExec();
-};
-
-struct TabBreak
-:
- public virtual Tables
-{
- TabBreak( const CodeGenArgs &args )
- :
- Tables( args ),
- loopLabels( args.loopLabels )
- {}
-
- void CONTROL_JUMP( ostream &ret, bool inFinish );
-
- void GOTO( ostream &ret, int gotoDest, bool inFinish );
- void GOTO_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish );
- void CALL( ostream &ret, int callDest, int targState, bool inFinish );
- void NCALL( ostream &ret, int callDest, int targState, 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 BREAK( ostream &ret, int targState, bool csForced );
- void NBREAK( ostream &ret, int targState, bool csForced );
-
- void NFA_POP() {}
-
- void writeExec();
-
- bool loopLabels;
- std::string BREAK( GotoLabel &label );
- std::string CONTINUE( GotoLabel &label );
- std::string BREAK_LABEL( GotoLabel &label );
-};
-
-struct TabVar
-:
- public virtual Tables
-{
- TabVar( const CodeGenArgs &args )
- :
- Tables( args )
- {}
-
- void GOTO( ostream &ret, int gotoDest, bool inFinish );
- void GOTO_EXPR( ostream &ret, GenInlineItem *ilItem, bool inFinish );
- void CALL( ostream &ret, int callDest, int targState, bool inFinish );
- void NCALL( ostream &ret, int callDest, int targState, 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 BREAK( ostream &ret, int targState, bool csForced );
- void NBREAK( ostream &ret, int targState, bool csForced );
-
- void NFA_POP() {}
-
- std::string BREAK( GotoLabel &label );
- std::string CONTINUE( GotoLabel &label );
- std::string BREAK_LABEL( GotoLabel &label );
-
- void writeExec();
-};
-
-
-#endif