in ragel/src/ragel/rlscan.cpp [521:772]
void Scanner::processToken( int type, char *tokdata, int toklen )
{
int *p, *pe, *eof;
if ( type < 0 )
p = pe = eof = 0;
else {
p = &type;
pe = &type + 1;
eof = 0;
}
#line 535 "rlscan.cpp"
{
if ( p == pe )
goto _test_eof;
switch ( cs )
{
tr2:
#line 391 "rlscan.rl"
{ handleMachine(); }
goto st10;
tr6:
#line 392 "rlscan.rl"
{ handleInclude(); }
goto st10;
tr10:
#line 393 "rlscan.rl"
{ handleImport(); }
goto st10;
tr13:
#line 433 "rlscan.rl"
{
if ( active() && machineSpec == 0 && machineName == 0 )
id.inputItems.tail->writeArgs.append( 0 );
}
goto st10;
tr14:
#line 444 "rlscan.rl"
{
/* Send the token off to the parser. */
if ( active() )
directToParser( parser, fileName, line, column, type, tokdata, toklen );
}
goto st10;
st10:
if ( ++p == pe )
goto _test_eof10;
case 10:
#line 572 "rlscan.cpp"
switch( (*p) ) {
case 191: goto st1;
case 192: goto st3;
case 193: goto st6;
case 194: goto tr18;
}
goto tr14;
st1:
if ( ++p == pe )
goto _test_eof1;
case 1:
if ( (*p) == 128 )
goto tr1;
goto tr0;
tr0:
#line 386 "rlscan.rl"
{ scan_error() << "bad machine statement" << endl; }
goto st0;
tr3:
#line 387 "rlscan.rl"
{ scan_error() << "bad include statement" << endl; }
goto st0;
tr8:
#line 388 "rlscan.rl"
{ scan_error() << "bad import statement" << endl; }
goto st0;
tr11:
#line 389 "rlscan.rl"
{ scan_error() << "bad write statement" << endl; }
goto st0;
#line 603 "rlscan.cpp"
st0:
cs = 0;
goto _out;
tr1:
#line 383 "rlscan.rl"
{ word = tokdata; word_len = toklen; }
goto st2;
st2:
if ( ++p == pe )
goto _test_eof2;
case 2:
#line 615 "rlscan.cpp"
if ( (*p) == 59 )
goto tr2;
goto tr0;
st3:
if ( ++p == pe )
goto _test_eof3;
case 3:
switch( (*p) ) {
case 128: goto tr4;
case 129: goto tr5;
}
goto tr3;
tr4:
#line 382 "rlscan.rl"
{ word = lit = 0; word_len = lit_len = 0; }
#line 383 "rlscan.rl"
{ word = tokdata; word_len = toklen; }
goto st4;
st4:
if ( ++p == pe )
goto _test_eof4;
case 4:
#line 638 "rlscan.cpp"
switch( (*p) ) {
case 59: goto tr6;
case 129: goto tr7;
}
goto tr3;
tr5:
#line 382 "rlscan.rl"
{ word = lit = 0; word_len = lit_len = 0; }
#line 384 "rlscan.rl"
{ lit = tokdata; lit_len = toklen; }
goto st5;
tr7:
#line 384 "rlscan.rl"
{ lit = tokdata; lit_len = toklen; }
goto st5;
st5:
if ( ++p == pe )
goto _test_eof5;
case 5:
#line 658 "rlscan.cpp"
if ( (*p) == 59 )
goto tr6;
goto tr3;
st6:
if ( ++p == pe )
goto _test_eof6;
case 6:
if ( (*p) == 129 )
goto tr9;
goto tr8;
tr9:
#line 384 "rlscan.rl"
{ lit = tokdata; lit_len = toklen; }
goto st7;
st7:
if ( ++p == pe )
goto _test_eof7;
case 7:
#line 677 "rlscan.cpp"
if ( (*p) == 59 )
goto tr10;
goto tr8;
tr18:
#line 413 "rlscan.rl"
{
if ( active() && machineSpec == 0 && machineName == 0 ) {
InputItem *inputItem = new InputItem;
inputItem->type = InputItem::Write;
inputItem->loc.fileName = fileName;
inputItem->loc.line = line;
inputItem->loc.col = column;
inputItem->name = parser->sectionName;
inputItem->pd = parser->pd;
id.inputItems.append( inputItem );
}
}
goto st8;
st8:
if ( ++p == pe )
goto _test_eof8;
case 8:
#line 700 "rlscan.cpp"
if ( (*p) == 128 )
goto tr12;
goto tr11;
tr12:
#line 427 "rlscan.rl"
{
if ( active() && machineSpec == 0 && machineName == 0 )
id.inputItems.tail->writeArgs.append( strdup(tokdata) );
}
goto st9;
st9:
if ( ++p == pe )
goto _test_eof9;
case 9:
#line 715 "rlscan.cpp"
switch( (*p) ) {
case 59: goto tr13;
case 128: goto tr12;
}
goto tr11;
}
_test_eof10: cs = 10; goto _test_eof;
_test_eof1: cs = 1; goto _test_eof;
_test_eof2: cs = 2; goto _test_eof;
_test_eof3: cs = 3; goto _test_eof;
_test_eof4: cs = 4; goto _test_eof;
_test_eof5: cs = 5; goto _test_eof;
_test_eof6: cs = 6; goto _test_eof;
_test_eof7: cs = 7; goto _test_eof;
_test_eof8: cs = 8; goto _test_eof;
_test_eof9: cs = 9; goto _test_eof;
_test_eof: {}
if ( p == eof )
{
switch ( cs ) {
case 1:
case 2:
#line 386 "rlscan.rl"
{ scan_error() << "bad machine statement" << endl; }
break;
case 3:
case 4:
case 5:
#line 387 "rlscan.rl"
{ scan_error() << "bad include statement" << endl; }
break;
case 6:
case 7:
#line 388 "rlscan.rl"
{ scan_error() << "bad import statement" << endl; }
break;
case 8:
case 9:
#line 389 "rlscan.rl"
{ scan_error() << "bad write statement" << endl; }
break;
#line 758 "rlscan.cpp"
}
}
_out: {}
}
#line 502 "rlscan.rl"
updateCol();
/* Record the last token for use in controlling the scan of subsequent
* tokens. */
lastToken = type;
}