int Scan()
{
for (; ; )
{
int next; // next state to enter
#if BACKUP
bool inAccept = false; // inAccept ==> current state is an accept state
Result rslt = Result.noMatch;
// skip "idle" transitions
#if LEFTANCHORS
if (lineStartNum == cNum && NextState(anchorState[CurrentSc]) != currentStart)
state = anchorState[CurrentSc];
else {
state = currentStart;
while (NextState() == state) {
GetChr();
if (lineStartNum == cNum) {
int anchor = anchorState[CurrentSc];
if (NextState(anchor) != state) {
state = anchor;
break;
}
}
}
}
#else // !LEFTANCHORS
state = currentStart;
while (NextState() == state)
GetChr(); // skip "idle" transitions
#endif // LEFTANCHORS
MarkToken();
while ((next = NextState()) != currentStart)
if (inAccept && next > maxAccept) // need to prepare backup data
{
Context ctx = new Context();
rslt = Recurse2(ctx, next);
if (rslt == Result.noMatch) RestoreStateAndPos(ctx);
// else if (rslt == Result.contextFound) RestorePos(ctx);
break;
}
else
{
state = next;
GetChr();
if (state <= maxAccept) inAccept = true;
}
#else // !BACKUP
#if LEFTANCHORS
if (lineStartNum == cNum) {
int anchor = anchorState[CurrentSc];
if (NextState(anchor) != currentStart)
state = anchor;
}
else {
state = currentStart;
while (NextState() == state) {
GetChr();
if (lineStartNum == cNum) {
anchor = anchorState[CurrentSc];
if (NextState(anchor) != state) {
state = anchor;
break;
}
}
}
}
#else // !LEFTANCHORS
state = currentStart;
while (NextState() == state)
GetChr(); // skip "idle" transitions
#endif // LEFTANCHORS
MarkToken();
// common code
while ((next = NextState()) != currentStart)
{
state = next;
GetChr();
}
#endif // BACKUP
if (state > maxAccept)
state = currentStart;
else
{
MarkEnd();
#region ActionSwitch
#pragma warning disable 162
switch (state)
{
case eofNum:
return (int)Tokens.EOF;
case 1:
/* Ignore */
break;
case 2:
return (int)AsmHighlighterToken.COMMENT_LINE;
break;
case 3:
case 15:
case 16:
return (int)AsmHighlighterToken.UNDEFINED;
break;
case 4:
case 5:
case 32:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
break;
case 6:
return (int)AsmHighlighterToken.LEFT_PARENTHESIS;
break;
case 7:
case 12:
return (int)AsmHighlighterToken.NUMBER;
break;
case 8:
return (int)AsmHighlighterToken.RIGHT_PARENTHESIS;
break;
case 9:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
break;
case 10:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
break;
case 11:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
break;
case 13:
return (int)AsmHighlighterToken.OPERATOR;
break;
case 14:
return (int)AsmHighlighterToken.OPERATOR;
break;
case 17:
return (int)AsmHighlighterToken.DELIMITER;
break;
case 18:
return (int)AsmHighlighterToken.LEFT_SQUARE_BRACKET;
break;
case 19:
return (int)AsmHighlighterToken.RIGHT_SQUARE_BRACKET;
break;
case 20:
return (int)AsmHighlighterToken.OPERATOR;
break;
case 21:
return (int)AsmHighlighterToken.OPERATOR;
break;
case 22:
return (int)AsmHighlighterToken.STRING_LITERAL;
break;
case 23:
return (int)AsmHighlighterToken.STRING_LITERAL;
break;
case 24:
case 30:
case 31:
return (int)AsmHighlighterToken.FLOAT;
break;
case 25:
return (int)AsmHighlighterToken.NUMBER;
break;
case 26:
return (int)AsmHighlighterToken.NUMBER;
break;
case 27:
return (int)AsmHighlighterToken.NUMBER;
break;
case 28:
case 29:
return (int)AsmHighlighterToken.FLOAT;
break;
case 33:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
break;
case 34:
return (int)AsmHighlighterTokenProvider.GetTokenFromIdentifier(yytext);
break;
default:
break;
}
#pragma warning restore 162
#endregion
}
}
}