📄 rc1.0_grammar.y
字号:
Sum : Register equals sumString openParen closeParen semicolon
{
OpStruct sumFunction;
sumFunction.Init(RCP_SUM, $1);
$$ = sumFunction;
}
;
BiasScale : bias_by_negative_one_half_scale_by_two openParen closeParen semicolon
{
$$ = $1;
}
| bias_by_negative_one_half openParen closeParen semicolon
{
$$ = $1;
}
| scale_by_one_half openParen closeParen semicolon
{
$$ = $1;
}
| scale_by_two openParen closeParen semicolon
{
$$ = $1;
}
| scale_by_four openParen closeParen semicolon
{
$$ = $1;
}
;
FinalMappedRegister : Register
{
MappedRegisterStruct reg;
reg.Init($1, GL_UNSIGNED_IDENTITY_NV);
$$ = reg;
}
| unsignedString openParen Register closeParen
{
MappedRegisterStruct reg;
reg.Init($3, GL_UNSIGNED_IDENTITY_NV);
$$ = reg;
}
| unsignedInvertString openParen Register closeParen
{
MappedRegisterStruct reg;
reg.Init($3, GL_UNSIGNED_INVERT_NV);
$$ = reg;
}
| color_sum
{
MappedRegisterStruct reg;
reg.Init($1);
$$ = reg;
}
| unsignedString openParen color_sum closeParen
{
MappedRegisterStruct reg;
reg.Init($3, GL_UNSIGNED_IDENTITY_NV);
$$ = reg;
}
| unsignedInvertString openParen color_sum closeParen
{
MappedRegisterStruct reg;
reg.Init($3, GL_UNSIGNED_INVERT_NV);
$$ = reg;
}
| final_product
{
MappedRegisterStruct reg;
reg.Init($1);
$$ = reg;
}
| unsignedString openParen final_product closeParen
{
MappedRegisterStruct reg;
reg.Init($3, GL_UNSIGNED_IDENTITY_NV);
$$ = reg;
}
| unsignedInvertString openParen final_product closeParen
{
MappedRegisterStruct reg;
reg.Init($3, GL_UNSIGNED_INVERT_NV);
$$ = reg;
}
;
FinalCombiner : FinalAlphaFunction FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($2, $1, false);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalAlphaFunction FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($3, $2, true);
$$ = finalCombinerStruct;
}
| FinalProduct FinalAlphaFunction FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($3, $2, false, $1);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalProduct FinalAlphaFunction FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($4, $3, true, $2);
$$ = finalCombinerStruct;
}
| FinalProduct ClampColorSum FinalAlphaFunction FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($4, $3, true, $1);
$$ = finalCombinerStruct;
}
| FinalRgbFunction FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($1, $2, false);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalRgbFunction FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($2, $3, true);
$$ = finalCombinerStruct;
}
| FinalProduct FinalRgbFunction FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($2, $3, false, $1);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalProduct FinalRgbFunction FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($3, $4, true, $2);
$$ = finalCombinerStruct;
}
| FinalProduct ClampColorSum FinalRgbFunction FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
finalCombinerStruct.Init($3, $4, true, $1);
$$ = finalCombinerStruct;
}
| FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalAlphaFunctionStruct finalAlphaFunctionStruct;
finalAlphaFunctionStruct.ZeroOut();
finalCombinerStruct.Init($1, finalAlphaFunctionStruct, false);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalAlphaFunctionStruct finalAlphaFunctionStruct;
finalAlphaFunctionStruct.ZeroOut();
finalCombinerStruct.Init($2, finalAlphaFunctionStruct, true);
$$ = finalCombinerStruct;
}
| FinalProduct FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalAlphaFunctionStruct finalAlphaFunctionStruct;
finalAlphaFunctionStruct.ZeroOut();
finalCombinerStruct.Init($2, finalAlphaFunctionStruct, false, $1);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalProduct FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalAlphaFunctionStruct finalAlphaFunctionStruct;
finalAlphaFunctionStruct.ZeroOut();
finalCombinerStruct.Init($3, finalAlphaFunctionStruct, true, $2);
$$ = finalCombinerStruct;
}
| FinalProduct ClampColorSum FinalRgbFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalAlphaFunctionStruct finalAlphaFunctionStruct;
finalAlphaFunctionStruct.ZeroOut();
finalCombinerStruct.Init($3, finalAlphaFunctionStruct, true, $1);
$$ = finalCombinerStruct;
}
| FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.ZeroOut();
finalCombinerStruct.Init(finalRgbFunctionStruct, $1, false);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.ZeroOut();
finalCombinerStruct.Init(finalRgbFunctionStruct, $2, true);
$$ = finalCombinerStruct;
}
| FinalProduct FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.ZeroOut();
finalCombinerStruct.Init(finalRgbFunctionStruct, $2, false, $1);
$$ = finalCombinerStruct;
}
| ClampColorSum FinalProduct FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.ZeroOut();
finalCombinerStruct.Init(finalRgbFunctionStruct, $3, true, $2);
$$ = finalCombinerStruct;
}
| FinalProduct ClampColorSum FinalAlphaFunction
{
FinalCombinerStruct finalCombinerStruct;
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.ZeroOut();
finalCombinerStruct.Init(finalRgbFunctionStruct, $3, true, $1);
$$ = finalCombinerStruct;
}
;
ClampColorSum : clamp_color_sum openParen closeParen semicolon
{
$$ = $1;
}
;
FinalProduct : final_product equals FinalMappedRegister times FinalMappedRegister semicolon
{
FinalProductStruct finalProductStruct;
finalProductStruct.Init($3, $5);
$$ = finalProductStruct;
}
;
FinalRgbFunction : fragment_rgb equals lerp openParen FinalMappedRegister comma FinalMappedRegister comma FinalMappedRegister closeParen plus FinalMappedRegister semicolon
{
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init($5, $7, $9, $12);
$$ = finalRgbFunctionStruct;
}
| fragment_rgb equals FinalMappedRegister plus lerp openParen FinalMappedRegister comma FinalMappedRegister comma FinalMappedRegister closeParen semicolon
{
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init($7, $9, $11, $3);
$$ = finalRgbFunctionStruct;
}
| fragment_rgb equals lerp openParen FinalMappedRegister comma FinalMappedRegister comma FinalMappedRegister closeParen semicolon
{
RegisterEnum zero;
zero.word = RCP_ZERO;
MappedRegisterStruct reg;
reg.Init(zero, GL_UNSIGNED_IDENTITY_NV);
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init($5, $7, $9, reg);
$$ = finalRgbFunctionStruct;
}
| fragment_rgb equals FinalMappedRegister times FinalMappedRegister semicolon
{
RegisterEnum zero;
zero.word = RCP_ZERO;
MappedRegisterStruct reg1;
reg1.Init(zero, GL_UNSIGNED_IDENTITY_NV);
MappedRegisterStruct reg2;
reg2.Init(zero, GL_UNSIGNED_IDENTITY_NV);
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init($3, $5, reg1, reg2);
$$ = finalRgbFunctionStruct;
}
| fragment_rgb equals FinalMappedRegister times FinalMappedRegister plus FinalMappedRegister semicolon
{
RegisterEnum zero;
zero.word = RCP_ZERO;
MappedRegisterStruct reg1;
reg1.Init(zero, GL_UNSIGNED_IDENTITY_NV);
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init($3, $5, reg1, $7);
$$ = finalRgbFunctionStruct;
}
| fragment_rgb equals FinalMappedRegister semicolon
{
RegisterEnum zero;
zero.word = RCP_ZERO;
MappedRegisterStruct reg1;
reg1.Init(zero, GL_UNSIGNED_IDENTITY_NV);
MappedRegisterStruct reg2;
reg2.Init(zero, GL_UNSIGNED_IDENTITY_NV);
MappedRegisterStruct reg3;
reg3.Init(zero, GL_UNSIGNED_IDENTITY_NV);
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init(reg1, reg2, reg3, $3);
$$ = finalRgbFunctionStruct;
}
| fragment_rgb equals FinalMappedRegister plus FinalMappedRegister semicolon
{
RegisterEnum zero;
zero.word = RCP_ZERO;
MappedRegisterStruct reg2;
reg2.Init(zero, GL_UNSIGNED_INVERT_NV);
MappedRegisterStruct reg3;
reg3.Init(zero, GL_UNSIGNED_IDENTITY_NV);
FinalRgbFunctionStruct finalRgbFunctionStruct;
finalRgbFunctionStruct.Init($3, reg2, reg3, $5);
$$ = finalRgbFunctionStruct;
}
;
FinalAlphaFunction : fragment_alpha equals FinalMappedRegister semicolon
{
FinalAlphaFunctionStruct finalAlphaFunctionStruct;
finalAlphaFunctionStruct.Init($3);
$$ = finalAlphaFunctionStruct;
}
;
Register : constVariable
{
$$ = $1;
}
| regVariable
{
$$ = $1;
}
;
%%
void yyerror(char* s)
{
errors.set("unrecognized token");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -