📄 _vs1.0_lexer.cpp
字号:
gIfDefStackIndex++;
gIfDefStartLine = yylineno;
gbCompareDefine = true;
BEGIN(IFDEFNAME);
}
}
YY_BREAK
case 25:
YY_RULE_SETUP
#line 735 "vs1.0_tokens.l"
{
if (gIfDefStackIndex >= MAX_IFDEF_DEPTH)
{
LexError("Out of stack space for #ifdef, aborting.\n");
exit( 1 );
}
else
{
gIfDefStack[gIfDefStackIndex].lastbProcessingIFDEF = gbProcessingIFDEF;
gIfDefStack[gIfDefStackIndex].lastbIFDEF = gbIFDEF;
gIfDefStack[gIfDefStackIndex].lastbCompareDefine = gbCompareDefine;
gIfDefStack[gIfDefStackIndex].lastIfDefStartLine = gIfDefStartLine;
gIfDefStackIndex++;
gIfDefStartLine = yylineno;
gbCompareDefine = false;
BEGIN(IFDEFNAME);
}
}
YY_BREAK
case 26:
YY_RULE_SETUP
#line 755 "vs1.0_tokens.l"
{
if (!gbProcessingIFDEF)
{
LexError("Unexpected #else found at line %d, skipping.\n", yylineno);
}
else
{
gbCompareDefine = !gbCompareDefine;
BEGIN(INITIAL);
}
}
YY_BREAK
case 27:
YY_RULE_SETUP
#line 767 "vs1.0_tokens.l"
{
char *defineName;
unsigned int sLen;
defineName = FindAlphaNum(yytext, &sLen);
if (defineName == NULL)
{
defineName = strdup(yytext);
defineName[yyleng-1] = '\0'; // kill \n
LexWarning("Mangled name (%s) for #ifdef, assuming not defined.\n", defineName);
free(defineName);
gbIFDEF = false;
}
else
{
if (FindNMacro(defineName, sLen) != NULL)
{
gbIFDEF = true;
}
else
{
gbIFDEF = false;
}
}
gbProcessingIFDEF = true;
if (gbIFDEF != gbCompareDefine)
{
BEGIN(IFDEFBODY);
}
else
{
BEGIN(SAVELINE);
}
// GenDebugLine();
// GenListString();
gLinesAssembled++;
yylineno++;
}
YY_BREAK
case 28:
YY_RULE_SETUP
#line 809 "vs1.0_tokens.l"
{
if (!gbProcessingIFDEF)
{
LexError("Unexpected #endif found at line %d, skipping.\n", yylineno);
}
else
{
gIfDefStackIndex--;
gbProcessingIFDEF = gIfDefStack[gIfDefStackIndex].lastbProcessingIFDEF;
gbIFDEF = gIfDefStack[gIfDefStackIndex].lastbIFDEF;
gbCompareDefine = gIfDefStack[gIfDefStackIndex].lastbCompareDefine;
gIfDefStartLine = gIfDefStack[gIfDefStackIndex].lastIfDefStartLine;
}
if (YYSTATE == IFDEFBODY)
{
strncpy(gSaveLine, yytext, MAXSAVELINE);
}
BEGIN(ENDMACRO);
}
YY_BREAK
case 29:
YY_RULE_SETUP
#line 833 "vs1.0_tokens.l"
{
LexWarning("Garbage at end of #endif or endm will be ignored.\n");
}
YY_BREAK
case 30:
YY_RULE_SETUP
#line 837 "vs1.0_tokens.l"
{
BEGIN(SAVELINE);
return '\n';
}
YY_BREAK
case YY_STATE_EOF(ENDMACRO):
#line 842 "vs1.0_tokens.l"
{
BEGIN(INITIAL);
}
YY_BREAK
case 31:
YY_RULE_SETUP
#line 846 "vs1.0_tokens.l"
{
// eat line, because we are not in a TRUE #ifdef, or FALSE #ifndef
strncpy(gSaveLine, yytext, MAXSAVELINE);
}
YY_BREAK
case 32:
YY_RULE_SETUP
#line 851 "vs1.0_tokens.l"
{
strcat(gSaveLine, yytext);
// GenDebugLine();
// GenListString();
yylineno++;
gLinesAssembled++;
}
YY_BREAK
case 33:
YY_RULE_SETUP
#line 859 "vs1.0_tokens.l"
{
gbProcessingDefine = true;
gMacroStartLine = yylineno;
gCountParen = 0;
BEGIN(MACRONAME);
}
YY_BREAK
case 34:
YY_RULE_SETUP
#line 866 "vs1.0_tokens.l"
{
BEGIN(SAVELINE);
// GenDebugLine();
// GenListString();
gLinesAssembled++;
yylineno++;
}
YY_BREAK
case 35:
YY_RULE_SETUP
#line 874 "vs1.0_tokens.l"
{
// unsigned int majorVersion;
// unsigned int minorVersion;
// int minorOffset;
//
//
// majorVersion = (unsigned int)(atoi(&yytext[3]));
// // skip "ps." + second '.'
// minorOffset = strcspn(&yytext[3], ".")+4;
// minorVersion = (unsigned int)(atoi(&yytext[minorOffset]));
// yylval.ival = D3DVS_VERSION(majorVersion, minorVersion);
//
// fprintf( stderr, "%s", yytext );
if ( yytext[yyleng-1] == '\n' )
line_incr = 1;
return VERTEX_SHADER;
}
YY_BREAK
case 36:
YY_RULE_SETUP
#line 893 "vs1.0_tokens.l"
{
// fprintf( stderr, "%s", yytext );
vs10_lval.ival = atoi(yytext);
return INTVAL;
}
YY_BREAK
case 37:
YY_RULE_SETUP
#line 900 "vs1.0_tokens.l"
{
BEGIN(MODIFIER);
//fprintf( stderr, "." );
return yytext[0];
}
YY_BREAK
case 38:
YY_RULE_SETUP
#line 906 "vs1.0_tokens.l"
{
// fprintf( stderr, "%s", yytext );
BEGIN(INITIAL);
vs10_lval.mask[0] = tolower(yytext[0]);
vs10_lval.mask[1] = tolower(yytext[1]);
vs10_lval.mask[2] = tolower(yytext[2]);
vs10_lval.mask[3] = tolower(yytext[3]);
if ( yytext[yyleng-1] == '\n' )
line_incr = 1;
return XYZW_MODIFIER;
#if 0
char temp[6];
temp[0] = '\0';
strncat(temp, yytext, 4);
strlwr(temp);
vs10_lval.lval = FindSwizzleValue(temp);
BEGIN(INITIAL);
return SWIZZLE_MODIFIER;
#endif
}
YY_BREAK
case 39:
YY_RULE_SETUP
#line 934 "vs1.0_tokens.l"
{
// fprintf( stderr, "%s", yytext );
BEGIN(INITIAL);
int validLen = strspn(yytext, "xyzw");
int i;
for ( i = 0; i < validLen; i++ )
vs10_lval.mask[i] = tolower( yytext[i] );
while ( i < 4 )
{
vs10_lval.mask[i] = 0;
i++;
}
if ( yytext[yyleng-1] == '\n' )
line_incr = 1;
return XYZW_MODIFIER;
#if 0
//char temp[6];
char *temp = new char[6];
unsigned int registerMask;
unsigned int validLen;
temp[0] = '\0';
validLen = strspn(yytext, "xyzw");
strncat(temp, yytext, validLen);
for ( int i = 0; i < validLen; i++ )
temp[i] = tolower( temp[i] );
registerMask = MakeRegisterMask(temp);
if (registerMask != 0)
{
//vs10_lval.sval = temp;
vs10_lval.lval = registerMask;
BEGIN(INITIAL);
return XYZW_MODIFIER;
}
else
{
//vs10_lval.sval = temp;
vs10_lval.lval = FindSwizzleValue(temp);
BEGIN(INITIAL);
return SWIZZLE_MODIFIER;
}
#endif
}
YY_BREAK
case 40:
YY_RULE_SETUP
#line 983 "vs1.0_tokens.l"
{
BEGIN(INITIAL);
yyless(0);
}
YY_BREAK
case 41:
YY_RULE_SETUP
#line 988 "vs1.0_tokens.l"
{
/* setup and save off #define/macro name */
if (FindMacro(yytext) != NULL)
{
LexWarning("Redefinition of #define/macro %s, ignoring.\n", yytext);
if (gbProcessingDefine)
{
BEGIN(EATDEFINE);
}
else
{
BEGIN(EATMACRO);
}
}
else
{
BEGIN(MACROPARMSTART);
// %%%%% This should be setup to use memory pools
gTempMacro = (MACROENTRY *)malloc(sizeof(MACROENTRY));
if (gTempMacro == NULL)
{
LexError("Out of memory for macro table.\n");
if (gbProcessingDefine)
{
BEGIN(EATDEFINE);
}
else
{
BEGIN(EATMACRO);
}
}
else
{
gTempMacro->prev = gLastMacro;
gTempMacro->next = NULL;
gTempMacro->firstMacroParms = NULL;
gTempMacro->lastMacroParms = NULL;
gTempMacro->firstMacroLines = NULL;
gTempMacro->lastMacroLines = NULL;
gTempMacro->numParms = 0;
gTempMacro->bIsDefine = gbProcessingDefine;
gTempMacro->nLines = 0;
if (gCurFileName != NULL)
{
gTempMacro->fileName = strdup(gCurFileName);
}
else
{
gTempMacro->fileName = NULL;
}
gTempMacro->lineNo = yylineno;
/* %%%%% this should be set up in memory pools. */
gTempMacro->macroName = (char *)malloc(strlen(yytext)+1);
if (gTempMacro->macroName == NULL)
{
LexError("Out of memory for string table.\n");
SAFEFREE(gTempMacro);
if (gbProcessingDefine)
{
BEGIN(EATDEFINE);
}
else
{
BEGIN(EATMACRO);
}
}
else
{
strcpy(gTempMacro->macroName, yytext);
}
}
}
}
YY_BREAK
case 42:
YY_RULE_SETUP
#line 1067 "vs1.0_tokens.l"
{
LexError("No macro name specified, skipping macro definition.\n");
SAFEFREE(gTempMacro->fileName);
SAFEFREE(gTempMacro);
if (gbProcessingDefine)
{
BEGIN(EATDEFINE);
}
else
{
BEGIN(EATMACRO);
}
// GenDebugLine();
// GenListString();
gLinesAssembled++;
yylineno++;
}
YY_BREAK
case 43:
YY_RULE_SETUP
#line 1086 "vs1.0_tokens.l"
{
gCountParen++;
}
YY_BREAK
case 44:
YY_RULE_SETUP
#line 1090 "vs1.0_tokens.l"
{}
YY_BREAK
case 45:
YY_RULE_SETUP
#line 1092 "vs1.0_tokens.l"
{
if (gbProcessingDefine && (gCountParen == 0))
{
EndMacroParms();
}
else
{
BEGIN(MACROPARM);
}
yyless(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -