Skip to content

Instantly share code, notes, and snippets.

@usernameak
Created May 13, 2017 13:39
Show Gist options
  • Select an option

  • Save usernameak/017e1277b52a45ddea145b18896c5bae to your computer and use it in GitHub Desktop.

Select an option

Save usernameak/017e1277b52a45ddea145b18896c5bae to your computer and use it in GitHub Desktop.
#define YYCTYPE unsigned char
#define YYCURSOR cursor
#define YYLIMIT limit
#define YYMARKER marker
#define YYFILL(n) {}
#define YYDEBUG(s,c)
const char *cursor = ScriptPtr;
const char *limit = ScriptEndPtr;
std1:
tok = YYCURSOR;
#define RET(x) TokenType = (x); goto normal_token;
{
YYCTYPE yych;
if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
yych = *YYCURSOR;
switch (yych) {
case 'e': goto yy3;
case 'f': goto yy4;
case 'i': goto yy5;
default: goto yy2;
}
yy2:
yy3:
yych = *++YYCURSOR;
switch (yych) {
case 'x': goto yy6;
default: goto yy2;
}
yy4:
yych = *++YYCURSOR;
switch (yych) {
case 'o': goto yy7;
default: goto yy2;
}
yy5:
yych = *++YYCURSOR;
switch (yych) {
case 'f': goto yy8;
case 'm': goto yy10;
default: goto yy2;
}
yy6:
yych = *++YYCURSOR;
switch (yych) {
case 'p': goto yy11;
default: goto yy2;
}
yy7:
yych = *++YYCURSOR;
switch (yych) {
case 'r': goto yy12;
default: goto yy2;
}
yy8:
++YYCURSOR;
{RET(TK_If)}
yy10:
yych = *++YYCURSOR;
switch (yych) {
case 'p': goto yy14;
default: goto yy2;
}
yy11:
yych = *++YYCURSOR;
switch (yych) {
case 'o': goto yy15;
default: goto yy2;
}
yy12:
++YYCURSOR;
{RET(TK_For)}
yy14:
yych = *++YYCURSOR;
switch (yych) {
case 'o': goto yy16;
default: goto yy2;
}
yy15:
yych = *++YYCURSOR;
switch (yych) {
case 'r': goto yy17;
default: goto yy2;
}
yy16:
yych = *++YYCURSOR;
switch (yych) {
case 'r': goto yy18;
default: goto yy2;
}
yy17:
yych = *++YYCURSOR;
switch (yych) {
case 't': goto yy19;
default: goto yy2;
}
yy18:
yych = *++YYCURSOR;
switch (yych) {
case 't': goto yy21;
default: goto yy2;
}
yy19:
++YYCURSOR;
{RET(TK_Export)}
yy21:
++YYCURSOR;
{RET(TK_Import)}
}
normal_token:
ScriptPtr = (YYCURSOR >= YYLIMIT) ? ScriptEndPtr : cursor;
StringLen = int(ScriptPtr - tok);
if (tokens && (TokenType == TK_StringConst))
{
StringLen -= 2;
if (StringLen >= MAX_STRING_SIZE)
{
BigStringBuffer.assign(tok+1, StringLen);
}
else
{
memcpy (StringBuffer, tok+1, StringLen);
}
}
else
{
if (StringLen >= MAX_STRING_SIZE)
{
BigStringBuffer.assign(tok, StringLen);
}
else
{
memcpy (StringBuffer, tok, StringLen);
}
}
if (StringLen < MAX_STRING_SIZE)
{
String = StringBuffer;
StringBuffer[StringLen] = '\0';
}
else
{
String = const_cast<char*>(BigStringBuffer.c_str());
}
return_val = true;
goto end;
end:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment