|
|
@@ -72,30 +72,30 @@ void yyerror(const char *s); |
|
|
|
* HLSL keywords |
|
|
|
*/ |
|
|
|
|
|
|
|
%token HT_APPENDSTRUCTUREDBUFFER HT_ASM HT_ASM_FRAGMENT HT_BLENDSTATE HT_BOOL |
|
|
|
%token HT_BREAK HT_BUFFER HT_BYTEADDRESSBUFFER HT_CBUFFER HT_CENTROID |
|
|
|
%token HT_COLUMN_MAJOR HT_COMPILE HT_COMPILE_FRAGMENT HT_COMPILESHADER HT_CONST |
|
|
|
%token HT_CONTINUE HT_COMPUTESHADER HT_CONSUMESTRUCTUREDBUFFER |
|
|
|
%token HT_DEPTHSTENCILSTATE HT_DEPTHSTENCILVIEW HT_DISCARD HT_DO HT_DOUBLE |
|
|
|
%token HT_DOMAINSHADER HT_DWORD HT_ELSE HT_EXTERN HT_FALSE HT_FLOAT HT_FOR |
|
|
|
%token HT_FXGROUP HT_GEOMETRYSHADER HT_GROUPSHARED HT_HALF HT_HULLSHADER HT_IF |
|
|
|
%token HT_IN HT_INLINE HT_INOUT HT_INPUTPATCH HT_INT HT_INTERFACE HT_LINE |
|
|
|
%token HT_APPENDSTRUCTUREDBUFFER HT_ASM HT_ASM_FRAGMENT HT_BLENDSTATE |
|
|
|
%token HT_BUFFER HT_BYTEADDRESSBUFFER HT_CBUFFER |
|
|
|
%token HT_COLUMN_MAJOR HT_COMPILE HT_COMPILE_FRAGMENT HT_COMPILESHADER |
|
|
|
%token HT_COMPUTESHADER HT_CONSUMESTRUCTUREDBUFFER |
|
|
|
%token HT_DEPTHSTENCILSTATE HT_DEPTHSTENCILVIEW |
|
|
|
%token HT_DOMAINSHADER HT_DWORD HT_EXTERN HT_FALSE |
|
|
|
%token HT_FXGROUP HT_GEOMETRYSHADER HT_GROUPSHARED HT_HALF HT_HULLSHADER |
|
|
|
%token HT_INLINE HT_INPUTPATCH HT_INTERFACE HT_LINE |
|
|
|
%token HT_LINEADJ HT_LINEAR HT_LINESTREAM HT_MATRIX HT_NAMESPACE |
|
|
|
%token HT_NOINTERPOLATION HT_NOPERSPECTIVE HT_NULL HT_OUT HT_OUTPUTPATCH |
|
|
|
%token HT_NOINTERPOLATION HT_NULL HT_OUTPUTPATCH |
|
|
|
%token HT_PACKOFFSET HT_PASS HT_PIXELFRAGMENT HT_PIXELSHADER HT_POINT |
|
|
|
%token HT_POINTSTREAM HT_PRECISE HT_RASTERIZERSTATE HT_RENDERTARGETVIEW |
|
|
|
%token HT_RETURN HT_REGISTER HT_ROW_MAJOR HT_RWBUFFER HT_RWBYTEADDRESSBUFFER |
|
|
|
%token HT_REGISTER HT_ROW_MAJOR HT_RWBUFFER HT_RWBYTEADDRESSBUFFER |
|
|
|
%token HT_RWSTRUCTUREDBUFFER HT_RWTEXTURE1D HT_RWTEXTURE1DARRAY HT_RWTEXTURE2D |
|
|
|
%token HT_RWTEXTURE2DARRAY HT_RWTEXTURE3D HT_SAMPLER HT_SAMPLER1D HT_SAMPLER2D |
|
|
|
%token HT_SAMPLER3D HT_SAMPLERCUBE HT_SAMPLER_STATE HT_SAMPLERSTATE |
|
|
|
%token HT_RWTEXTURE2DARRAY HT_RWTEXTURE3D HT_SAMPLER |
|
|
|
%token HT_SAMPLER_STATE HT_SAMPLERSTATE |
|
|
|
%token HT_SAMPLERCOMPARISONSTATE HT_SHARED HT_SNORM HT_STATEBLOCK |
|
|
|
%token HT_STATEBLOCK_STATE HT_STATIC HT_STRING HT_STRUCT HT_SWITCH |
|
|
|
%token HT_STATEBLOCK_STATE HT_STATIC HT_STRING |
|
|
|
%token HT_STRUCTUREDBUFFER HT_TBUFFER HT_TECHNIQUE HT_TECHNIQUE10 |
|
|
|
%token HT_TECHNIQUE11XZ HT_TEXTURE HT_TEXTURE1D HT_TEXTURE1DARRAY HT_TEXTURE2D |
|
|
|
%token HT_TEXTURE2DARRAY HT_TEXTURE2DMS HT_TEXTURE2DMSARRAY HT_TEXTURE3D |
|
|
|
%token HT_TEXTURECUBE HT_TEXTURECUBEARRAY HT_TRUE HT_TYPEDEF HT_TRIANGLE |
|
|
|
%token HT_TRIANGLEADJ HT_TRIANGLESTREAM HT_UNIFORM HT_UNORM HT_UINT HT_VECTOR |
|
|
|
%token HT_VERTEXFRAGMENT HT_VERTEXSHADER HT_VOID HT_VOLATILE HT_WHILE |
|
|
|
%token HT_TRIANGLEADJ HT_TRIANGLESTREAM HT_UNORM HT_VECTOR |
|
|
|
%token HT_VERTEXFRAGMENT HT_VERTEXSHADER HT_VOLATILE |
|
|
|
|
|
|
|
/* |
|
|
|
* HLSL types |
|
|
@@ -144,13 +144,21 @@ void yyerror(const char *s); |
|
|
|
* HLSL reserved keywords |
|
|
|
*/ |
|
|
|
|
|
|
|
%token HT_AUTO HT_CASE HT_CATCH HT_CHAR HT_CLASS HT_CONST_CAST HT_DEFAULT |
|
|
|
%token HT_AUTO HT_CATCH HT_CHAR HT_CLASS HT_CONST_CAST |
|
|
|
%token HT_DELETE HT_DYNAMIC_CAST HT_ENUM HT_EXPLICIT HT_FRIEND HT_GOTO HT_LONG |
|
|
|
%token HT_MUTABLE HT_NEW HT_OPERATOR HT_PRIVATE HT_PROTECTED HT_PUBLIC |
|
|
|
%token HT_REINTERPRET_CAST HT_SHORT HT_SIGNED HT_SIZEOF HT_STATIC_CAST |
|
|
|
%token HT_TEMPLATE HT_THIS HT_THROW HT_TRY HT_TYPENAME HT_UNION HT_UNSIGNED |
|
|
|
%token HT_USING HT_VIRTUAL |
|
|
|
|
|
|
|
/* |
|
|
|
* Language keywords |
|
|
|
*/ |
|
|
|
|
|
|
|
%token T_INC T_DEC T_LE T_GE T_EQ T_NE T_LEFT T_RIGHT T_AND T_OR T_XOR |
|
|
|
%token T_MULEQ T_DIVEQ T_MODEQ T_ADDEQ T_SUBEQ T_LEFTEQ T_RIGHTEQ T_ANDEQ |
|
|
|
%token T_XOREQ T_OREQ |
|
|
|
|
|
|
|
/* |
|
|
|
* Temporary shit |
|
|
|
*/ |
|
|
@@ -209,6 +217,561 @@ pass_stmt: |
|
|
|
| NAME '[' INT ']' '=' INT ';' |
|
|
|
; |
|
|
|
|
|
|
|
/* |
|
|
|
* Grammar for GLSL |
|
|
|
*/ |
|
|
|
|
|
|
|
glsl_variable_identifier: |
|
|
|
GLSL_IDENTIFIER |
|
|
|
; |
|
|
|
|
|
|
|
glsl_primary_expression: |
|
|
|
glsl_variable_identifier |
|
|
|
| INTCONSTANT |
|
|
|
| UINTCONSTANT |
|
|
|
| FLOATCONSTANT |
|
|
|
| BOOLCONSTANT |
|
|
|
| '(' glsl_expression ')' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_postfix_expression: |
|
|
|
glsl_primary_expression |
|
|
|
| glsl_postfix_expression '[' glsl_integer_expression ']' |
|
|
|
| glsl_function_call |
|
|
|
| glsl_postfix_expression '.' FIELD_SELECTION |
|
|
|
| glsl_postfix_expression T_INC |
|
|
|
| glsl_postfix_expression T_DEC |
|
|
|
; |
|
|
|
|
|
|
|
glsl_integer_expression: |
|
|
|
glsl_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_call: |
|
|
|
glsl_function_call_or_method |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_call_or_method: |
|
|
|
glsl_function_call_generic |
|
|
|
| glsl_postfix_expression '.' glsl_function_call_generic |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_call_generic: |
|
|
|
glsl_function_call_header_with_parameters ')' |
|
|
|
| glsl_function_call_header_no_parameters ')' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_call_header_no_parameters: |
|
|
|
glsl_function_call_header GHT_VOID |
|
|
|
| glsl_function_call_header |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_call_header_with_parameters: |
|
|
|
glsl_function_call_header glsl_assignment_expression |
|
|
|
| glsl_function_call_header_with_parameters ',' glsl_assignment_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_call_header: |
|
|
|
glsl_function_identifier '(' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_identifier: |
|
|
|
glsl_type_specifier |
|
|
|
| IDENTIFIER |
|
|
|
| FIELD_SELECTION |
|
|
|
; |
|
|
|
|
|
|
|
glsl_unary_expression: |
|
|
|
glsl_postfix_expression |
|
|
|
| T_INC glsl_unary_expression |
|
|
|
| T_DEC glsl_unary_expression |
|
|
|
| glsl_unary_operator glsl_unary_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_unary_operator: |
|
|
|
'+' |
|
|
|
| '-' |
|
|
|
| '!' |
|
|
|
| '~' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_multiplicative_expression: |
|
|
|
glsl_unary_expression |
|
|
|
| glsl_multiplicative_expression '*' glsl_unary_expression |
|
|
|
| glsl_multiplicative_expression '/' glsl_unary_expression |
|
|
|
| glsl_multiplicative_expression '%' glsl_unary_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_additive_expression: |
|
|
|
glsl_multiplicative_expression |
|
|
|
| glsl_additive_expression '+' glsl_multiplicative_expression |
|
|
|
| glsl_additive_expression '-' glsl_multiplicative_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_shift_expression: |
|
|
|
glsl_additive_expression |
|
|
|
| glsl_shift_expression T_LEFT glsl_additive_expression |
|
|
|
| glsl_shift_expression T_RIGHT glsl_additive_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_relational_expression: |
|
|
|
glsl_shift_expression |
|
|
|
| glsl_relational_expression '<' glsl_shift_expression |
|
|
|
| glsl_relational_expression '>' glsl_shift_expression |
|
|
|
| glsl_relational_expression T_LE glsl_shift_expression |
|
|
|
| glsl_relational_expression T_GE glsl_shift_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_equality_expression: |
|
|
|
glsl_relational_expression |
|
|
|
| glsl_equality_expression T_EQ glsl_relational_expression |
|
|
|
| glsl_equality_expression T_NE glsl_relational_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_and_expression: |
|
|
|
glsl_equality_expression |
|
|
|
| glsl_and_expression '&' glsl_equality_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_exclusive_or_expression: |
|
|
|
glsl_and_expression |
|
|
|
| glsl_exclusive_or_expression '^' glsl_and_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_inclusive_or_expression: |
|
|
|
glsl_exclusive_or_expression |
|
|
|
| glsl_inclusive_or_expression '|' glsl_exclusive_or_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_logical_and_expression: |
|
|
|
glsl_inclusive_or_expression |
|
|
|
| glsl_logical_and_expression T_AND glsl_inclusive_or_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_logical_xor_expression: |
|
|
|
glsl_logical_and_expression |
|
|
|
| glsl_logical_xor_expression T_XOR glsl_logical_and_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_logical_or_expression: |
|
|
|
glsl_logical_xor_expression |
|
|
|
| glsl_logical_or_expression T_OR glsl_logical_xor_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_conditional_expression: |
|
|
|
glsl_logical_or_expression |
|
|
|
| glsl_logical_or_expression '?' glsl_expression ':' glsl_assignment_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_assignment_expression: |
|
|
|
glsl_conditional_expression |
|
|
|
| glsl_unary_expression glsl_assignment_operator glsl_assignment_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_assignment_operator: |
|
|
|
'=' |
|
|
|
| T_MULEQ |
|
|
|
| T_DIVEQ |
|
|
|
| T_MODEQ |
|
|
|
| T_ADDEQ |
|
|
|
| T_SUBEQ |
|
|
|
| T_LEFTEQ |
|
|
|
| T_RIGHTEQ |
|
|
|
| T_ANDEQ |
|
|
|
| T_XOREQ |
|
|
|
| T_OREQ |
|
|
|
; |
|
|
|
|
|
|
|
glsl_expression: |
|
|
|
glsl_assignment_expression |
|
|
|
| glsl_expression ',' glsl_assignment_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_constant_expression: |
|
|
|
glsl_conditional_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_declaration: |
|
|
|
glsl_function_prototype ';' |
|
|
|
| glsl_init_declarator_list ';' |
|
|
|
| PRECISION glsl_precision_qualifier glsl_type_specifier_no_prec ';' |
|
|
|
| glsl_type_qualifier IDENTIFIER '{' glsl_struct_declaration_list '}' ';' |
|
|
|
| glsl_type_qualifier IDENTIFIER '{' glsl_struct_declaration_list '}' IDENTIFIER ';' |
|
|
|
| glsl_type_qualifier IDENTIFIER '{' glsl_struct_declaration_list '}' IDENTIFIER '[' ']' ';' |
|
|
|
| glsl_type_qualifier IDENTIFIER '{' glsl_struct_declaration_list '}' IDENTIFIER '[' glsl_constant_expression ']' ';' |
|
|
|
| glsl_type_qualifier ';' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_prototype: |
|
|
|
glsl_function_declarator ')' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_declarator: |
|
|
|
glsl_function_header |
|
|
|
| glsl_function_header_with_parameters |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_header_with_parameters: |
|
|
|
glsl_function_header glsl_parameter_declaration |
|
|
|
| glsl_function_header_with_parameters ',' glsl_parameter_declaration |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_header: |
|
|
|
glsl_fully_specified_type IDENTIFIER '(' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_parameter_declarator: |
|
|
|
glsl_type_specifier IDENTIFIER |
|
|
|
| glsl_type_specifier IDENTIFIER '[' glsl_constant_expression ']' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_parameter_declaration: |
|
|
|
glsl_parameter_type_qualifier glsl_parameter_qualifier glsl_parameter_declarator |
|
|
|
| glsl_parameter_qualifier glsl_parameter_declarator |
|
|
|
| glsl_parameter_type_qualifier glsl_parameter_qualifier glsl_parameter_type_specifier |
|
|
|
| glsl_parameter_qualifier glsl_parameter_type_specifier |
|
|
|
; |
|
|
|
|
|
|
|
glsl_parameter_qualifier: |
|
|
|
/* empty */ |
|
|
|
| GHT_IN |
|
|
|
| GHT_OUT |
|
|
|
| GHT_INOUT |
|
|
|
; |
|
|
|
|
|
|
|
glsl_parameter_type_specifier: |
|
|
|
glsl_type_specifier |
|
|
|
; |
|
|
|
|
|
|
|
glsl_init_declarator_list: |
|
|
|
glsl_single_declaration |
|
|
|
| glsl_init_declarator_list ',' IDENTIFIER |
|
|
|
| glsl_init_declarator_list ',' IDENTIFIER '[' ']' |
|
|
|
| glsl_init_declarator_list ',' IDENTIFIER '[' glsl_constant_expression ']' |
|
|
|
| glsl_init_declarator_list ',' IDENTIFIER '[' ']' '=' glsl_initializer |
|
|
|
| glsl_init_declarator_list ',' IDENTIFIER '[' glsl_constant_expression ']' '=' glsl_initializer |
|
|
|
| glsl_init_declarator_list ',' IDENTIFIER '=' glsl_initializer |
|
|
|
; |
|
|
|
|
|
|
|
glsl_single_declaration: |
|
|
|
glsl_fully_specified_type |
|
|
|
| glsl_fully_specified_type IDENTIFIER |
|
|
|
| glsl_fully_specified_type IDENTIFIER '[' ']' |
|
|
|
| glsl_fully_specified_type IDENTIFIER '[' glsl_constant_expression ']' |
|
|
|
| glsl_fully_specified_type IDENTIFIER '[' ']' '=' glsl_initializer |
|
|
|
| glsl_fully_specified_type IDENTIFIER '[' glsl_constant_expression ']' '=' glsl_initializer |
|
|
|
| glsl_fully_specified_type IDENTIFIER '=' glsl_initializer |
|
|
|
| INVARIANT IDENTIFIER |
|
|
|
; |
|
|
|
|
|
|
|
glsl_fully_specified_type: |
|
|
|
glsl_type_specifier |
|
|
|
| glsl_type_qualifier glsl_type_specifier |
|
|
|
; |
|
|
|
|
|
|
|
glsl_invariant_qualifier: |
|
|
|
INVARIANT |
|
|
|
; |
|
|
|
|
|
|
|
glsl_interpolation_qualifier: |
|
|
|
GT_SMOOTH |
|
|
|
| GT_FLAT |
|
|
|
| GHT_NOPERSPECTIVE |
|
|
|
; |
|
|
|
|
|
|
|
glsl_layout_qualifier: |
|
|
|
GT_LAYOUT '(' glsl_layout_qualifier_id_list ')' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_layout_qualifier_id_list: |
|
|
|
glsl_layout_qualifier_id |
|
|
|
| glsl_layout_qualifier_id_list ',' glsl_layout_qualifier_id |
|
|
|
; |
|
|
|
|
|
|
|
glsl_layout_qualifier_id: |
|
|
|
IDENTIFIER |
|
|
|
| IDENTIFIER '=' INTCONSTANT |
|
|
|
; |
|
|
|
|
|
|
|
glsl_parameter_type_qualifier: |
|
|
|
GHT_CONST |
|
|
|
; |
|
|
|
|
|
|
|
glsl_type_qualifier: |
|
|
|
glsl_storage_qualifier |
|
|
|
| glsl_layout_qualifier |
|
|
|
| glsl_layout_qualifier glsl_storage_qualifier |
|
|
|
| glsl_interpolation_qualifier glsl_storage_qualifier |
|
|
|
| glsl_interpolation_qualifier |
|
|
|
| glsl_invariant_qualifier glsl_storage_qualifier |
|
|
|
| glsl_invariant_qualifier glsl_interpolation_qualifier glsl_storage_qualifier |
|
|
|
| glsl_invariant_qualifier |
|
|
|
; |
|
|
|
|
|
|
|
glsl_storage_qualifier: |
|
|
|
GHT_CONST |
|
|
|
| GHT_IN |
|
|
|
| GHT_OUT |
|
|
|
| GHT_CENTROID GHT_IN |
|
|
|
| GHT_CENTROID GHT_OUT |
|
|
|
| GT_PATCH GHT_IN |
|
|
|
| GT_PATCH GHT_OUT |
|
|
|
| GT_SAMPLE GHT_IN |
|
|
|
| GT_SAMPLE GHT_OUT |
|
|
|
| GHT_UNIFORM |
|
|
|
; |
|
|
|
|
|
|
|
glsl_type_specifier: |
|
|
|
glsl_type_specifier_no_prec |
|
|
|
| glsl_precision_qualifier glsl_type_specifier_no_prec |
|
|
|
; |
|
|
|
|
|
|
|
glsl_type_specifier_no_prec: |
|
|
|
glsl_type_specifier_nonarray |
|
|
|
| glsl_type_specifier_nonarray '[' ']' |
|
|
|
| glsl_type_specifier_nonarray '[' glsl_constant_expression ']' |
|
|
|
|
|
|
|
glsl_type_specifier_nonarray: |
|
|
|
GHT_VOID |
|
|
|
| GHT_FLOAT |
|
|
|
| GHT_DOUBLE |
|
|
|
| GHT_INT |
|
|
|
| GHT_UINT |
|
|
|
| GHT_BOOL |
|
|
|
| GT_VEC2 |
|
|
|
| GT_VEC3 |
|
|
|
| GT_VEC4 |
|
|
|
| GT_DVEC2 |
|
|
|
| GT_DVEC3 |
|
|
|
| GT_DVEC4 |
|
|
|
| GT_BVEC2 |
|
|
|
| GT_BVEC3 |
|
|
|
| GT_BVEC4 |
|
|
|
| GT_IVEC2 |
|
|
|
| GT_IVEC3 |
|
|
|
| GT_IVEC4 |
|
|
|
| GT_UVEC2 |
|
|
|
| GT_UVEC3 |
|
|
|
| GT_UVEC4 |
|
|
|
| GT_MAT2 |
|
|
|
| GT_MAT3 |
|
|
|
| GT_MAT4 |
|
|
|
| GT_MAT2X2 |
|
|
|
| GT_MAT2X3 |
|
|
|
| GT_MAT2X4 |
|
|
|
| GT_MAT3X2 |
|
|
|
| GT_MAT3X3 |
|
|
|
| GT_MAT3X4 |
|
|
|
| GT_MAT4X2 |
|
|
|
| GT_MAT4X3 |
|
|
|
| GT_MAT4X4 |
|
|
|
| GT_DMAT2 |
|
|
|
| GT_DMAT3 |
|
|
|
| GT_DMAT4 |
|
|
|
| GT_DMAT2X2 |
|
|
|
| GT_DMAT2X3 |
|
|
|
| GT_DMAT2X4 |
|
|
|
| GT_DMAT3X2 |
|
|
|
| GT_DMAT3X3 |
|
|
|
| GT_DMAT3X4 |
|
|
|
| GT_DMAT4X2 |
|
|
|
| GT_DMAT4X3 |
|
|
|
| GT_DMAT4X4 |
|
|
|
| GHT_SAMPLER1D |
|
|
|
| GHT_SAMPLER2D |
|
|
|
| GHT_SAMPLER3D |
|
|
|
| GHT_SAMPLERCUBE |
|
|
|
| GT_SAMPLER1DSHADOW |
|
|
|
| GT_SAMPLER2DSHADOW |
|
|
|
| GT_SAMPLERCUBESHADOW |
|
|
|
| GT_SAMPLER1DARRAY |
|
|
|
| GT_SAMPLER2DARRAY |
|
|
|
| GT_SAMPLER1DARRAYSHADOW |
|
|
|
| GT_SAMPLER2DARRAYSHADOW |
|
|
|
| GT_SAMPLERCUBEARRAY |
|
|
|
| GT_SAMPLERCUBEARRAYSHADOW |
|
|
|
| GT_ISAMPLER1D |
|
|
|
| GT_ISAMPLER2D |
|
|
|
| GT_ISAMPLER3D |
|
|
|
| GT_ISAMPLERCUBE |
|
|
|
| GT_ISAMPLER1DARRAY |
|
|
|
| GT_ISAMPLER2DARRAY |
|
|
|
| GT_ISAMPLERCUBEARRAY |
|
|
|
| GT_USAMPLER1D |
|
|
|
| GT_USAMPLER2D |
|
|
|
| GT_USAMPLER3D |
|
|
|
| GT_USAMPLERCUBE |
|
|
|
| GT_USAMPLER1DARRAY |
|
|
|
| GT_USAMPLER2DARRAY |
|
|
|
| GT_USAMPLERCUBEARRAY |
|
|
|
| GT_SAMPLER2DRECT |
|
|
|
| GT_SAMPLER2DRECTSHADOW |
|
|
|
| GT_ISAMPLER2DRECT |
|
|
|
| GT_USAMPLER2DRECT |
|
|
|
| GT_SAMPLERBUFFER |
|
|
|
| GT_ISAMPLERBUFFER |
|
|
|
| GT_USAMPLERBUFFER |
|
|
|
| GT_SAMPLER2DMS |
|
|
|
| GT_ISAMPLER2DMS |
|
|
|
| GT_USAMPLER2DMS |
|
|
|
| GT_SAMPLER2DMSARRAY |
|
|
|
| GT_ISAMPLER2DMSARRAY |
|
|
|
| GT_USAMPLER2DMSARRAY |
|
|
|
| glsl_struct_specifier |
|
|
|
| TYPE_NAME |
|
|
|
; |
|
|
|
|
|
|
|
glsl_precision_qualifier: |
|
|
|
HIGH_PRECISION |
|
|
|
| MEDIUM_PRECISION |
|
|
|
| LOW_PRECISION |
|
|
|
; |
|
|
|
|
|
|
|
glsl_struct_specifier: |
|
|
|
GHT_STRUCT IDENTIFIER '{' glsl_struct_declaration_list '}' |
|
|
|
| GHT_STRUCT '{' glsl_struct_declaration_list '}' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_struct_declaration_list: |
|
|
|
glsl_struct_declaration |
|
|
|
| glsl_struct_declaration_list glsl_struct_declaration |
|
|
|
; |
|
|
|
|
|
|
|
glsl_struct_declaration: |
|
|
|
glsl_type_specifier glsl_struct_declarator_list ';' |
|
|
|
| glsl_type_qualifier glsl_type_specifier glsl_struct_declarator_list ';' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_struct_declarator_list: |
|
|
|
glsl_struct_declarator |
|
|
|
| glsl_struct_declarator_list ',' glsl_struct_declarator |
|
|
|
; |
|
|
|
|
|
|
|
glsl_struct_declarator: |
|
|
|
IDENTIFIER |
|
|
|
| IDENTIFIER '[' ']' |
|
|
|
| IDENTIFIER '[' glsl_constant_expression ']' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_initializer: |
|
|
|
glsl_assignment_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_declaration_statement: |
|
|
|
glsl_declaration |
|
|
|
; |
|
|
|
|
|
|
|
glsl_statement: |
|
|
|
glsl_compound_statement |
|
|
|
| glsl_simple_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_simple_statement: |
|
|
|
glsl_declaration_statement |
|
|
|
| glsl_expression_statement |
|
|
|
| glsl_selection_statement |
|
|
|
| glsl_switch_statement |
|
|
|
| glsl_case_label |
|
|
|
| glsl_iteration_statement |
|
|
|
| glsl_jump_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_compound_statement: |
|
|
|
'{' '}' |
|
|
|
| '{' glsl_statement_list '}' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_statement_no_new_scope: |
|
|
|
glsl_compound_statement_no_new_scope |
|
|
|
| glsl_simple_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_compound_statement_no_new_scope: |
|
|
|
'{' '}' |
|
|
|
| '{' glsl_statement_list '}' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_statement_list: |
|
|
|
glsl_statement |
|
|
|
| glsl_statement_list glsl_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_expression_statement: |
|
|
|
';' |
|
|
|
| glsl_expression ';' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_selection_statement: |
|
|
|
GHT_IF '(' glsl_expression ')' glsl_selection_rest_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_selection_rest_statement: |
|
|
|
glsl_statement GHT_ELSE glsl_statement |
|
|
|
| glsl_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_condition: |
|
|
|
glsl_expression |
|
|
|
| glsl_fully_specified_type IDENTIFIER '=' glsl_initializer |
|
|
|
; |
|
|
|
|
|
|
|
glsl_switch_statement: |
|
|
|
GHT_SWITCH '(' glsl_expression ')' '{' glsl_switch_statement_list '}' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_switch_statement_list: |
|
|
|
/* nothing */ |
|
|
|
| glsl_statement_list |
|
|
|
; |
|
|
|
|
|
|
|
glsl_case_label: |
|
|
|
GHT_CASE glsl_expression ':' |
|
|
|
| GHT_DEFAULT ':' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_iteration_statement: |
|
|
|
GHT_WHILE '(' glsl_condition ')' glsl_statement_no_new_scope |
|
|
|
| GHT_DO glsl_statement GHT_WHILE '(' glsl_expression ')' ';' |
|
|
|
| GHT_FOR '(' glsl_for_init_statement glsl_for_rest_statement ')' glsl_statement_no_new_scope |
|
|
|
; |
|
|
|
|
|
|
|
glsl_for_init_statement: |
|
|
|
glsl_expression_statement |
|
|
|
| glsl_declaration_statement |
|
|
|
; |
|
|
|
|
|
|
|
glsl_conditionopt: |
|
|
|
glsl_condition |
|
|
|
| /* empty */ |
|
|
|
; |
|
|
|
|
|
|
|
glsl_for_rest_statement: |
|
|
|
glsl_conditionopt ';' |
|
|
|
| glsl_conditionopt ';' glsl_expression |
|
|
|
; |
|
|
|
|
|
|
|
glsl_jump_statement: |
|
|
|
GHT_CONTINUE ';' |
|
|
|
| GHT_BREAK ';' |
|
|
|
| GHT_RETURN ';' |
|
|
|
| GHT_RETURN glsl_expression ';' |
|
|
|
| GHT_DISCARD ';' |
|
|
|
; |
|
|
|
|
|
|
|
glsl_translation_unit: |
|
|
|
glsl_external_declaration |
|
|
|
glsl_translation_unit glsl_external_declaration |
|
|
|
; |
|
|
|
|
|
|
|
glsl_external_declaration: |
|
|
|
glsl_function_definition |
|
|
|
| glsl_declaration |
|
|
|
; |
|
|
|
|
|
|
|
glsl_function_definition: |
|
|
|
glsl_function_prototype glsl_compound_statement_no_new_scope |
|
|
|
; |
|
|
|
|
|
|
|
/* |
|
|
|
* Grammar for shaders |
|
|
|
*/ |
|
|
|