⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc1.0_grammar.y

📁 使用stl技术,(还没看,是听说的)
💻 Y
📖 第 1 页 / 共 2 页
字号:
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 + -