diff options
Diffstat (limited to 'test/ragel.d/strings3.rl')
-rw-r--r-- | test/ragel.d/strings3.rl | 1434 |
1 files changed, 0 insertions, 1434 deletions
diff --git a/test/ragel.d/strings3.rl b/test/ragel.d/strings3.rl deleted file mode 100644 index 3889be7b..00000000 --- a/test/ragel.d/strings3.rl +++ /dev/null @@ -1,1434 +0,0 @@ -# -# @LANG: asm -# - -%%{ - machine strs; - - main := - "/lib/ld-linux.so.2\n" | - "libstdc++-libc6.2-2.so.3\n" | - "cerr\n" | - "__cp_push_exception\n" | - "_DYNAMIC\n" | - "endl__FR7ostream\n" | - "__ls__7ostreamc\n" | - "_._9exception\n" | - "__vt_9bad_alloc\n" | - "__rtti_user\n" | - "__ls__7ostreamPFR7ostream_R7ostream\n" | - "__rtti_si\n" | - "_init\n" | - "bad__C3ios\n" | - "__throw\n" | - "__ls__7ostreamPCc\n" | - "__deregister_frame_info\n" | - "terminate__Fv\n" | - "__ls__7ostreamb\n" | - "__ls__7ostreami\n" | - "__8ofstreamiPCcii\n" | - "__builtin_vec_new\n" | - "_fini\n" | - "__9exception\n" | - "__builtin_vec_delete\n" | - "_GLOBAL_OFFSET_TABLE_\n" | - "__vt_9exception\n" | - "__nw__FUiPv\n" | - "_._9bad_alloc\n" | - "__builtin_delete\n" | - "__builtin_new\n" | - "cout\n" | - "__register_frame_info\n" | - "__eh_alloc\n" | - "__gmon_start__\n" | - "libm.so.6\n" | - "libc.so.6\n" | - "strcpy\n" | - "stdout\n" | - "memmove\n" | - "memcpy\n" | - "malloc\n" | - "strtoul\n" | - "fprintf\n" | - "stdin\n" | - "ferror\n" | - "strncpy\n" | - "strcasecmp\n" | - "realloc\n" | - "_IO_getc\n" | - "fread\n" | - "memset\n" | - "clearerr\n" | - "__assert_fail\n" | - "strcmp\n" | - "stderr\n" | - "fwrite\n" | - "__errno_location\n" | - "exit\n" | - "fopen\n" | - "atoi\n" | - "_IO_stdin_used\n" | - "__libc_start_main\n" | - "strlen\n" | - "free\n" | - "_edata\n" | - "__bss_start\n" | - "_end\n" | - "GLIBC_2.1\n" | - "GLIBC_2.0\n" | - "PTRh\n" | - "QVhL\n" | - "<WVS\n" | - "LWVS\n" | - "PHRW\n" | - "<WVS\n" | - "\WVS\n" | - ",WVS\n" | - "@Phl\n" | - "<WVS\n" | - "jZjA\n" | - "jzja\n" | - "j9j0\n" | - "j9j0\n" | - "jZjA\n" | - "jzja\n" | - "jzja\n" | - "jZjA\n" | - "j~j!\n" | - "j~j \n" | - "j/j!\n" | - "j@j:\n" | - "j`j[\n" | - "j~j{\n" | - "j9j0\n" | - "jFjA\n" | - "jfja\n" | - ",WVS\n" | - ",WVS\n" | - ";C<|\n" | - "<WVS\n" | - "C ;C\n" | - "C$;C\n" | - "C$;C\n" | - "C ;C\n" | - ",WVS\n" | - ";E uF\n" | - "P ;U\n" | - "P ;U\n" | - "E$fP\n" | - "E$fP\n" | - "E$fP\n" | - "E$fP\n" | - "E$fP\n" | - "E$fP\n" | - "E$fP\n" | - "E$fP\n" | - "u!h@\n" | - "PHRj\n" | - "PHRj\n" | - "P\ U\n" | - "j]hY\n" | - "johY\n" | - "PHRj\n" | - "PHRj\n" | - "E fPj\n" | - "E fP\n" | - "E fP\n" | - "E fP\n" | - "E fP\n" | - "E fP\n" | - "E fPj\n" | - "t$h`\n" | - "F ;C } \n" | - "F ;C ~ \n" | - "@X:BXt)\n" | - "\WVS\n" | - "\WVS\n" | - "PPRS\n" | - "F ;C } \n" | - "F ;C ~ \n" | - "@X:BXt)\n" | - ";H(}:\n" | - "@ fP\n" | - ";P |\n" | - "<WVS\n" | - ";P |\n" | - "bad_alloc\n" | - "usage: ragel [options] file\n" | - "general:\n" | - " -h, -H, -? Disply this usage.\n" | - " -o <file> Write output to <file>.\n" | - " -s Print stats on the compiled fsm.\n" | - " -f Dump the final fsm.\n" | - "fsm minimization:\n" | - " -n No minimization (default).\n" | - " -m Find the minimal fsm accepting the language.\n" | - "generated code language:\n" | - " -c Generate c code (default).\n" | - " -C Generate c++ code.\n" | - "generated code style:\n" | - " -T0 Generate a table driven fsm (default).\n" | - " -T1 Generate a faster table driven fsm.\n" | - " -S0 Generate a switch driven fsm.\n" | - " -G0 Generate a goto driven fsm.\n" | - " -G1 Generate a faster goto driven fsm.\n" | - " -G2 Generate a really fast goto driven fsm.\n" | - "char * FileNameFromStem(char *, char *)\n" | - "main.cpp\n" | - "len > 0\n" | - "main\n" | - "ragel: main graph not defined\n" | - "graph states: \n" | - "graph transitions: \n" | - "machine states: \n" | - "machine functions: \n" | - "function array: \n" | - "T:S:G:Cco:senmabjkfhH?-:\n" | - "ragel: zero length output file name given\n" | - "ragel: output file already given\n" | - "ragel: invalid param specified (try -h for a list of options)\n" | - "help\n" | - "ragel: zero length input file name given\n" | - "ragel: input file already given\n" | - "ragel: warning: -e given but minimization is not enabled\n" | - "ragel: no input file (try -h for a list of options)\n" | - " for reading\n" | - "ragel: could not open \n" | - " for writing\n" | - "ragel: error opening \n" | - " * Parts of this file are copied from Ragel source covered by the GNU\n" | - " * GPL. As a special exception, you may use the parts of this file copied\n" | - " * from Ragel source without restriction. The remainder is derived from\n" | - "bad_alloc\n" | - "%s:%i: unterminated literal\n" | - "%s:%i: unterminated comment\n" | - "%s:%i: bad character in literal\n" | - "fatal flex scanner internal error--no action found\n" | - "fatal flex scanner internal error--end of buffer missed\n" | - "fatal error - scanner input buffer overflow\n" | - "input in flex scanner failed\n" | - "out of dynamic memory in yy_create_buffer()\n" | - "out of dynamic memory in yy_scan_buffer()\n" | - "out of dynamic memory in yy_scan_bytes()\n" | - "bad buffer in yy_scan_bytes()\n" | - "bad_alloc\n" | - "%s:%i: warning: range gives null fsm\n" | - "%s:%i: warning: literal used in range is not of length 1, using 0x%x\n" | - "%s:%i: warning: overflow in byte constant\n" | - "parse error\n" | - "parser stack overflow\n" | - "%s:%i: %s\n" | - "bad_alloc\n" | - "extend\n" | - "ascii\n" | - "alpha\n" | - "digit\n" | - "alnum\n" | - "lower\n" | - "upper\n" | - "cntrl\n" | - "graph\n" | - "print\n" | - "punct\n" | - "space\n" | - "xdigit\n" | - "struct Fsm * FactorWithAugNode::Walk()\n" | - "parsetree.cpp\n" | - "false\n" | - "bad_alloc\n" | - "xx []()\n" | - " df \n" | - "StartState: \n" | - "Final States:\n" | - "void FsmGraph<State,int,Trans>::AttachStates(State *, State *, Trans *, FsmKeyType, int)\n" | - "rlfsm/fsmattach.cpp\n" | - "trans->toState == __null\n" | - "trans->fromState == __null\n" | - "void FsmGraph<State,int,Trans>::DetachStates(State *, State *, Trans *, FsmKeyType, int)\n" | - "trans->toState == to\n" | - "trans->fromState == from\n" | - "inTel != __null\n" | - "void Vector<BstMapEl<int,int>,ResizeExpn>::setAs(const Vector<BstMapEl<int,int>,ResizeExpn> &)\n" | - "aapl/vectcommon.h\n" | - "&v != this\n" | - "void FsmGraph<State,int,Trans>::ChangeRangeLowerKey(Trans *, int, int)\n" | - "inRangeEl != __null\n" | - "void FsmGraph<State,int,Trans>::IsolateStartState()\n" | - "rlfsm/fsmgraph.cpp\n" | - "md.stateDict.nodeCount == 0\n" | - "md.stfil.listLength == 0\n" | - "struct State * FsmGraph<State,int,Trans>::DetachState(State *)\n" | - "fromTel != __null\n" | - "struct Trans * FsmGraph<State,int,Trans>::AttachStates(State *, State *, FsmKeyType, int, int)\n" | - "outTel != __null\n" | - "outTel1 != __null\n" | - "from->defOutTrans == __null\n" | - "void FsmGraph<State,int,Trans>::VerifyOutFuncs()\n" | - "state->outTransFuncTable.tableLength == 0\n" | - "!state->isOutPriorSet\n" | - "state->outPriority == 0\n" | - "void FsmGraph<State,int,Trans>::VerifyIntegrity()\n" | - "rlfsm/fsmbase.cpp\n" | - "outIt.trans->fromState == state\n" | - "inIt.trans->toState == state\n" | - "static int FsmTrans<State,Trans,int,CmpOrd<int> >::ComparePartPtr(FsmTrans<State,Trans,int,CmpOrd<int> > *, FsmTrans<State,Trans,int,CmpOrd<int> > *)\n" | - "rlfsm/fsmstate.cpp\n" | - "false\n" | - "void FsmGraph<State,int,Trans>::InTransMove(State *, State *)\n" | - "dest != src\n" | - "static bool FsmTrans<State,Trans,int,CmpOrd<int> >::ShouldMarkPtr(MarkIndex<State> &, FsmTrans<State,Trans,int,CmpOrd<int> > *, FsmTrans<State,Trans,int,CmpOrd<int> > *)\n" | - "bad_alloc\n" | - "10FsmCodeGen\n" | - "bad_alloc\n" | - " case \n" | - "break;}\n" | - "unsigned char\n" | - "unsigned short\n" | - "unsigned int\n" | - "{0, \n" | - "/* Forward dec state for the transition structure. */\n" | - "struct \n" | - "StateStruct;\n" | - "/* A single transition. */\n" | - "struct \n" | - "TransStruct\n" | - " struct \n" | - "StateStruct *toState;\n" | - " int *funcs;\n" | - "typedef struct \n" | - "TransStruct \n" | - "Trans;\n" | - "/* A single state. */\n" | - "struct \n" | - "StateStruct\n" | - " int lowIndex;\n" | - " int highIndex;\n" | - " void *transIndex;\n" | - " unsigned int dflIndex;\n" | - " int *outFuncs;\n" | - " int isFinState;\n" | - "typedef struct \n" | - "StateStruct \n" | - "State;\n" | - "/* Only non-static data: current state. */\n" | - "struct \n" | - "Struct\n" | - "State *curState;\n" | - " int accept;\n" | - "typedef struct \n" | - "Struct \n" | - "/* Init the fsm. */\n" | - "void \n" | - "Init( \n" | - " *fsm );\n" | - "/* Execute some chunk of data. */\n" | - "void \n" | - "Execute( \n" | - " *fsm, char *data, int dlen );\n" | - "/* Indicate to the fsm tha there is no more data. */\n" | - "void \n" | - "Finish( \n" | - " *fsm );\n" | - "/* Did the machine accept? */\n" | - "int \n" | - "Accept( \n" | - " *fsm );\n" | - "#define f \n" | - "#define s \n" | - "#define i \n" | - "#define t \n" | - "/* The array of functions. */\n" | - "#if \n" | - "static int \n" | - "_f[] = {\n" | - "#endif\n" | - "/* The array of indices into the transition array. */\n" | - "#if \n" | - "static \n" | - "_i[] = {\n" | - "#endif\n" | - "/* The aray of states. */\n" | - "static \n" | - "State \n" | - "_s[] = {\n" | - "/* The array of transitions. */\n" | - "static \n" | - "Trans \n" | - "_t[] = {\n" | - "/* The start state. */\n" | - "static \n" | - "State *\n" | - "_startState = s+\n" | - "#undef f\n" | - "#undef s\n" | - "#undef i\n" | - "#undef t\n" | - "* Execute functions pointed to by funcs until the null function is found. \n" | - "inline static void \n" | - "ExecFuncs( \n" | - " *fsm, int *funcs, char *p )\n" | - " int len = *funcs++;\n" | - " while ( len-- > 0 ) {\n" | - " switch ( *funcs++ ) {\n" | - " * Init the fsm to a runnable state.\n" | - "void \n" | - " *fsm )\n" | - " fsm->curState = \n" | - "_startState;\n" | - " fsm->accept = 0;\n" | - " * Did the fsm accept? \n" | - "int \n" | - " *fsm )\n" | - " return fsm->accept;\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - " *fsm, char *data, int dlen )\n" | - " char *p = data;\n" | - " int len = dlen;\n" | - "State *cs = fsm->curState;\n" | - " for ( ; len > 0; p++, len-- ) {\n" | - " int c = (unsigned char) *p;\n" | - "Trans *trans;\n" | - " if ( cs == 0 )\n" | - " goto finished;\n" | - " /* If the character is within the index bounds then get the\n" | - " * transition for it. If it is out of the transition bounds\n" | - " * we will use the default transition. */\n" | - " if ( cs->lowIndex <= c && c < cs->highIndex ) {\n" | - " /* Use the index to look into the transition array. */\n" | - " trans = \n" | - "_t + \n" | - " ((\n" | - "*)cs->transIndex)[c - cs->lowIndex];\n" | - " else {\n" | - " /* Use the default index as the char is out of range. */\n" | - " trans = \n" | - "_t + cs->dflIndex;\n" | - " /* If there are functions for this transition then execute them. */\n" | - " if ( trans->funcs != 0 )\n" | - "ExecFuncs( fsm, trans->funcs, p );\n" | - " /* Move to the new state. */\n" | - " cs = trans->toState;\n" | - "finished:\n" | - " fsm->curState = cs;\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - " *fsm )\n" | - "State *cs = fsm->curState;\n" | - " if ( cs != 0 && cs->isFinState ) {\n" | - " /* If finishing in a final state then execute the\n" | - " * out functions for it. (if any). */\n" | - " if ( cs->outFuncs != 0 )\n" | - "ExecFuncs( fsm, cs->outFuncs, 0 );\n" | - " fsm->accept = 1;\n" | - " else {\n" | - " /* If we are not in a final state then this\n" | - " * is an error. Move to the error state. */\n" | - " fsm->curState = 0;\n" | - "class \n" | - "public:\n" | - " /* Forward dec state for the transition structure. */\n" | - " struct State;\n" | - " /* A single transition. */\n" | - " struct Trans\n" | - " State *toState;\n" | - " int *funcs;\n" | - " /* A single state. */\n" | - " struct State\n" | - " int lowIndex;\n" | - " int highIndex;\n" | - " void *transIndex;\n" | - " unsigned int dflIndex;\n" | - " int *outFuncs;\n" | - " int isFinState;\n" | - " /* Constructor. */\n" | - " void Init( );\n" | - " /* Execute some chunk of data. */\n" | - " void Execute( char *data, int dlen );\n" | - " /* Indicate to the fsm tha there is no more data. */\n" | - " void Finish( );\n" | - " /* Did the machine accept? */\n" | - " int Accept( );\n" | - " State *curState;\n" | - " int accept;\n" | - " inline void ExecFuncs( int *funcs, char *p );\n" | - "/* The array of functions. */\n" | - "#if \n" | - "::State \n" | - "/* The array of trainsitions. */\n" | - "static \n" | - "::Trans \n" | - "/* The start state. */\n" | - "static \n" | - "::State *\n" | - " * Execute functions pointed to by funcs until the null function is found. \n" | - "inline void \n" | - "::ExecFuncs( int *funcs, char *p )\n" | - " int len = *funcs++;\n" | - " while ( len-- > 0 ) {\n" | - " switch ( *funcs++ ) {\n" | - " * Constructor\n" | - " Init();\n" | - "Init\n" | - "void \n" | - "::Init( )\n" | - " curState = \n" | - "_startState;\n" | - " accept = 0;\n" | - "::Accept( )\n" | - " return accept;\n" | - "::Execute( char *data, int dlen )\n" | - " char *p = data;\n" | - " int len = dlen;\n" | - " State *cs = curState;\n" | - " for ( ; len > 0; p++, len-- ) {\n" | - " int c = (unsigned char)*p;\n" | - " Trans *trans;\n" | - " if ( cs == 0 )\n" | - " goto finished;\n" | - " /* If the character is within the index bounds then get the\n" | - " * transition for it. If it is out of the transition bounds\n" | - " * we will use the default transition. */\n" | - " if ( cs->lowIndex <= c && c < cs->highIndex ) {\n" | - " /* Use the index to look into the transition array. */\n" | - " trans = \n" | - "_t + cs->dflIndex;\n" | - " /* If there are functions for this transition then execute them. */\n" | - " if ( trans->funcs != 0 )\n" | - " ExecFuncs( trans->funcs, p );\n" | - " /* Move to the new state. */\n" | - " cs = trans->toState;\n" | - "finished:\n" | - " curState = cs;\n" | - "::Finish( )\n" | - " State *cs = curState;\n" | - " if ( cs != 0 && cs->isFinState ) {\n" | - " /* If finishing in a final state then execute the\n" | - " * out functions for it. (if any). */\n" | - " if ( cs->outFuncs != 0 )\n" | - " ExecFuncs( cs->outFuncs, 0 );\n" | - " accept = 1;\n" | - " else {\n" | - " /* If we are not in a final state then this\n" | - " * is an error. Move to the error state. */\n" | - " curState = 0;\n" | - "10TabCodeGen\n" | - "11CTabCodeGen\n" | - "12CCTabCodeGen\n" | - "10FsmCodeGen\n" | - "bad_alloc\n" | - " case \n" | - " break;\n" | - "/* Forward dec state for the transition structure. */\n" | - "struct \n" | - "StateStruct;\n" | - "/* A single transition. */\n" | - "struct \n" | - "TransStruct\n" | - " struct \n" | - "StateStruct *toState;\n" | - " int funcs;\n" | - "typedef struct \n" | - "TransStruct \n" | - "Trans;\n" | - "/* A single state. */\n" | - "struct \n" | - "StateStruct\n" | - " int lowIndex;\n" | - " int highIndex;\n" | - " void *transIndex;\n" | - " int dflIndex;\n" | - " int outFuncs;\n" | - " int isFinState;\n" | - "typedef struct \n" | - "StateStruct \n" | - "State;\n" | - "/* Only non-static data: current state. */\n" | - "struct \n" | - "Struct\n" | - "State *curState;\n" | - " int accept;\n" | - "typedef struct \n" | - "Struct \n" | - "/* Init the fsm. */\n" | - "void \n" | - "Init( \n" | - " *fsm );\n" | - "/* Execute some chunk of data. */\n" | - "void \n" | - "Execute( \n" | - " *fsm, char *data, int dlen );\n" | - "/* Indicate to the fsm tha there is no more data. */\n" | - "void \n" | - "Finish( \n" | - " *fsm );\n" | - "/* Did the machine accept? */\n" | - "int \n" | - "Accept( \n" | - " *fsm );\n" | - "#define s \n" | - "#define i \n" | - "#define t \n" | - "/* The array of indices into the transition array. */\n" | - "#if \n" | - "static \n" | - "_i[] = {\n" | - "#endif\n" | - "/* The aray of states. */\n" | - "static \n" | - "State \n" | - "_s[] = {\n" | - "/* The array of trainsitions. */\n" | - "static \n" | - "Trans \n" | - "_t[] = {\n" | - "/* The start state. */\n" | - "static \n" | - "State *\n" | - "_startState = s+\n" | - "#undef f\n" | - "#undef s\n" | - "#undef i\n" | - "#undef t\n" | - "/***************************************************************************\n" | - " * Execute functions pointed to by funcs until the null function is found. \n" | - "inline static void \n" | - "ExecFuncs( \n" | - " *fsm, int funcs, char *p )\n" | - " switch ( funcs ) {\n" | - "/****************************************\n" | - "Init\n" | - "void \n" | - " *fsm )\n" | - " fsm->curState = \n" | - "_startState;\n" | - " fsm->accept = 0;\n" | - "/****************************************\n" | - "Accept\n" | - " * Did the fsm accept? \n" | - "int \n" | - " *fsm )\n" | - " return fsm->accept;\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - " *fsm, char *data, int dlen )\n" | - " char *p = data;\n" | - " int len = dlen;\n" | - "State *cs = fsm->curState;\n" | - " for ( ; len > 0; p++, len-- ) {\n" | - " int c = (unsigned char)*p;\n" | - "Trans *trans;\n" | - " if ( cs == 0 )\n" | - " goto finished;\n" | - " /* If the character is within the index bounds then get the\n" | - " * transition for it. If it is out of the transition bounds\n" | - " * we will use the default transition. */\n" | - " if ( cs->lowIndex <= c && c < cs->highIndex ) {\n" | - " /* Use the index to look into the transition array. */\n" | - " trans = \n" | - "_t + \n" | - " ((\n" | - "*)cs->transIndex)[c - cs->lowIndex];\n" | - " else {\n" | - " /* Use the default index as the char is out of range. */\n" | - " trans = \n" | - "_t + cs->dflIndex;\n" | - " /* If there are functions for this transition then execute them. */\n" | - " if ( trans->funcs >= 0 )\n" | - "ExecFuncs( fsm, trans->funcs, p );\n" | - " /* Move to the new state. */\n" | - " cs = trans->toState;\n" | - "finished:\n" | - " fsm->curState = cs;\n" | - "/**********************************************************************\n" | - "Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - " *fsm )\n" | - "State *cs = fsm->curState;\n" | - " if ( cs != 0 && cs->isFinState ) {\n" | - " /* If finishing in a final state then execute the\n" | - " * out functions for it. (if any). */\n" | - " if ( cs->outFuncs != 0 )\n" | - "ExecFuncs( fsm, cs->outFuncs, 0 );\n" | - " fsm->accept = 1;\n" | - " else {\n" | - " /* If we are not in a final state then this\n" | - " * is an error. Move to the error state. */\n" | - " fsm->curState = 0;\n" | - "class \n" | - "public:\n" | - " /* Function and index type. */\n" | - " typedef int Func;\n" | - " /* Forward dec state for the transition structure. */\n" | - " struct State;\n" | - " /* A single transition. */\n" | - " struct Trans\n" | - " State *toState;\n" | - " int funcs;\n" | - " /* A single state. */\n" | - " struct State\n" | - " int lowIndex;\n" | - " int highIndex;\n" | - " void *transIndex;\n" | - " int dflIndex;\n" | - " int outFuncs;\n" | - " int isFinState;\n" | - " /* Constructor. */\n" | - " void Init( );\n" | - " /* Execute some chunk of data. */\n" | - " void Execute( char *data, int dlen );\n" | - " /* Indicate to the fsm tha there is no more data. */\n" | - " void Finish( );\n" | - " /* Did the machine accept? */\n" | - " int Accept( );\n" | - " State *curState;\n" | - " int accept;\n" | - " inline void ExecFuncs( int funcs, char *p );\n" | - "::State \n" | - "::Trans \n" | - "::State *\n" | - "/***************************************************************************\n" | - " * Execute functions pointed to by funcs until the null function is found. \n" | - "inline void \n" | - "::ExecFuncs( int funcs, char *p )\n" | - " switch ( funcs ) {\n" | - "/****************************************\n" | - " * Constructor\n" | - " Init();\n" | - "/****************************************\n" | - "::Init( )\n" | - " curState = \n" | - "_startState;\n" | - " accept = 0;\n" | - "/****************************************\n" | - " * Did the fsm accept? \n" | - "int \n" | - "::Accept( )\n" | - " return accept;\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - "::Execute( char *data, int dlen )\n" | - " char *p = data;\n" | - " int len = dlen;\n" | - " State *cs = curState;\n" | - " for ( ; len > 0; p++, len-- ) {\n" | - " int c = (unsigned char)*p;\n" | - " Trans *trans;\n" | - " if ( cs == 0 )\n" | - " goto finished;\n" | - " /* If the character is within the index bounds then get the\n" | - " * transition for it. If it is out of the transition bounds\n" | - " * we will use the default transition. */\n" | - " if ( cs->lowIndex <= c && c < cs->highIndex ) {\n" | - " /* Use the index to look into the transition array. */\n" | - " trans = \n" | - "_t + cs->dflIndex;\n" | - " /* If there are functions for this transition then execute them. */\n" | - " if ( trans->funcs != 0 )\n" | - " ExecFuncs( trans->funcs, p );\n" | - " /* Move to the new state. */\n" | - " cs = trans->toState;\n" | - "finished:\n" | - " curState = cs;\n" | - "/**********************************************************************\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - "::Finish( )\n" | - " State *cs = curState;\n" | - " if ( cs != 0 && cs->isFinState ) {\n" | - " /* If finishing in a final state then execute the\n" | - " * out functions for it. (if any). */\n" | - " if ( cs->outFuncs != 0 )\n" | - " ExecFuncs( cs->outFuncs, 0 );\n" | - " accept = 1;\n" | - " else {\n" | - " /* If we are not in a final state then this\n" | - " * is an error. Move to the error state. */\n" | - " curState = 0;\n" | - "11FTabCodeGen\n" | - "12CFTabCodeGen\n" | - "13CCFTabCodeGen\n" | - "bad_alloc\n" | - "cs = -1; \n" | - "cs = \n" | - "break;\n" | - " switch( cs ) {\n" | - " case \n" | - " switch ( c ) {\n" | - "case \n" | - "default: \n" | - " }\n" | - " break;\n" | - " switch( cs ) {\n" | - "accept = 1; \n" | - "/* Only non-static data: current state. */\n" | - "struct \n" | - "Struct\n" | - " int curState;\n" | - " int accept;\n" | - "typedef struct \n" | - "Struct \n" | - "/* Init the fsm. */\n" | - "void \n" | - "Init( \n" | - " *fsm );\n" | - "/* Execute some chunk of data. */\n" | - "void \n" | - "Execute( \n" | - " *fsm, char *data, int dlen );\n" | - "/* Indicate to the fsm tha there is no more data. */\n" | - "void \n" | - "Finish( \n" | - " *fsm );\n" | - "/* Did the machine accept? */\n" | - "int \n" | - "Accept( \n" | - " *fsm );\n" | - "/* The start state. */\n" | - "static int \n" | - "_startState = \n" | - "/****************************************\n" | - "Init\n" | - "void \n" | - " *fsm )\n" | - " fsm->curState = \n" | - "_startState;\n" | - " fsm->accept = 0;\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - " *fsm, char *data, int dlen )\n" | - " char *p = data;\n" | - " int len = dlen;\n" | - " int cs = fsm->curState;\n" | - " for ( ; len > 0; p++, len-- ) {\n" | - " unsigned char c = (unsigned char)*p;\n" | - " fsm->curState = cs;\n" | - "/**********************************************************************\n" | - "Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - " *fsm )\n" | - " int cs = fsm->curState;\n" | - " int accept = 0;\n" | - " fsm->accept = accept;\n" | - "/*******************************************************\n" | - "Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - " *fsm )\n" | - " return fsm->accept;\n" | - "/* Only non-static data: current state. */\n" | - "class \n" | - "public:\n" | - " /* Init the fsm. */\n" | - " void Init( );\n" | - " /* Execute some chunk of data. */\n" | - " void Execute( char *data, int dlen );\n" | - " /* Indicate to the fsm tha there is no more data. */\n" | - " void Finish( );\n" | - " /* Did the machine accept? */\n" | - " int Accept( );\n" | - " int curState;\n" | - " int accept;\n" | - " /* The start state. */\n" | - " static int startState;\n" | - "/* The start state. */\n" | - "int \n" | - "::startState = \n" | - " Init();\n" | - "/****************************************\n" | - "::Init\n" | - "void \n" | - "::Init( )\n" | - " curState = startState;\n" | - " accept = 0;\n" | - "::Execute( char *data, int dlen )\n" | - " char *p = data;\n" | - " int len = dlen;\n" | - " int cs = curState;\n" | - " for ( ; len > 0; p++, len-- ) {\n" | - " unsigned char c = (unsigned char)*p;\n" | - " curState = cs;\n" | - "/**********************************************************************\n" | - "::Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - "::Finish( )\n" | - " int cs = curState;\n" | - " int accept = 0;\n" | - " this->accept = accept;\n" | - "/*******************************************************\n" | - "::Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - "::Accept( )\n" | - " return accept;\n" | - "10SelCodeGen\n" | - "11CSelCodeGen\n" | - "12CCSelCodeGen\n" | - "10FsmCodeGen\n" | - "bad_alloc\n" | - "goto tr\n" | - "goto st\n" | - "goto err;\n" | - " case \n" | - "break;}\n" | - ": goto st\n" | - " case \n" | - " default: return;\n" | - " goto st\n" | - " if ( --len == 0 )\n" | - " goto out\n" | - " switch( (alph) *++p ) {\n" | - "case \n" | - " default: \n" | - " return;\n" | - "curState = \n" | - " switch( cs ) {\n" | - "accept = 1; \n" | - "break;\n" | - "err:\n" | - "curState = -1;\n" | - ", p );\n" | - "ExecFuncs( fsm, f+\n" | - "fsm->\n" | - "/* Only non-static data: current state. */\n" | - "struct \n" | - "Struct\n" | - " int curState;\n" | - " int accept;\n" | - "typedef struct \n" | - "Struct \n" | - "/* Init the fsm. */\n" | - "void \n" | - "Init( \n" | - " *fsm );\n" | - "/* Execute some chunk of data. */\n" | - "void \n" | - "Execute( \n" | - " *fsm, char *data, int dlen );\n" | - "/* Indicate to the fsm tha there is no more data. */\n" | - "void \n" | - "Finish( \n" | - " *fsm );\n" | - "/* Did the machine accept? */\n" | - "int \n" | - "Accept( \n" | - " *fsm );\n" | - "/* The start state. */\n" | - "static int \n" | - "_startState = \n" | - "#define f \n" | - "#define alph unsigned char\n" | - "/* The array of functions. */\n" | - "#if \n" | - "static int \n" | - "_f[] = {\n" | - "#endif\n" | - "/****************************************\n" | - "Init\n" | - "void \n" | - " *fsm )\n" | - " fsm->curState = \n" | - "_startState;\n" | - " fsm->accept = 0;\n" | - "/***************************************************************************\n" | - " * Function exection. We do not inline this as in tab\n" | - " * code gen because if we did, we might as well just expand \n" | - " * the function as in the faster goto code generator.\n" | - "static void \n" | - "ExecFuncs( \n" | - " *fsm, int *funcs, char *p )\n" | - " int len = *funcs++;\n" | - " while ( len-- > 0 ) {\n" | - " switch ( *funcs++ ) {\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - " *fsm, char *data, int dlen )\n" | - " /* Prime these to one back to simulate entering the \n" | - " * machine on a transition. */ \n" | - " register char *p = data - 1;\n" | - " register int len = dlen + 1;\n" | - " /* Switch statment to enter the machine. */\n" | - " switch ( \n" | - "curState ) {\n" | - "/**********************************************************************\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - " *fsm )\n" | - " int cs = fsm->curState;\n" | - " int accept = 0;\n" | - " fsm->accept = accept;\n" | - "/*******************************************************\n" | - " * Did the machine accept?\n" | - "int \n" | - " *fsm )\n" | - " return fsm->accept;\n" | - "#undef f\n" | - "#undef alph\n" | - " ExecFuncs( f+\n" | - "/* Only non-static data: current state. */\n" | - "class \n" | - "public:\n" | - " /* Init the fsm. */\n" | - " void Init( );\n" | - " /* Execute some chunk of data. */\n" | - " void Execute( char *data, int dlen );\n" | - " /* Indicate to the fsm tha there is no more data. */\n" | - " void Finish( );\n" | - " /* Did the machine accept? */\n" | - " int Accept( );\n" | - " int curState;\n" | - " int accept;\n" | - " /* The start state. */\n" | - " static int startState;\n" | - " /* Function exection. We do not inline this as in tab code gen\n" | - " * because if we did, we might as well just expand the function \n" | - " * as in the faster goto code generator. */\n" | - " void ExecFuncs( int *funcs, char * );\n" | - "/* The start state. */\n" | - "int \n" | - "::startState = \n" | - "/* some defines to lessen the code size. */\n" | - "#define f \n" | - "#endif\n" | - "/****************************************\n" | - " * Make sure the fsm is initted.\n" | - " Init();\n" | - "/****************************************\n" | - " * Initialize the fsm.\n" | - "void \n" | - "::Init( )\n" | - " curState = startState;\n" | - " accept = 0;\n" | - "/***************************************************************************\n" | - " * Execute functions pointed to by funcs until the null function is found. \n" | - "void \n" | - "::ExecFuncs( int *funcs, char *p )\n" | - " int len = *funcs++;\n" | - " while ( len-- > 0 ) {\n" | - " switch ( *funcs++ ) {\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - "::Execute( char *data, int dlen )\n" | - " /* Prime these to one back to simulate entering the \n" | - " * machine on a transition. */ \n" | - " register char *p = data - 1;\n" | - " register int len = dlen + 1;\n" | - " /* Switch statment to enter the machine. */\n" | - " switch ( curState ) {\n" | - "/**********************************************************************\n" | - "::Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - "::Finish( )\n" | - " int cs = curState;\n" | - " int accept = 0;\n" | - " this->accept = accept;\n" | - "/*******************************************************\n" | - "::Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - "::Accept( )\n" | - " return accept;\n" | - "#undef f\n" | - "#undef alph\n" | - "11GotoCodeGen\n" | - "12CGotoCodeGen\n" | - "13CCGotoCodeGen\n" | - "10FsmCodeGen\n" | - "bad_alloc\n" | - " case \n" | - " break;\n" | - ", p );\n" | - "ExecFuncs( fsm, \n" | - "fsm->\n" | - "/* Only non-static data: current state. */\n" | - "struct \n" | - "Struct\n" | - " int curState;\n" | - " int accept;\n" | - "typedef struct \n" | - "Struct \n" | - "/* Init the fsm. */\n" | - "void \n" | - "Init( \n" | - " *fsm );\n" | - "/* Execute some chunk of data. */\n" | - "void \n" | - "Execute( \n" | - " *fsm, char *data, int dlen );\n" | - "/* Indicate to the fsm tha there is no more data. */\n" | - "void \n" | - "Finish( \n" | - " *fsm );\n" | - "/* Did the machine accept? */\n" | - "int \n" | - "Accept( \n" | - " *fsm );\n" | - "/* The start state. */\n" | - "static int \n" | - "_startState = \n" | - "/****************************************\n" | - "Init\n" | - "void \n" | - " *fsm )\n" | - " fsm->curState = \n" | - "_startState;\n" | - " fsm->accept = 0;\n" | - "/***************************************************************************\n" | - " * Function exection. We do not inline this as in tab\n" | - " * code gen because if we did, we might as well just expand \n" | - " * the function as in the faster goto code generator.\n" | - "static void \n" | - "ExecFuncs( \n" | - " *fsm, int func, char *p )\n" | - " switch ( func ) {\n" | - "#define alph unsigned char\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - " *fsm, char *data, int dlen )\n" | - " /* Prime these to one back to simulate entering the \n" | - " * machine on a transition. */ \n" | - " register char *p = data-1;\n" | - " register int len = dlen+1;\n" | - " /* Switch statment to enter the machine. */\n" | - " switch ( \n" | - "curState ) {\n" | - "/**********************************************************************\n" | - "Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - " *fsm )\n" | - " int cs = fsm->curState;\n" | - " int accept = 0;\n" | - " fsm->accept = accept;\n" | - "/*******************************************************\n" | - "Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - " *fsm )\n" | - " return fsm->accept;\n" | - "#undef alph\n" | - " ExecFuncs( \n" | - "/* Only non-static data: current state. */\n" | - "class \n" | - "public:\n" | - " /* Init the fsm. */\n" | - " void Init( );\n" | - " /* Execute some chunk of data. */\n" | - " void Execute( char *data, int dlen );\n" | - " /* Indicate to the fsm tha there is no more data. */\n" | - " void Finish( );\n" | - " /* Did the machine accept? */\n" | - " int Accept( );\n" | - " int curState;\n" | - " int accept;\n" | - " /* The start state. */\n" | - " static int startState;\n" | - " /* Function exection. We do not inline this as in tab code gen\n" | - " * because if we did, we might as well just expand the function \n" | - " * as in the faster goto code generator. */\n" | - " void ExecFuncs( int func, char *p );\n" | - "/* The start state. */\n" | - "int \n" | - "::startState = \n" | - " Init();\n" | - "/****************************************\n" | - "::Init\n" | - "void \n" | - "::Init( )\n" | - " curState = startState;\n" | - " accept = 0;\n" | - "/***************************************************************************\n" | - " * Execute functions pointed to by funcs until the null function is found. \n" | - "void \n" | - "::ExecFuncs( int func, char *p )\n" | - " switch ( func ) {\n" | - "::Execute( char *data, int dlen )\n" | - " /* Prime these to one back to simulate entering the \n" | - " * machine on a transition. */ \n" | - " register char *p = data-1;\n" | - " register int len = dlen+1;\n" | - " /* Switch statment to enter the machine. */\n" | - " switch ( curState ) {\n" | - "::Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - "::Finish( )\n" | - " int cs = curState;\n" | - " int accept = 0;\n" | - " this->accept = accept;\n" | - "/*******************************************************\n" | - "::Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - "::Accept( )\n" | - " return accept;\n" | - "#undef alph\n" | - "12FGotoCodeGen\n" | - "13CFGotoCodeGen\n" | - "14CCFGotoCodeGen\n" | - "11GotoCodeGen\n" | - "10FsmCodeGen\n" | - "bad_alloc\n" | - "fsm->\n" | - "/* Only non-static data: current state. */\n" | - "struct \n" | - "Struct\n" | - " int curState;\n" | - " int accept;\n" | - "typedef struct \n" | - "Struct \n" | - "/* Init the fsm. */\n" | - "void \n" | - "Init( \n" | - " *fsm );\n" | - "/* Execute some chunk of data. */\n" | - "void \n" | - "Execute( \n" | - " *fsm, char *data, int dlen );\n" | - "/* Indicate to the fsm tha there is no more data. */\n" | - "void \n" | - "Finish( \n" | - " *fsm );\n" | - "/* Did the machine accept? */\n" | - "int \n" | - "Accept( \n" | - " *fsm );\n" | - "/* The start state. */\n" | - "static int \n" | - "_startState = \n" | - "/****************************************\n" | - "Init\n" | - "void \n" | - " *fsm )\n" | - " fsm->curState = \n" | - "_startState;\n" | - " fsm->accept = 0;\n" | - "#define alph unsigned char\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - " *fsm, char *data, int dlen )\n" | - " /* Prime these to one back to simulate entering the \n" | - " * machine on a transition. */ \n" | - " register char *p = data-1;\n" | - " register int len = dlen+1;\n" | - " /* Switch statment to enter the machine. */\n" | - " switch ( \n" | - "curState ) {\n" | - "/**********************************************************************\n" | - "Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - " *fsm )\n" | - " int cs = fsm->curState;\n" | - " int accept = 0;\n" | - " fsm->accept = accept;\n" | - "/*******************************************************\n" | - "Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - " *fsm )\n" | - " return fsm->accept;\n" | - "#undef alph\n" | - "/* Only non-static data: current state. */\n" | - "class \n" | - "public:\n" | - " /* Init the fsm. */\n" | - " void Init( );\n" | - " /* Execute some chunk of data. */\n" | - " void Execute( char *data, int dlen );\n" | - " /* Indicate to the fsm tha there is no more data. */\n" | - " void Finish( );\n" | - " /* Did the machine accept? */\n" | - " int Accept( );\n" | - " int curState;\n" | - " int accept;\n" | - " /* The start state. */\n" | - " static int startState;\n" | - "/* The start state. */\n" | - "int \n" | - "::startState = \n" | - " Init();\n" | - "/****************************************\n" | - "::Init\n" | - "void \n" | - "::Init( )\n" | - " curState = startState;\n" | - " accept = 0;\n" | - "#define alph unsigned char\n" | - "/**********************************************************************\n" | - " * Execute the fsm on some chunk of data. \n" | - "void \n" | - "::Execute( char *data, int dlen )\n" | - " /* Prime these to one back to simulate entering the \n" | - " * machine on a transition. */ \n" | - " register char *p = data-1;\n" | - " register int len = dlen+1;\n" | - " /* Switch statment to enter the machine. */\n" | - " switch ( curState ) {\n" | - "::Finish\n" | - " * Indicate to the fsm that the input is done. Does cleanup tasks.\n" | - "void \n" | - "::Finish( )\n" | - " int cs = curState;\n" | - " int accept = 0;\n" | - " this->accept = accept;\n" | - "/*******************************************************\n" | - "::Accept\n" | - " * Did the machine accept?\n" | - "int \n" | - "::Accept( )\n" | - " return accept;\n" | - "#undef alph\n" | - "13IpGotoCodeGen\n" | - "14CIpGotoCodeGen\n" | - "15CCIpGotoCodeGen\n" | - "11GotoCodeGen\n" | - "10FsmCodeGen\n"; -}%% - - .file "strings1.c" - .section .rodata - -%% write data; - - .comm cs,4,4 - .text - .globl exec - .type exec, @function -exec: -.LFB0: - .cfi_startproc - pushq %rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - movq %rsp, %rbp - .cfi_def_cfa_register 6 - subq $96, %rsp - - push %r12 - push %r13 - - movq cs(%rip), %r11 - movq %rdi, %r12 - movq %rsi, %r13 - -%% write exec; - - movq %r11, cs(%rip) - - pop %r13 - pop %r12 - - leave - ret - .cfi_endproc -.LFE0: - .size exec, .-exec - .section .rodata -.LC0: - .string "ACCEPT" -.LC1: - .string "FAIL" - .text - .globl test - .type test, @function -test: -.LFB1: - .cfi_startproc - pushq %rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - movq %rsp, %rbp - .cfi_def_cfa_register 6 - subq $16, %rsp - movq %rdi, -8(%rbp) - -%% write init; - - movq %r11, cs(%rip) - - movq -8(%rbp), %rax - movq %rax, %rdi - call strlen - movl %eax, %edx - movq -8(%rbp), %rax - movslq %edx, %rsi - addq %rax, %rsi - movq %rax, %rdi - call exec - movl cs(%rip), %edx - movl strs_first_final, %eax - cmpl %eax, %edx - jl .L27938 - movl $.LC0, %edi - call puts - jmp .L27937 -.L27938: - movl $.LC1, %edi - call puts -.L27937: - leave - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE1: - .size test, .-test - .section .rodata -.LC2: - .string "stdin\n" -.LC3: - .string "bad_alloc\n" -.LC4: - .string "_GLOBAL_OFFSET_TABLE_\n" -.LC5: - .string "not in\n" -.LC6: - .string "isatty\njunk on end.\n" - .text - .globl main - .type main, @function -main: -.LFB2: - .cfi_startproc - pushq %rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - movq %rsp, %rbp - .cfi_def_cfa_register 6 - movl $.LC2, %edi - call test - movl $.LC3, %edi - call test - movl $.LC4, %edi - call test - movl $.LC5, %edi - call test - movl $.LC6, %edi - call test - movl $0, %eax - popq %rbp - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE2: - .size main, .-main - .ident "GCC: (Ubuntu 4.8.2-19ubuntu1) 4.8.2" - .section .note.GNU-stack,"",@progbits - -##### OUTPUT ##### -ACCEPT -ACCEPT -ACCEPT -FAIL -FAIL |