mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 13:38:06 +02:00
slang: Do not parse whitespace.
The preprocessor tokeniser deals with those.
This commit is contained in:
parent
58fa89c902
commit
2ec2936454
2 changed files with 72 additions and 190 deletions
|
|
@ -692,11 +692,7 @@ function_header_with_parameters_1
|
|||
* <function_header> ::= <fully_specified_type> <identifier> "("
|
||||
*/
|
||||
function_header
|
||||
function_header_nospace .or function_header_space;
|
||||
function_header_space
|
||||
fully_specified_type_space .and space .and function_decl_identifier .and lparen;
|
||||
function_header_nospace
|
||||
fully_specified_type_nospace .and function_decl_identifier .and lparen;
|
||||
fully_specified_type .and function_decl_identifier .and lparen;
|
||||
|
||||
/*
|
||||
* <function_decl_identifier> ::= "__constructor"
|
||||
|
|
@ -793,11 +789,7 @@ overriden_operator
|
|||
* | <type_specifier> <identifier> "[" <constant_expression> "]"
|
||||
*/
|
||||
parameter_declarator
|
||||
parameter_declarator_nospace .or parameter_declarator_space;
|
||||
parameter_declarator_nospace
|
||||
type_specifier_nospace .and identifier .and parameter_declarator_1;
|
||||
parameter_declarator_space
|
||||
type_specifier_space .and space .and identifier .and parameter_declarator_1;
|
||||
type_specifier .and identifier .and parameter_declarator_1;
|
||||
parameter_declarator_1
|
||||
parameter_declarator_2 .emit PARAMETER_ARRAY_PRESENT .or
|
||||
.true .emit PARAMETER_ARRAY_NOT_PRESENT;
|
||||
|
|
@ -825,15 +817,13 @@ parameter_declaration
|
|||
parameter_declaration_1
|
||||
parameter_declaration_2 .or parameter_declaration_3;
|
||||
parameter_declaration_2
|
||||
type_qualifier .and space .and parameter_qualifier .and parameter_declaration_4;
|
||||
type_qualifier .and parameter_qualifier .and parameter_declaration_4;
|
||||
parameter_declaration_3
|
||||
parameter_qualifier .emit TYPE_QUALIFIER_NONE .and parameter_declaration_4;
|
||||
parameter_declaration_4
|
||||
parameter_declaration_optprec .and parameter_declaration_rest;
|
||||
parameter_declaration_optprec
|
||||
parameter_declaration_prec .or .true .emit PRECISION_DEFAULT;
|
||||
parameter_declaration_prec
|
||||
precision .and space;
|
||||
precision .or .true .emit PRECISION_DEFAULT;
|
||||
parameter_declaration_rest
|
||||
parameter_declarator .or parameter_type_specifier;
|
||||
|
||||
|
|
@ -846,8 +836,6 @@ parameter_declaration_rest
|
|||
parameter_qualifier
|
||||
parameter_qualifier_1 .or .true .emit PARAM_QUALIFIER_IN;
|
||||
parameter_qualifier_1
|
||||
parameter_qualifier_2 .and space;
|
||||
parameter_qualifier_2
|
||||
"in" .emit PARAM_QUALIFIER_IN .or
|
||||
"out" .emit PARAM_QUALIFIER_OUT .or
|
||||
"inout" .emit PARAM_QUALIFIER_INOUT;
|
||||
|
|
@ -857,9 +845,7 @@ parameter_qualifier_2
|
|||
* | <type_specifier> "[" <constant_expression> "]"
|
||||
*/
|
||||
parameter_type_specifier
|
||||
parameter_type_specifier_1 .and .true .emit '\0' .and parameter_type_specifier_2;
|
||||
parameter_type_specifier_1
|
||||
type_specifier_nospace .or type_specifier_space;
|
||||
type_specifier .and .true .emit '\0' .and parameter_type_specifier_2;
|
||||
parameter_type_specifier_2
|
||||
parameter_type_specifier_3 .emit PARAMETER_ARRAY_PRESENT .or
|
||||
.true .emit PARAMETER_ARRAY_NOT_PRESENT;
|
||||
|
|
@ -895,18 +881,10 @@ init_declarator_list_5
|
|||
* | <fully_specified_type> <identifier> "=" <initializer>
|
||||
*/
|
||||
single_declaration
|
||||
single_declaration_nospace .or single_declaration_space;
|
||||
single_declaration_space
|
||||
fully_specified_type_space .and single_declaration_space_1;
|
||||
single_declaration_nospace
|
||||
fully_specified_type_nospace .and single_declaration_nospace_1;
|
||||
single_declaration_space_1
|
||||
single_declaration_space_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;
|
||||
single_declaration_nospace_1
|
||||
single_declaration_nospace_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;
|
||||
single_declaration_space_2
|
||||
space .and identifier .and single_declaration_3;
|
||||
single_declaration_nospace_2
|
||||
fully_specified_type .and single_declaration_1;
|
||||
single_declaration_1
|
||||
single_declaration_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;
|
||||
single_declaration_2
|
||||
identifier .and single_declaration_3;
|
||||
single_declaration_3
|
||||
single_declaration_4 .or single_declaration_5 .or .true .emit VARIABLE_NONE;
|
||||
|
|
@ -922,26 +900,16 @@ single_declaration_6
|
|||
*
|
||||
* Example: "invariant varying highp vec3"
|
||||
*/
|
||||
fully_specified_type_space
|
||||
fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier_space;
|
||||
fully_specified_type_nospace
|
||||
fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier_nospace;
|
||||
fully_specified_type
|
||||
fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier;
|
||||
fully_specified_type_optinvariant
|
||||
fully_specified_type_invariant .or .true .emit TYPE_VARIANT;
|
||||
fully_specified_type_invariant
|
||||
invariant_qualifier .and space;
|
||||
invariant_qualifier .or .true .emit TYPE_VARIANT;
|
||||
fully_specified_type_optcentroid
|
||||
fully_specified_type_centroid .or .true .emit TYPE_CENTER;
|
||||
fully_specified_type_centroid
|
||||
centroid_qualifier .and space;
|
||||
centroid_qualifier .or .true .emit TYPE_CENTER;
|
||||
fully_specified_type_optqual
|
||||
fully_specified_type_qual .or .true .emit TYPE_QUALIFIER_NONE;
|
||||
fully_specified_type_qual
|
||||
type_qualifier .and space;
|
||||
type_qualifier .or .true .emit TYPE_QUALIFIER_NONE;
|
||||
fully_specified_type_optprec
|
||||
fully_specified_type_prec .or .true .emit PRECISION_DEFAULT;
|
||||
fully_specified_type_prec
|
||||
precision .and space;
|
||||
precision .or .true .emit PRECISION_DEFAULT;
|
||||
|
||||
/*
|
||||
* <invariant_qualifier> ::= "invariant"
|
||||
|
|
@ -1006,7 +974,8 @@ type_qualifier
|
|||
* | <struct_specifier>
|
||||
* | <type_name>
|
||||
*/
|
||||
type_specifier_nonarray_space
|
||||
type_specifier_nonarray
|
||||
struct_specifier .emit TYPE_SPECIFIER_STRUCT .or
|
||||
"void" .emit TYPE_SPECIFIER_VOID .or
|
||||
"float" .emit TYPE_SPECIFIER_FLOAT .or
|
||||
"int" .emit TYPE_SPECIFIER_INT .or
|
||||
|
|
@ -1038,22 +1007,16 @@ type_specifier_nonarray_space
|
|||
"sampler2DRect" .emit TYPE_SPECIFIER_SAMPLER2DRECT .or
|
||||
"sampler2DRectShadow" .emit TYPE_SPECIFIER_SAMPLER2DRECTSHADOW .or
|
||||
type_name .emit TYPE_SPECIFIER_TYPENAME;
|
||||
type_specifier_nonarray_nospace
|
||||
struct_specifier .emit TYPE_SPECIFIER_STRUCT;
|
||||
type_specifier_nonarray
|
||||
type_specifier_nonarray_nospace .or type_specifier_nonarray_space;
|
||||
|
||||
/*
|
||||
* <type_specifier> ::= <type_specifier_nonarray>
|
||||
* | <type_specifier_nonarray> "[" <constant_expression> "]"
|
||||
*/
|
||||
type_specifier_space
|
||||
type_specifier_nonarray_space .and .true .emit TYPE_SPECIFIER_NONARRAY;
|
||||
type_specifier_nospace
|
||||
type_specifier_nospace_array .or type_specifier_nospace_1;
|
||||
type_specifier_nospace_1
|
||||
type_specifier_nonarray_nospace .and .true .emit TYPE_SPECIFIER_NONARRAY;
|
||||
type_specifier_nospace_array
|
||||
type_specifier
|
||||
type_specifier_array .or type_specifier_1;
|
||||
type_specifier_1
|
||||
type_specifier_nonarray .and .true .emit TYPE_SPECIFIER_NONARRAY;
|
||||
type_specifier_array
|
||||
type_specifier_nonarray .and lbracket .emit TYPE_SPECIFIER_ARRAY .and constant_expression .and rbracket;
|
||||
|
||||
/*
|
||||
|
|
@ -1061,12 +1024,10 @@ type_specifier_nospace_array
|
|||
* | "struct" "{" <struct_declaration_list> "}"
|
||||
*/
|
||||
struct_specifier
|
||||
"struct" .and struct_specifier_1 .and optional_space .and lbrace .error LBRACE_EXPECTED .and
|
||||
"struct" .and struct_specifier_1 .and lbrace .error LBRACE_EXPECTED .and
|
||||
struct_declaration_list .and rbrace .emit FIELD_NONE;
|
||||
struct_specifier_1
|
||||
struct_specifier_2 .or .true .emit '\0';
|
||||
struct_specifier_2
|
||||
space .and identifier;
|
||||
identifier .or .true .emit '\0';
|
||||
|
||||
/*
|
||||
* <struct_declaration_list> ::= <struct_declaration>
|
||||
|
|
@ -1079,11 +1040,7 @@ struct_declaration_list
|
|||
* <struct_declaration> ::= <type_specifier> <struct_declarator_list> ";"
|
||||
*/
|
||||
struct_declaration
|
||||
struct_declaration_nospace .or struct_declaration_space;
|
||||
struct_declaration_space
|
||||
type_specifier_space .and space .and struct_declarator_list .and semicolon .emit FIELD_NONE;
|
||||
struct_declaration_nospace
|
||||
type_specifier_nospace .and struct_declarator_list .and semicolon .emit FIELD_NONE;
|
||||
type_specifier .and struct_declarator_list .and semicolon .emit FIELD_NONE;
|
||||
|
||||
/*
|
||||
* <struct_declarator_list> ::= <struct_declarator>
|
||||
|
|
@ -1123,10 +1080,6 @@ declaration_statement
|
|||
*/
|
||||
statement
|
||||
compound_statement .or simple_statement;
|
||||
statement_space
|
||||
compound_statement .or statement_space_1;
|
||||
statement_space_1
|
||||
space .and simple_statement;
|
||||
|
||||
/*
|
||||
* <simple_statement> ::= <__asm_statement>
|
||||
|
|
@ -1209,7 +1162,7 @@ selection_rest_statement
|
|||
selection_rest_statement_1
|
||||
selection_rest_statement_2 .or .true .emit OP_EXPRESSION .emit OP_PUSH_VOID .emit OP_END;
|
||||
selection_rest_statement_2
|
||||
"else" .and optional_space .and statement;
|
||||
"else" .and statement;
|
||||
|
||||
/*
|
||||
* <condition> ::= <expression>
|
||||
|
|
@ -1220,17 +1173,11 @@ selection_rest_statement_2
|
|||
*/
|
||||
condition
|
||||
condition_1 .emit OP_DECLARE .emit DECLARATION_INIT_DECLARATOR_LIST .or
|
||||
condition_3 .emit OP_EXPRESSION;
|
||||
condition_2 .emit OP_EXPRESSION;
|
||||
condition_1
|
||||
condition_1_nospace .or condition_1_space;
|
||||
condition_1_nospace
|
||||
fully_specified_type_nospace .and condition_2;
|
||||
condition_1_space
|
||||
fully_specified_type_space .and space .and condition_2;
|
||||
fully_specified_type .and identifier .emit VARIABLE_IDENTIFIER .and
|
||||
equals .emit VARIABLE_INITIALIZER .and initializer .and .true .emit DECLARATOR_NONE;
|
||||
condition_2
|
||||
identifier .emit VARIABLE_IDENTIFIER .and equals .emit VARIABLE_INITIALIZER .and
|
||||
initializer .and .true .emit DECLARATOR_NONE;
|
||||
condition_3
|
||||
expression .and .true .emit OP_END;
|
||||
|
||||
/*
|
||||
|
|
@ -1244,7 +1191,7 @@ iteration_statement_1
|
|||
"while" .emit OP_WHILE .and lparen .error LPAREN_EXPECTED .and condition .and
|
||||
rparen .error RPAREN_EXPECTED .and statement;
|
||||
iteration_statement_2
|
||||
"do" .emit OP_DO .and statement_space .and "while" .and lparen .error LPAREN_EXPECTED .and
|
||||
"do" .emit OP_DO .and statement .and "while" .and lparen .error LPAREN_EXPECTED .and
|
||||
expression .and rparen .error RPAREN_EXPECTED .emit OP_END .and semicolon;
|
||||
iteration_statement_3
|
||||
"for" .emit OP_FOR .and lparen .error LPAREN_EXPECTED .and for_init_statement .and
|
||||
|
|
@ -1295,7 +1242,7 @@ jump_statement_1
|
|||
jump_statement_2
|
||||
"break" .and semicolon .emit OP_BREAK;
|
||||
jump_statement_3
|
||||
"return" .emit OP_RETURN .and optional_space .and expression .and semicolon .emit OP_END;
|
||||
"return" .emit OP_RETURN .and expression .and semicolon .emit OP_END;
|
||||
jump_statement_4
|
||||
"return" .emit OP_RETURN .and semicolon .emit OP_PUSH_VOID .emit OP_END;
|
||||
jump_statement_5
|
||||
|
|
@ -1308,7 +1255,7 @@ jump_statement_5
|
|||
* normally slang disallows __asm statements
|
||||
*/
|
||||
__asm_statement
|
||||
"__asm" .and space .and identifier .and space .and asm_arguments .and semicolon .emit OP_END;
|
||||
"__asm" .and identifier .and asm_arguments .and semicolon .emit OP_END;
|
||||
|
||||
/*
|
||||
* <asm_arguments> ::= <asm_argument>
|
||||
|
|
@ -1343,9 +1290,8 @@ var_with_field
|
|||
* | <translation_unit> <external_declaration>
|
||||
*/
|
||||
translation_unit
|
||||
optional_space .emit REVISION .and external_declaration .error INVALID_EXTERNAL_DECLARATION .and
|
||||
.loop external_declaration .and optional_space .and
|
||||
'\0' .error INVALID_EXTERNAL_DECLARATION .emit EXTERNAL_NULL;
|
||||
.true .emit REVISION .and external_declaration .error INVALID_EXTERNAL_DECLARATION .and
|
||||
.loop external_declaration .and '\0' .error INVALID_EXTERNAL_DECLARATION .emit EXTERNAL_NULL;
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -1363,7 +1309,7 @@ external_declaration
|
|||
* <precision_stmt> ::= "precision" <precision> <prectype>
|
||||
*/
|
||||
precision_stmt
|
||||
"precision" .and space .and precision .error INVALID_PRECISION .and space .and prectype .error INVALID_PRECISION_TYPE .and semicolon;
|
||||
"precision" .and precision .error INVALID_PRECISION .and prectype .error INVALID_PRECISION_TYPE .and semicolon;
|
||||
|
||||
/*
|
||||
* <precision> ::= "lowp"
|
||||
|
|
@ -1397,7 +1343,7 @@ prectype
|
|||
* <invariant_stmt> ::= "invariant" identifier;
|
||||
*/
|
||||
invariant_stmt
|
||||
"invariant" .and space .and identifier .and semicolon;
|
||||
"invariant" .and identifier .and semicolon;
|
||||
|
||||
|
||||
/*
|
||||
|
|
@ -1440,12 +1386,6 @@ intconstant
|
|||
boolconstant
|
||||
boolean .emit OP_PUSH_BOOL;
|
||||
|
||||
optional_space
|
||||
.true;
|
||||
|
||||
space
|
||||
.true;
|
||||
|
||||
/* lexical rules */
|
||||
|
||||
/*ampersand
|
||||
|
|
|
|||
|
|
@ -321,11 +321,7 @@
|
|||
"function_header_with_parameters_1\n"
|
||||
" comma .and parameter_declaration;\n"
|
||||
"function_header\n"
|
||||
" function_header_nospace .or function_header_space;\n"
|
||||
"function_header_space\n"
|
||||
" fully_specified_type_space .and space .and function_decl_identifier .and lparen;\n"
|
||||
"function_header_nospace\n"
|
||||
" fully_specified_type_nospace .and function_decl_identifier .and lparen;\n"
|
||||
" fully_specified_type .and function_decl_identifier .and lparen;\n"
|
||||
"function_decl_identifier\n"
|
||||
" .if (parsing_builtin != 0) __operator .emit FUNCTION_OPERATOR .or\n"
|
||||
" .if (parsing_builtin != 0) \"__constructor\" .emit FUNCTION_CONSTRUCTOR .or\n"
|
||||
|
|
@ -362,11 +358,7 @@
|
|||
" \n"
|
||||
" caretcaret .emit OPERATOR_LOGICALXOR ;\n"
|
||||
"parameter_declarator\n"
|
||||
" parameter_declarator_nospace .or parameter_declarator_space;\n"
|
||||
"parameter_declarator_nospace\n"
|
||||
" type_specifier_nospace .and identifier .and parameter_declarator_1;\n"
|
||||
"parameter_declarator_space\n"
|
||||
" type_specifier_space .and space .and identifier .and parameter_declarator_1;\n"
|
||||
" type_specifier .and identifier .and parameter_declarator_1;\n"
|
||||
"parameter_declarator_1\n"
|
||||
" parameter_declarator_2 .emit PARAMETER_ARRAY_PRESENT .or\n"
|
||||
" .true .emit PARAMETER_ARRAY_NOT_PRESENT;\n"
|
||||
|
|
@ -377,29 +369,23 @@
|
|||
"parameter_declaration_1\n"
|
||||
" parameter_declaration_2 .or parameter_declaration_3;\n"
|
||||
"parameter_declaration_2\n"
|
||||
" type_qualifier .and space .and parameter_qualifier .and parameter_declaration_4;\n"
|
||||
" type_qualifier .and parameter_qualifier .and parameter_declaration_4;\n"
|
||||
"parameter_declaration_3\n"
|
||||
" parameter_qualifier .emit TYPE_QUALIFIER_NONE .and parameter_declaration_4;\n"
|
||||
"parameter_declaration_4\n"
|
||||
" parameter_declaration_optprec .and parameter_declaration_rest;\n"
|
||||
"parameter_declaration_optprec\n"
|
||||
" parameter_declaration_prec .or .true .emit PRECISION_DEFAULT;\n"
|
||||
"parameter_declaration_prec\n"
|
||||
" precision .and space;\n"
|
||||
" precision .or .true .emit PRECISION_DEFAULT;\n"
|
||||
"parameter_declaration_rest\n"
|
||||
" parameter_declarator .or parameter_type_specifier;\n"
|
||||
"parameter_qualifier\n"
|
||||
" parameter_qualifier_1 .or .true .emit PARAM_QUALIFIER_IN;\n"
|
||||
"parameter_qualifier_1\n"
|
||||
" parameter_qualifier_2 .and space;\n"
|
||||
"parameter_qualifier_2\n"
|
||||
" \"in\" .emit PARAM_QUALIFIER_IN .or\n"
|
||||
" \"out\" .emit PARAM_QUALIFIER_OUT .or\n"
|
||||
" \"inout\" .emit PARAM_QUALIFIER_INOUT;\n"
|
||||
"parameter_type_specifier\n"
|
||||
" parameter_type_specifier_1 .and .true .emit '\\0' .and parameter_type_specifier_2;\n"
|
||||
"parameter_type_specifier_1\n"
|
||||
" type_specifier_nospace .or type_specifier_space;\n"
|
||||
" type_specifier .and .true .emit '\\0' .and parameter_type_specifier_2;\n"
|
||||
"parameter_type_specifier_2\n"
|
||||
" parameter_type_specifier_3 .emit PARAMETER_ARRAY_PRESENT .or\n"
|
||||
" .true .emit PARAMETER_ARRAY_NOT_PRESENT;\n"
|
||||
|
|
@ -419,18 +405,10 @@
|
|||
"init_declarator_list_5\n"
|
||||
" constant_expression .emit VARIABLE_ARRAY_EXPLICIT .or .true .emit VARIABLE_ARRAY_UNKNOWN;\n"
|
||||
"single_declaration\n"
|
||||
" single_declaration_nospace .or single_declaration_space;\n"
|
||||
"single_declaration_space\n"
|
||||
" fully_specified_type_space .and single_declaration_space_1;\n"
|
||||
"single_declaration_nospace\n"
|
||||
" fully_specified_type_nospace .and single_declaration_nospace_1;\n"
|
||||
"single_declaration_space_1\n"
|
||||
" single_declaration_space_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n"
|
||||
"single_declaration_nospace_1\n"
|
||||
" single_declaration_nospace_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n"
|
||||
"single_declaration_space_2\n"
|
||||
" space .and identifier .and single_declaration_3;\n"
|
||||
"single_declaration_nospace_2\n"
|
||||
" fully_specified_type .and single_declaration_1;\n"
|
||||
"single_declaration_1\n"
|
||||
" single_declaration_2 .emit VARIABLE_IDENTIFIER .or .true .emit VARIABLE_NONE;\n"
|
||||
"single_declaration_2\n"
|
||||
" identifier .and single_declaration_3;\n"
|
||||
"single_declaration_3\n"
|
||||
" single_declaration_4 .or single_declaration_5 .or .true .emit VARIABLE_NONE;\n"
|
||||
|
|
@ -440,26 +418,16 @@
|
|||
" lbracket .and single_declaration_6 .and rbracket;\n"
|
||||
"single_declaration_6\n"
|
||||
" constant_expression .emit VARIABLE_ARRAY_EXPLICIT .or .true .emit VARIABLE_ARRAY_UNKNOWN;\n"
|
||||
"fully_specified_type_space\n"
|
||||
" fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier_space;\n"
|
||||
"fully_specified_type_nospace\n"
|
||||
" fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier_nospace;\n"
|
||||
"fully_specified_type\n"
|
||||
" fully_specified_type_optinvariant .and fully_specified_type_optcentroid .and fully_specified_type_optqual .and fully_specified_type_optprec .and type_specifier;\n"
|
||||
"fully_specified_type_optinvariant\n"
|
||||
" fully_specified_type_invariant .or .true .emit TYPE_VARIANT;\n"
|
||||
"fully_specified_type_invariant\n"
|
||||
" invariant_qualifier .and space;\n"
|
||||
" invariant_qualifier .or .true .emit TYPE_VARIANT;\n"
|
||||
"fully_specified_type_optcentroid\n"
|
||||
" fully_specified_type_centroid .or .true .emit TYPE_CENTER;\n"
|
||||
"fully_specified_type_centroid\n"
|
||||
" centroid_qualifier .and space;\n"
|
||||
" centroid_qualifier .or .true .emit TYPE_CENTER;\n"
|
||||
"fully_specified_type_optqual\n"
|
||||
" fully_specified_type_qual .or .true .emit TYPE_QUALIFIER_NONE;\n"
|
||||
"fully_specified_type_qual\n"
|
||||
" type_qualifier .and space;\n"
|
||||
" type_qualifier .or .true .emit TYPE_QUALIFIER_NONE;\n"
|
||||
"fully_specified_type_optprec\n"
|
||||
" fully_specified_type_prec .or .true .emit PRECISION_DEFAULT;\n"
|
||||
"fully_specified_type_prec\n"
|
||||
" precision .and space;\n"
|
||||
" precision .or .true .emit PRECISION_DEFAULT;\n"
|
||||
"invariant_qualifier\n"
|
||||
" \"invariant\" .emit TYPE_INVARIANT;\n"
|
||||
"centroid_qualifier\n"
|
||||
|
|
@ -471,7 +439,8 @@
|
|||
" \"uniform\" .emit TYPE_QUALIFIER_UNIFORM .or\n"
|
||||
" .if (parsing_builtin != 0) \"__fixed_output\" .emit TYPE_QUALIFIER_FIXEDOUTPUT .or\n"
|
||||
" .if (parsing_builtin != 0) \"__fixed_input\" .emit TYPE_QUALIFIER_FIXEDINPUT;\n"
|
||||
"type_specifier_nonarray_space\n"
|
||||
"type_specifier_nonarray\n"
|
||||
" struct_specifier .emit TYPE_SPECIFIER_STRUCT .or\n"
|
||||
" \"void\" .emit TYPE_SPECIFIER_VOID .or\n"
|
||||
" \"float\" .emit TYPE_SPECIFIER_FLOAT .or\n"
|
||||
" \"int\" .emit TYPE_SPECIFIER_INT .or\n"
|
||||
|
|
@ -503,33 +472,21 @@
|
|||
" \"sampler2DRect\" .emit TYPE_SPECIFIER_SAMPLER2DRECT .or\n"
|
||||
" \"sampler2DRectShadow\" .emit TYPE_SPECIFIER_SAMPLER2DRECTSHADOW .or\n"
|
||||
" type_name .emit TYPE_SPECIFIER_TYPENAME;\n"
|
||||
"type_specifier_nonarray_nospace\n"
|
||||
" struct_specifier .emit TYPE_SPECIFIER_STRUCT;\n"
|
||||
"type_specifier_nonarray\n"
|
||||
" type_specifier_nonarray_nospace .or type_specifier_nonarray_space;\n"
|
||||
"type_specifier_space\n"
|
||||
" type_specifier_nonarray_space .and .true .emit TYPE_SPECIFIER_NONARRAY;\n"
|
||||
"type_specifier_nospace\n"
|
||||
" type_specifier_nospace_array .or type_specifier_nospace_1;\n"
|
||||
"type_specifier_nospace_1\n"
|
||||
" type_specifier_nonarray_nospace .and .true .emit TYPE_SPECIFIER_NONARRAY;\n"
|
||||
"type_specifier_nospace_array\n"
|
||||
"type_specifier\n"
|
||||
" type_specifier_array .or type_specifier_1;\n"
|
||||
"type_specifier_1\n"
|
||||
" type_specifier_nonarray .and .true .emit TYPE_SPECIFIER_NONARRAY;\n"
|
||||
"type_specifier_array\n"
|
||||
" type_specifier_nonarray .and lbracket .emit TYPE_SPECIFIER_ARRAY .and constant_expression .and rbracket;\n"
|
||||
"struct_specifier\n"
|
||||
" \"struct\" .and struct_specifier_1 .and optional_space .and lbrace .error LBRACE_EXPECTED .and\n"
|
||||
" \"struct\" .and struct_specifier_1 .and lbrace .error LBRACE_EXPECTED .and\n"
|
||||
" struct_declaration_list .and rbrace .emit FIELD_NONE;\n"
|
||||
"struct_specifier_1\n"
|
||||
" struct_specifier_2 .or .true .emit '\\0';\n"
|
||||
"struct_specifier_2\n"
|
||||
" space .and identifier;\n"
|
||||
" identifier .or .true .emit '\\0';\n"
|
||||
"struct_declaration_list\n"
|
||||
" struct_declaration .and .loop struct_declaration .emit FIELD_NEXT;\n"
|
||||
"struct_declaration\n"
|
||||
" struct_declaration_nospace .or struct_declaration_space;\n"
|
||||
"struct_declaration_space\n"
|
||||
" type_specifier_space .and space .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n"
|
||||
"struct_declaration_nospace\n"
|
||||
" type_specifier_nospace .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n"
|
||||
" type_specifier .and struct_declarator_list .and semicolon .emit FIELD_NONE;\n"
|
||||
"struct_declarator_list\n"
|
||||
" struct_declarator .and .loop struct_declarator_list_1 .emit FIELD_NEXT;\n"
|
||||
"struct_declarator_list_1\n"
|
||||
|
|
@ -546,10 +503,6 @@
|
|||
" declaration;\n"
|
||||
"statement\n"
|
||||
" compound_statement .or simple_statement;\n"
|
||||
"statement_space\n"
|
||||
" compound_statement .or statement_space_1;\n"
|
||||
"statement_space_1\n"
|
||||
" space .and simple_statement;\n"
|
||||
"simple_statement\n"
|
||||
" .if (parsing_builtin != 0) __asm_statement .emit OP_ASM .or\n"
|
||||
" selection_statement .or\n"
|
||||
|
|
@ -590,20 +543,14 @@
|
|||
"selection_rest_statement_1\n"
|
||||
" selection_rest_statement_2 .or .true .emit OP_EXPRESSION .emit OP_PUSH_VOID .emit OP_END;\n"
|
||||
"selection_rest_statement_2\n"
|
||||
" \"else\" .and optional_space .and statement;\n"
|
||||
" \"else\" .and statement;\n"
|
||||
"condition\n"
|
||||
" condition_1 .emit OP_DECLARE .emit DECLARATION_INIT_DECLARATOR_LIST .or\n"
|
||||
" condition_3 .emit OP_EXPRESSION;\n"
|
||||
" condition_2 .emit OP_EXPRESSION;\n"
|
||||
"condition_1\n"
|
||||
" condition_1_nospace .or condition_1_space;\n"
|
||||
"condition_1_nospace\n"
|
||||
" fully_specified_type_nospace .and condition_2;\n"
|
||||
"condition_1_space\n"
|
||||
" fully_specified_type_space .and space .and condition_2;\n"
|
||||
" fully_specified_type .and identifier .emit VARIABLE_IDENTIFIER .and\n"
|
||||
" equals .emit VARIABLE_INITIALIZER .and initializer .and .true .emit DECLARATOR_NONE;\n"
|
||||
"condition_2\n"
|
||||
" identifier .emit VARIABLE_IDENTIFIER .and equals .emit VARIABLE_INITIALIZER .and\n"
|
||||
" initializer .and .true .emit DECLARATOR_NONE;\n"
|
||||
"condition_3\n"
|
||||
" expression .and .true .emit OP_END;\n"
|
||||
"iteration_statement\n"
|
||||
" iteration_statement_1 .or iteration_statement_2 .or iteration_statement_3;\n"
|
||||
|
|
@ -611,7 +558,7 @@
|
|||
" \"while\" .emit OP_WHILE .and lparen .error LPAREN_EXPECTED .and condition .and\n"
|
||||
" rparen .error RPAREN_EXPECTED .and statement;\n"
|
||||
"iteration_statement_2\n"
|
||||
" \"do\" .emit OP_DO .and statement_space .and \"while\" .and lparen .error LPAREN_EXPECTED .and\n"
|
||||
" \"do\" .emit OP_DO .and statement .and \"while\" .and lparen .error LPAREN_EXPECTED .and\n"
|
||||
" expression .and rparen .error RPAREN_EXPECTED .emit OP_END .and semicolon;\n"
|
||||
"iteration_statement_3\n"
|
||||
" \"for\" .emit OP_FOR .and lparen .error LPAREN_EXPECTED .and for_init_statement .and\n"
|
||||
|
|
@ -635,13 +582,13 @@
|
|||
"jump_statement_2\n"
|
||||
" \"break\" .and semicolon .emit OP_BREAK;\n"
|
||||
"jump_statement_3\n"
|
||||
" \"return\" .emit OP_RETURN .and optional_space .and expression .and semicolon .emit OP_END;\n"
|
||||
" \"return\" .emit OP_RETURN .and expression .and semicolon .emit OP_END;\n"
|
||||
"jump_statement_4\n"
|
||||
" \"return\" .emit OP_RETURN .and semicolon .emit OP_PUSH_VOID .emit OP_END;\n"
|
||||
"jump_statement_5\n"
|
||||
" \"discard\" .and semicolon .emit OP_DISCARD;\n"
|
||||
"__asm_statement\n"
|
||||
" \"__asm\" .and space .and identifier .and space .and asm_arguments .and semicolon .emit OP_END;\n"
|
||||
" \"__asm\" .and identifier .and asm_arguments .and semicolon .emit OP_END;\n"
|
||||
"asm_arguments\n"
|
||||
" asm_argument .and .true .emit OP_END .and .loop asm_arguments_1;\n"
|
||||
"asm_arguments_1\n"
|
||||
|
|
@ -653,16 +600,15 @@
|
|||
"var_with_field\n"
|
||||
" variable_identifier .and dot .and field_selection .emit OP_FIELD;\n"
|
||||
"translation_unit\n"
|
||||
" optional_space .emit REVISION .and external_declaration .error INVALID_EXTERNAL_DECLARATION .and\n"
|
||||
" .loop external_declaration .and optional_space .and\n"
|
||||
" '\\0' .error INVALID_EXTERNAL_DECLARATION .emit EXTERNAL_NULL;\n"
|
||||
" .true .emit REVISION .and external_declaration .error INVALID_EXTERNAL_DECLARATION .and\n"
|
||||
" .loop external_declaration .and '\\0' .error INVALID_EXTERNAL_DECLARATION .emit EXTERNAL_NULL;\n"
|
||||
"external_declaration\n"
|
||||
" precision_stmt .emit DEFAULT_PRECISION .or\n"
|
||||
" function_definition .emit EXTERNAL_FUNCTION_DEFINITION .or\n"
|
||||
" invariant_stmt .emit INVARIANT_STMT .or\n"
|
||||
" declaration .emit EXTERNAL_DECLARATION;\n"
|
||||
"precision_stmt\n"
|
||||
" \"precision\" .and space .and precision .error INVALID_PRECISION .and space .and prectype .error INVALID_PRECISION_TYPE .and semicolon;\n"
|
||||
" \"precision\" .and precision .error INVALID_PRECISION .and prectype .error INVALID_PRECISION_TYPE .and semicolon;\n"
|
||||
"precision\n"
|
||||
" \"lowp\" .emit PRECISION_LOW .or\n"
|
||||
" \"mediump\" .emit PRECISION_MEDIUM .or\n"
|
||||
|
|
@ -679,7 +625,7 @@
|
|||
" \"sampler2DRect\" .emit TYPE_SPECIFIER_SAMPLER2DRECT .or\n"
|
||||
" \"sampler2DRectShadow\" .emit TYPE_SPECIFIER_SAMPLER2DRECTSHADOW;\n"
|
||||
"invariant_stmt\n"
|
||||
" \"invariant\" .and space .and identifier .and semicolon;\n"
|
||||
" \"invariant\" .and identifier .and semicolon;\n"
|
||||
"function_definition\n"
|
||||
" function_prototype .and compound_statement_no_new_scope;\n"
|
||||
"identifier\n"
|
||||
|
|
@ -701,10 +647,6 @@
|
|||
" integer .emit OP_PUSH_INT;\n"
|
||||
"boolconstant\n"
|
||||
" boolean .emit OP_PUSH_BOOL;\n"
|
||||
"optional_space\n"
|
||||
" .true;\n"
|
||||
"space\n"
|
||||
" .true;\n"
|
||||
"ampersandampersand\n"
|
||||
" \"@&&\";\n"
|
||||
"barbar\n"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue