diff --git a/src/libs/glsl/glsl-lib.pri b/src/libs/glsl/glsl-lib.pri index be00cc8e751..8f1ad346035 100644 --- a/src/libs/glsl/glsl-lib.pri +++ b/src/libs/glsl/glsl-lib.pri @@ -1,8 +1,8 @@ -HEADERS += $$PWD/glsl.h $$PWD/glsllexer.h $$PWD/glslparser.h glslparsertable_p.h $$PWD/glslast.h \ - $$PWD/glslastvisitor.h +HEADERS += $$PWD/glsl.h $$PWD/glsllexer.h $$PWD/glslparser.h $$PWD/glslparsertable_p.h $$PWD/glslast.h \ + $$PWD/glslastvisitor.h $$PWD/glslengine.h SOURCES += $$PWD/glslkeywords.cpp $$PWD/glslparser.cpp $$PWD/glslparsertable.cpp \ - $$PWD/glsllexer.cpp $$PWD/glslast.cpp $$PWD/glsldump.cpp $$PWD/glsldelete.cpp \ - $$PWD/glslastvisitor.cpp + $$PWD/glsllexer.cpp $$PWD/glslast.cpp \ + $$PWD/glslastvisitor.cpp $$PWD/glslengine.cpp -OTHER_FILES = $$PWD/specs/glsl.g.in \ +OTHER_FILES = $$PWD/glsl.g \ $$PWD/specs/grammar.txt diff --git a/src/libs/glsl/glsl.g b/src/libs/glsl/glsl.g index 8ed08b13b5f..7d09e2433f8 100644 --- a/src/libs/glsl/glsl.g +++ b/src/libs/glsl/glsl.g @@ -247,26 +247,41 @@ namespace GLSL { -class Parser: public $table +class GLSL_EXPORT Parser: public $table { public: - Parser(const char *source, unsigned size, int variant); + union Value { + void *ptr; + const std::string *string; + AST *ast; + List *ast_list; + Declaration *declaration; + List *declaration_list; + TranslationUnit *translation_unit; + }; + + Parser(Engine *engine, const char *source, unsigned size, int variant); ~Parser(); - bool parse(); + TranslationUnit *parse(); private: + // 1-based + Value &sym(int n) { return _symStack[_tos + n - 1]; } + AST *&ast(int n) { return _symStack[_tos + n - 1].ast; } + const std::string *&string(int n) { return _symStack[_tos + n - 1].string; } + inline int consumeToken() { return _index++; } inline const Token &tokenAt(int index) const { return _tokens.at(index); } inline int tokenKind(int index) const { return _tokens.at(index).kind; } - void dump(AST *ast); + void reduce(int ruleno); private: int _tos; int _index; std::vector _stateStack; std::vector _locationStack; - std::vector _astStack; + std::vector _symStack; std::vector _tokens; }; @@ -306,22 +321,18 @@ private: #include "glslparser.h" #include #include +#include using namespace GLSL; -namespace GLSL { -void dumpAST(AST *); -void deleteAST(AST *ast); -} - -Parser::Parser(const char *source, unsigned size, int variant) +Parser::Parser(Engine *engine, const char *source, unsigned size, int variant) : _tos(-1), _index(0) { _tokens.reserve(1024); _stateStack.resize(128); _locationStack.resize(128); - _astStack.resize(128); + _symStack.resize(128); _tokens.push_back(Token()); // invalid token @@ -329,7 +340,7 @@ Parser::Parser(const char *source, unsigned size, int variant) std::stack bracketStack; std::stack braceStack; - Lexer lexer(source, size); + Lexer lexer(engine, source, size); lexer.setVariant(variant); Token tk; do { @@ -378,17 +389,12 @@ Parser::~Parser() { } -void Parser::dump(AST *ast) -{ - dumpAST(ast); -} - -bool Parser::parse() +TranslationUnit *Parser::parse() { int action = 0; int yytoken = -1; int yyloc = -1; - Operand *opd = 0; + void *yyval = 0; // value of the current token. _tos = -1; @@ -406,13 +412,13 @@ bool Parser::parse() yytoken = T_TYPE_NAME; } } - opd = new Operand(yyloc); + yyval = _tokens.at(yyloc).ptr; } if (unsigned(++_tos) == _stateStack.size()) { _stateStack.resize(_tos * 2); _locationStack.resize(_tos * 2); - _astStack.resize(_tos * 2); + _symStack.resize(_tos * 2); } _stateStack[_tos] = action; @@ -420,21 +426,16 @@ bool Parser::parse() if (action > 0) { if (action == ACCEPT_STATE) { --_tos; - dump(_astStack[0]); - deleteAST(_astStack[0]); - return true; + return _symStack[0].translation_unit; } - _astStack[_tos] = opd; + _symStack[_tos].ptr = yyval; _locationStack[_tos] = yyloc; yytoken = -1; } else if (action < 0) { const int ruleno = -action - 1; const int N = rhs[ruleno]; _tos -= N; - if (N == 0) - _astStack[_tos] = 0; - else - _astStack[_tos] = new Operator(ruleno, &_astStack[_tos], &_astStack[_tos + N]); + reduce(ruleno); action = nt_action(_stateStack[_tos], lhs[ruleno] - TERMINAL_COUNT); } } while (action); @@ -442,317 +443,2214 @@ bool Parser::parse() fprintf(stderr, "unexpected token `%s' at line %d\n", yytoken != -1 ? spell[yytoken] : "", _tokens[yyloc].line + 1); - return false; + return 0; } ./ + + + +/. +void Parser::reduce(int ruleno) +{ +switch(ruleno) { +./ + + + variable_identifier ::= IDENTIFIER ; +/. +case $rule_number: { + ast(1) = new IdentifierExpression(*sym(1).string); +} break; +./ + primary_expression ::= NUMBER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + primary_expression ::= TRUE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + primary_expression ::= FALSE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + primary_expression ::= variable_identifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + primary_expression ::= LEFT_PAREN expression RIGHT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + postfix_expression ::= primary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + postfix_expression ::= function_call ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + postfix_expression ::= postfix_expression DOT IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + postfix_expression ::= postfix_expression INC_OP ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + postfix_expression ::= postfix_expression DEC_OP ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + integer_expression ::= expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call ::= function_call_or_method ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_or_method ::= function_call_generic ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_or_method ::= postfix_expression DOT function_call_generic ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_header_no_parameters ::= function_call_header VOID ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_header_no_parameters ::= function_call_header ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_header_with_parameters ::= function_call_header assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_call_header ::= function_identifier LEFT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_identifier ::= type_specifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_identifier ::= IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_expression ::= postfix_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_expression ::= INC_OP unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_expression ::= DEC_OP unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_expression ::= unary_operator unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_operator ::= PLUS ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_operator ::= DASH ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_operator ::= BANG ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + unary_operator ::= TILDE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + multiplicative_expression ::= unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + multiplicative_expression ::= multiplicative_expression STAR unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + multiplicative_expression ::= multiplicative_expression SLASH unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + multiplicative_expression ::= multiplicative_expression PERCENT unary_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + additive_expression ::= multiplicative_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + additive_expression ::= additive_expression PLUS multiplicative_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + additive_expression ::= additive_expression DASH multiplicative_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + shift_expression ::= additive_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + shift_expression ::= shift_expression LEFT_OP additive_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + shift_expression ::= shift_expression RIGHT_OP additive_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + relational_expression ::= shift_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + relational_expression ::= relational_expression LEFT_ANGLE shift_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + relational_expression ::= relational_expression RIGHT_ANGLE shift_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + relational_expression ::= relational_expression LE_OP shift_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + relational_expression ::= relational_expression GE_OP shift_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + equality_expression ::= relational_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + equality_expression ::= equality_expression EQ_OP relational_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + equality_expression ::= equality_expression NE_OP relational_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + and_expression ::= equality_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + and_expression ::= and_expression AMPERSAND equality_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + exclusive_or_expression ::= and_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + exclusive_or_expression ::= exclusive_or_expression CARET and_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + inclusive_or_expression ::= exclusive_or_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + logical_and_expression ::= inclusive_or_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + logical_xor_expression ::= logical_and_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + logical_or_expression ::= logical_xor_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + conditional_expression ::= logical_or_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + conditional_expression ::= logical_or_expression QUESTION expression COLON assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_expression ::= conditional_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_expression ::= unary_expression assignment_operator assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= EQUAL ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= MUL_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= DIV_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= MOD_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= ADD_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= SUB_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= LEFT_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= RIGHT_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= AND_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= XOR_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + assignment_operator ::= OR_ASSIGN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + expression ::= assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + expression ::= expression COMMA assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + constant_expression ::= conditional_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= function_prototype SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= init_declarator_list SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= PRECISION precision_qualifier type_specifier_no_prec SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET RIGHT_BRACKET SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration ::= type_qualifier SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_prototype ::= function_declarator RIGHT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_declarator ::= function_header ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_declarator ::= function_header_with_parameters ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_header_with_parameters ::= function_header parameter_declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_declarator ::= type_specifier IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_declarator ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_declaration ::= parameter_qualifier parameter_declarator ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_type_specifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_declaration ::= parameter_qualifier parameter_type_specifier ; -parameter_qualifier ::= ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + +parameter_qualifier ::= empty ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_qualifier ::= IN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_qualifier ::= OUT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_qualifier ::= INOUT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_type_specifier ::= type_specifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= single_declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= init_declarator_list COMMA IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + single_declaration ::= INVARIANT IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + fully_specified_type ::= type_specifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + fully_specified_type ::= type_qualifier type_specifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + invariant_qualifier ::= INVARIANT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + interpolation_qualifier ::= SMOOTH ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + interpolation_qualifier ::= FLAT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + interpolation_qualifier ::= NOPERSPECTIVE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + layout_qualifier ::= LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + layout_qualifier_id_list ::= layout_qualifier_id ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + layout_qualifier_id_list ::= layout_qualifier_id_list COMMA layout_qualifier_id ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + layout_qualifier_id ::= IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + layout_qualifier_id ::= IDENTIFIER EQUAL NUMBER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + parameter_type_qualifier ::= CONST ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= storage_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= layout_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= layout_qualifier storage_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= interpolation_qualifier storage_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= interpolation_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= invariant_qualifier storage_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= invariant_qualifier interpolation_qualifier storage_qualifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_qualifier ::= INVARIANT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= CONST ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= ATTRIBUTE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= VARYING ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= CENTROID VARYING ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= IN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= OUT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= CENTROID IN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= CENTROID OUT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= PATCH IN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= PATCH OUT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= SAMPLE IN ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= SAMPLE OUT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + storage_qualifier ::= UNIFORM ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier ::= type_specifier_no_prec ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier ::= precision_qualifier type_specifier_no_prec ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_no_prec ::= type_specifier_nonarray ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET constant_expression RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= VOID ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= FLOAT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DOUBLE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= INT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= UINT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= BOOL ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= VEC2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= VEC3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= VEC4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DVEC2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DVEC3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DVEC4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= BVEC2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= BVEC3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= BVEC4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= IVEC2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= IVEC3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= IVEC4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= UVEC2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= UVEC3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= UVEC4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT2X2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT2X3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT2X4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT3X2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT3X3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT3X4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT4X2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT4X3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= MAT4X4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT2X2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT2X3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT2X4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT3X2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT3X3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT3X4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT4X2 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT4X3 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= DMAT4X4 ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER1D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER3D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLERCUBE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER1DSHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DSHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLERCUBESHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER1DARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER1DARRAYSHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DARRAYSHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLERCUBEARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLERCUBEARRAYSHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER1D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER2D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER3D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLERCUBE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER1DARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER2DARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLERCUBEARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER1D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER2D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER3D ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLERCUBE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER1DARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER2DARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLERCUBEARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DRECT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DRECTSHADOW ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER2DRECT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER2DRECT ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLERBUFFER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLERBUFFER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLERBUFFER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DMS ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER2DMS ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER2DMS ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= SAMPLER2DMSARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= ISAMPLER2DMSARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= USAMPLER2DMSARRAY ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= struct_specifier ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + type_specifier_nonarray ::= TYPE_NAME ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + precision_qualifier ::= HIGHP ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + precision_qualifier ::= MEDIUMP ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + precision_qualifier ::= LOWP ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declaration_list ::= struct_declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declaration_list ::= struct_declaration_list struct_declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declaration ::= type_specifier struct_declarator_list SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declaration ::= type_qualifier type_specifier struct_declarator_list SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declarator_list ::= struct_declarator ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declarator_list ::= struct_declarator_list COMMA struct_declarator ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declarator ::= IDENTIFIER ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declarator ::= IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + initializer ::= assignment_expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + declaration_statement ::= declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + statement ::= compound_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + statement ::= simple_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= declaration_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= expression_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= selection_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= switch_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= case_label ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= iteration_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + simple_statement ::= jump_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + compound_statement ::= LEFT_BRACE RIGHT_BRACE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + statement_no_new_scope ::= compound_statement_no_new_scope ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + statement_no_new_scope ::= simple_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + statement_list ::= statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + statement_list ::= statement_list statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + expression_statement ::= SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + expression_statement ::= expression SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + selection_rest_statement ::= statement ELSE statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + selection_rest_statement ::= statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + condition ::= expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + condition ::= fully_specified_type IDENTIFIER EQUAL initializer ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + switch_statement ::= SWITCH LEFT_PAREN expression RIGHT_PAREN LEFT_BRACE switch_statement_list RIGHT_BRACE ; -switch_statement_list ::= ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + +switch_statement_list ::= empty ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + switch_statement_list ::= statement_list ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + case_label ::= CASE expression COLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + case_label ::= DEFAULT COLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + for_init_statement ::= expression_statement ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + for_init_statement ::= declaration_statement ; -conditionopt ::= ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + +conditionopt ::= empty ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + conditionopt ::= condition ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + for_rest_statement ::= conditionopt SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + for_rest_statement ::= conditionopt SEMICOLON expression ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + jump_statement ::= CONTINUE SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + jump_statement ::= BREAK SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + jump_statement ::= RETURN SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + jump_statement ::= RETURN expression SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + jump_statement ::= DISCARD SEMICOLON ; -translation_unit ::= external_declaration ; -translation_unit ::= translation_unit external_declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + +translation_unit ::= external_declaration_list ; +/. +case $rule_number: { + ast(1) = new TranslationUnit(sym(1).declaration_list); +} break; +./ + +external_declaration_list ::= external_declaration ; +/. +case $rule_number: { + sym(1).declaration_list = new List(sym(1).declaration); +} break; +./ + +external_declaration_list ::= external_declaration_list external_declaration ; +/. +case $rule_number: { + sym(1).declaration_list = new List(sym(1).declaration_list, sym(2).declaration); +} break; +./ + external_declaration ::= function_definition ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + external_declaration ::= declaration ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + external_declaration ::= SEMICOLON ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + function_definition ::= function_prototype compound_statement_no_new_scope ; +/. +case $rule_number: { + // ast(1) = new ...AST(...); +} break; +./ + +empty ::= ; +/. +case $rule_number: { + ast(1) = 0; +} break; +./ + + + +/. +} // end switch +} // end Parser::reduce() +./ diff --git a/src/libs/glsl/glsl.h b/src/libs/glsl/glsl.h index 457f44ba6e2..a067b522fb8 100644 --- a/src/libs/glsl/glsl.h +++ b/src/libs/glsl/glsl.h @@ -42,4 +42,12 @@ # define GLSL_EXPORT Q_DECL_IMPORT #endif +namespace GLSL { +class Engine; +class Lexer; +class Parser; +class AST; +template class List; +} + #endif // GLSL_H diff --git a/src/libs/glsl/glslast.cpp b/src/libs/glsl/glslast.cpp index eeca6bd40b7..e9784010529 100644 --- a/src/libs/glsl/glslast.cpp +++ b/src/libs/glsl/glslast.cpp @@ -66,17 +66,10 @@ Statement *AST::makeCompound(Statement *left, Statement *right) return compound; } -void Operand::accept0(Visitor *visitor) -{ - visitor->visit(this); - visitor->endVisit(this); -} - -void Operator::accept0(Visitor *visitor) +void TranslationUnit::accept0(Visitor *visitor) { if (visitor->visit(this)) { - for (_Base::iterator it = begin(); it != end(); ++it) - accept(*it, visitor); + accept(declarations, visitor); } visitor->endVisit(this); } diff --git a/src/libs/glsl/glslast.h b/src/libs/glsl/glslast.h index cf6cbdce8af..8f9b3d614c4 100644 --- a/src/libs/glsl/glslast.h +++ b/src/libs/glsl/glslast.h @@ -36,8 +36,8 @@ namespace GLSL { class AST; -class Operand; -class Operator; +class TranslationUnit; +class Declaration; class Expression; class IdentifierExpression; class LiteralExpression; @@ -65,12 +65,40 @@ class ArrayType; class StructType; class Visitor; +template +class GLSL_EXPORT List +{ +public: + List(const T &value) + : value(value), next(this) {} + + List(List *previous, const T &value) + : value(value) + { + next = previous->next; + previous->next = this; + } + + List *finish() + { + List *head = next; + next = 0; + return head; + } + + T value; + List *next; +}; + class GLSL_EXPORT AST { public: enum Kind { Kind_Undefined, + // Translation unit + Kind_TranslationUnit, + // Primary expressions Kind_Identifier, Kind_Literal, @@ -157,8 +185,9 @@ public: AST() : kind(Kind_Undefined), lineno(0) {} virtual ~AST(); - virtual Operand *asOperand() { return 0; } - virtual Operator *asOperator() { return 0; } + virtual TranslationUnit *asTranslationUnit() { return 0; } + + virtual Declaration *asDeclaration() { return 0; } virtual Expression *asExpression() { return 0; } virtual IdentifierExpression *asIdentifierExpression() { return 0; } @@ -191,6 +220,13 @@ public: void accept(Visitor *visitor); static void accept(AST *ast, Visitor *visitor); + template + static void accept(List *it, Visitor *visitor) + { + for (; it; it = it->next) + accept(it->value, visitor); + } + virtual void accept0(Visitor *visitor) = 0; // Efficiently make a compound statement out of "left" and "right", @@ -200,40 +236,42 @@ public: protected: AST(Kind _kind) : kind(_kind), lineno(0) {} +protected: + template + static List *finish(List *list) + { + if (! list) + return 0; + return list->finish(); // convert the circular list with a linked list. + } + public: // attributes int kind; int lineno; }; -class GLSL_EXPORT Operand: public AST +class GLSL_EXPORT TranslationUnit: public AST { public: - Operand(int location) - : location(location) {} + TranslationUnit(List *declarations) + : declarations(finish(declarations)) + { kind = Kind_TranslationUnit; } - virtual Operand *asOperand() { return this; } + virtual TranslationUnit *asTranslationUnit() { return this; } virtual void accept0(Visitor *visitor); public: // attributes - int location; + List *declarations; }; -class GLSL_EXPORT Operator: public AST, public std::vector +class GLSL_EXPORT Declaration: public AST { - typedef std::vector _Base; +protected: + Declaration(Kind _kind) { kind = _kind; } public: - template - Operator(int ruleno, It begin, It end) - : _Base(begin, end), ruleno(ruleno) {} - - virtual Operator *asOperator() { return this; } - - virtual void accept0(Visitor *visitor); - -public: // attributes - int ruleno; + virtual Declaration *asDeclaration() { return this; } }; class GLSL_EXPORT Expression: public AST diff --git a/src/libs/glsl/glslastvisitor.h b/src/libs/glsl/glslastvisitor.h index b0ae8c64c60..0acc69a1f8b 100644 --- a/src/libs/glsl/glslastvisitor.h +++ b/src/libs/glsl/glslastvisitor.h @@ -42,11 +42,8 @@ public: virtual bool preVisit(AST *) { return true; } virtual void postVisit(AST *) {} - virtual bool visit(Operand *) { return true; } - virtual void endVisit(Operand *) {} - - virtual bool visit(Operator *) { return true; } - virtual void endVisit(Operator *) {} + virtual bool visit(TranslationUnit *) { return true; } + virtual void endVisit(TranslationUnit *) {} virtual bool visit(IdentifierExpression *) { return true; } virtual void endVisit(IdentifierExpression *) {} diff --git a/src/libs/glsl/glsldelete.cpp b/src/libs/glsl/glsldelete.cpp deleted file mode 100644 index 6406f022b23..00000000000 --- a/src/libs/glsl/glsldelete.cpp +++ /dev/null @@ -1,3499 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "glslast.h" - -namespace GLSL { - -class Delete -{ - typedef void (Delete::*dispatch_func)(AST *); - static dispatch_func dispatch[]; - -public: - void accept(AST *ast) - { - if (! ast) - return; - else if (Operator *op = ast->asOperator()) - (this->*dispatch[op->ruleno])(ast); - delete ast; - } - - template - void accept(It first, It last) - { - for (; first != last; ++first) - accept(*first); - } - -private: - void on_variable_identifier_1(AST *); - void on_primary_expression_2(AST *); - void on_primary_expression_3(AST *); - void on_primary_expression_4(AST *); - void on_primary_expression_5(AST *); - void on_primary_expression_6(AST *); - void on_postfix_expression_7(AST *); - void on_postfix_expression_8(AST *); - void on_postfix_expression_9(AST *); - void on_postfix_expression_10(AST *); - void on_postfix_expression_11(AST *); - void on_postfix_expression_12(AST *); - void on_integer_expression_13(AST *); - void on_function_call_14(AST *); - void on_function_call_or_method_15(AST *); - void on_function_call_or_method_16(AST *); - void on_function_call_generic_17(AST *); - void on_function_call_generic_18(AST *); - void on_function_call_header_no_parameters_19(AST *); - void on_function_call_header_no_parameters_20(AST *); - void on_function_call_header_with_parameters_21(AST *); - void on_function_call_header_with_parameters_22(AST *); - void on_function_call_header_23(AST *); - void on_function_identifier_24(AST *); - void on_function_identifier_25(AST *); - void on_unary_expression_26(AST *); - void on_unary_expression_27(AST *); - void on_unary_expression_28(AST *); - void on_unary_expression_29(AST *); - void on_unary_operator_30(AST *); - void on_unary_operator_31(AST *); - void on_unary_operator_32(AST *); - void on_unary_operator_33(AST *); - void on_multiplicative_expression_34(AST *); - void on_multiplicative_expression_35(AST *); - void on_multiplicative_expression_36(AST *); - void on_multiplicative_expression_37(AST *); - void on_additive_expression_38(AST *); - void on_additive_expression_39(AST *); - void on_additive_expression_40(AST *); - void on_shift_expression_41(AST *); - void on_shift_expression_42(AST *); - void on_shift_expression_43(AST *); - void on_relational_expression_44(AST *); - void on_relational_expression_45(AST *); - void on_relational_expression_46(AST *); - void on_relational_expression_47(AST *); - void on_relational_expression_48(AST *); - void on_equality_expression_49(AST *); - void on_equality_expression_50(AST *); - void on_equality_expression_51(AST *); - void on_and_expression_52(AST *); - void on_and_expression_53(AST *); - void on_exclusive_or_expression_54(AST *); - void on_exclusive_or_expression_55(AST *); - void on_inclusive_or_expression_56(AST *); - void on_inclusive_or_expression_57(AST *); - void on_logical_and_expression_58(AST *); - void on_logical_and_expression_59(AST *); - void on_logical_xor_expression_60(AST *); - void on_logical_xor_expression_61(AST *); - void on_logical_or_expression_62(AST *); - void on_logical_or_expression_63(AST *); - void on_conditional_expression_64(AST *); - void on_conditional_expression_65(AST *); - void on_assignment_expression_66(AST *); - void on_assignment_expression_67(AST *); - void on_assignment_operator_68(AST *); - void on_assignment_operator_69(AST *); - void on_assignment_operator_70(AST *); - void on_assignment_operator_71(AST *); - void on_assignment_operator_72(AST *); - void on_assignment_operator_73(AST *); - void on_assignment_operator_74(AST *); - void on_assignment_operator_75(AST *); - void on_assignment_operator_76(AST *); - void on_assignment_operator_77(AST *); - void on_assignment_operator_78(AST *); - void on_expression_79(AST *); - void on_expression_80(AST *); - void on_constant_expression_81(AST *); - void on_declaration_82(AST *); - void on_declaration_83(AST *); - void on_declaration_84(AST *); - void on_declaration_85(AST *); - void on_declaration_86(AST *); - void on_declaration_87(AST *); - void on_declaration_88(AST *); - void on_declaration_89(AST *); - void on_function_prototype_90(AST *); - void on_function_declarator_91(AST *); - void on_function_declarator_92(AST *); - void on_function_header_with_parameters_93(AST *); - void on_function_header_with_parameters_94(AST *); - void on_function_header_95(AST *); - void on_parameter_declarator_96(AST *); - void on_parameter_declarator_97(AST *); - void on_parameter_declaration_98(AST *); - void on_parameter_declaration_99(AST *); - void on_parameter_declaration_100(AST *); - void on_parameter_declaration_101(AST *); - void on_parameter_qualifier_102(AST *); - void on_parameter_qualifier_103(AST *); - void on_parameter_qualifier_104(AST *); - void on_parameter_qualifier_105(AST *); - void on_parameter_type_specifier_106(AST *); - void on_init_declarator_list_107(AST *); - void on_init_declarator_list_108(AST *); - void on_init_declarator_list_109(AST *); - void on_init_declarator_list_110(AST *); - void on_init_declarator_list_111(AST *); - void on_init_declarator_list_112(AST *); - void on_init_declarator_list_113(AST *); - void on_single_declaration_114(AST *); - void on_single_declaration_115(AST *); - void on_single_declaration_116(AST *); - void on_single_declaration_117(AST *); - void on_single_declaration_118(AST *); - void on_single_declaration_119(AST *); - void on_single_declaration_120(AST *); - void on_single_declaration_121(AST *); - void on_fully_specified_type_122(AST *); - void on_fully_specified_type_123(AST *); - void on_invariant_qualifier_124(AST *); - void on_interpolation_qualifier_125(AST *); - void on_interpolation_qualifier_126(AST *); - void on_interpolation_qualifier_127(AST *); - void on_layout_qualifier_128(AST *); - void on_layout_qualifier_id_list_129(AST *); - void on_layout_qualifier_id_list_130(AST *); - void on_layout_qualifier_id_131(AST *); - void on_layout_qualifier_id_132(AST *); - void on_parameter_type_qualifier_133(AST *); - void on_type_qualifier_134(AST *); - void on_type_qualifier_135(AST *); - void on_type_qualifier_136(AST *); - void on_type_qualifier_137(AST *); - void on_type_qualifier_138(AST *); - void on_type_qualifier_139(AST *); - void on_type_qualifier_140(AST *); - void on_type_qualifier_141(AST *); - void on_storage_qualifier_142(AST *); - void on_storage_qualifier_143(AST *); - void on_storage_qualifier_144(AST *); - void on_storage_qualifier_145(AST *); - void on_storage_qualifier_146(AST *); - void on_storage_qualifier_147(AST *); - void on_storage_qualifier_148(AST *); - void on_storage_qualifier_149(AST *); - void on_storage_qualifier_150(AST *); - void on_storage_qualifier_151(AST *); - void on_storage_qualifier_152(AST *); - void on_storage_qualifier_153(AST *); - void on_storage_qualifier_154(AST *); - void on_type_specifier_155(AST *); - void on_type_specifier_156(AST *); - void on_type_specifier_no_prec_157(AST *); - void on_type_specifier_no_prec_158(AST *); - void on_type_specifier_no_prec_159(AST *); - void on_type_specifier_nonarray_160(AST *); - void on_type_specifier_nonarray_161(AST *); - void on_type_specifier_nonarray_162(AST *); - void on_type_specifier_nonarray_163(AST *); - void on_type_specifier_nonarray_164(AST *); - void on_type_specifier_nonarray_165(AST *); - void on_type_specifier_nonarray_166(AST *); - void on_type_specifier_nonarray_167(AST *); - void on_type_specifier_nonarray_168(AST *); - void on_type_specifier_nonarray_169(AST *); - void on_type_specifier_nonarray_170(AST *); - void on_type_specifier_nonarray_171(AST *); - void on_type_specifier_nonarray_172(AST *); - void on_type_specifier_nonarray_173(AST *); - void on_type_specifier_nonarray_174(AST *); - void on_type_specifier_nonarray_175(AST *); - void on_type_specifier_nonarray_176(AST *); - void on_type_specifier_nonarray_177(AST *); - void on_type_specifier_nonarray_178(AST *); - void on_type_specifier_nonarray_179(AST *); - void on_type_specifier_nonarray_180(AST *); - void on_type_specifier_nonarray_181(AST *); - void on_type_specifier_nonarray_182(AST *); - void on_type_specifier_nonarray_183(AST *); - void on_type_specifier_nonarray_184(AST *); - void on_type_specifier_nonarray_185(AST *); - void on_type_specifier_nonarray_186(AST *); - void on_type_specifier_nonarray_187(AST *); - void on_type_specifier_nonarray_188(AST *); - void on_type_specifier_nonarray_189(AST *); - void on_type_specifier_nonarray_190(AST *); - void on_type_specifier_nonarray_191(AST *); - void on_type_specifier_nonarray_192(AST *); - void on_type_specifier_nonarray_193(AST *); - void on_type_specifier_nonarray_194(AST *); - void on_type_specifier_nonarray_195(AST *); - void on_type_specifier_nonarray_196(AST *); - void on_type_specifier_nonarray_197(AST *); - void on_type_specifier_nonarray_198(AST *); - void on_type_specifier_nonarray_199(AST *); - void on_type_specifier_nonarray_200(AST *); - void on_type_specifier_nonarray_201(AST *); - void on_type_specifier_nonarray_202(AST *); - void on_type_specifier_nonarray_203(AST *); - void on_type_specifier_nonarray_204(AST *); - void on_type_specifier_nonarray_205(AST *); - void on_type_specifier_nonarray_206(AST *); - void on_type_specifier_nonarray_207(AST *); - void on_type_specifier_nonarray_208(AST *); - void on_type_specifier_nonarray_209(AST *); - void on_type_specifier_nonarray_210(AST *); - void on_type_specifier_nonarray_211(AST *); - void on_type_specifier_nonarray_212(AST *); - void on_type_specifier_nonarray_213(AST *); - void on_type_specifier_nonarray_214(AST *); - void on_type_specifier_nonarray_215(AST *); - void on_type_specifier_nonarray_216(AST *); - void on_type_specifier_nonarray_217(AST *); - void on_type_specifier_nonarray_218(AST *); - void on_type_specifier_nonarray_219(AST *); - void on_type_specifier_nonarray_220(AST *); - void on_type_specifier_nonarray_221(AST *); - void on_type_specifier_nonarray_222(AST *); - void on_type_specifier_nonarray_223(AST *); - void on_type_specifier_nonarray_224(AST *); - void on_type_specifier_nonarray_225(AST *); - void on_type_specifier_nonarray_226(AST *); - void on_type_specifier_nonarray_227(AST *); - void on_type_specifier_nonarray_228(AST *); - void on_type_specifier_nonarray_229(AST *); - void on_type_specifier_nonarray_230(AST *); - void on_type_specifier_nonarray_231(AST *); - void on_type_specifier_nonarray_232(AST *); - void on_type_specifier_nonarray_233(AST *); - void on_type_specifier_nonarray_234(AST *); - void on_type_specifier_nonarray_235(AST *); - void on_type_specifier_nonarray_236(AST *); - void on_type_specifier_nonarray_237(AST *); - void on_type_specifier_nonarray_238(AST *); - void on_type_specifier_nonarray_239(AST *); - void on_type_specifier_nonarray_240(AST *); - void on_type_specifier_nonarray_241(AST *); - void on_type_specifier_nonarray_242(AST *); - void on_type_specifier_nonarray_243(AST *); - void on_type_specifier_nonarray_244(AST *); - void on_type_specifier_nonarray_245(AST *); - void on_type_specifier_nonarray_246(AST *); - void on_precision_qualifier_247(AST *); - void on_precision_qualifier_248(AST *); - void on_precision_qualifier_249(AST *); - void on_struct_specifier_250(AST *); - void on_struct_specifier_251(AST *); - void on_struct_declaration_list_252(AST *); - void on_struct_declaration_list_253(AST *); - void on_struct_declaration_254(AST *); - void on_struct_declaration_255(AST *); - void on_struct_declarator_list_256(AST *); - void on_struct_declarator_list_257(AST *); - void on_struct_declarator_258(AST *); - void on_struct_declarator_259(AST *); - void on_struct_declarator_260(AST *); - void on_initializer_261(AST *); - void on_declaration_statement_262(AST *); - void on_statement_263(AST *); - void on_statement_264(AST *); - void on_simple_statement_265(AST *); - void on_simple_statement_266(AST *); - void on_simple_statement_267(AST *); - void on_simple_statement_268(AST *); - void on_simple_statement_269(AST *); - void on_simple_statement_270(AST *); - void on_simple_statement_271(AST *); - void on_compound_statement_272(AST *); - void on_compound_statement_273(AST *); - void on_statement_no_new_scope_274(AST *); - void on_statement_no_new_scope_275(AST *); - void on_compound_statement_no_new_scope_276(AST *); - void on_compound_statement_no_new_scope_277(AST *); - void on_statement_list_278(AST *); - void on_statement_list_279(AST *); - void on_expression_statement_280(AST *); - void on_expression_statement_281(AST *); - void on_selection_statement_282(AST *); - void on_selection_rest_statement_283(AST *); - void on_selection_rest_statement_284(AST *); - void on_condition_285(AST *); - void on_condition_286(AST *); - void on_switch_statement_287(AST *); - void on_switch_statement_list_288(AST *); - void on_switch_statement_list_289(AST *); - void on_case_label_290(AST *); - void on_case_label_291(AST *); - void on_iteration_statement_292(AST *); - void on_iteration_statement_293(AST *); - void on_iteration_statement_294(AST *); - void on_for_init_statement_295(AST *); - void on_for_init_statement_296(AST *); - void on_conditionopt_297(AST *); - void on_conditionopt_298(AST *); - void on_for_rest_statement_299(AST *); - void on_for_rest_statement_300(AST *); - void on_jump_statement_301(AST *); - void on_jump_statement_302(AST *); - void on_jump_statement_303(AST *); - void on_jump_statement_304(AST *); - void on_jump_statement_305(AST *); - void on_translation_unit_306(AST *); - void on_translation_unit_307(AST *); - void on_external_declaration_308(AST *); - void on_external_declaration_309(AST *); - void on_external_declaration_310(AST *); - void on_function_definition_311(AST *); -}; - -void deleteAST(AST *ast) -{ - Delete del; - del.accept(ast); -} - -} // end of namespace GLSL - -#include - -using namespace GLSL; - -namespace { -bool debug = false; -} - - -Delete::dispatch_func Delete::dispatch[] = { - &Delete::on_variable_identifier_1, - &Delete::on_primary_expression_2, - &Delete::on_primary_expression_3, - &Delete::on_primary_expression_4, - &Delete::on_primary_expression_5, - &Delete::on_primary_expression_6, - &Delete::on_postfix_expression_7, - &Delete::on_postfix_expression_8, - &Delete::on_postfix_expression_9, - &Delete::on_postfix_expression_10, - &Delete::on_postfix_expression_11, - &Delete::on_postfix_expression_12, - &Delete::on_integer_expression_13, - &Delete::on_function_call_14, - &Delete::on_function_call_or_method_15, - &Delete::on_function_call_or_method_16, - &Delete::on_function_call_generic_17, - &Delete::on_function_call_generic_18, - &Delete::on_function_call_header_no_parameters_19, - &Delete::on_function_call_header_no_parameters_20, - &Delete::on_function_call_header_with_parameters_21, - &Delete::on_function_call_header_with_parameters_22, - &Delete::on_function_call_header_23, - &Delete::on_function_identifier_24, - &Delete::on_function_identifier_25, - &Delete::on_unary_expression_26, - &Delete::on_unary_expression_27, - &Delete::on_unary_expression_28, - &Delete::on_unary_expression_29, - &Delete::on_unary_operator_30, - &Delete::on_unary_operator_31, - &Delete::on_unary_operator_32, - &Delete::on_unary_operator_33, - &Delete::on_multiplicative_expression_34, - &Delete::on_multiplicative_expression_35, - &Delete::on_multiplicative_expression_36, - &Delete::on_multiplicative_expression_37, - &Delete::on_additive_expression_38, - &Delete::on_additive_expression_39, - &Delete::on_additive_expression_40, - &Delete::on_shift_expression_41, - &Delete::on_shift_expression_42, - &Delete::on_shift_expression_43, - &Delete::on_relational_expression_44, - &Delete::on_relational_expression_45, - &Delete::on_relational_expression_46, - &Delete::on_relational_expression_47, - &Delete::on_relational_expression_48, - &Delete::on_equality_expression_49, - &Delete::on_equality_expression_50, - &Delete::on_equality_expression_51, - &Delete::on_and_expression_52, - &Delete::on_and_expression_53, - &Delete::on_exclusive_or_expression_54, - &Delete::on_exclusive_or_expression_55, - &Delete::on_inclusive_or_expression_56, - &Delete::on_inclusive_or_expression_57, - &Delete::on_logical_and_expression_58, - &Delete::on_logical_and_expression_59, - &Delete::on_logical_xor_expression_60, - &Delete::on_logical_xor_expression_61, - &Delete::on_logical_or_expression_62, - &Delete::on_logical_or_expression_63, - &Delete::on_conditional_expression_64, - &Delete::on_conditional_expression_65, - &Delete::on_assignment_expression_66, - &Delete::on_assignment_expression_67, - &Delete::on_assignment_operator_68, - &Delete::on_assignment_operator_69, - &Delete::on_assignment_operator_70, - &Delete::on_assignment_operator_71, - &Delete::on_assignment_operator_72, - &Delete::on_assignment_operator_73, - &Delete::on_assignment_operator_74, - &Delete::on_assignment_operator_75, - &Delete::on_assignment_operator_76, - &Delete::on_assignment_operator_77, - &Delete::on_assignment_operator_78, - &Delete::on_expression_79, - &Delete::on_expression_80, - &Delete::on_constant_expression_81, - &Delete::on_declaration_82, - &Delete::on_declaration_83, - &Delete::on_declaration_84, - &Delete::on_declaration_85, - &Delete::on_declaration_86, - &Delete::on_declaration_87, - &Delete::on_declaration_88, - &Delete::on_declaration_89, - &Delete::on_function_prototype_90, - &Delete::on_function_declarator_91, - &Delete::on_function_declarator_92, - &Delete::on_function_header_with_parameters_93, - &Delete::on_function_header_with_parameters_94, - &Delete::on_function_header_95, - &Delete::on_parameter_declarator_96, - &Delete::on_parameter_declarator_97, - &Delete::on_parameter_declaration_98, - &Delete::on_parameter_declaration_99, - &Delete::on_parameter_declaration_100, - &Delete::on_parameter_declaration_101, - &Delete::on_parameter_qualifier_102, - &Delete::on_parameter_qualifier_103, - &Delete::on_parameter_qualifier_104, - &Delete::on_parameter_qualifier_105, - &Delete::on_parameter_type_specifier_106, - &Delete::on_init_declarator_list_107, - &Delete::on_init_declarator_list_108, - &Delete::on_init_declarator_list_109, - &Delete::on_init_declarator_list_110, - &Delete::on_init_declarator_list_111, - &Delete::on_init_declarator_list_112, - &Delete::on_init_declarator_list_113, - &Delete::on_single_declaration_114, - &Delete::on_single_declaration_115, - &Delete::on_single_declaration_116, - &Delete::on_single_declaration_117, - &Delete::on_single_declaration_118, - &Delete::on_single_declaration_119, - &Delete::on_single_declaration_120, - &Delete::on_single_declaration_121, - &Delete::on_fully_specified_type_122, - &Delete::on_fully_specified_type_123, - &Delete::on_invariant_qualifier_124, - &Delete::on_interpolation_qualifier_125, - &Delete::on_interpolation_qualifier_126, - &Delete::on_interpolation_qualifier_127, - &Delete::on_layout_qualifier_128, - &Delete::on_layout_qualifier_id_list_129, - &Delete::on_layout_qualifier_id_list_130, - &Delete::on_layout_qualifier_id_131, - &Delete::on_layout_qualifier_id_132, - &Delete::on_parameter_type_qualifier_133, - &Delete::on_type_qualifier_134, - &Delete::on_type_qualifier_135, - &Delete::on_type_qualifier_136, - &Delete::on_type_qualifier_137, - &Delete::on_type_qualifier_138, - &Delete::on_type_qualifier_139, - &Delete::on_type_qualifier_140, - &Delete::on_type_qualifier_141, - &Delete::on_storage_qualifier_142, - &Delete::on_storage_qualifier_143, - &Delete::on_storage_qualifier_144, - &Delete::on_storage_qualifier_145, - &Delete::on_storage_qualifier_146, - &Delete::on_storage_qualifier_147, - &Delete::on_storage_qualifier_148, - &Delete::on_storage_qualifier_149, - &Delete::on_storage_qualifier_150, - &Delete::on_storage_qualifier_151, - &Delete::on_storage_qualifier_152, - &Delete::on_storage_qualifier_153, - &Delete::on_storage_qualifier_154, - &Delete::on_type_specifier_155, - &Delete::on_type_specifier_156, - &Delete::on_type_specifier_no_prec_157, - &Delete::on_type_specifier_no_prec_158, - &Delete::on_type_specifier_no_prec_159, - &Delete::on_type_specifier_nonarray_160, - &Delete::on_type_specifier_nonarray_161, - &Delete::on_type_specifier_nonarray_162, - &Delete::on_type_specifier_nonarray_163, - &Delete::on_type_specifier_nonarray_164, - &Delete::on_type_specifier_nonarray_165, - &Delete::on_type_specifier_nonarray_166, - &Delete::on_type_specifier_nonarray_167, - &Delete::on_type_specifier_nonarray_168, - &Delete::on_type_specifier_nonarray_169, - &Delete::on_type_specifier_nonarray_170, - &Delete::on_type_specifier_nonarray_171, - &Delete::on_type_specifier_nonarray_172, - &Delete::on_type_specifier_nonarray_173, - &Delete::on_type_specifier_nonarray_174, - &Delete::on_type_specifier_nonarray_175, - &Delete::on_type_specifier_nonarray_176, - &Delete::on_type_specifier_nonarray_177, - &Delete::on_type_specifier_nonarray_178, - &Delete::on_type_specifier_nonarray_179, - &Delete::on_type_specifier_nonarray_180, - &Delete::on_type_specifier_nonarray_181, - &Delete::on_type_specifier_nonarray_182, - &Delete::on_type_specifier_nonarray_183, - &Delete::on_type_specifier_nonarray_184, - &Delete::on_type_specifier_nonarray_185, - &Delete::on_type_specifier_nonarray_186, - &Delete::on_type_specifier_nonarray_187, - &Delete::on_type_specifier_nonarray_188, - &Delete::on_type_specifier_nonarray_189, - &Delete::on_type_specifier_nonarray_190, - &Delete::on_type_specifier_nonarray_191, - &Delete::on_type_specifier_nonarray_192, - &Delete::on_type_specifier_nonarray_193, - &Delete::on_type_specifier_nonarray_194, - &Delete::on_type_specifier_nonarray_195, - &Delete::on_type_specifier_nonarray_196, - &Delete::on_type_specifier_nonarray_197, - &Delete::on_type_specifier_nonarray_198, - &Delete::on_type_specifier_nonarray_199, - &Delete::on_type_specifier_nonarray_200, - &Delete::on_type_specifier_nonarray_201, - &Delete::on_type_specifier_nonarray_202, - &Delete::on_type_specifier_nonarray_203, - &Delete::on_type_specifier_nonarray_204, - &Delete::on_type_specifier_nonarray_205, - &Delete::on_type_specifier_nonarray_206, - &Delete::on_type_specifier_nonarray_207, - &Delete::on_type_specifier_nonarray_208, - &Delete::on_type_specifier_nonarray_209, - &Delete::on_type_specifier_nonarray_210, - &Delete::on_type_specifier_nonarray_211, - &Delete::on_type_specifier_nonarray_212, - &Delete::on_type_specifier_nonarray_213, - &Delete::on_type_specifier_nonarray_214, - &Delete::on_type_specifier_nonarray_215, - &Delete::on_type_specifier_nonarray_216, - &Delete::on_type_specifier_nonarray_217, - &Delete::on_type_specifier_nonarray_218, - &Delete::on_type_specifier_nonarray_219, - &Delete::on_type_specifier_nonarray_220, - &Delete::on_type_specifier_nonarray_221, - &Delete::on_type_specifier_nonarray_222, - &Delete::on_type_specifier_nonarray_223, - &Delete::on_type_specifier_nonarray_224, - &Delete::on_type_specifier_nonarray_225, - &Delete::on_type_specifier_nonarray_226, - &Delete::on_type_specifier_nonarray_227, - &Delete::on_type_specifier_nonarray_228, - &Delete::on_type_specifier_nonarray_229, - &Delete::on_type_specifier_nonarray_230, - &Delete::on_type_specifier_nonarray_231, - &Delete::on_type_specifier_nonarray_232, - &Delete::on_type_specifier_nonarray_233, - &Delete::on_type_specifier_nonarray_234, - &Delete::on_type_specifier_nonarray_235, - &Delete::on_type_specifier_nonarray_236, - &Delete::on_type_specifier_nonarray_237, - &Delete::on_type_specifier_nonarray_238, - &Delete::on_type_specifier_nonarray_239, - &Delete::on_type_specifier_nonarray_240, - &Delete::on_type_specifier_nonarray_241, - &Delete::on_type_specifier_nonarray_242, - &Delete::on_type_specifier_nonarray_243, - &Delete::on_type_specifier_nonarray_244, - &Delete::on_type_specifier_nonarray_245, - &Delete::on_type_specifier_nonarray_246, - &Delete::on_precision_qualifier_247, - &Delete::on_precision_qualifier_248, - &Delete::on_precision_qualifier_249, - &Delete::on_struct_specifier_250, - &Delete::on_struct_specifier_251, - &Delete::on_struct_declaration_list_252, - &Delete::on_struct_declaration_list_253, - &Delete::on_struct_declaration_254, - &Delete::on_struct_declaration_255, - &Delete::on_struct_declarator_list_256, - &Delete::on_struct_declarator_list_257, - &Delete::on_struct_declarator_258, - &Delete::on_struct_declarator_259, - &Delete::on_struct_declarator_260, - &Delete::on_initializer_261, - &Delete::on_declaration_statement_262, - &Delete::on_statement_263, - &Delete::on_statement_264, - &Delete::on_simple_statement_265, - &Delete::on_simple_statement_266, - &Delete::on_simple_statement_267, - &Delete::on_simple_statement_268, - &Delete::on_simple_statement_269, - &Delete::on_simple_statement_270, - &Delete::on_simple_statement_271, - &Delete::on_compound_statement_272, - &Delete::on_compound_statement_273, - &Delete::on_statement_no_new_scope_274, - &Delete::on_statement_no_new_scope_275, - &Delete::on_compound_statement_no_new_scope_276, - &Delete::on_compound_statement_no_new_scope_277, - &Delete::on_statement_list_278, - &Delete::on_statement_list_279, - &Delete::on_expression_statement_280, - &Delete::on_expression_statement_281, - &Delete::on_selection_statement_282, - &Delete::on_selection_rest_statement_283, - &Delete::on_selection_rest_statement_284, - &Delete::on_condition_285, - &Delete::on_condition_286, - &Delete::on_switch_statement_287, - &Delete::on_switch_statement_list_288, - &Delete::on_switch_statement_list_289, - &Delete::on_case_label_290, - &Delete::on_case_label_291, - &Delete::on_iteration_statement_292, - &Delete::on_iteration_statement_293, - &Delete::on_iteration_statement_294, - &Delete::on_for_init_statement_295, - &Delete::on_for_init_statement_296, - &Delete::on_conditionopt_297, - &Delete::on_conditionopt_298, - &Delete::on_for_rest_statement_299, - &Delete::on_for_rest_statement_300, - &Delete::on_jump_statement_301, - &Delete::on_jump_statement_302, - &Delete::on_jump_statement_303, - &Delete::on_jump_statement_304, - &Delete::on_jump_statement_305, - &Delete::on_translation_unit_306, - &Delete::on_translation_unit_307, - &Delete::on_external_declaration_308, - &Delete::on_external_declaration_309, - &Delete::on_external_declaration_310, - &Delete::on_function_definition_311, -0, }; - -// variable_identifier ::= IDENTIFIER ; -void Delete::on_variable_identifier_1(AST *ast) -{ - if (debug) - std::cout << "variable_identifier ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= NUMBER ; -void Delete::on_primary_expression_2(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= NUMBER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= TRUE ; -void Delete::on_primary_expression_3(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= TRUE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= FALSE ; -void Delete::on_primary_expression_4(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= FALSE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= variable_identifier ; -void Delete::on_primary_expression_5(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= variable_identifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= LEFT_PAREN expression RIGHT_PAREN ; -void Delete::on_primary_expression_6(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= LEFT_PAREN expression RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= primary_expression ; -void Delete::on_postfix_expression_7(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= primary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET ; -void Delete::on_postfix_expression_8(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= function_call ; -void Delete::on_postfix_expression_9(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= function_call" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression DOT IDENTIFIER ; -void Delete::on_postfix_expression_10(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression DOT IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression INC_OP ; -void Delete::on_postfix_expression_11(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression INC_OP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression DEC_OP ; -void Delete::on_postfix_expression_12(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression DEC_OP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// integer_expression ::= expression ; -void Delete::on_integer_expression_13(AST *ast) -{ - if (debug) - std::cout << "integer_expression ::= expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call ::= function_call_or_method ; -void Delete::on_function_call_14(AST *ast) -{ - if (debug) - std::cout << "function_call ::= function_call_or_method" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_or_method ::= function_call_generic ; -void Delete::on_function_call_or_method_15(AST *ast) -{ - if (debug) - std::cout << "function_call_or_method ::= function_call_generic" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_or_method ::= postfix_expression DOT function_call_generic ; -void Delete::on_function_call_or_method_16(AST *ast) -{ - if (debug) - std::cout << "function_call_or_method ::= postfix_expression DOT function_call_generic" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN ; -void Delete::on_function_call_generic_17(AST *ast) -{ - if (debug) - std::cout << "function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN ; -void Delete::on_function_call_generic_18(AST *ast) -{ - if (debug) - std::cout << "function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_no_parameters ::= function_call_header VOID ; -void Delete::on_function_call_header_no_parameters_19(AST *ast) -{ - if (debug) - std::cout << "function_call_header_no_parameters ::= function_call_header VOID" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_no_parameters ::= function_call_header ; -void Delete::on_function_call_header_no_parameters_20(AST *ast) -{ - if (debug) - std::cout << "function_call_header_no_parameters ::= function_call_header" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_with_parameters ::= function_call_header assignment_expression ; -void Delete::on_function_call_header_with_parameters_21(AST *ast) -{ - if (debug) - std::cout << "function_call_header_with_parameters ::= function_call_header assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression ; -void Delete::on_function_call_header_with_parameters_22(AST *ast) -{ - if (debug) - std::cout << "function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header ::= function_identifier LEFT_PAREN ; -void Delete::on_function_call_header_23(AST *ast) -{ - if (debug) - std::cout << "function_call_header ::= function_identifier LEFT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_identifier ::= type_specifier ; -void Delete::on_function_identifier_24(AST *ast) -{ - if (debug) - std::cout << "function_identifier ::= type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_identifier ::= IDENTIFIER ; -void Delete::on_function_identifier_25(AST *ast) -{ - if (debug) - std::cout << "function_identifier ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= postfix_expression ; -void Delete::on_unary_expression_26(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= postfix_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= INC_OP unary_expression ; -void Delete::on_unary_expression_27(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= INC_OP unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= DEC_OP unary_expression ; -void Delete::on_unary_expression_28(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= DEC_OP unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= unary_operator unary_expression ; -void Delete::on_unary_expression_29(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= unary_operator unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= PLUS ; -void Delete::on_unary_operator_30(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= PLUS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= DASH ; -void Delete::on_unary_operator_31(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= DASH" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= BANG ; -void Delete::on_unary_operator_32(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= BANG" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= TILDE ; -void Delete::on_unary_operator_33(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= TILDE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= unary_expression ; -void Delete::on_multiplicative_expression_34(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= multiplicative_expression STAR unary_expression ; -void Delete::on_multiplicative_expression_35(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= multiplicative_expression STAR unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= multiplicative_expression SLASH unary_expression ; -void Delete::on_multiplicative_expression_36(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= multiplicative_expression SLASH unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= multiplicative_expression PERCENT unary_expression ; -void Delete::on_multiplicative_expression_37(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= multiplicative_expression PERCENT unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// additive_expression ::= multiplicative_expression ; -void Delete::on_additive_expression_38(AST *ast) -{ - if (debug) - std::cout << "additive_expression ::= multiplicative_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// additive_expression ::= additive_expression PLUS multiplicative_expression ; -void Delete::on_additive_expression_39(AST *ast) -{ - if (debug) - std::cout << "additive_expression ::= additive_expression PLUS multiplicative_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// additive_expression ::= additive_expression DASH multiplicative_expression ; -void Delete::on_additive_expression_40(AST *ast) -{ - if (debug) - std::cout << "additive_expression ::= additive_expression DASH multiplicative_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// shift_expression ::= additive_expression ; -void Delete::on_shift_expression_41(AST *ast) -{ - if (debug) - std::cout << "shift_expression ::= additive_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// shift_expression ::= shift_expression LEFT_OP additive_expression ; -void Delete::on_shift_expression_42(AST *ast) -{ - if (debug) - std::cout << "shift_expression ::= shift_expression LEFT_OP additive_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// shift_expression ::= shift_expression RIGHT_OP additive_expression ; -void Delete::on_shift_expression_43(AST *ast) -{ - if (debug) - std::cout << "shift_expression ::= shift_expression RIGHT_OP additive_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= shift_expression ; -void Delete::on_relational_expression_44(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression LEFT_ANGLE shift_expression ; -void Delete::on_relational_expression_45(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression LEFT_ANGLE shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression RIGHT_ANGLE shift_expression ; -void Delete::on_relational_expression_46(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression RIGHT_ANGLE shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression LE_OP shift_expression ; -void Delete::on_relational_expression_47(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression LE_OP shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression GE_OP shift_expression ; -void Delete::on_relational_expression_48(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression GE_OP shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// equality_expression ::= relational_expression ; -void Delete::on_equality_expression_49(AST *ast) -{ - if (debug) - std::cout << "equality_expression ::= relational_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// equality_expression ::= equality_expression EQ_OP relational_expression ; -void Delete::on_equality_expression_50(AST *ast) -{ - if (debug) - std::cout << "equality_expression ::= equality_expression EQ_OP relational_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// equality_expression ::= equality_expression NE_OP relational_expression ; -void Delete::on_equality_expression_51(AST *ast) -{ - if (debug) - std::cout << "equality_expression ::= equality_expression NE_OP relational_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// and_expression ::= equality_expression ; -void Delete::on_and_expression_52(AST *ast) -{ - if (debug) - std::cout << "and_expression ::= equality_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// and_expression ::= and_expression AMPERSAND equality_expression ; -void Delete::on_and_expression_53(AST *ast) -{ - if (debug) - std::cout << "and_expression ::= and_expression AMPERSAND equality_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// exclusive_or_expression ::= and_expression ; -void Delete::on_exclusive_or_expression_54(AST *ast) -{ - if (debug) - std::cout << "exclusive_or_expression ::= and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// exclusive_or_expression ::= exclusive_or_expression CARET and_expression ; -void Delete::on_exclusive_or_expression_55(AST *ast) -{ - if (debug) - std::cout << "exclusive_or_expression ::= exclusive_or_expression CARET and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// inclusive_or_expression ::= exclusive_or_expression ; -void Delete::on_inclusive_or_expression_56(AST *ast) -{ - if (debug) - std::cout << "inclusive_or_expression ::= exclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression ; -void Delete::on_inclusive_or_expression_57(AST *ast) -{ - if (debug) - std::cout << "inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_and_expression ::= inclusive_or_expression ; -void Delete::on_logical_and_expression_58(AST *ast) -{ - if (debug) - std::cout << "logical_and_expression ::= inclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression ; -void Delete::on_logical_and_expression_59(AST *ast) -{ - if (debug) - std::cout << "logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_xor_expression ::= logical_and_expression ; -void Delete::on_logical_xor_expression_60(AST *ast) -{ - if (debug) - std::cout << "logical_xor_expression ::= logical_and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression ; -void Delete::on_logical_xor_expression_61(AST *ast) -{ - if (debug) - std::cout << "logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_or_expression ::= logical_xor_expression ; -void Delete::on_logical_or_expression_62(AST *ast) -{ - if (debug) - std::cout << "logical_or_expression ::= logical_xor_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression ; -void Delete::on_logical_or_expression_63(AST *ast) -{ - if (debug) - std::cout << "logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditional_expression ::= logical_or_expression ; -void Delete::on_conditional_expression_64(AST *ast) -{ - if (debug) - std::cout << "conditional_expression ::= logical_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditional_expression ::= logical_or_expression QUESTION expression COLON assignment_expression ; -void Delete::on_conditional_expression_65(AST *ast) -{ - if (debug) - std::cout << "conditional_expression ::= logical_or_expression QUESTION expression COLON assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_expression ::= conditional_expression ; -void Delete::on_assignment_expression_66(AST *ast) -{ - if (debug) - std::cout << "assignment_expression ::= conditional_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_expression ::= unary_expression assignment_operator assignment_expression ; -void Delete::on_assignment_expression_67(AST *ast) -{ - if (debug) - std::cout << "assignment_expression ::= unary_expression assignment_operator assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= EQUAL ; -void Delete::on_assignment_operator_68(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= EQUAL" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= MUL_ASSIGN ; -void Delete::on_assignment_operator_69(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= MUL_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= DIV_ASSIGN ; -void Delete::on_assignment_operator_70(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= DIV_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= MOD_ASSIGN ; -void Delete::on_assignment_operator_71(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= MOD_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= ADD_ASSIGN ; -void Delete::on_assignment_operator_72(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= ADD_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= SUB_ASSIGN ; -void Delete::on_assignment_operator_73(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= SUB_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= LEFT_ASSIGN ; -void Delete::on_assignment_operator_74(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= LEFT_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= RIGHT_ASSIGN ; -void Delete::on_assignment_operator_75(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= RIGHT_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= AND_ASSIGN ; -void Delete::on_assignment_operator_76(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= AND_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= XOR_ASSIGN ; -void Delete::on_assignment_operator_77(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= XOR_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= OR_ASSIGN ; -void Delete::on_assignment_operator_78(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= OR_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression ::= assignment_expression ; -void Delete::on_expression_79(AST *ast) -{ - if (debug) - std::cout << "expression ::= assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression ::= expression COMMA assignment_expression ; -void Delete::on_expression_80(AST *ast) -{ - if (debug) - std::cout << "expression ::= expression COMMA assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// constant_expression ::= conditional_expression ; -void Delete::on_constant_expression_81(AST *ast) -{ - if (debug) - std::cout << "constant_expression ::= conditional_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= function_prototype SEMICOLON ; -void Delete::on_declaration_82(AST *ast) -{ - if (debug) - std::cout << "declaration ::= function_prototype SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= init_declarator_list SEMICOLON ; -void Delete::on_declaration_83(AST *ast) -{ - if (debug) - std::cout << "declaration ::= init_declarator_list SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= PRECISION precision_qualifier type_specifier_no_prec SEMICOLON ; -void Delete::on_declaration_84(AST *ast) -{ - if (debug) - std::cout << "declaration ::= PRECISION precision_qualifier type_specifier_no_prec SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON ; -void Delete::on_declaration_85(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON ; -void Delete::on_declaration_86(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET RIGHT_BRACKET SEMICOLON ; -void Delete::on_declaration_87(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET RIGHT_BRACKET SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON ; -void Delete::on_declaration_88(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier SEMICOLON ; -void Delete::on_declaration_89(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_prototype ::= function_declarator RIGHT_PAREN ; -void Delete::on_function_prototype_90(AST *ast) -{ - if (debug) - std::cout << "function_prototype ::= function_declarator RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_declarator ::= function_header ; -void Delete::on_function_declarator_91(AST *ast) -{ - if (debug) - std::cout << "function_declarator ::= function_header" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_declarator ::= function_header_with_parameters ; -void Delete::on_function_declarator_92(AST *ast) -{ - if (debug) - std::cout << "function_declarator ::= function_header_with_parameters" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_header_with_parameters ::= function_header parameter_declaration ; -void Delete::on_function_header_with_parameters_93(AST *ast) -{ - if (debug) - std::cout << "function_header_with_parameters ::= function_header parameter_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration ; -void Delete::on_function_header_with_parameters_94(AST *ast) -{ - if (debug) - std::cout << "function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN ; -void Delete::on_function_header_95(AST *ast) -{ - if (debug) - std::cout << "function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declarator ::= type_specifier IDENTIFIER ; -void Delete::on_parameter_declarator_96(AST *ast) -{ - if (debug) - std::cout << "parameter_declarator ::= type_specifier IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Delete::on_parameter_declarator_97(AST *ast) -{ - if (debug) - std::cout << "parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_declarator ; -void Delete::on_parameter_declaration_98(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_qualifier parameter_declarator ; -void Delete::on_parameter_declaration_99(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_qualifier parameter_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_type_specifier ; -void Delete::on_parameter_declaration_100(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_qualifier parameter_type_specifier ; -void Delete::on_parameter_declaration_101(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_qualifier parameter_type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= ; -void Delete::on_parameter_qualifier_102(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::=" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= IN ; -void Delete::on_parameter_qualifier_103(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::= IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= OUT ; -void Delete::on_parameter_qualifier_104(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::= OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= INOUT ; -void Delete::on_parameter_qualifier_105(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::= INOUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_type_specifier ::= type_specifier ; -void Delete::on_parameter_type_specifier_106(AST *ast) -{ - if (debug) - std::cout << "parameter_type_specifier ::= type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= single_declaration ; -void Delete::on_init_declarator_list_107(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= single_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER ; -void Delete::on_init_declarator_list_108(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; -void Delete::on_init_declarator_list_109(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Delete::on_init_declarator_list_110(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer ; -void Delete::on_init_declarator_list_111(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer ; -void Delete::on_init_declarator_list_112(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer ; -void Delete::on_init_declarator_list_113(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type ; -void Delete::on_single_declaration_114(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER ; -void Delete::on_single_declaration_115(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; -void Delete::on_single_declaration_116(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Delete::on_single_declaration_117(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer ; -void Delete::on_single_declaration_118(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer ; -void Delete::on_single_declaration_119(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer ; -void Delete::on_single_declaration_120(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= INVARIANT IDENTIFIER ; -void Delete::on_single_declaration_121(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= INVARIANT IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// fully_specified_type ::= type_specifier ; -void Delete::on_fully_specified_type_122(AST *ast) -{ - if (debug) - std::cout << "fully_specified_type ::= type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// fully_specified_type ::= type_qualifier type_specifier ; -void Delete::on_fully_specified_type_123(AST *ast) -{ - if (debug) - std::cout << "fully_specified_type ::= type_qualifier type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// invariant_qualifier ::= INVARIANT ; -void Delete::on_invariant_qualifier_124(AST *ast) -{ - if (debug) - std::cout << "invariant_qualifier ::= INVARIANT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// interpolation_qualifier ::= SMOOTH ; -void Delete::on_interpolation_qualifier_125(AST *ast) -{ - if (debug) - std::cout << "interpolation_qualifier ::= SMOOTH" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// interpolation_qualifier ::= FLAT ; -void Delete::on_interpolation_qualifier_126(AST *ast) -{ - if (debug) - std::cout << "interpolation_qualifier ::= FLAT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// interpolation_qualifier ::= NOPERSPECTIVE ; -void Delete::on_interpolation_qualifier_127(AST *ast) -{ - if (debug) - std::cout << "interpolation_qualifier ::= NOPERSPECTIVE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier ::= LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN ; -void Delete::on_layout_qualifier_128(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier ::= LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id_list ::= layout_qualifier_id ; -void Delete::on_layout_qualifier_id_list_129(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id_list ::= layout_qualifier_id" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id_list ::= layout_qualifier_id_list COMMA layout_qualifier_id ; -void Delete::on_layout_qualifier_id_list_130(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id_list ::= layout_qualifier_id_list COMMA layout_qualifier_id" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id ::= IDENTIFIER ; -void Delete::on_layout_qualifier_id_131(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id ::= IDENTIFIER EQUAL NUMBER ; -void Delete::on_layout_qualifier_id_132(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id ::= IDENTIFIER EQUAL NUMBER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_type_qualifier ::= CONST ; -void Delete::on_parameter_type_qualifier_133(AST *ast) -{ - if (debug) - std::cout << "parameter_type_qualifier ::= CONST" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= storage_qualifier ; -void Delete::on_type_qualifier_134(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= layout_qualifier ; -void Delete::on_type_qualifier_135(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= layout_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= layout_qualifier storage_qualifier ; -void Delete::on_type_qualifier_136(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= layout_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= interpolation_qualifier storage_qualifier ; -void Delete::on_type_qualifier_137(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= interpolation_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= interpolation_qualifier ; -void Delete::on_type_qualifier_138(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= interpolation_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= invariant_qualifier storage_qualifier ; -void Delete::on_type_qualifier_139(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= invariant_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= invariant_qualifier interpolation_qualifier storage_qualifier ; -void Delete::on_type_qualifier_140(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= invariant_qualifier interpolation_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= INVARIANT ; -void Delete::on_type_qualifier_141(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= INVARIANT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CONST ; -void Delete::on_storage_qualifier_142(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CONST" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= ATTRIBUTE ; -void Delete::on_storage_qualifier_143(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= ATTRIBUTE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= VARYING ; -void Delete::on_storage_qualifier_144(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= VARYING" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CENTROID VARYING ; -void Delete::on_storage_qualifier_145(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CENTROID VARYING" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= IN ; -void Delete::on_storage_qualifier_146(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= OUT ; -void Delete::on_storage_qualifier_147(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CENTROID IN ; -void Delete::on_storage_qualifier_148(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CENTROID IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CENTROID OUT ; -void Delete::on_storage_qualifier_149(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CENTROID OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= PATCH IN ; -void Delete::on_storage_qualifier_150(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= PATCH IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= PATCH OUT ; -void Delete::on_storage_qualifier_151(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= PATCH OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= SAMPLE IN ; -void Delete::on_storage_qualifier_152(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= SAMPLE IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= SAMPLE OUT ; -void Delete::on_storage_qualifier_153(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= SAMPLE OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= UNIFORM ; -void Delete::on_storage_qualifier_154(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= UNIFORM" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier ::= type_specifier_no_prec ; -void Delete::on_type_specifier_155(AST *ast) -{ - if (debug) - std::cout << "type_specifier ::= type_specifier_no_prec" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier ::= precision_qualifier type_specifier_no_prec ; -void Delete::on_type_specifier_156(AST *ast) -{ - if (debug) - std::cout << "type_specifier ::= precision_qualifier type_specifier_no_prec" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_no_prec ::= type_specifier_nonarray ; -void Delete::on_type_specifier_no_prec_157(AST *ast) -{ - if (debug) - std::cout << "type_specifier_no_prec ::= type_specifier_nonarray" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET RIGHT_BRACKET ; -void Delete::on_type_specifier_no_prec_158(AST *ast) -{ - if (debug) - std::cout << "type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Delete::on_type_specifier_no_prec_159(AST *ast) -{ - if (debug) - std::cout << "type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VOID ; -void Delete::on_type_specifier_nonarray_160(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VOID" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= FLOAT ; -void Delete::on_type_specifier_nonarray_161(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= FLOAT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DOUBLE ; -void Delete::on_type_specifier_nonarray_162(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DOUBLE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= INT ; -void Delete::on_type_specifier_nonarray_163(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= INT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UINT ; -void Delete::on_type_specifier_nonarray_164(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UINT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BOOL ; -void Delete::on_type_specifier_nonarray_165(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BOOL" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VEC2 ; -void Delete::on_type_specifier_nonarray_166(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VEC3 ; -void Delete::on_type_specifier_nonarray_167(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VEC4 ; -void Delete::on_type_specifier_nonarray_168(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DVEC2 ; -void Delete::on_type_specifier_nonarray_169(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DVEC3 ; -void Delete::on_type_specifier_nonarray_170(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DVEC4 ; -void Delete::on_type_specifier_nonarray_171(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BVEC2 ; -void Delete::on_type_specifier_nonarray_172(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BVEC3 ; -void Delete::on_type_specifier_nonarray_173(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BVEC4 ; -void Delete::on_type_specifier_nonarray_174(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= IVEC2 ; -void Delete::on_type_specifier_nonarray_175(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= IVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= IVEC3 ; -void Delete::on_type_specifier_nonarray_176(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= IVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= IVEC4 ; -void Delete::on_type_specifier_nonarray_177(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= IVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UVEC2 ; -void Delete::on_type_specifier_nonarray_178(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UVEC3 ; -void Delete::on_type_specifier_nonarray_179(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UVEC4 ; -void Delete::on_type_specifier_nonarray_180(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2 ; -void Delete::on_type_specifier_nonarray_181(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3 ; -void Delete::on_type_specifier_nonarray_182(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4 ; -void Delete::on_type_specifier_nonarray_183(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2X2 ; -void Delete::on_type_specifier_nonarray_184(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2X3 ; -void Delete::on_type_specifier_nonarray_185(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2X4 ; -void Delete::on_type_specifier_nonarray_186(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3X2 ; -void Delete::on_type_specifier_nonarray_187(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3X3 ; -void Delete::on_type_specifier_nonarray_188(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3X4 ; -void Delete::on_type_specifier_nonarray_189(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4X2 ; -void Delete::on_type_specifier_nonarray_190(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4X3 ; -void Delete::on_type_specifier_nonarray_191(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4X4 ; -void Delete::on_type_specifier_nonarray_192(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2 ; -void Delete::on_type_specifier_nonarray_193(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3 ; -void Delete::on_type_specifier_nonarray_194(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4 ; -void Delete::on_type_specifier_nonarray_195(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2X2 ; -void Delete::on_type_specifier_nonarray_196(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2X3 ; -void Delete::on_type_specifier_nonarray_197(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2X4 ; -void Delete::on_type_specifier_nonarray_198(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3X2 ; -void Delete::on_type_specifier_nonarray_199(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3X3 ; -void Delete::on_type_specifier_nonarray_200(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3X4 ; -void Delete::on_type_specifier_nonarray_201(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4X2 ; -void Delete::on_type_specifier_nonarray_202(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4X3 ; -void Delete::on_type_specifier_nonarray_203(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4X4 ; -void Delete::on_type_specifier_nonarray_204(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1D ; -void Delete::on_type_specifier_nonarray_205(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2D ; -void Delete::on_type_specifier_nonarray_206(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER3D ; -void Delete::on_type_specifier_nonarray_207(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER3D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBE ; -void Delete::on_type_specifier_nonarray_208(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1DSHADOW ; -void Delete::on_type_specifier_nonarray_209(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1DSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DSHADOW ; -void Delete::on_type_specifier_nonarray_210(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBESHADOW ; -void Delete::on_type_specifier_nonarray_211(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBESHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1DARRAY ; -void Delete::on_type_specifier_nonarray_212(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DARRAY ; -void Delete::on_type_specifier_nonarray_213(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1DARRAYSHADOW ; -void Delete::on_type_specifier_nonarray_214(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1DARRAYSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DARRAYSHADOW ; -void Delete::on_type_specifier_nonarray_215(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DARRAYSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBEARRAY ; -void Delete::on_type_specifier_nonarray_216(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBEARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBEARRAYSHADOW ; -void Delete::on_type_specifier_nonarray_217(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBEARRAYSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER1D ; -void Delete::on_type_specifier_nonarray_218(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER1D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2D ; -void Delete::on_type_specifier_nonarray_219(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER3D ; -void Delete::on_type_specifier_nonarray_220(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER3D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLERCUBE ; -void Delete::on_type_specifier_nonarray_221(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLERCUBE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER1DARRAY ; -void Delete::on_type_specifier_nonarray_222(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER1DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DARRAY ; -void Delete::on_type_specifier_nonarray_223(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLERCUBEARRAY ; -void Delete::on_type_specifier_nonarray_224(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLERCUBEARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER1D ; -void Delete::on_type_specifier_nonarray_225(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER1D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2D ; -void Delete::on_type_specifier_nonarray_226(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER3D ; -void Delete::on_type_specifier_nonarray_227(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER3D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLERCUBE ; -void Delete::on_type_specifier_nonarray_228(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLERCUBE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER1DARRAY ; -void Delete::on_type_specifier_nonarray_229(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER1DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DARRAY ; -void Delete::on_type_specifier_nonarray_230(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLERCUBEARRAY ; -void Delete::on_type_specifier_nonarray_231(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLERCUBEARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DRECT ; -void Delete::on_type_specifier_nonarray_232(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DRECT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DRECTSHADOW ; -void Delete::on_type_specifier_nonarray_233(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DRECTSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DRECT ; -void Delete::on_type_specifier_nonarray_234(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DRECT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DRECT ; -void Delete::on_type_specifier_nonarray_235(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DRECT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERBUFFER ; -void Delete::on_type_specifier_nonarray_236(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERBUFFER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLERBUFFER ; -void Delete::on_type_specifier_nonarray_237(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLERBUFFER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLERBUFFER ; -void Delete::on_type_specifier_nonarray_238(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLERBUFFER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DMS ; -void Delete::on_type_specifier_nonarray_239(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DMS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DMS ; -void Delete::on_type_specifier_nonarray_240(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DMS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DMS ; -void Delete::on_type_specifier_nonarray_241(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DMS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DMSARRAY ; -void Delete::on_type_specifier_nonarray_242(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DMSARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DMSARRAY ; -void Delete::on_type_specifier_nonarray_243(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DMSARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DMSARRAY ; -void Delete::on_type_specifier_nonarray_244(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DMSARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= struct_specifier ; -void Delete::on_type_specifier_nonarray_245(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= struct_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= TYPE_NAME ; -void Delete::on_type_specifier_nonarray_246(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= TYPE_NAME" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// precision_qualifier ::= HIGHP ; -void Delete::on_precision_qualifier_247(AST *ast) -{ - if (debug) - std::cout << "precision_qualifier ::= HIGHP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// precision_qualifier ::= MEDIUMP ; -void Delete::on_precision_qualifier_248(AST *ast) -{ - if (debug) - std::cout << "precision_qualifier ::= MEDIUMP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// precision_qualifier ::= LOWP ; -void Delete::on_precision_qualifier_249(AST *ast) -{ - if (debug) - std::cout << "precision_qualifier ::= LOWP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE ; -void Delete::on_struct_specifier_250(AST *ast) -{ - if (debug) - std::cout << "struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE ; -void Delete::on_struct_specifier_251(AST *ast) -{ - if (debug) - std::cout << "struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration_list ::= struct_declaration ; -void Delete::on_struct_declaration_list_252(AST *ast) -{ - if (debug) - std::cout << "struct_declaration_list ::= struct_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration_list ::= struct_declaration_list struct_declaration ; -void Delete::on_struct_declaration_list_253(AST *ast) -{ - if (debug) - std::cout << "struct_declaration_list ::= struct_declaration_list struct_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration ::= type_specifier struct_declarator_list SEMICOLON ; -void Delete::on_struct_declaration_254(AST *ast) -{ - if (debug) - std::cout << "struct_declaration ::= type_specifier struct_declarator_list SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration ::= type_qualifier type_specifier struct_declarator_list SEMICOLON ; -void Delete::on_struct_declaration_255(AST *ast) -{ - if (debug) - std::cout << "struct_declaration ::= type_qualifier type_specifier struct_declarator_list SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator_list ::= struct_declarator ; -void Delete::on_struct_declarator_list_256(AST *ast) -{ - if (debug) - std::cout << "struct_declarator_list ::= struct_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator_list ::= struct_declarator_list COMMA struct_declarator ; -void Delete::on_struct_declarator_list_257(AST *ast) -{ - if (debug) - std::cout << "struct_declarator_list ::= struct_declarator_list COMMA struct_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator ::= IDENTIFIER ; -void Delete::on_struct_declarator_258(AST *ast) -{ - if (debug) - std::cout << "struct_declarator ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator ::= IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; -void Delete::on_struct_declarator_259(AST *ast) -{ - if (debug) - std::cout << "struct_declarator ::= IDENTIFIER LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Delete::on_struct_declarator_260(AST *ast) -{ - if (debug) - std::cout << "struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// initializer ::= assignment_expression ; -void Delete::on_initializer_261(AST *ast) -{ - if (debug) - std::cout << "initializer ::= assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration_statement ::= declaration ; -void Delete::on_declaration_statement_262(AST *ast) -{ - if (debug) - std::cout << "declaration_statement ::= declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement ::= compound_statement ; -void Delete::on_statement_263(AST *ast) -{ - if (debug) - std::cout << "statement ::= compound_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement ::= simple_statement ; -void Delete::on_statement_264(AST *ast) -{ - if (debug) - std::cout << "statement ::= simple_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= declaration_statement ; -void Delete::on_simple_statement_265(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= declaration_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= expression_statement ; -void Delete::on_simple_statement_266(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= expression_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= selection_statement ; -void Delete::on_simple_statement_267(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= selection_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= switch_statement ; -void Delete::on_simple_statement_268(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= switch_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= case_label ; -void Delete::on_simple_statement_269(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= case_label" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= iteration_statement ; -void Delete::on_simple_statement_270(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= iteration_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= jump_statement ; -void Delete::on_simple_statement_271(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= jump_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement ::= LEFT_BRACE RIGHT_BRACE ; -void Delete::on_compound_statement_272(AST *ast) -{ - if (debug) - std::cout << "compound_statement ::= LEFT_BRACE RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE ; -void Delete::on_compound_statement_273(AST *ast) -{ - if (debug) - std::cout << "compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_no_new_scope ::= compound_statement_no_new_scope ; -void Delete::on_statement_no_new_scope_274(AST *ast) -{ - if (debug) - std::cout << "statement_no_new_scope ::= compound_statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_no_new_scope ::= simple_statement ; -void Delete::on_statement_no_new_scope_275(AST *ast) -{ - if (debug) - std::cout << "statement_no_new_scope ::= simple_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE ; -void Delete::on_compound_statement_no_new_scope_276(AST *ast) -{ - if (debug) - std::cout << "compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE ; -void Delete::on_compound_statement_no_new_scope_277(AST *ast) -{ - if (debug) - std::cout << "compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_list ::= statement ; -void Delete::on_statement_list_278(AST *ast) -{ - if (debug) - std::cout << "statement_list ::= statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_list ::= statement_list statement ; -void Delete::on_statement_list_279(AST *ast) -{ - if (debug) - std::cout << "statement_list ::= statement_list statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression_statement ::= SEMICOLON ; -void Delete::on_expression_statement_280(AST *ast) -{ - if (debug) - std::cout << "expression_statement ::= SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression_statement ::= expression SEMICOLON ; -void Delete::on_expression_statement_281(AST *ast) -{ - if (debug) - std::cout << "expression_statement ::= expression SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement ; -void Delete::on_selection_statement_282(AST *ast) -{ - if (debug) - std::cout << "selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// selection_rest_statement ::= statement ELSE statement ; -void Delete::on_selection_rest_statement_283(AST *ast) -{ - if (debug) - std::cout << "selection_rest_statement ::= statement ELSE statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// selection_rest_statement ::= statement ; -void Delete::on_selection_rest_statement_284(AST *ast) -{ - if (debug) - std::cout << "selection_rest_statement ::= statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// condition ::= expression ; -void Delete::on_condition_285(AST *ast) -{ - if (debug) - std::cout << "condition ::= expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// condition ::= fully_specified_type IDENTIFIER EQUAL initializer ; -void Delete::on_condition_286(AST *ast) -{ - if (debug) - std::cout << "condition ::= fully_specified_type IDENTIFIER EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// switch_statement ::= SWITCH LEFT_PAREN expression RIGHT_PAREN LEFT_BRACE switch_statement_list RIGHT_BRACE ; -void Delete::on_switch_statement_287(AST *ast) -{ - if (debug) - std::cout << "switch_statement ::= SWITCH LEFT_PAREN expression RIGHT_PAREN LEFT_BRACE switch_statement_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// switch_statement_list ::= ; -void Delete::on_switch_statement_list_288(AST *ast) -{ - if (debug) - std::cout << "switch_statement_list ::=" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// switch_statement_list ::= statement_list ; -void Delete::on_switch_statement_list_289(AST *ast) -{ - if (debug) - std::cout << "switch_statement_list ::= statement_list" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// case_label ::= CASE expression COLON ; -void Delete::on_case_label_290(AST *ast) -{ - if (debug) - std::cout << "case_label ::= CASE expression COLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// case_label ::= DEFAULT COLON ; -void Delete::on_case_label_291(AST *ast) -{ - if (debug) - std::cout << "case_label ::= DEFAULT COLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope ; -void Delete::on_iteration_statement_292(AST *ast) -{ - if (debug) - std::cout << "iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON ; -void Delete::on_iteration_statement_293(AST *ast) -{ - if (debug) - std::cout << "iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope ; -void Delete::on_iteration_statement_294(AST *ast) -{ - if (debug) - std::cout << "iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_init_statement ::= expression_statement ; -void Delete::on_for_init_statement_295(AST *ast) -{ - if (debug) - std::cout << "for_init_statement ::= expression_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_init_statement ::= declaration_statement ; -void Delete::on_for_init_statement_296(AST *ast) -{ - if (debug) - std::cout << "for_init_statement ::= declaration_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditionopt ::= ; -void Delete::on_conditionopt_297(AST *ast) -{ - if (debug) - std::cout << "conditionopt ::=" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditionopt ::= condition ; -void Delete::on_conditionopt_298(AST *ast) -{ - if (debug) - std::cout << "conditionopt ::= condition" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_rest_statement ::= conditionopt SEMICOLON ; -void Delete::on_for_rest_statement_299(AST *ast) -{ - if (debug) - std::cout << "for_rest_statement ::= conditionopt SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_rest_statement ::= conditionopt SEMICOLON expression ; -void Delete::on_for_rest_statement_300(AST *ast) -{ - if (debug) - std::cout << "for_rest_statement ::= conditionopt SEMICOLON expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= CONTINUE SEMICOLON ; -void Delete::on_jump_statement_301(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= CONTINUE SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= BREAK SEMICOLON ; -void Delete::on_jump_statement_302(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= BREAK SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= RETURN SEMICOLON ; -void Delete::on_jump_statement_303(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= RETURN SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= RETURN expression SEMICOLON ; -void Delete::on_jump_statement_304(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= RETURN expression SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= DISCARD SEMICOLON ; -void Delete::on_jump_statement_305(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= DISCARD SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// translation_unit ::= external_declaration ; -void Delete::on_translation_unit_306(AST *ast) -{ - if (debug) - std::cout << "translation_unit ::= external_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// translation_unit ::= translation_unit external_declaration ; -void Delete::on_translation_unit_307(AST *ast) -{ - if (debug) - std::cout << "translation_unit ::= translation_unit external_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// external_declaration ::= function_definition ; -void Delete::on_external_declaration_308(AST *ast) -{ - if (debug) - std::cout << "external_declaration ::= function_definition" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// external_declaration ::= declaration ; -void Delete::on_external_declaration_309(AST *ast) -{ - if (debug) - std::cout << "external_declaration ::= declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// external_declaration ::= SEMICOLON ; -void Delete::on_external_declaration_310(AST *ast) -{ - if (debug) - std::cout << "external_declaration ::= SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_definition ::= function_prototype compound_statement_no_new_scope ; -void Delete::on_function_definition_311(AST *ast) -{ - if (debug) - std::cout << "function_definition ::= function_prototype compound_statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - diff --git a/src/libs/glsl/glsldump.cpp b/src/libs/glsl/glsldump.cpp deleted file mode 100644 index 50bfa06c9d2..00000000000 --- a/src/libs/glsl/glsldump.cpp +++ /dev/null @@ -1,3498 +0,0 @@ -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "glslast.h" - -namespace GLSL { - -class Dump -{ - typedef void (Dump::*dispatch_func)(AST *); - static dispatch_func dispatch[]; - -public: - void accept(AST *ast) - { - if (! ast) - return; - else if (Operator *op = ast->asOperator()) - (this->*dispatch[op->ruleno])(ast); - } - - template - void accept(It first, It last) - { - for (; first != last; ++first) - accept(*first); - } - -private: - void on_variable_identifier_1(AST *); - void on_primary_expression_2(AST *); - void on_primary_expression_3(AST *); - void on_primary_expression_4(AST *); - void on_primary_expression_5(AST *); - void on_primary_expression_6(AST *); - void on_postfix_expression_7(AST *); - void on_postfix_expression_8(AST *); - void on_postfix_expression_9(AST *); - void on_postfix_expression_10(AST *); - void on_postfix_expression_11(AST *); - void on_postfix_expression_12(AST *); - void on_integer_expression_13(AST *); - void on_function_call_14(AST *); - void on_function_call_or_method_15(AST *); - void on_function_call_or_method_16(AST *); - void on_function_call_generic_17(AST *); - void on_function_call_generic_18(AST *); - void on_function_call_header_no_parameters_19(AST *); - void on_function_call_header_no_parameters_20(AST *); - void on_function_call_header_with_parameters_21(AST *); - void on_function_call_header_with_parameters_22(AST *); - void on_function_call_header_23(AST *); - void on_function_identifier_24(AST *); - void on_function_identifier_25(AST *); - void on_unary_expression_26(AST *); - void on_unary_expression_27(AST *); - void on_unary_expression_28(AST *); - void on_unary_expression_29(AST *); - void on_unary_operator_30(AST *); - void on_unary_operator_31(AST *); - void on_unary_operator_32(AST *); - void on_unary_operator_33(AST *); - void on_multiplicative_expression_34(AST *); - void on_multiplicative_expression_35(AST *); - void on_multiplicative_expression_36(AST *); - void on_multiplicative_expression_37(AST *); - void on_additive_expression_38(AST *); - void on_additive_expression_39(AST *); - void on_additive_expression_40(AST *); - void on_shift_expression_41(AST *); - void on_shift_expression_42(AST *); - void on_shift_expression_43(AST *); - void on_relational_expression_44(AST *); - void on_relational_expression_45(AST *); - void on_relational_expression_46(AST *); - void on_relational_expression_47(AST *); - void on_relational_expression_48(AST *); - void on_equality_expression_49(AST *); - void on_equality_expression_50(AST *); - void on_equality_expression_51(AST *); - void on_and_expression_52(AST *); - void on_and_expression_53(AST *); - void on_exclusive_or_expression_54(AST *); - void on_exclusive_or_expression_55(AST *); - void on_inclusive_or_expression_56(AST *); - void on_inclusive_or_expression_57(AST *); - void on_logical_and_expression_58(AST *); - void on_logical_and_expression_59(AST *); - void on_logical_xor_expression_60(AST *); - void on_logical_xor_expression_61(AST *); - void on_logical_or_expression_62(AST *); - void on_logical_or_expression_63(AST *); - void on_conditional_expression_64(AST *); - void on_conditional_expression_65(AST *); - void on_assignment_expression_66(AST *); - void on_assignment_expression_67(AST *); - void on_assignment_operator_68(AST *); - void on_assignment_operator_69(AST *); - void on_assignment_operator_70(AST *); - void on_assignment_operator_71(AST *); - void on_assignment_operator_72(AST *); - void on_assignment_operator_73(AST *); - void on_assignment_operator_74(AST *); - void on_assignment_operator_75(AST *); - void on_assignment_operator_76(AST *); - void on_assignment_operator_77(AST *); - void on_assignment_operator_78(AST *); - void on_expression_79(AST *); - void on_expression_80(AST *); - void on_constant_expression_81(AST *); - void on_declaration_82(AST *); - void on_declaration_83(AST *); - void on_declaration_84(AST *); - void on_declaration_85(AST *); - void on_declaration_86(AST *); - void on_declaration_87(AST *); - void on_declaration_88(AST *); - void on_declaration_89(AST *); - void on_function_prototype_90(AST *); - void on_function_declarator_91(AST *); - void on_function_declarator_92(AST *); - void on_function_header_with_parameters_93(AST *); - void on_function_header_with_parameters_94(AST *); - void on_function_header_95(AST *); - void on_parameter_declarator_96(AST *); - void on_parameter_declarator_97(AST *); - void on_parameter_declaration_98(AST *); - void on_parameter_declaration_99(AST *); - void on_parameter_declaration_100(AST *); - void on_parameter_declaration_101(AST *); - void on_parameter_qualifier_102(AST *); - void on_parameter_qualifier_103(AST *); - void on_parameter_qualifier_104(AST *); - void on_parameter_qualifier_105(AST *); - void on_parameter_type_specifier_106(AST *); - void on_init_declarator_list_107(AST *); - void on_init_declarator_list_108(AST *); - void on_init_declarator_list_109(AST *); - void on_init_declarator_list_110(AST *); - void on_init_declarator_list_111(AST *); - void on_init_declarator_list_112(AST *); - void on_init_declarator_list_113(AST *); - void on_single_declaration_114(AST *); - void on_single_declaration_115(AST *); - void on_single_declaration_116(AST *); - void on_single_declaration_117(AST *); - void on_single_declaration_118(AST *); - void on_single_declaration_119(AST *); - void on_single_declaration_120(AST *); - void on_single_declaration_121(AST *); - void on_fully_specified_type_122(AST *); - void on_fully_specified_type_123(AST *); - void on_invariant_qualifier_124(AST *); - void on_interpolation_qualifier_125(AST *); - void on_interpolation_qualifier_126(AST *); - void on_interpolation_qualifier_127(AST *); - void on_layout_qualifier_128(AST *); - void on_layout_qualifier_id_list_129(AST *); - void on_layout_qualifier_id_list_130(AST *); - void on_layout_qualifier_id_131(AST *); - void on_layout_qualifier_id_132(AST *); - void on_parameter_type_qualifier_133(AST *); - void on_type_qualifier_134(AST *); - void on_type_qualifier_135(AST *); - void on_type_qualifier_136(AST *); - void on_type_qualifier_137(AST *); - void on_type_qualifier_138(AST *); - void on_type_qualifier_139(AST *); - void on_type_qualifier_140(AST *); - void on_type_qualifier_141(AST *); - void on_storage_qualifier_142(AST *); - void on_storage_qualifier_143(AST *); - void on_storage_qualifier_144(AST *); - void on_storage_qualifier_145(AST *); - void on_storage_qualifier_146(AST *); - void on_storage_qualifier_147(AST *); - void on_storage_qualifier_148(AST *); - void on_storage_qualifier_149(AST *); - void on_storage_qualifier_150(AST *); - void on_storage_qualifier_151(AST *); - void on_storage_qualifier_152(AST *); - void on_storage_qualifier_153(AST *); - void on_storage_qualifier_154(AST *); - void on_type_specifier_155(AST *); - void on_type_specifier_156(AST *); - void on_type_specifier_no_prec_157(AST *); - void on_type_specifier_no_prec_158(AST *); - void on_type_specifier_no_prec_159(AST *); - void on_type_specifier_nonarray_160(AST *); - void on_type_specifier_nonarray_161(AST *); - void on_type_specifier_nonarray_162(AST *); - void on_type_specifier_nonarray_163(AST *); - void on_type_specifier_nonarray_164(AST *); - void on_type_specifier_nonarray_165(AST *); - void on_type_specifier_nonarray_166(AST *); - void on_type_specifier_nonarray_167(AST *); - void on_type_specifier_nonarray_168(AST *); - void on_type_specifier_nonarray_169(AST *); - void on_type_specifier_nonarray_170(AST *); - void on_type_specifier_nonarray_171(AST *); - void on_type_specifier_nonarray_172(AST *); - void on_type_specifier_nonarray_173(AST *); - void on_type_specifier_nonarray_174(AST *); - void on_type_specifier_nonarray_175(AST *); - void on_type_specifier_nonarray_176(AST *); - void on_type_specifier_nonarray_177(AST *); - void on_type_specifier_nonarray_178(AST *); - void on_type_specifier_nonarray_179(AST *); - void on_type_specifier_nonarray_180(AST *); - void on_type_specifier_nonarray_181(AST *); - void on_type_specifier_nonarray_182(AST *); - void on_type_specifier_nonarray_183(AST *); - void on_type_specifier_nonarray_184(AST *); - void on_type_specifier_nonarray_185(AST *); - void on_type_specifier_nonarray_186(AST *); - void on_type_specifier_nonarray_187(AST *); - void on_type_specifier_nonarray_188(AST *); - void on_type_specifier_nonarray_189(AST *); - void on_type_specifier_nonarray_190(AST *); - void on_type_specifier_nonarray_191(AST *); - void on_type_specifier_nonarray_192(AST *); - void on_type_specifier_nonarray_193(AST *); - void on_type_specifier_nonarray_194(AST *); - void on_type_specifier_nonarray_195(AST *); - void on_type_specifier_nonarray_196(AST *); - void on_type_specifier_nonarray_197(AST *); - void on_type_specifier_nonarray_198(AST *); - void on_type_specifier_nonarray_199(AST *); - void on_type_specifier_nonarray_200(AST *); - void on_type_specifier_nonarray_201(AST *); - void on_type_specifier_nonarray_202(AST *); - void on_type_specifier_nonarray_203(AST *); - void on_type_specifier_nonarray_204(AST *); - void on_type_specifier_nonarray_205(AST *); - void on_type_specifier_nonarray_206(AST *); - void on_type_specifier_nonarray_207(AST *); - void on_type_specifier_nonarray_208(AST *); - void on_type_specifier_nonarray_209(AST *); - void on_type_specifier_nonarray_210(AST *); - void on_type_specifier_nonarray_211(AST *); - void on_type_specifier_nonarray_212(AST *); - void on_type_specifier_nonarray_213(AST *); - void on_type_specifier_nonarray_214(AST *); - void on_type_specifier_nonarray_215(AST *); - void on_type_specifier_nonarray_216(AST *); - void on_type_specifier_nonarray_217(AST *); - void on_type_specifier_nonarray_218(AST *); - void on_type_specifier_nonarray_219(AST *); - void on_type_specifier_nonarray_220(AST *); - void on_type_specifier_nonarray_221(AST *); - void on_type_specifier_nonarray_222(AST *); - void on_type_specifier_nonarray_223(AST *); - void on_type_specifier_nonarray_224(AST *); - void on_type_specifier_nonarray_225(AST *); - void on_type_specifier_nonarray_226(AST *); - void on_type_specifier_nonarray_227(AST *); - void on_type_specifier_nonarray_228(AST *); - void on_type_specifier_nonarray_229(AST *); - void on_type_specifier_nonarray_230(AST *); - void on_type_specifier_nonarray_231(AST *); - void on_type_specifier_nonarray_232(AST *); - void on_type_specifier_nonarray_233(AST *); - void on_type_specifier_nonarray_234(AST *); - void on_type_specifier_nonarray_235(AST *); - void on_type_specifier_nonarray_236(AST *); - void on_type_specifier_nonarray_237(AST *); - void on_type_specifier_nonarray_238(AST *); - void on_type_specifier_nonarray_239(AST *); - void on_type_specifier_nonarray_240(AST *); - void on_type_specifier_nonarray_241(AST *); - void on_type_specifier_nonarray_242(AST *); - void on_type_specifier_nonarray_243(AST *); - void on_type_specifier_nonarray_244(AST *); - void on_type_specifier_nonarray_245(AST *); - void on_type_specifier_nonarray_246(AST *); - void on_precision_qualifier_247(AST *); - void on_precision_qualifier_248(AST *); - void on_precision_qualifier_249(AST *); - void on_struct_specifier_250(AST *); - void on_struct_specifier_251(AST *); - void on_struct_declaration_list_252(AST *); - void on_struct_declaration_list_253(AST *); - void on_struct_declaration_254(AST *); - void on_struct_declaration_255(AST *); - void on_struct_declarator_list_256(AST *); - void on_struct_declarator_list_257(AST *); - void on_struct_declarator_258(AST *); - void on_struct_declarator_259(AST *); - void on_struct_declarator_260(AST *); - void on_initializer_261(AST *); - void on_declaration_statement_262(AST *); - void on_statement_263(AST *); - void on_statement_264(AST *); - void on_simple_statement_265(AST *); - void on_simple_statement_266(AST *); - void on_simple_statement_267(AST *); - void on_simple_statement_268(AST *); - void on_simple_statement_269(AST *); - void on_simple_statement_270(AST *); - void on_simple_statement_271(AST *); - void on_compound_statement_272(AST *); - void on_compound_statement_273(AST *); - void on_statement_no_new_scope_274(AST *); - void on_statement_no_new_scope_275(AST *); - void on_compound_statement_no_new_scope_276(AST *); - void on_compound_statement_no_new_scope_277(AST *); - void on_statement_list_278(AST *); - void on_statement_list_279(AST *); - void on_expression_statement_280(AST *); - void on_expression_statement_281(AST *); - void on_selection_statement_282(AST *); - void on_selection_rest_statement_283(AST *); - void on_selection_rest_statement_284(AST *); - void on_condition_285(AST *); - void on_condition_286(AST *); - void on_switch_statement_287(AST *); - void on_switch_statement_list_288(AST *); - void on_switch_statement_list_289(AST *); - void on_case_label_290(AST *); - void on_case_label_291(AST *); - void on_iteration_statement_292(AST *); - void on_iteration_statement_293(AST *); - void on_iteration_statement_294(AST *); - void on_for_init_statement_295(AST *); - void on_for_init_statement_296(AST *); - void on_conditionopt_297(AST *); - void on_conditionopt_298(AST *); - void on_for_rest_statement_299(AST *); - void on_for_rest_statement_300(AST *); - void on_jump_statement_301(AST *); - void on_jump_statement_302(AST *); - void on_jump_statement_303(AST *); - void on_jump_statement_304(AST *); - void on_jump_statement_305(AST *); - void on_translation_unit_306(AST *); - void on_translation_unit_307(AST *); - void on_external_declaration_308(AST *); - void on_external_declaration_309(AST *); - void on_external_declaration_310(AST *); - void on_function_definition_311(AST *); -}; - -void dumpAST(AST *ast) -{ - Dump dump; - dump.accept(ast); -} - -} // end of namespace GLSL - -#include - -using namespace GLSL; - -namespace { -bool debug = true; -} - - -Dump::dispatch_func Dump::dispatch[] = { - &Dump::on_variable_identifier_1, - &Dump::on_primary_expression_2, - &Dump::on_primary_expression_3, - &Dump::on_primary_expression_4, - &Dump::on_primary_expression_5, - &Dump::on_primary_expression_6, - &Dump::on_postfix_expression_7, - &Dump::on_postfix_expression_8, - &Dump::on_postfix_expression_9, - &Dump::on_postfix_expression_10, - &Dump::on_postfix_expression_11, - &Dump::on_postfix_expression_12, - &Dump::on_integer_expression_13, - &Dump::on_function_call_14, - &Dump::on_function_call_or_method_15, - &Dump::on_function_call_or_method_16, - &Dump::on_function_call_generic_17, - &Dump::on_function_call_generic_18, - &Dump::on_function_call_header_no_parameters_19, - &Dump::on_function_call_header_no_parameters_20, - &Dump::on_function_call_header_with_parameters_21, - &Dump::on_function_call_header_with_parameters_22, - &Dump::on_function_call_header_23, - &Dump::on_function_identifier_24, - &Dump::on_function_identifier_25, - &Dump::on_unary_expression_26, - &Dump::on_unary_expression_27, - &Dump::on_unary_expression_28, - &Dump::on_unary_expression_29, - &Dump::on_unary_operator_30, - &Dump::on_unary_operator_31, - &Dump::on_unary_operator_32, - &Dump::on_unary_operator_33, - &Dump::on_multiplicative_expression_34, - &Dump::on_multiplicative_expression_35, - &Dump::on_multiplicative_expression_36, - &Dump::on_multiplicative_expression_37, - &Dump::on_additive_expression_38, - &Dump::on_additive_expression_39, - &Dump::on_additive_expression_40, - &Dump::on_shift_expression_41, - &Dump::on_shift_expression_42, - &Dump::on_shift_expression_43, - &Dump::on_relational_expression_44, - &Dump::on_relational_expression_45, - &Dump::on_relational_expression_46, - &Dump::on_relational_expression_47, - &Dump::on_relational_expression_48, - &Dump::on_equality_expression_49, - &Dump::on_equality_expression_50, - &Dump::on_equality_expression_51, - &Dump::on_and_expression_52, - &Dump::on_and_expression_53, - &Dump::on_exclusive_or_expression_54, - &Dump::on_exclusive_or_expression_55, - &Dump::on_inclusive_or_expression_56, - &Dump::on_inclusive_or_expression_57, - &Dump::on_logical_and_expression_58, - &Dump::on_logical_and_expression_59, - &Dump::on_logical_xor_expression_60, - &Dump::on_logical_xor_expression_61, - &Dump::on_logical_or_expression_62, - &Dump::on_logical_or_expression_63, - &Dump::on_conditional_expression_64, - &Dump::on_conditional_expression_65, - &Dump::on_assignment_expression_66, - &Dump::on_assignment_expression_67, - &Dump::on_assignment_operator_68, - &Dump::on_assignment_operator_69, - &Dump::on_assignment_operator_70, - &Dump::on_assignment_operator_71, - &Dump::on_assignment_operator_72, - &Dump::on_assignment_operator_73, - &Dump::on_assignment_operator_74, - &Dump::on_assignment_operator_75, - &Dump::on_assignment_operator_76, - &Dump::on_assignment_operator_77, - &Dump::on_assignment_operator_78, - &Dump::on_expression_79, - &Dump::on_expression_80, - &Dump::on_constant_expression_81, - &Dump::on_declaration_82, - &Dump::on_declaration_83, - &Dump::on_declaration_84, - &Dump::on_declaration_85, - &Dump::on_declaration_86, - &Dump::on_declaration_87, - &Dump::on_declaration_88, - &Dump::on_declaration_89, - &Dump::on_function_prototype_90, - &Dump::on_function_declarator_91, - &Dump::on_function_declarator_92, - &Dump::on_function_header_with_parameters_93, - &Dump::on_function_header_with_parameters_94, - &Dump::on_function_header_95, - &Dump::on_parameter_declarator_96, - &Dump::on_parameter_declarator_97, - &Dump::on_parameter_declaration_98, - &Dump::on_parameter_declaration_99, - &Dump::on_parameter_declaration_100, - &Dump::on_parameter_declaration_101, - &Dump::on_parameter_qualifier_102, - &Dump::on_parameter_qualifier_103, - &Dump::on_parameter_qualifier_104, - &Dump::on_parameter_qualifier_105, - &Dump::on_parameter_type_specifier_106, - &Dump::on_init_declarator_list_107, - &Dump::on_init_declarator_list_108, - &Dump::on_init_declarator_list_109, - &Dump::on_init_declarator_list_110, - &Dump::on_init_declarator_list_111, - &Dump::on_init_declarator_list_112, - &Dump::on_init_declarator_list_113, - &Dump::on_single_declaration_114, - &Dump::on_single_declaration_115, - &Dump::on_single_declaration_116, - &Dump::on_single_declaration_117, - &Dump::on_single_declaration_118, - &Dump::on_single_declaration_119, - &Dump::on_single_declaration_120, - &Dump::on_single_declaration_121, - &Dump::on_fully_specified_type_122, - &Dump::on_fully_specified_type_123, - &Dump::on_invariant_qualifier_124, - &Dump::on_interpolation_qualifier_125, - &Dump::on_interpolation_qualifier_126, - &Dump::on_interpolation_qualifier_127, - &Dump::on_layout_qualifier_128, - &Dump::on_layout_qualifier_id_list_129, - &Dump::on_layout_qualifier_id_list_130, - &Dump::on_layout_qualifier_id_131, - &Dump::on_layout_qualifier_id_132, - &Dump::on_parameter_type_qualifier_133, - &Dump::on_type_qualifier_134, - &Dump::on_type_qualifier_135, - &Dump::on_type_qualifier_136, - &Dump::on_type_qualifier_137, - &Dump::on_type_qualifier_138, - &Dump::on_type_qualifier_139, - &Dump::on_type_qualifier_140, - &Dump::on_type_qualifier_141, - &Dump::on_storage_qualifier_142, - &Dump::on_storage_qualifier_143, - &Dump::on_storage_qualifier_144, - &Dump::on_storage_qualifier_145, - &Dump::on_storage_qualifier_146, - &Dump::on_storage_qualifier_147, - &Dump::on_storage_qualifier_148, - &Dump::on_storage_qualifier_149, - &Dump::on_storage_qualifier_150, - &Dump::on_storage_qualifier_151, - &Dump::on_storage_qualifier_152, - &Dump::on_storage_qualifier_153, - &Dump::on_storage_qualifier_154, - &Dump::on_type_specifier_155, - &Dump::on_type_specifier_156, - &Dump::on_type_specifier_no_prec_157, - &Dump::on_type_specifier_no_prec_158, - &Dump::on_type_specifier_no_prec_159, - &Dump::on_type_specifier_nonarray_160, - &Dump::on_type_specifier_nonarray_161, - &Dump::on_type_specifier_nonarray_162, - &Dump::on_type_specifier_nonarray_163, - &Dump::on_type_specifier_nonarray_164, - &Dump::on_type_specifier_nonarray_165, - &Dump::on_type_specifier_nonarray_166, - &Dump::on_type_specifier_nonarray_167, - &Dump::on_type_specifier_nonarray_168, - &Dump::on_type_specifier_nonarray_169, - &Dump::on_type_specifier_nonarray_170, - &Dump::on_type_specifier_nonarray_171, - &Dump::on_type_specifier_nonarray_172, - &Dump::on_type_specifier_nonarray_173, - &Dump::on_type_specifier_nonarray_174, - &Dump::on_type_specifier_nonarray_175, - &Dump::on_type_specifier_nonarray_176, - &Dump::on_type_specifier_nonarray_177, - &Dump::on_type_specifier_nonarray_178, - &Dump::on_type_specifier_nonarray_179, - &Dump::on_type_specifier_nonarray_180, - &Dump::on_type_specifier_nonarray_181, - &Dump::on_type_specifier_nonarray_182, - &Dump::on_type_specifier_nonarray_183, - &Dump::on_type_specifier_nonarray_184, - &Dump::on_type_specifier_nonarray_185, - &Dump::on_type_specifier_nonarray_186, - &Dump::on_type_specifier_nonarray_187, - &Dump::on_type_specifier_nonarray_188, - &Dump::on_type_specifier_nonarray_189, - &Dump::on_type_specifier_nonarray_190, - &Dump::on_type_specifier_nonarray_191, - &Dump::on_type_specifier_nonarray_192, - &Dump::on_type_specifier_nonarray_193, - &Dump::on_type_specifier_nonarray_194, - &Dump::on_type_specifier_nonarray_195, - &Dump::on_type_specifier_nonarray_196, - &Dump::on_type_specifier_nonarray_197, - &Dump::on_type_specifier_nonarray_198, - &Dump::on_type_specifier_nonarray_199, - &Dump::on_type_specifier_nonarray_200, - &Dump::on_type_specifier_nonarray_201, - &Dump::on_type_specifier_nonarray_202, - &Dump::on_type_specifier_nonarray_203, - &Dump::on_type_specifier_nonarray_204, - &Dump::on_type_specifier_nonarray_205, - &Dump::on_type_specifier_nonarray_206, - &Dump::on_type_specifier_nonarray_207, - &Dump::on_type_specifier_nonarray_208, - &Dump::on_type_specifier_nonarray_209, - &Dump::on_type_specifier_nonarray_210, - &Dump::on_type_specifier_nonarray_211, - &Dump::on_type_specifier_nonarray_212, - &Dump::on_type_specifier_nonarray_213, - &Dump::on_type_specifier_nonarray_214, - &Dump::on_type_specifier_nonarray_215, - &Dump::on_type_specifier_nonarray_216, - &Dump::on_type_specifier_nonarray_217, - &Dump::on_type_specifier_nonarray_218, - &Dump::on_type_specifier_nonarray_219, - &Dump::on_type_specifier_nonarray_220, - &Dump::on_type_specifier_nonarray_221, - &Dump::on_type_specifier_nonarray_222, - &Dump::on_type_specifier_nonarray_223, - &Dump::on_type_specifier_nonarray_224, - &Dump::on_type_specifier_nonarray_225, - &Dump::on_type_specifier_nonarray_226, - &Dump::on_type_specifier_nonarray_227, - &Dump::on_type_specifier_nonarray_228, - &Dump::on_type_specifier_nonarray_229, - &Dump::on_type_specifier_nonarray_230, - &Dump::on_type_specifier_nonarray_231, - &Dump::on_type_specifier_nonarray_232, - &Dump::on_type_specifier_nonarray_233, - &Dump::on_type_specifier_nonarray_234, - &Dump::on_type_specifier_nonarray_235, - &Dump::on_type_specifier_nonarray_236, - &Dump::on_type_specifier_nonarray_237, - &Dump::on_type_specifier_nonarray_238, - &Dump::on_type_specifier_nonarray_239, - &Dump::on_type_specifier_nonarray_240, - &Dump::on_type_specifier_nonarray_241, - &Dump::on_type_specifier_nonarray_242, - &Dump::on_type_specifier_nonarray_243, - &Dump::on_type_specifier_nonarray_244, - &Dump::on_type_specifier_nonarray_245, - &Dump::on_type_specifier_nonarray_246, - &Dump::on_precision_qualifier_247, - &Dump::on_precision_qualifier_248, - &Dump::on_precision_qualifier_249, - &Dump::on_struct_specifier_250, - &Dump::on_struct_specifier_251, - &Dump::on_struct_declaration_list_252, - &Dump::on_struct_declaration_list_253, - &Dump::on_struct_declaration_254, - &Dump::on_struct_declaration_255, - &Dump::on_struct_declarator_list_256, - &Dump::on_struct_declarator_list_257, - &Dump::on_struct_declarator_258, - &Dump::on_struct_declarator_259, - &Dump::on_struct_declarator_260, - &Dump::on_initializer_261, - &Dump::on_declaration_statement_262, - &Dump::on_statement_263, - &Dump::on_statement_264, - &Dump::on_simple_statement_265, - &Dump::on_simple_statement_266, - &Dump::on_simple_statement_267, - &Dump::on_simple_statement_268, - &Dump::on_simple_statement_269, - &Dump::on_simple_statement_270, - &Dump::on_simple_statement_271, - &Dump::on_compound_statement_272, - &Dump::on_compound_statement_273, - &Dump::on_statement_no_new_scope_274, - &Dump::on_statement_no_new_scope_275, - &Dump::on_compound_statement_no_new_scope_276, - &Dump::on_compound_statement_no_new_scope_277, - &Dump::on_statement_list_278, - &Dump::on_statement_list_279, - &Dump::on_expression_statement_280, - &Dump::on_expression_statement_281, - &Dump::on_selection_statement_282, - &Dump::on_selection_rest_statement_283, - &Dump::on_selection_rest_statement_284, - &Dump::on_condition_285, - &Dump::on_condition_286, - &Dump::on_switch_statement_287, - &Dump::on_switch_statement_list_288, - &Dump::on_switch_statement_list_289, - &Dump::on_case_label_290, - &Dump::on_case_label_291, - &Dump::on_iteration_statement_292, - &Dump::on_iteration_statement_293, - &Dump::on_iteration_statement_294, - &Dump::on_for_init_statement_295, - &Dump::on_for_init_statement_296, - &Dump::on_conditionopt_297, - &Dump::on_conditionopt_298, - &Dump::on_for_rest_statement_299, - &Dump::on_for_rest_statement_300, - &Dump::on_jump_statement_301, - &Dump::on_jump_statement_302, - &Dump::on_jump_statement_303, - &Dump::on_jump_statement_304, - &Dump::on_jump_statement_305, - &Dump::on_translation_unit_306, - &Dump::on_translation_unit_307, - &Dump::on_external_declaration_308, - &Dump::on_external_declaration_309, - &Dump::on_external_declaration_310, - &Dump::on_function_definition_311, -0, }; - -// variable_identifier ::= IDENTIFIER ; -void Dump::on_variable_identifier_1(AST *ast) -{ - if (debug) - std::cout << "variable_identifier ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= NUMBER ; -void Dump::on_primary_expression_2(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= NUMBER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= TRUE ; -void Dump::on_primary_expression_3(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= TRUE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= FALSE ; -void Dump::on_primary_expression_4(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= FALSE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= variable_identifier ; -void Dump::on_primary_expression_5(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= variable_identifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// primary_expression ::= LEFT_PAREN expression RIGHT_PAREN ; -void Dump::on_primary_expression_6(AST *ast) -{ - if (debug) - std::cout << "primary_expression ::= LEFT_PAREN expression RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= primary_expression ; -void Dump::on_postfix_expression_7(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= primary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET ; -void Dump::on_postfix_expression_8(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= function_call ; -void Dump::on_postfix_expression_9(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= function_call" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression DOT IDENTIFIER ; -void Dump::on_postfix_expression_10(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression DOT IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression INC_OP ; -void Dump::on_postfix_expression_11(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression INC_OP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// postfix_expression ::= postfix_expression DEC_OP ; -void Dump::on_postfix_expression_12(AST *ast) -{ - if (debug) - std::cout << "postfix_expression ::= postfix_expression DEC_OP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// integer_expression ::= expression ; -void Dump::on_integer_expression_13(AST *ast) -{ - if (debug) - std::cout << "integer_expression ::= expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call ::= function_call_or_method ; -void Dump::on_function_call_14(AST *ast) -{ - if (debug) - std::cout << "function_call ::= function_call_or_method" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_or_method ::= function_call_generic ; -void Dump::on_function_call_or_method_15(AST *ast) -{ - if (debug) - std::cout << "function_call_or_method ::= function_call_generic" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_or_method ::= postfix_expression DOT function_call_generic ; -void Dump::on_function_call_or_method_16(AST *ast) -{ - if (debug) - std::cout << "function_call_or_method ::= postfix_expression DOT function_call_generic" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN ; -void Dump::on_function_call_generic_17(AST *ast) -{ - if (debug) - std::cout << "function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN ; -void Dump::on_function_call_generic_18(AST *ast) -{ - if (debug) - std::cout << "function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_no_parameters ::= function_call_header VOID ; -void Dump::on_function_call_header_no_parameters_19(AST *ast) -{ - if (debug) - std::cout << "function_call_header_no_parameters ::= function_call_header VOID" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_no_parameters ::= function_call_header ; -void Dump::on_function_call_header_no_parameters_20(AST *ast) -{ - if (debug) - std::cout << "function_call_header_no_parameters ::= function_call_header" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_with_parameters ::= function_call_header assignment_expression ; -void Dump::on_function_call_header_with_parameters_21(AST *ast) -{ - if (debug) - std::cout << "function_call_header_with_parameters ::= function_call_header assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression ; -void Dump::on_function_call_header_with_parameters_22(AST *ast) -{ - if (debug) - std::cout << "function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_call_header ::= function_identifier LEFT_PAREN ; -void Dump::on_function_call_header_23(AST *ast) -{ - if (debug) - std::cout << "function_call_header ::= function_identifier LEFT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_identifier ::= type_specifier ; -void Dump::on_function_identifier_24(AST *ast) -{ - if (debug) - std::cout << "function_identifier ::= type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_identifier ::= IDENTIFIER ; -void Dump::on_function_identifier_25(AST *ast) -{ - if (debug) - std::cout << "function_identifier ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= postfix_expression ; -void Dump::on_unary_expression_26(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= postfix_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= INC_OP unary_expression ; -void Dump::on_unary_expression_27(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= INC_OP unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= DEC_OP unary_expression ; -void Dump::on_unary_expression_28(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= DEC_OP unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_expression ::= unary_operator unary_expression ; -void Dump::on_unary_expression_29(AST *ast) -{ - if (debug) - std::cout << "unary_expression ::= unary_operator unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= PLUS ; -void Dump::on_unary_operator_30(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= PLUS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= DASH ; -void Dump::on_unary_operator_31(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= DASH" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= BANG ; -void Dump::on_unary_operator_32(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= BANG" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// unary_operator ::= TILDE ; -void Dump::on_unary_operator_33(AST *ast) -{ - if (debug) - std::cout << "unary_operator ::= TILDE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= unary_expression ; -void Dump::on_multiplicative_expression_34(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= multiplicative_expression STAR unary_expression ; -void Dump::on_multiplicative_expression_35(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= multiplicative_expression STAR unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= multiplicative_expression SLASH unary_expression ; -void Dump::on_multiplicative_expression_36(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= multiplicative_expression SLASH unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// multiplicative_expression ::= multiplicative_expression PERCENT unary_expression ; -void Dump::on_multiplicative_expression_37(AST *ast) -{ - if (debug) - std::cout << "multiplicative_expression ::= multiplicative_expression PERCENT unary_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// additive_expression ::= multiplicative_expression ; -void Dump::on_additive_expression_38(AST *ast) -{ - if (debug) - std::cout << "additive_expression ::= multiplicative_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// additive_expression ::= additive_expression PLUS multiplicative_expression ; -void Dump::on_additive_expression_39(AST *ast) -{ - if (debug) - std::cout << "additive_expression ::= additive_expression PLUS multiplicative_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// additive_expression ::= additive_expression DASH multiplicative_expression ; -void Dump::on_additive_expression_40(AST *ast) -{ - if (debug) - std::cout << "additive_expression ::= additive_expression DASH multiplicative_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// shift_expression ::= additive_expression ; -void Dump::on_shift_expression_41(AST *ast) -{ - if (debug) - std::cout << "shift_expression ::= additive_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// shift_expression ::= shift_expression LEFT_OP additive_expression ; -void Dump::on_shift_expression_42(AST *ast) -{ - if (debug) - std::cout << "shift_expression ::= shift_expression LEFT_OP additive_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// shift_expression ::= shift_expression RIGHT_OP additive_expression ; -void Dump::on_shift_expression_43(AST *ast) -{ - if (debug) - std::cout << "shift_expression ::= shift_expression RIGHT_OP additive_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= shift_expression ; -void Dump::on_relational_expression_44(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression LEFT_ANGLE shift_expression ; -void Dump::on_relational_expression_45(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression LEFT_ANGLE shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression RIGHT_ANGLE shift_expression ; -void Dump::on_relational_expression_46(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression RIGHT_ANGLE shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression LE_OP shift_expression ; -void Dump::on_relational_expression_47(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression LE_OP shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// relational_expression ::= relational_expression GE_OP shift_expression ; -void Dump::on_relational_expression_48(AST *ast) -{ - if (debug) - std::cout << "relational_expression ::= relational_expression GE_OP shift_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// equality_expression ::= relational_expression ; -void Dump::on_equality_expression_49(AST *ast) -{ - if (debug) - std::cout << "equality_expression ::= relational_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// equality_expression ::= equality_expression EQ_OP relational_expression ; -void Dump::on_equality_expression_50(AST *ast) -{ - if (debug) - std::cout << "equality_expression ::= equality_expression EQ_OP relational_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// equality_expression ::= equality_expression NE_OP relational_expression ; -void Dump::on_equality_expression_51(AST *ast) -{ - if (debug) - std::cout << "equality_expression ::= equality_expression NE_OP relational_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// and_expression ::= equality_expression ; -void Dump::on_and_expression_52(AST *ast) -{ - if (debug) - std::cout << "and_expression ::= equality_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// and_expression ::= and_expression AMPERSAND equality_expression ; -void Dump::on_and_expression_53(AST *ast) -{ - if (debug) - std::cout << "and_expression ::= and_expression AMPERSAND equality_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// exclusive_or_expression ::= and_expression ; -void Dump::on_exclusive_or_expression_54(AST *ast) -{ - if (debug) - std::cout << "exclusive_or_expression ::= and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// exclusive_or_expression ::= exclusive_or_expression CARET and_expression ; -void Dump::on_exclusive_or_expression_55(AST *ast) -{ - if (debug) - std::cout << "exclusive_or_expression ::= exclusive_or_expression CARET and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// inclusive_or_expression ::= exclusive_or_expression ; -void Dump::on_inclusive_or_expression_56(AST *ast) -{ - if (debug) - std::cout << "inclusive_or_expression ::= exclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression ; -void Dump::on_inclusive_or_expression_57(AST *ast) -{ - if (debug) - std::cout << "inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_and_expression ::= inclusive_or_expression ; -void Dump::on_logical_and_expression_58(AST *ast) -{ - if (debug) - std::cout << "logical_and_expression ::= inclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression ; -void Dump::on_logical_and_expression_59(AST *ast) -{ - if (debug) - std::cout << "logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_xor_expression ::= logical_and_expression ; -void Dump::on_logical_xor_expression_60(AST *ast) -{ - if (debug) - std::cout << "logical_xor_expression ::= logical_and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression ; -void Dump::on_logical_xor_expression_61(AST *ast) -{ - if (debug) - std::cout << "logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_or_expression ::= logical_xor_expression ; -void Dump::on_logical_or_expression_62(AST *ast) -{ - if (debug) - std::cout << "logical_or_expression ::= logical_xor_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression ; -void Dump::on_logical_or_expression_63(AST *ast) -{ - if (debug) - std::cout << "logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditional_expression ::= logical_or_expression ; -void Dump::on_conditional_expression_64(AST *ast) -{ - if (debug) - std::cout << "conditional_expression ::= logical_or_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditional_expression ::= logical_or_expression QUESTION expression COLON assignment_expression ; -void Dump::on_conditional_expression_65(AST *ast) -{ - if (debug) - std::cout << "conditional_expression ::= logical_or_expression QUESTION expression COLON assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_expression ::= conditional_expression ; -void Dump::on_assignment_expression_66(AST *ast) -{ - if (debug) - std::cout << "assignment_expression ::= conditional_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_expression ::= unary_expression assignment_operator assignment_expression ; -void Dump::on_assignment_expression_67(AST *ast) -{ - if (debug) - std::cout << "assignment_expression ::= unary_expression assignment_operator assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= EQUAL ; -void Dump::on_assignment_operator_68(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= EQUAL" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= MUL_ASSIGN ; -void Dump::on_assignment_operator_69(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= MUL_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= DIV_ASSIGN ; -void Dump::on_assignment_operator_70(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= DIV_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= MOD_ASSIGN ; -void Dump::on_assignment_operator_71(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= MOD_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= ADD_ASSIGN ; -void Dump::on_assignment_operator_72(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= ADD_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= SUB_ASSIGN ; -void Dump::on_assignment_operator_73(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= SUB_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= LEFT_ASSIGN ; -void Dump::on_assignment_operator_74(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= LEFT_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= RIGHT_ASSIGN ; -void Dump::on_assignment_operator_75(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= RIGHT_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= AND_ASSIGN ; -void Dump::on_assignment_operator_76(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= AND_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= XOR_ASSIGN ; -void Dump::on_assignment_operator_77(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= XOR_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// assignment_operator ::= OR_ASSIGN ; -void Dump::on_assignment_operator_78(AST *ast) -{ - if (debug) - std::cout << "assignment_operator ::= OR_ASSIGN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression ::= assignment_expression ; -void Dump::on_expression_79(AST *ast) -{ - if (debug) - std::cout << "expression ::= assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression ::= expression COMMA assignment_expression ; -void Dump::on_expression_80(AST *ast) -{ - if (debug) - std::cout << "expression ::= expression COMMA assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// constant_expression ::= conditional_expression ; -void Dump::on_constant_expression_81(AST *ast) -{ - if (debug) - std::cout << "constant_expression ::= conditional_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= function_prototype SEMICOLON ; -void Dump::on_declaration_82(AST *ast) -{ - if (debug) - std::cout << "declaration ::= function_prototype SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= init_declarator_list SEMICOLON ; -void Dump::on_declaration_83(AST *ast) -{ - if (debug) - std::cout << "declaration ::= init_declarator_list SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= PRECISION precision_qualifier type_specifier_no_prec SEMICOLON ; -void Dump::on_declaration_84(AST *ast) -{ - if (debug) - std::cout << "declaration ::= PRECISION precision_qualifier type_specifier_no_prec SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON ; -void Dump::on_declaration_85(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON ; -void Dump::on_declaration_86(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET RIGHT_BRACKET SEMICOLON ; -void Dump::on_declaration_87(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET RIGHT_BRACKET SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON ; -void Dump::on_declaration_88(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration ::= type_qualifier SEMICOLON ; -void Dump::on_declaration_89(AST *ast) -{ - if (debug) - std::cout << "declaration ::= type_qualifier SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_prototype ::= function_declarator RIGHT_PAREN ; -void Dump::on_function_prototype_90(AST *ast) -{ - if (debug) - std::cout << "function_prototype ::= function_declarator RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_declarator ::= function_header ; -void Dump::on_function_declarator_91(AST *ast) -{ - if (debug) - std::cout << "function_declarator ::= function_header" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_declarator ::= function_header_with_parameters ; -void Dump::on_function_declarator_92(AST *ast) -{ - if (debug) - std::cout << "function_declarator ::= function_header_with_parameters" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_header_with_parameters ::= function_header parameter_declaration ; -void Dump::on_function_header_with_parameters_93(AST *ast) -{ - if (debug) - std::cout << "function_header_with_parameters ::= function_header parameter_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration ; -void Dump::on_function_header_with_parameters_94(AST *ast) -{ - if (debug) - std::cout << "function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN ; -void Dump::on_function_header_95(AST *ast) -{ - if (debug) - std::cout << "function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declarator ::= type_specifier IDENTIFIER ; -void Dump::on_parameter_declarator_96(AST *ast) -{ - if (debug) - std::cout << "parameter_declarator ::= type_specifier IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Dump::on_parameter_declarator_97(AST *ast) -{ - if (debug) - std::cout << "parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_declarator ; -void Dump::on_parameter_declaration_98(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_qualifier parameter_declarator ; -void Dump::on_parameter_declaration_99(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_qualifier parameter_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_type_specifier ; -void Dump::on_parameter_declaration_100(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_declaration ::= parameter_qualifier parameter_type_specifier ; -void Dump::on_parameter_declaration_101(AST *ast) -{ - if (debug) - std::cout << "parameter_declaration ::= parameter_qualifier parameter_type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= ; -void Dump::on_parameter_qualifier_102(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::=" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= IN ; -void Dump::on_parameter_qualifier_103(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::= IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= OUT ; -void Dump::on_parameter_qualifier_104(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::= OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_qualifier ::= INOUT ; -void Dump::on_parameter_qualifier_105(AST *ast) -{ - if (debug) - std::cout << "parameter_qualifier ::= INOUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_type_specifier ::= type_specifier ; -void Dump::on_parameter_type_specifier_106(AST *ast) -{ - if (debug) - std::cout << "parameter_type_specifier ::= type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= single_declaration ; -void Dump::on_init_declarator_list_107(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= single_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER ; -void Dump::on_init_declarator_list_108(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; -void Dump::on_init_declarator_list_109(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Dump::on_init_declarator_list_110(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer ; -void Dump::on_init_declarator_list_111(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer ; -void Dump::on_init_declarator_list_112(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer ; -void Dump::on_init_declarator_list_113(AST *ast) -{ - if (debug) - std::cout << "init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type ; -void Dump::on_single_declaration_114(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER ; -void Dump::on_single_declaration_115(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; -void Dump::on_single_declaration_116(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Dump::on_single_declaration_117(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer ; -void Dump::on_single_declaration_118(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer ; -void Dump::on_single_declaration_119(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer ; -void Dump::on_single_declaration_120(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// single_declaration ::= INVARIANT IDENTIFIER ; -void Dump::on_single_declaration_121(AST *ast) -{ - if (debug) - std::cout << "single_declaration ::= INVARIANT IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// fully_specified_type ::= type_specifier ; -void Dump::on_fully_specified_type_122(AST *ast) -{ - if (debug) - std::cout << "fully_specified_type ::= type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// fully_specified_type ::= type_qualifier type_specifier ; -void Dump::on_fully_specified_type_123(AST *ast) -{ - if (debug) - std::cout << "fully_specified_type ::= type_qualifier type_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// invariant_qualifier ::= INVARIANT ; -void Dump::on_invariant_qualifier_124(AST *ast) -{ - if (debug) - std::cout << "invariant_qualifier ::= INVARIANT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// interpolation_qualifier ::= SMOOTH ; -void Dump::on_interpolation_qualifier_125(AST *ast) -{ - if (debug) - std::cout << "interpolation_qualifier ::= SMOOTH" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// interpolation_qualifier ::= FLAT ; -void Dump::on_interpolation_qualifier_126(AST *ast) -{ - if (debug) - std::cout << "interpolation_qualifier ::= FLAT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// interpolation_qualifier ::= NOPERSPECTIVE ; -void Dump::on_interpolation_qualifier_127(AST *ast) -{ - if (debug) - std::cout << "interpolation_qualifier ::= NOPERSPECTIVE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier ::= LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN ; -void Dump::on_layout_qualifier_128(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier ::= LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id_list ::= layout_qualifier_id ; -void Dump::on_layout_qualifier_id_list_129(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id_list ::= layout_qualifier_id" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id_list ::= layout_qualifier_id_list COMMA layout_qualifier_id ; -void Dump::on_layout_qualifier_id_list_130(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id_list ::= layout_qualifier_id_list COMMA layout_qualifier_id" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id ::= IDENTIFIER ; -void Dump::on_layout_qualifier_id_131(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// layout_qualifier_id ::= IDENTIFIER EQUAL NUMBER ; -void Dump::on_layout_qualifier_id_132(AST *ast) -{ - if (debug) - std::cout << "layout_qualifier_id ::= IDENTIFIER EQUAL NUMBER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// parameter_type_qualifier ::= CONST ; -void Dump::on_parameter_type_qualifier_133(AST *ast) -{ - if (debug) - std::cout << "parameter_type_qualifier ::= CONST" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= storage_qualifier ; -void Dump::on_type_qualifier_134(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= layout_qualifier ; -void Dump::on_type_qualifier_135(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= layout_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= layout_qualifier storage_qualifier ; -void Dump::on_type_qualifier_136(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= layout_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= interpolation_qualifier storage_qualifier ; -void Dump::on_type_qualifier_137(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= interpolation_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= interpolation_qualifier ; -void Dump::on_type_qualifier_138(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= interpolation_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= invariant_qualifier storage_qualifier ; -void Dump::on_type_qualifier_139(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= invariant_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= invariant_qualifier interpolation_qualifier storage_qualifier ; -void Dump::on_type_qualifier_140(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= invariant_qualifier interpolation_qualifier storage_qualifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_qualifier ::= INVARIANT ; -void Dump::on_type_qualifier_141(AST *ast) -{ - if (debug) - std::cout << "type_qualifier ::= INVARIANT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CONST ; -void Dump::on_storage_qualifier_142(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CONST" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= ATTRIBUTE ; -void Dump::on_storage_qualifier_143(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= ATTRIBUTE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= VARYING ; -void Dump::on_storage_qualifier_144(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= VARYING" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CENTROID VARYING ; -void Dump::on_storage_qualifier_145(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CENTROID VARYING" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= IN ; -void Dump::on_storage_qualifier_146(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= OUT ; -void Dump::on_storage_qualifier_147(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CENTROID IN ; -void Dump::on_storage_qualifier_148(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CENTROID IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= CENTROID OUT ; -void Dump::on_storage_qualifier_149(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= CENTROID OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= PATCH IN ; -void Dump::on_storage_qualifier_150(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= PATCH IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= PATCH OUT ; -void Dump::on_storage_qualifier_151(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= PATCH OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= SAMPLE IN ; -void Dump::on_storage_qualifier_152(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= SAMPLE IN" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= SAMPLE OUT ; -void Dump::on_storage_qualifier_153(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= SAMPLE OUT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// storage_qualifier ::= UNIFORM ; -void Dump::on_storage_qualifier_154(AST *ast) -{ - if (debug) - std::cout << "storage_qualifier ::= UNIFORM" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier ::= type_specifier_no_prec ; -void Dump::on_type_specifier_155(AST *ast) -{ - if (debug) - std::cout << "type_specifier ::= type_specifier_no_prec" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier ::= precision_qualifier type_specifier_no_prec ; -void Dump::on_type_specifier_156(AST *ast) -{ - if (debug) - std::cout << "type_specifier ::= precision_qualifier type_specifier_no_prec" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_no_prec ::= type_specifier_nonarray ; -void Dump::on_type_specifier_no_prec_157(AST *ast) -{ - if (debug) - std::cout << "type_specifier_no_prec ::= type_specifier_nonarray" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET RIGHT_BRACKET ; -void Dump::on_type_specifier_no_prec_158(AST *ast) -{ - if (debug) - std::cout << "type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Dump::on_type_specifier_no_prec_159(AST *ast) -{ - if (debug) - std::cout << "type_specifier_no_prec ::= type_specifier_nonarray LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VOID ; -void Dump::on_type_specifier_nonarray_160(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VOID" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= FLOAT ; -void Dump::on_type_specifier_nonarray_161(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= FLOAT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DOUBLE ; -void Dump::on_type_specifier_nonarray_162(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DOUBLE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= INT ; -void Dump::on_type_specifier_nonarray_163(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= INT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UINT ; -void Dump::on_type_specifier_nonarray_164(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UINT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BOOL ; -void Dump::on_type_specifier_nonarray_165(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BOOL" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VEC2 ; -void Dump::on_type_specifier_nonarray_166(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VEC3 ; -void Dump::on_type_specifier_nonarray_167(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= VEC4 ; -void Dump::on_type_specifier_nonarray_168(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= VEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DVEC2 ; -void Dump::on_type_specifier_nonarray_169(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DVEC3 ; -void Dump::on_type_specifier_nonarray_170(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DVEC4 ; -void Dump::on_type_specifier_nonarray_171(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BVEC2 ; -void Dump::on_type_specifier_nonarray_172(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BVEC3 ; -void Dump::on_type_specifier_nonarray_173(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= BVEC4 ; -void Dump::on_type_specifier_nonarray_174(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= BVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= IVEC2 ; -void Dump::on_type_specifier_nonarray_175(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= IVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= IVEC3 ; -void Dump::on_type_specifier_nonarray_176(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= IVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= IVEC4 ; -void Dump::on_type_specifier_nonarray_177(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= IVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UVEC2 ; -void Dump::on_type_specifier_nonarray_178(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UVEC2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UVEC3 ; -void Dump::on_type_specifier_nonarray_179(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UVEC3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= UVEC4 ; -void Dump::on_type_specifier_nonarray_180(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= UVEC4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2 ; -void Dump::on_type_specifier_nonarray_181(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3 ; -void Dump::on_type_specifier_nonarray_182(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4 ; -void Dump::on_type_specifier_nonarray_183(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2X2 ; -void Dump::on_type_specifier_nonarray_184(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2X3 ; -void Dump::on_type_specifier_nonarray_185(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT2X4 ; -void Dump::on_type_specifier_nonarray_186(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT2X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3X2 ; -void Dump::on_type_specifier_nonarray_187(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3X3 ; -void Dump::on_type_specifier_nonarray_188(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT3X4 ; -void Dump::on_type_specifier_nonarray_189(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT3X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4X2 ; -void Dump::on_type_specifier_nonarray_190(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4X3 ; -void Dump::on_type_specifier_nonarray_191(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= MAT4X4 ; -void Dump::on_type_specifier_nonarray_192(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= MAT4X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2 ; -void Dump::on_type_specifier_nonarray_193(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3 ; -void Dump::on_type_specifier_nonarray_194(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4 ; -void Dump::on_type_specifier_nonarray_195(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2X2 ; -void Dump::on_type_specifier_nonarray_196(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2X3 ; -void Dump::on_type_specifier_nonarray_197(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT2X4 ; -void Dump::on_type_specifier_nonarray_198(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT2X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3X2 ; -void Dump::on_type_specifier_nonarray_199(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3X3 ; -void Dump::on_type_specifier_nonarray_200(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT3X4 ; -void Dump::on_type_specifier_nonarray_201(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT3X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4X2 ; -void Dump::on_type_specifier_nonarray_202(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4X2" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4X3 ; -void Dump::on_type_specifier_nonarray_203(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4X3" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= DMAT4X4 ; -void Dump::on_type_specifier_nonarray_204(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= DMAT4X4" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1D ; -void Dump::on_type_specifier_nonarray_205(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2D ; -void Dump::on_type_specifier_nonarray_206(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER3D ; -void Dump::on_type_specifier_nonarray_207(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER3D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBE ; -void Dump::on_type_specifier_nonarray_208(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1DSHADOW ; -void Dump::on_type_specifier_nonarray_209(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1DSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DSHADOW ; -void Dump::on_type_specifier_nonarray_210(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBESHADOW ; -void Dump::on_type_specifier_nonarray_211(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBESHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1DARRAY ; -void Dump::on_type_specifier_nonarray_212(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DARRAY ; -void Dump::on_type_specifier_nonarray_213(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER1DARRAYSHADOW ; -void Dump::on_type_specifier_nonarray_214(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER1DARRAYSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DARRAYSHADOW ; -void Dump::on_type_specifier_nonarray_215(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DARRAYSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBEARRAY ; -void Dump::on_type_specifier_nonarray_216(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBEARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERCUBEARRAYSHADOW ; -void Dump::on_type_specifier_nonarray_217(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERCUBEARRAYSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER1D ; -void Dump::on_type_specifier_nonarray_218(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER1D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2D ; -void Dump::on_type_specifier_nonarray_219(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER3D ; -void Dump::on_type_specifier_nonarray_220(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER3D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLERCUBE ; -void Dump::on_type_specifier_nonarray_221(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLERCUBE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER1DARRAY ; -void Dump::on_type_specifier_nonarray_222(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER1DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DARRAY ; -void Dump::on_type_specifier_nonarray_223(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLERCUBEARRAY ; -void Dump::on_type_specifier_nonarray_224(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLERCUBEARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER1D ; -void Dump::on_type_specifier_nonarray_225(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER1D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2D ; -void Dump::on_type_specifier_nonarray_226(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER3D ; -void Dump::on_type_specifier_nonarray_227(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER3D" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLERCUBE ; -void Dump::on_type_specifier_nonarray_228(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLERCUBE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER1DARRAY ; -void Dump::on_type_specifier_nonarray_229(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER1DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DARRAY ; -void Dump::on_type_specifier_nonarray_230(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLERCUBEARRAY ; -void Dump::on_type_specifier_nonarray_231(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLERCUBEARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DRECT ; -void Dump::on_type_specifier_nonarray_232(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DRECT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DRECTSHADOW ; -void Dump::on_type_specifier_nonarray_233(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DRECTSHADOW" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DRECT ; -void Dump::on_type_specifier_nonarray_234(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DRECT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DRECT ; -void Dump::on_type_specifier_nonarray_235(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DRECT" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLERBUFFER ; -void Dump::on_type_specifier_nonarray_236(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLERBUFFER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLERBUFFER ; -void Dump::on_type_specifier_nonarray_237(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLERBUFFER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLERBUFFER ; -void Dump::on_type_specifier_nonarray_238(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLERBUFFER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DMS ; -void Dump::on_type_specifier_nonarray_239(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DMS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DMS ; -void Dump::on_type_specifier_nonarray_240(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DMS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DMS ; -void Dump::on_type_specifier_nonarray_241(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DMS" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= SAMPLER2DMSARRAY ; -void Dump::on_type_specifier_nonarray_242(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= SAMPLER2DMSARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= ISAMPLER2DMSARRAY ; -void Dump::on_type_specifier_nonarray_243(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= ISAMPLER2DMSARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= USAMPLER2DMSARRAY ; -void Dump::on_type_specifier_nonarray_244(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= USAMPLER2DMSARRAY" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= struct_specifier ; -void Dump::on_type_specifier_nonarray_245(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= struct_specifier" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// type_specifier_nonarray ::= TYPE_NAME ; -void Dump::on_type_specifier_nonarray_246(AST *ast) -{ - if (debug) - std::cout << "type_specifier_nonarray ::= TYPE_NAME" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// precision_qualifier ::= HIGHP ; -void Dump::on_precision_qualifier_247(AST *ast) -{ - if (debug) - std::cout << "precision_qualifier ::= HIGHP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// precision_qualifier ::= MEDIUMP ; -void Dump::on_precision_qualifier_248(AST *ast) -{ - if (debug) - std::cout << "precision_qualifier ::= MEDIUMP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// precision_qualifier ::= LOWP ; -void Dump::on_precision_qualifier_249(AST *ast) -{ - if (debug) - std::cout << "precision_qualifier ::= LOWP" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE ; -void Dump::on_struct_specifier_250(AST *ast) -{ - if (debug) - std::cout << "struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE ; -void Dump::on_struct_specifier_251(AST *ast) -{ - if (debug) - std::cout << "struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration_list ::= struct_declaration ; -void Dump::on_struct_declaration_list_252(AST *ast) -{ - if (debug) - std::cout << "struct_declaration_list ::= struct_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration_list ::= struct_declaration_list struct_declaration ; -void Dump::on_struct_declaration_list_253(AST *ast) -{ - if (debug) - std::cout << "struct_declaration_list ::= struct_declaration_list struct_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration ::= type_specifier struct_declarator_list SEMICOLON ; -void Dump::on_struct_declaration_254(AST *ast) -{ - if (debug) - std::cout << "struct_declaration ::= type_specifier struct_declarator_list SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declaration ::= type_qualifier type_specifier struct_declarator_list SEMICOLON ; -void Dump::on_struct_declaration_255(AST *ast) -{ - if (debug) - std::cout << "struct_declaration ::= type_qualifier type_specifier struct_declarator_list SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator_list ::= struct_declarator ; -void Dump::on_struct_declarator_list_256(AST *ast) -{ - if (debug) - std::cout << "struct_declarator_list ::= struct_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator_list ::= struct_declarator_list COMMA struct_declarator ; -void Dump::on_struct_declarator_list_257(AST *ast) -{ - if (debug) - std::cout << "struct_declarator_list ::= struct_declarator_list COMMA struct_declarator" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator ::= IDENTIFIER ; -void Dump::on_struct_declarator_258(AST *ast) -{ - if (debug) - std::cout << "struct_declarator ::= IDENTIFIER" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator ::= IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ; -void Dump::on_struct_declarator_259(AST *ast) -{ - if (debug) - std::cout << "struct_declarator ::= IDENTIFIER LEFT_BRACKET RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ; -void Dump::on_struct_declarator_260(AST *ast) -{ - if (debug) - std::cout << "struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// initializer ::= assignment_expression ; -void Dump::on_initializer_261(AST *ast) -{ - if (debug) - std::cout << "initializer ::= assignment_expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// declaration_statement ::= declaration ; -void Dump::on_declaration_statement_262(AST *ast) -{ - if (debug) - std::cout << "declaration_statement ::= declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement ::= compound_statement ; -void Dump::on_statement_263(AST *ast) -{ - if (debug) - std::cout << "statement ::= compound_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement ::= simple_statement ; -void Dump::on_statement_264(AST *ast) -{ - if (debug) - std::cout << "statement ::= simple_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= declaration_statement ; -void Dump::on_simple_statement_265(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= declaration_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= expression_statement ; -void Dump::on_simple_statement_266(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= expression_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= selection_statement ; -void Dump::on_simple_statement_267(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= selection_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= switch_statement ; -void Dump::on_simple_statement_268(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= switch_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= case_label ; -void Dump::on_simple_statement_269(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= case_label" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= iteration_statement ; -void Dump::on_simple_statement_270(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= iteration_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// simple_statement ::= jump_statement ; -void Dump::on_simple_statement_271(AST *ast) -{ - if (debug) - std::cout << "simple_statement ::= jump_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement ::= LEFT_BRACE RIGHT_BRACE ; -void Dump::on_compound_statement_272(AST *ast) -{ - if (debug) - std::cout << "compound_statement ::= LEFT_BRACE RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE ; -void Dump::on_compound_statement_273(AST *ast) -{ - if (debug) - std::cout << "compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_no_new_scope ::= compound_statement_no_new_scope ; -void Dump::on_statement_no_new_scope_274(AST *ast) -{ - if (debug) - std::cout << "statement_no_new_scope ::= compound_statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_no_new_scope ::= simple_statement ; -void Dump::on_statement_no_new_scope_275(AST *ast) -{ - if (debug) - std::cout << "statement_no_new_scope ::= simple_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE ; -void Dump::on_compound_statement_no_new_scope_276(AST *ast) -{ - if (debug) - std::cout << "compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE ; -void Dump::on_compound_statement_no_new_scope_277(AST *ast) -{ - if (debug) - std::cout << "compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_list ::= statement ; -void Dump::on_statement_list_278(AST *ast) -{ - if (debug) - std::cout << "statement_list ::= statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// statement_list ::= statement_list statement ; -void Dump::on_statement_list_279(AST *ast) -{ - if (debug) - std::cout << "statement_list ::= statement_list statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression_statement ::= SEMICOLON ; -void Dump::on_expression_statement_280(AST *ast) -{ - if (debug) - std::cout << "expression_statement ::= SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// expression_statement ::= expression SEMICOLON ; -void Dump::on_expression_statement_281(AST *ast) -{ - if (debug) - std::cout << "expression_statement ::= expression SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement ; -void Dump::on_selection_statement_282(AST *ast) -{ - if (debug) - std::cout << "selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// selection_rest_statement ::= statement ELSE statement ; -void Dump::on_selection_rest_statement_283(AST *ast) -{ - if (debug) - std::cout << "selection_rest_statement ::= statement ELSE statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// selection_rest_statement ::= statement ; -void Dump::on_selection_rest_statement_284(AST *ast) -{ - if (debug) - std::cout << "selection_rest_statement ::= statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// condition ::= expression ; -void Dump::on_condition_285(AST *ast) -{ - if (debug) - std::cout << "condition ::= expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// condition ::= fully_specified_type IDENTIFIER EQUAL initializer ; -void Dump::on_condition_286(AST *ast) -{ - if (debug) - std::cout << "condition ::= fully_specified_type IDENTIFIER EQUAL initializer" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// switch_statement ::= SWITCH LEFT_PAREN expression RIGHT_PAREN LEFT_BRACE switch_statement_list RIGHT_BRACE ; -void Dump::on_switch_statement_287(AST *ast) -{ - if (debug) - std::cout << "switch_statement ::= SWITCH LEFT_PAREN expression RIGHT_PAREN LEFT_BRACE switch_statement_list RIGHT_BRACE" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// switch_statement_list ::= ; -void Dump::on_switch_statement_list_288(AST *ast) -{ - if (debug) - std::cout << "switch_statement_list ::=" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// switch_statement_list ::= statement_list ; -void Dump::on_switch_statement_list_289(AST *ast) -{ - if (debug) - std::cout << "switch_statement_list ::= statement_list" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// case_label ::= CASE expression COLON ; -void Dump::on_case_label_290(AST *ast) -{ - if (debug) - std::cout << "case_label ::= CASE expression COLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// case_label ::= DEFAULT COLON ; -void Dump::on_case_label_291(AST *ast) -{ - if (debug) - std::cout << "case_label ::= DEFAULT COLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope ; -void Dump::on_iteration_statement_292(AST *ast) -{ - if (debug) - std::cout << "iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON ; -void Dump::on_iteration_statement_293(AST *ast) -{ - if (debug) - std::cout << "iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope ; -void Dump::on_iteration_statement_294(AST *ast) -{ - if (debug) - std::cout << "iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_init_statement ::= expression_statement ; -void Dump::on_for_init_statement_295(AST *ast) -{ - if (debug) - std::cout << "for_init_statement ::= expression_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_init_statement ::= declaration_statement ; -void Dump::on_for_init_statement_296(AST *ast) -{ - if (debug) - std::cout << "for_init_statement ::= declaration_statement" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditionopt ::= ; -void Dump::on_conditionopt_297(AST *ast) -{ - if (debug) - std::cout << "conditionopt ::=" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// conditionopt ::= condition ; -void Dump::on_conditionopt_298(AST *ast) -{ - if (debug) - std::cout << "conditionopt ::= condition" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_rest_statement ::= conditionopt SEMICOLON ; -void Dump::on_for_rest_statement_299(AST *ast) -{ - if (debug) - std::cout << "for_rest_statement ::= conditionopt SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// for_rest_statement ::= conditionopt SEMICOLON expression ; -void Dump::on_for_rest_statement_300(AST *ast) -{ - if (debug) - std::cout << "for_rest_statement ::= conditionopt SEMICOLON expression" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= CONTINUE SEMICOLON ; -void Dump::on_jump_statement_301(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= CONTINUE SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= BREAK SEMICOLON ; -void Dump::on_jump_statement_302(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= BREAK SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= RETURN SEMICOLON ; -void Dump::on_jump_statement_303(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= RETURN SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= RETURN expression SEMICOLON ; -void Dump::on_jump_statement_304(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= RETURN expression SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// jump_statement ::= DISCARD SEMICOLON ; -void Dump::on_jump_statement_305(AST *ast) -{ - if (debug) - std::cout << "jump_statement ::= DISCARD SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// translation_unit ::= external_declaration ; -void Dump::on_translation_unit_306(AST *ast) -{ - if (debug) - std::cout << "translation_unit ::= external_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// translation_unit ::= translation_unit external_declaration ; -void Dump::on_translation_unit_307(AST *ast) -{ - if (debug) - std::cout << "translation_unit ::= translation_unit external_declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// external_declaration ::= function_definition ; -void Dump::on_external_declaration_308(AST *ast) -{ - if (debug) - std::cout << "external_declaration ::= function_definition" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// external_declaration ::= declaration ; -void Dump::on_external_declaration_309(AST *ast) -{ - if (debug) - std::cout << "external_declaration ::= declaration" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// external_declaration ::= SEMICOLON ; -void Dump::on_external_declaration_310(AST *ast) -{ - if (debug) - std::cout << "external_declaration ::= SEMICOLON" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - -// function_definition ::= function_prototype compound_statement_no_new_scope ; -void Dump::on_function_definition_311(AST *ast) -{ - if (debug) - std::cout << "function_definition ::= function_prototype compound_statement_no_new_scope" << std::endl; - Operator *op = ast->asOperator(); - accept(op->begin(), op->end()); -} - diff --git a/src/libs/glsl/glslengine.cpp b/src/libs/glsl/glslengine.cpp new file mode 100644 index 00000000000..36c6cbb0841 --- /dev/null +++ b/src/libs/glsl/glslengine.cpp @@ -0,0 +1,21 @@ +#include "glslengine.h" + +using namespace GLSL; + +Engine::Engine() +{ +} + +Engine::~Engine() +{ +} + +const std::string *Engine::identifier(const std::string &s) +{ + return &*_identifiers.insert(s).first; +} + +const std::string *Engine::identifier(const char *s, int n) +{ + return &*_identifiers.insert(std::string(s, n)).first; +} diff --git a/src/libs/glsl/glslengine.h b/src/libs/glsl/glslengine.h new file mode 100644 index 00000000000..c1cb195f3ee --- /dev/null +++ b/src/libs/glsl/glslengine.h @@ -0,0 +1,25 @@ +#ifndef GLSLENGINE_H +#define GLSLENGINE_H + +#include "glsl.h" +#include +#include + +namespace GLSL { + +class GLSL_EXPORT Engine +{ +public: + Engine(); + ~Engine(); + + const std::string *identifier(const std::string &s); + const std::string *identifier(const char *s, int n); + +private: + std::set _identifiers; +}; + +} // namespace GLSL + +#endif // GLSLENGINE_H diff --git a/src/libs/glsl/glsllexer.cpp b/src/libs/glsl/glsllexer.cpp index ee94bcff2e4..fff1f828108 100644 --- a/src/libs/glsl/glsllexer.cpp +++ b/src/libs/glsl/glsllexer.cpp @@ -29,16 +29,17 @@ #include "glsllexer.h" #include "glslparser.h" +#include "glslengine.h" #include #include #include using namespace GLSL; -Lexer::Lexer(const char *source, unsigned size) - : _source(source), +Lexer::Lexer(Engine *engine, const char *source, unsigned size) + : _engine(engine), + _source(source), _it(source), - _end(source + size), _size(size), _yychar('\n'), _lineno(0), @@ -64,12 +65,13 @@ int Lexer::yylex(Token *tk) { const char *pos = 0; int line = 0; + _yyval.ptr = 0; const int kind = yylex_helper(&pos, &line); tk->kind = kind; tk->position = pos - _source; tk->length = _it - pos - 1; tk->line = line; - tk->matchingBrace = 0; + tk->ptr = _yyval.ptr; return kind; } @@ -360,8 +362,14 @@ int Lexer::yylex_helper(const char **position, int *line) while (std::isalnum(_yychar) || _yychar == '_') { yyinp(); } - if (_scanKeywords) - return findKeyword(word, _it - word - 1); + if (_scanKeywords) { + const int k = findKeyword(word, _it - word - 1); + + if (k != Parser::T_IDENTIFIER) + return k; + } + if (_engine) + _yyval.string = _engine->identifier(word, _it - word - 1); return Parser::T_IDENTIFIER; } else if (std::isdigit(ch)) { while (std::isalnum(_yychar) || _yychar == '.') { diff --git a/src/libs/glsl/glsllexer.h b/src/libs/glsl/glsllexer.h index d155d23e986..dcdd4f5d296 100644 --- a/src/libs/glsl/glsllexer.h +++ b/src/libs/glsl/glsllexer.h @@ -31,6 +31,7 @@ #define GLSLLEXER_H #include "glsl.h" +#include namespace GLSL { @@ -44,6 +45,8 @@ public: union { int matchingBrace; + int i; // integer value + const std::string *string; // string value void *ptr; }; @@ -57,7 +60,7 @@ public: class GLSL_EXPORT Lexer { public: - Lexer(const char *source, unsigned size); + Lexer(Engine *engine, const char *source, unsigned size); ~Lexer(); enum @@ -75,6 +78,14 @@ public: Variant_Mask = 0xFFFF0000 }; + union Value { + int i; + const std::string *string; + void *ptr; + }; + + Engine *engine() const { return _engine; } + int state() const { return _state; } void setState(int state) { _state = state; } @@ -90,6 +101,8 @@ public: int yylex(Token *tk); int findKeyword(const char *word, int length) const; + void *yyval() const { return _yyval.ptr; } + private: static int classify(const char *s, int len); @@ -97,9 +110,9 @@ private: int yylex_helper(const char **position, int *line); private: + Engine *_engine; const char *_source; const char *_it; - const char *_end; int _size; int _yychar; int _lineno; @@ -107,6 +120,7 @@ private: int _variant; unsigned _scanKeywords: 1; unsigned _scanComments: 1; + Value _yyval; }; } // end of namespace GLSL diff --git a/src/libs/glsl/glslparser.cpp b/src/libs/glsl/glslparser.cpp index e1c1112db67..fd9fb26d94d 100644 --- a/src/libs/glsl/glslparser.cpp +++ b/src/libs/glsl/glslparser.cpp @@ -1,4 +1,6 @@ +#line 291 "./glsl.g" + /************************************************************************** ** ** This file is part of Qt Creator @@ -31,22 +33,18 @@ #include "glslparser.h" #include #include +#include using namespace GLSL; -namespace GLSL { -void dumpAST(AST *); -void deleteAST(AST *ast); -} - -Parser::Parser(const char *source, unsigned size, int variant) +Parser::Parser(Engine *engine, const char *source, unsigned size, int variant) : _tos(-1), _index(0) { _tokens.reserve(1024); _stateStack.resize(128); _locationStack.resize(128); - _astStack.resize(128); + _symStack.resize(128); _tokens.push_back(Token()); // invalid token @@ -54,7 +52,7 @@ Parser::Parser(const char *source, unsigned size, int variant) std::stack bracketStack; std::stack braceStack; - Lexer lexer(source, size); + Lexer lexer(engine, source, size); lexer.setVariant(variant); Token tk; do { @@ -103,17 +101,12 @@ Parser::~Parser() { } -void Parser::dump(AST *ast) -{ - dumpAST(ast); -} - -bool Parser::parse() +TranslationUnit *Parser::parse() { int action = 0; int yytoken = -1; int yyloc = -1; - Operand *opd = 0; + void *yyval = 0; // value of the current token. _tos = -1; @@ -131,13 +124,13 @@ bool Parser::parse() yytoken = T_TYPE_NAME; } } - opd = new Operand(yyloc); + yyval = _tokens.at(yyloc).ptr; } if (unsigned(++_tos) == _stateStack.size()) { _stateStack.resize(_tos * 2); _locationStack.resize(_tos * 2); - _astStack.resize(_tos * 2); + _symStack.resize(_tos * 2); } _stateStack[_tos] = action; @@ -145,21 +138,16 @@ bool Parser::parse() if (action > 0) { if (action == ACCEPT_STATE) { --_tos; - dump(_astStack[0]); - deleteAST(_astStack[0]); - return true; + return _symStack[0].translation_unit; } - _astStack[_tos] = opd; + _symStack[_tos].ptr = yyval; _locationStack[_tos] = yyloc; yytoken = -1; } else if (action < 0) { const int ruleno = -action - 1; const int N = rhs[ruleno]; _tos -= N; - if (N == 0) - _astStack[_tos] = 0; - else - _astStack[_tos] = new Operator(ruleno, &_astStack[_tos], &_astStack[_tos + N]); + reduce(ruleno); action = nt_action(_stateStack[_tos], lhs[ruleno] - TERMINAL_COUNT); } } while (action); @@ -167,5 +155,1894 @@ bool Parser::parse() fprintf(stderr, "unexpected token `%s' at line %d\n", yytoken != -1 ? spell[yytoken] : "", _tokens[yyloc].line + 1); - return false; + return 0; } + +#line 452 "./glsl.g" + +void Parser::reduce(int ruleno) +{ +switch(ruleno) { + +#line 461 "./glsl.g" + +case 0: { + ast(1) = new IdentifierExpression(*sym(1).string); +} break; + +#line 468 "./glsl.g" + +case 1: { + // ast(1) = new ...AST(...); +} break; + +#line 475 "./glsl.g" + +case 2: { + // ast(1) = new ...AST(...); +} break; + +#line 482 "./glsl.g" + +case 3: { + // ast(1) = new ...AST(...); +} break; + +#line 489 "./glsl.g" + +case 4: { + // ast(1) = new ...AST(...); +} break; + +#line 496 "./glsl.g" + +case 5: { + // ast(1) = new ...AST(...); +} break; + +#line 503 "./glsl.g" + +case 6: { + // ast(1) = new ...AST(...); +} break; + +#line 510 "./glsl.g" + +case 7: { + // ast(1) = new ...AST(...); +} break; + +#line 517 "./glsl.g" + +case 8: { + // ast(1) = new ...AST(...); +} break; + +#line 524 "./glsl.g" + +case 9: { + // ast(1) = new ...AST(...); +} break; + +#line 531 "./glsl.g" + +case 10: { + // ast(1) = new ...AST(...); +} break; + +#line 538 "./glsl.g" + +case 11: { + // ast(1) = new ...AST(...); +} break; + +#line 545 "./glsl.g" + +case 12: { + // ast(1) = new ...AST(...); +} break; + +#line 552 "./glsl.g" + +case 13: { + // ast(1) = new ...AST(...); +} break; + +#line 559 "./glsl.g" + +case 14: { + // ast(1) = new ...AST(...); +} break; + +#line 566 "./glsl.g" + +case 15: { + // ast(1) = new ...AST(...); +} break; + +#line 573 "./glsl.g" + +case 16: { + // ast(1) = new ...AST(...); +} break; + +#line 580 "./glsl.g" + +case 17: { + // ast(1) = new ...AST(...); +} break; + +#line 587 "./glsl.g" + +case 18: { + // ast(1) = new ...AST(...); +} break; + +#line 594 "./glsl.g" + +case 19: { + // ast(1) = new ...AST(...); +} break; + +#line 601 "./glsl.g" + +case 20: { + // ast(1) = new ...AST(...); +} break; + +#line 608 "./glsl.g" + +case 21: { + // ast(1) = new ...AST(...); +} break; + +#line 615 "./glsl.g" + +case 22: { + // ast(1) = new ...AST(...); +} break; + +#line 622 "./glsl.g" + +case 23: { + // ast(1) = new ...AST(...); +} break; + +#line 629 "./glsl.g" + +case 24: { + // ast(1) = new ...AST(...); +} break; + +#line 636 "./glsl.g" + +case 25: { + // ast(1) = new ...AST(...); +} break; + +#line 643 "./glsl.g" + +case 26: { + // ast(1) = new ...AST(...); +} break; + +#line 650 "./glsl.g" + +case 27: { + // ast(1) = new ...AST(...); +} break; + +#line 657 "./glsl.g" + +case 28: { + // ast(1) = new ...AST(...); +} break; + +#line 664 "./glsl.g" + +case 29: { + // ast(1) = new ...AST(...); +} break; + +#line 671 "./glsl.g" + +case 30: { + // ast(1) = new ...AST(...); +} break; + +#line 678 "./glsl.g" + +case 31: { + // ast(1) = new ...AST(...); +} break; + +#line 685 "./glsl.g" + +case 32: { + // ast(1) = new ...AST(...); +} break; + +#line 692 "./glsl.g" + +case 33: { + // ast(1) = new ...AST(...); +} break; + +#line 699 "./glsl.g" + +case 34: { + // ast(1) = new ...AST(...); +} break; + +#line 706 "./glsl.g" + +case 35: { + // ast(1) = new ...AST(...); +} break; + +#line 713 "./glsl.g" + +case 36: { + // ast(1) = new ...AST(...); +} break; + +#line 720 "./glsl.g" + +case 37: { + // ast(1) = new ...AST(...); +} break; + +#line 727 "./glsl.g" + +case 38: { + // ast(1) = new ...AST(...); +} break; + +#line 734 "./glsl.g" + +case 39: { + // ast(1) = new ...AST(...); +} break; + +#line 741 "./glsl.g" + +case 40: { + // ast(1) = new ...AST(...); +} break; + +#line 748 "./glsl.g" + +case 41: { + // ast(1) = new ...AST(...); +} break; + +#line 755 "./glsl.g" + +case 42: { + // ast(1) = new ...AST(...); +} break; + +#line 762 "./glsl.g" + +case 43: { + // ast(1) = new ...AST(...); +} break; + +#line 769 "./glsl.g" + +case 44: { + // ast(1) = new ...AST(...); +} break; + +#line 776 "./glsl.g" + +case 45: { + // ast(1) = new ...AST(...); +} break; + +#line 783 "./glsl.g" + +case 46: { + // ast(1) = new ...AST(...); +} break; + +#line 790 "./glsl.g" + +case 47: { + // ast(1) = new ...AST(...); +} break; + +#line 797 "./glsl.g" + +case 48: { + // ast(1) = new ...AST(...); +} break; + +#line 804 "./glsl.g" + +case 49: { + // ast(1) = new ...AST(...); +} break; + +#line 811 "./glsl.g" + +case 50: { + // ast(1) = new ...AST(...); +} break; + +#line 818 "./glsl.g" + +case 51: { + // ast(1) = new ...AST(...); +} break; + +#line 825 "./glsl.g" + +case 52: { + // ast(1) = new ...AST(...); +} break; + +#line 832 "./glsl.g" + +case 53: { + // ast(1) = new ...AST(...); +} break; + +#line 839 "./glsl.g" + +case 54: { + // ast(1) = new ...AST(...); +} break; + +#line 846 "./glsl.g" + +case 55: { + // ast(1) = new ...AST(...); +} break; + +#line 853 "./glsl.g" + +case 56: { + // ast(1) = new ...AST(...); +} break; + +#line 860 "./glsl.g" + +case 57: { + // ast(1) = new ...AST(...); +} break; + +#line 867 "./glsl.g" + +case 58: { + // ast(1) = new ...AST(...); +} break; + +#line 874 "./glsl.g" + +case 59: { + // ast(1) = new ...AST(...); +} break; + +#line 881 "./glsl.g" + +case 60: { + // ast(1) = new ...AST(...); +} break; + +#line 888 "./glsl.g" + +case 61: { + // ast(1) = new ...AST(...); +} break; + +#line 895 "./glsl.g" + +case 62: { + // ast(1) = new ...AST(...); +} break; + +#line 902 "./glsl.g" + +case 63: { + // ast(1) = new ...AST(...); +} break; + +#line 909 "./glsl.g" + +case 64: { + // ast(1) = new ...AST(...); +} break; + +#line 916 "./glsl.g" + +case 65: { + // ast(1) = new ...AST(...); +} break; + +#line 923 "./glsl.g" + +case 66: { + // ast(1) = new ...AST(...); +} break; + +#line 930 "./glsl.g" + +case 67: { + // ast(1) = new ...AST(...); +} break; + +#line 937 "./glsl.g" + +case 68: { + // ast(1) = new ...AST(...); +} break; + +#line 944 "./glsl.g" + +case 69: { + // ast(1) = new ...AST(...); +} break; + +#line 951 "./glsl.g" + +case 70: { + // ast(1) = new ...AST(...); +} break; + +#line 958 "./glsl.g" + +case 71: { + // ast(1) = new ...AST(...); +} break; + +#line 965 "./glsl.g" + +case 72: { + // ast(1) = new ...AST(...); +} break; + +#line 972 "./glsl.g" + +case 73: { + // ast(1) = new ...AST(...); +} break; + +#line 979 "./glsl.g" + +case 74: { + // ast(1) = new ...AST(...); +} break; + +#line 986 "./glsl.g" + +case 75: { + // ast(1) = new ...AST(...); +} break; + +#line 993 "./glsl.g" + +case 76: { + // ast(1) = new ...AST(...); +} break; + +#line 1000 "./glsl.g" + +case 77: { + // ast(1) = new ...AST(...); +} break; + +#line 1007 "./glsl.g" + +case 78: { + // ast(1) = new ...AST(...); +} break; + +#line 1014 "./glsl.g" + +case 79: { + // ast(1) = new ...AST(...); +} break; + +#line 1021 "./glsl.g" + +case 80: { + // ast(1) = new ...AST(...); +} break; + +#line 1028 "./glsl.g" + +case 81: { + // ast(1) = new ...AST(...); +} break; + +#line 1035 "./glsl.g" + +case 82: { + // ast(1) = new ...AST(...); +} break; + +#line 1042 "./glsl.g" + +case 83: { + // ast(1) = new ...AST(...); +} break; + +#line 1049 "./glsl.g" + +case 84: { + // ast(1) = new ...AST(...); +} break; + +#line 1056 "./glsl.g" + +case 85: { + // ast(1) = new ...AST(...); +} break; + +#line 1063 "./glsl.g" + +case 86: { + // ast(1) = new ...AST(...); +} break; + +#line 1070 "./glsl.g" + +case 87: { + // ast(1) = new ...AST(...); +} break; + +#line 1077 "./glsl.g" + +case 88: { + // ast(1) = new ...AST(...); +} break; + +#line 1084 "./glsl.g" + +case 89: { + // ast(1) = new ...AST(...); +} break; + +#line 1091 "./glsl.g" + +case 90: { + // ast(1) = new ...AST(...); +} break; + +#line 1098 "./glsl.g" + +case 91: { + // ast(1) = new ...AST(...); +} break; + +#line 1105 "./glsl.g" + +case 92: { + // ast(1) = new ...AST(...); +} break; + +#line 1112 "./glsl.g" + +case 93: { + // ast(1) = new ...AST(...); +} break; + +#line 1119 "./glsl.g" + +case 94: { + // ast(1) = new ...AST(...); +} break; + +#line 1126 "./glsl.g" + +case 95: { + // ast(1) = new ...AST(...); +} break; + +#line 1133 "./glsl.g" + +case 96: { + // ast(1) = new ...AST(...); +} break; + +#line 1140 "./glsl.g" + +case 97: { + // ast(1) = new ...AST(...); +} break; + +#line 1147 "./glsl.g" + +case 98: { + // ast(1) = new ...AST(...); +} break; + +#line 1154 "./glsl.g" + +case 99: { + // ast(1) = new ...AST(...); +} break; + +#line 1161 "./glsl.g" + +case 100: { + // ast(1) = new ...AST(...); +} break; + +#line 1168 "./glsl.g" + +case 101: { + // ast(1) = new ...AST(...); +} break; + +#line 1175 "./glsl.g" + +case 102: { + // ast(1) = new ...AST(...); +} break; + +#line 1182 "./glsl.g" + +case 103: { + // ast(1) = new ...AST(...); +} break; + +#line 1189 "./glsl.g" + +case 104: { + // ast(1) = new ...AST(...); +} break; + +#line 1196 "./glsl.g" + +case 105: { + // ast(1) = new ...AST(...); +} break; + +#line 1203 "./glsl.g" + +case 106: { + // ast(1) = new ...AST(...); +} break; + +#line 1210 "./glsl.g" + +case 107: { + // ast(1) = new ...AST(...); +} break; + +#line 1217 "./glsl.g" + +case 108: { + // ast(1) = new ...AST(...); +} break; + +#line 1224 "./glsl.g" + +case 109: { + // ast(1) = new ...AST(...); +} break; + +#line 1231 "./glsl.g" + +case 110: { + // ast(1) = new ...AST(...); +} break; + +#line 1238 "./glsl.g" + +case 111: { + // ast(1) = new ...AST(...); +} break; + +#line 1245 "./glsl.g" + +case 112: { + // ast(1) = new ...AST(...); +} break; + +#line 1252 "./glsl.g" + +case 113: { + // ast(1) = new ...AST(...); +} break; + +#line 1259 "./glsl.g" + +case 114: { + // ast(1) = new ...AST(...); +} break; + +#line 1266 "./glsl.g" + +case 115: { + // ast(1) = new ...AST(...); +} break; + +#line 1273 "./glsl.g" + +case 116: { + // ast(1) = new ...AST(...); +} break; + +#line 1280 "./glsl.g" + +case 117: { + // ast(1) = new ...AST(...); +} break; + +#line 1287 "./glsl.g" + +case 118: { + // ast(1) = new ...AST(...); +} break; + +#line 1294 "./glsl.g" + +case 119: { + // ast(1) = new ...AST(...); +} break; + +#line 1301 "./glsl.g" + +case 120: { + // ast(1) = new ...AST(...); +} break; + +#line 1308 "./glsl.g" + +case 121: { + // ast(1) = new ...AST(...); +} break; + +#line 1315 "./glsl.g" + +case 122: { + // ast(1) = new ...AST(...); +} break; + +#line 1322 "./glsl.g" + +case 123: { + // ast(1) = new ...AST(...); +} break; + +#line 1329 "./glsl.g" + +case 124: { + // ast(1) = new ...AST(...); +} break; + +#line 1336 "./glsl.g" + +case 125: { + // ast(1) = new ...AST(...); +} break; + +#line 1343 "./glsl.g" + +case 126: { + // ast(1) = new ...AST(...); +} break; + +#line 1350 "./glsl.g" + +case 127: { + // ast(1) = new ...AST(...); +} break; + +#line 1357 "./glsl.g" + +case 128: { + // ast(1) = new ...AST(...); +} break; + +#line 1364 "./glsl.g" + +case 129: { + // ast(1) = new ...AST(...); +} break; + +#line 1371 "./glsl.g" + +case 130: { + // ast(1) = new ...AST(...); +} break; + +#line 1378 "./glsl.g" + +case 131: { + // ast(1) = new ...AST(...); +} break; + +#line 1385 "./glsl.g" + +case 132: { + // ast(1) = new ...AST(...); +} break; + +#line 1392 "./glsl.g" + +case 133: { + // ast(1) = new ...AST(...); +} break; + +#line 1399 "./glsl.g" + +case 134: { + // ast(1) = new ...AST(...); +} break; + +#line 1406 "./glsl.g" + +case 135: { + // ast(1) = new ...AST(...); +} break; + +#line 1413 "./glsl.g" + +case 136: { + // ast(1) = new ...AST(...); +} break; + +#line 1420 "./glsl.g" + +case 137: { + // ast(1) = new ...AST(...); +} break; + +#line 1427 "./glsl.g" + +case 138: { + // ast(1) = new ...AST(...); +} break; + +#line 1434 "./glsl.g" + +case 139: { + // ast(1) = new ...AST(...); +} break; + +#line 1441 "./glsl.g" + +case 140: { + // ast(1) = new ...AST(...); +} break; + +#line 1448 "./glsl.g" + +case 141: { + // ast(1) = new ...AST(...); +} break; + +#line 1455 "./glsl.g" + +case 142: { + // ast(1) = new ...AST(...); +} break; + +#line 1462 "./glsl.g" + +case 143: { + // ast(1) = new ...AST(...); +} break; + +#line 1469 "./glsl.g" + +case 144: { + // ast(1) = new ...AST(...); +} break; + +#line 1476 "./glsl.g" + +case 145: { + // ast(1) = new ...AST(...); +} break; + +#line 1483 "./glsl.g" + +case 146: { + // ast(1) = new ...AST(...); +} break; + +#line 1490 "./glsl.g" + +case 147: { + // ast(1) = new ...AST(...); +} break; + +#line 1497 "./glsl.g" + +case 148: { + // ast(1) = new ...AST(...); +} break; + +#line 1504 "./glsl.g" + +case 149: { + // ast(1) = new ...AST(...); +} break; + +#line 1511 "./glsl.g" + +case 150: { + // ast(1) = new ...AST(...); +} break; + +#line 1518 "./glsl.g" + +case 151: { + // ast(1) = new ...AST(...); +} break; + +#line 1525 "./glsl.g" + +case 152: { + // ast(1) = new ...AST(...); +} break; + +#line 1532 "./glsl.g" + +case 153: { + // ast(1) = new ...AST(...); +} break; + +#line 1539 "./glsl.g" + +case 154: { + // ast(1) = new ...AST(...); +} break; + +#line 1546 "./glsl.g" + +case 155: { + // ast(1) = new ...AST(...); +} break; + +#line 1553 "./glsl.g" + +case 156: { + // ast(1) = new ...AST(...); +} break; + +#line 1560 "./glsl.g" + +case 157: { + // ast(1) = new ...AST(...); +} break; + +#line 1567 "./glsl.g" + +case 158: { + // ast(1) = new ...AST(...); +} break; + +#line 1574 "./glsl.g" + +case 159: { + // ast(1) = new ...AST(...); +} break; + +#line 1581 "./glsl.g" + +case 160: { + // ast(1) = new ...AST(...); +} break; + +#line 1588 "./glsl.g" + +case 161: { + // ast(1) = new ...AST(...); +} break; + +#line 1595 "./glsl.g" + +case 162: { + // ast(1) = new ...AST(...); +} break; + +#line 1602 "./glsl.g" + +case 163: { + // ast(1) = new ...AST(...); +} break; + +#line 1609 "./glsl.g" + +case 164: { + // ast(1) = new ...AST(...); +} break; + +#line 1616 "./glsl.g" + +case 165: { + // ast(1) = new ...AST(...); +} break; + +#line 1623 "./glsl.g" + +case 166: { + // ast(1) = new ...AST(...); +} break; + +#line 1630 "./glsl.g" + +case 167: { + // ast(1) = new ...AST(...); +} break; + +#line 1637 "./glsl.g" + +case 168: { + // ast(1) = new ...AST(...); +} break; + +#line 1644 "./glsl.g" + +case 169: { + // ast(1) = new ...AST(...); +} break; + +#line 1651 "./glsl.g" + +case 170: { + // ast(1) = new ...AST(...); +} break; + +#line 1658 "./glsl.g" + +case 171: { + // ast(1) = new ...AST(...); +} break; + +#line 1665 "./glsl.g" + +case 172: { + // ast(1) = new ...AST(...); +} break; + +#line 1672 "./glsl.g" + +case 173: { + // ast(1) = new ...AST(...); +} break; + +#line 1679 "./glsl.g" + +case 174: { + // ast(1) = new ...AST(...); +} break; + +#line 1686 "./glsl.g" + +case 175: { + // ast(1) = new ...AST(...); +} break; + +#line 1693 "./glsl.g" + +case 176: { + // ast(1) = new ...AST(...); +} break; + +#line 1700 "./glsl.g" + +case 177: { + // ast(1) = new ...AST(...); +} break; + +#line 1707 "./glsl.g" + +case 178: { + // ast(1) = new ...AST(...); +} break; + +#line 1714 "./glsl.g" + +case 179: { + // ast(1) = new ...AST(...); +} break; + +#line 1721 "./glsl.g" + +case 180: { + // ast(1) = new ...AST(...); +} break; + +#line 1728 "./glsl.g" + +case 181: { + // ast(1) = new ...AST(...); +} break; + +#line 1735 "./glsl.g" + +case 182: { + // ast(1) = new ...AST(...); +} break; + +#line 1742 "./glsl.g" + +case 183: { + // ast(1) = new ...AST(...); +} break; + +#line 1749 "./glsl.g" + +case 184: { + // ast(1) = new ...AST(...); +} break; + +#line 1756 "./glsl.g" + +case 185: { + // ast(1) = new ...AST(...); +} break; + +#line 1763 "./glsl.g" + +case 186: { + // ast(1) = new ...AST(...); +} break; + +#line 1770 "./glsl.g" + +case 187: { + // ast(1) = new ...AST(...); +} break; + +#line 1777 "./glsl.g" + +case 188: { + // ast(1) = new ...AST(...); +} break; + +#line 1784 "./glsl.g" + +case 189: { + // ast(1) = new ...AST(...); +} break; + +#line 1791 "./glsl.g" + +case 190: { + // ast(1) = new ...AST(...); +} break; + +#line 1798 "./glsl.g" + +case 191: { + // ast(1) = new ...AST(...); +} break; + +#line 1805 "./glsl.g" + +case 192: { + // ast(1) = new ...AST(...); +} break; + +#line 1812 "./glsl.g" + +case 193: { + // ast(1) = new ...AST(...); +} break; + +#line 1819 "./glsl.g" + +case 194: { + // ast(1) = new ...AST(...); +} break; + +#line 1826 "./glsl.g" + +case 195: { + // ast(1) = new ...AST(...); +} break; + +#line 1833 "./glsl.g" + +case 196: { + // ast(1) = new ...AST(...); +} break; + +#line 1840 "./glsl.g" + +case 197: { + // ast(1) = new ...AST(...); +} break; + +#line 1847 "./glsl.g" + +case 198: { + // ast(1) = new ...AST(...); +} break; + +#line 1854 "./glsl.g" + +case 199: { + // ast(1) = new ...AST(...); +} break; + +#line 1861 "./glsl.g" + +case 200: { + // ast(1) = new ...AST(...); +} break; + +#line 1868 "./glsl.g" + +case 201: { + // ast(1) = new ...AST(...); +} break; + +#line 1875 "./glsl.g" + +case 202: { + // ast(1) = new ...AST(...); +} break; + +#line 1882 "./glsl.g" + +case 203: { + // ast(1) = new ...AST(...); +} break; + +#line 1889 "./glsl.g" + +case 204: { + // ast(1) = new ...AST(...); +} break; + +#line 1896 "./glsl.g" + +case 205: { + // ast(1) = new ...AST(...); +} break; + +#line 1903 "./glsl.g" + +case 206: { + // ast(1) = new ...AST(...); +} break; + +#line 1910 "./glsl.g" + +case 207: { + // ast(1) = new ...AST(...); +} break; + +#line 1917 "./glsl.g" + +case 208: { + // ast(1) = new ...AST(...); +} break; + +#line 1924 "./glsl.g" + +case 209: { + // ast(1) = new ...AST(...); +} break; + +#line 1931 "./glsl.g" + +case 210: { + // ast(1) = new ...AST(...); +} break; + +#line 1938 "./glsl.g" + +case 211: { + // ast(1) = new ...AST(...); +} break; + +#line 1945 "./glsl.g" + +case 212: { + // ast(1) = new ...AST(...); +} break; + +#line 1952 "./glsl.g" + +case 213: { + // ast(1) = new ...AST(...); +} break; + +#line 1959 "./glsl.g" + +case 214: { + // ast(1) = new ...AST(...); +} break; + +#line 1966 "./glsl.g" + +case 215: { + // ast(1) = new ...AST(...); +} break; + +#line 1973 "./glsl.g" + +case 216: { + // ast(1) = new ...AST(...); +} break; + +#line 1980 "./glsl.g" + +case 217: { + // ast(1) = new ...AST(...); +} break; + +#line 1987 "./glsl.g" + +case 218: { + // ast(1) = new ...AST(...); +} break; + +#line 1994 "./glsl.g" + +case 219: { + // ast(1) = new ...AST(...); +} break; + +#line 2001 "./glsl.g" + +case 220: { + // ast(1) = new ...AST(...); +} break; + +#line 2008 "./glsl.g" + +case 221: { + // ast(1) = new ...AST(...); +} break; + +#line 2015 "./glsl.g" + +case 222: { + // ast(1) = new ...AST(...); +} break; + +#line 2022 "./glsl.g" + +case 223: { + // ast(1) = new ...AST(...); +} break; + +#line 2029 "./glsl.g" + +case 224: { + // ast(1) = new ...AST(...); +} break; + +#line 2036 "./glsl.g" + +case 225: { + // ast(1) = new ...AST(...); +} break; + +#line 2043 "./glsl.g" + +case 226: { + // ast(1) = new ...AST(...); +} break; + +#line 2050 "./glsl.g" + +case 227: { + // ast(1) = new ...AST(...); +} break; + +#line 2057 "./glsl.g" + +case 228: { + // ast(1) = new ...AST(...); +} break; + +#line 2064 "./glsl.g" + +case 229: { + // ast(1) = new ...AST(...); +} break; + +#line 2071 "./glsl.g" + +case 230: { + // ast(1) = new ...AST(...); +} break; + +#line 2078 "./glsl.g" + +case 231: { + // ast(1) = new ...AST(...); +} break; + +#line 2085 "./glsl.g" + +case 232: { + // ast(1) = new ...AST(...); +} break; + +#line 2092 "./glsl.g" + +case 233: { + // ast(1) = new ...AST(...); +} break; + +#line 2099 "./glsl.g" + +case 234: { + // ast(1) = new ...AST(...); +} break; + +#line 2106 "./glsl.g" + +case 235: { + // ast(1) = new ...AST(...); +} break; + +#line 2113 "./glsl.g" + +case 236: { + // ast(1) = new ...AST(...); +} break; + +#line 2120 "./glsl.g" + +case 237: { + // ast(1) = new ...AST(...); +} break; + +#line 2127 "./glsl.g" + +case 238: { + // ast(1) = new ...AST(...); +} break; + +#line 2134 "./glsl.g" + +case 239: { + // ast(1) = new ...AST(...); +} break; + +#line 2141 "./glsl.g" + +case 240: { + // ast(1) = new ...AST(...); +} break; + +#line 2148 "./glsl.g" + +case 241: { + // ast(1) = new ...AST(...); +} break; + +#line 2155 "./glsl.g" + +case 242: { + // ast(1) = new ...AST(...); +} break; + +#line 2162 "./glsl.g" + +case 243: { + // ast(1) = new ...AST(...); +} break; + +#line 2169 "./glsl.g" + +case 244: { + // ast(1) = new ...AST(...); +} break; + +#line 2176 "./glsl.g" + +case 245: { + // ast(1) = new ...AST(...); +} break; + +#line 2183 "./glsl.g" + +case 246: { + // ast(1) = new ...AST(...); +} break; + +#line 2190 "./glsl.g" + +case 247: { + // ast(1) = new ...AST(...); +} break; + +#line 2197 "./glsl.g" + +case 248: { + // ast(1) = new ...AST(...); +} break; + +#line 2204 "./glsl.g" + +case 249: { + // ast(1) = new ...AST(...); +} break; + +#line 2211 "./glsl.g" + +case 250: { + // ast(1) = new ...AST(...); +} break; + +#line 2218 "./glsl.g" + +case 251: { + // ast(1) = new ...AST(...); +} break; + +#line 2225 "./glsl.g" + +case 252: { + // ast(1) = new ...AST(...); +} break; + +#line 2232 "./glsl.g" + +case 253: { + // ast(1) = new ...AST(...); +} break; + +#line 2239 "./glsl.g" + +case 254: { + // ast(1) = new ...AST(...); +} break; + +#line 2246 "./glsl.g" + +case 255: { + // ast(1) = new ...AST(...); +} break; + +#line 2253 "./glsl.g" + +case 256: { + // ast(1) = new ...AST(...); +} break; + +#line 2260 "./glsl.g" + +case 257: { + // ast(1) = new ...AST(...); +} break; + +#line 2267 "./glsl.g" + +case 258: { + // ast(1) = new ...AST(...); +} break; + +#line 2274 "./glsl.g" + +case 259: { + // ast(1) = new ...AST(...); +} break; + +#line 2281 "./glsl.g" + +case 260: { + // ast(1) = new ...AST(...); +} break; + +#line 2288 "./glsl.g" + +case 261: { + // ast(1) = new ...AST(...); +} break; + +#line 2295 "./glsl.g" + +case 262: { + // ast(1) = new ...AST(...); +} break; + +#line 2302 "./glsl.g" + +case 263: { + // ast(1) = new ...AST(...); +} break; + +#line 2309 "./glsl.g" + +case 264: { + // ast(1) = new ...AST(...); +} break; + +#line 2316 "./glsl.g" + +case 265: { + // ast(1) = new ...AST(...); +} break; + +#line 2323 "./glsl.g" + +case 266: { + // ast(1) = new ...AST(...); +} break; + +#line 2330 "./glsl.g" + +case 267: { + // ast(1) = new ...AST(...); +} break; + +#line 2337 "./glsl.g" + +case 268: { + // ast(1) = new ...AST(...); +} break; + +#line 2344 "./glsl.g" + +case 269: { + // ast(1) = new ...AST(...); +} break; + +#line 2351 "./glsl.g" + +case 270: { + // ast(1) = new ...AST(...); +} break; + +#line 2358 "./glsl.g" + +case 271: { + // ast(1) = new ...AST(...); +} break; + +#line 2365 "./glsl.g" + +case 272: { + // ast(1) = new ...AST(...); +} break; + +#line 2372 "./glsl.g" + +case 273: { + // ast(1) = new ...AST(...); +} break; + +#line 2379 "./glsl.g" + +case 274: { + // ast(1) = new ...AST(...); +} break; + +#line 2386 "./glsl.g" + +case 275: { + // ast(1) = new ...AST(...); +} break; + +#line 2393 "./glsl.g" + +case 276: { + // ast(1) = new ...AST(...); +} break; + +#line 2400 "./glsl.g" + +case 277: { + // ast(1) = new ...AST(...); +} break; + +#line 2407 "./glsl.g" + +case 278: { + // ast(1) = new ...AST(...); +} break; + +#line 2414 "./glsl.g" + +case 279: { + // ast(1) = new ...AST(...); +} break; + +#line 2421 "./glsl.g" + +case 280: { + // ast(1) = new ...AST(...); +} break; + +#line 2428 "./glsl.g" + +case 281: { + // ast(1) = new ...AST(...); +} break; + +#line 2435 "./glsl.g" + +case 282: { + // ast(1) = new ...AST(...); +} break; + +#line 2442 "./glsl.g" + +case 283: { + // ast(1) = new ...AST(...); +} break; + +#line 2449 "./glsl.g" + +case 284: { + // ast(1) = new ...AST(...); +} break; + +#line 2456 "./glsl.g" + +case 285: { + // ast(1) = new ...AST(...); +} break; + +#line 2463 "./glsl.g" + +case 286: { + // ast(1) = new ...AST(...); +} break; + +#line 2470 "./glsl.g" + +case 287: { + // ast(1) = new ...AST(...); +} break; + +#line 2477 "./glsl.g" + +case 288: { + // ast(1) = new ...AST(...); +} break; + +#line 2484 "./glsl.g" + +case 289: { + // ast(1) = new ...AST(...); +} break; + +#line 2491 "./glsl.g" + +case 290: { + // ast(1) = new ...AST(...); +} break; + +#line 2498 "./glsl.g" + +case 291: { + // ast(1) = new ...AST(...); +} break; + +#line 2505 "./glsl.g" + +case 292: { + // ast(1) = new ...AST(...); +} break; + +#line 2512 "./glsl.g" + +case 293: { + // ast(1) = new ...AST(...); +} break; + +#line 2519 "./glsl.g" + +case 294: { + // ast(1) = new ...AST(...); +} break; + +#line 2526 "./glsl.g" + +case 295: { + // ast(1) = new ...AST(...); +} break; + +#line 2533 "./glsl.g" + +case 296: { + // ast(1) = new ...AST(...); +} break; + +#line 2540 "./glsl.g" + +case 297: { + // ast(1) = new ...AST(...); +} break; + +#line 2547 "./glsl.g" + +case 298: { + // ast(1) = new ...AST(...); +} break; + +#line 2554 "./glsl.g" + +case 299: { + // ast(1) = new ...AST(...); +} break; + +#line 2561 "./glsl.g" + +case 300: { + // ast(1) = new ...AST(...); +} break; + +#line 2568 "./glsl.g" + +case 301: { + // ast(1) = new ...AST(...); +} break; + +#line 2575 "./glsl.g" + +case 302: { + // ast(1) = new ...AST(...); +} break; + +#line 2582 "./glsl.g" + +case 303: { + // ast(1) = new ...AST(...); +} break; + +#line 2589 "./glsl.g" + +case 304: { + // ast(1) = new ...AST(...); +} break; + +#line 2596 "./glsl.g" + +case 305: { + ast(1) = new TranslationUnit(sym(1).declaration_list); +} break; + +#line 2603 "./glsl.g" + +case 306: { + sym(1).declaration_list = new List(sym(1).declaration); +} break; + +#line 2610 "./glsl.g" + +case 307: { + sym(1).declaration_list = new List(sym(1).declaration_list, sym(2).declaration); +} break; + +#line 2617 "./glsl.g" + +case 308: { + // ast(1) = new ...AST(...); +} break; + +#line 2624 "./glsl.g" + +case 309: { + // ast(1) = new ...AST(...); +} break; + +#line 2631 "./glsl.g" + +case 310: { + // ast(1) = new ...AST(...); +} break; + +#line 2638 "./glsl.g" + +case 311: { + // ast(1) = new ...AST(...); +} break; + +#line 2645 "./glsl.g" + +case 312: { + ast(1) = 0; +} break; + +#line 2653 "./glsl.g" + +} // end switch +} // end Parser::reduce() diff --git a/src/libs/glsl/glslparser.h b/src/libs/glsl/glslparser.h index f2761f2c32b..518af028dfe 100644 --- a/src/libs/glsl/glslparser.h +++ b/src/libs/glsl/glslparser.h @@ -1,4 +1,6 @@ +#line 212 "./glsl.g" + /************************************************************************** ** ** This file is part of Qt Creator @@ -36,26 +38,41 @@ namespace GLSL { -class Parser: public GLSLParserTable +class GLSL_EXPORT Parser: public GLSLParserTable { public: - Parser(const char *source, unsigned size, int variant); + union Value { + void *ptr; + const std::string *string; + AST *ast; + List *ast_list; + Declaration *declaration; + List *declaration_list; + TranslationUnit *translation_unit; + }; + + Parser(Engine *engine, const char *source, unsigned size, int variant); ~Parser(); - bool parse(); + TranslationUnit *parse(); private: + // 1-based + Value &sym(int n) { return _symStack[_tos + n - 1]; } + AST *&ast(int n) { return _symStack[_tos + n - 1].ast; } + const std::string *&string(int n) { return _symStack[_tos + n - 1].string; } + inline int consumeToken() { return _index++; } inline const Token &tokenAt(int index) const { return _tokens.at(index); } inline int tokenKind(int index) const { return _tokens.at(index).kind; } - void dump(AST *ast); + void reduce(int ruleno); private: int _tos; int _index; std::vector _stateStack; std::vector _locationStack; - std::vector _astStack; + std::vector _symStack; std::vector _tokens; }; diff --git a/src/libs/glsl/glslparsertable.cpp b/src/libs/glsl/glslparsertable.cpp index a4ace3a1f2c..576fa94e04d 100644 --- a/src/libs/glsl/glslparsertable.cpp +++ b/src/libs/glsl/glslparsertable.cpp @@ -76,27 +76,27 @@ const short GLSLParserTable::lhs [] = { 202, 203, 203, 203, 203, 203, 203, 203, 203, 204, 210, 210, 212, 212, 211, 215, 215, 213, 213, 213, 213, 217, 217, 217, 217, 218, 205, 205, 205, 205, - 205, 205, 205, 219, 219, 219, 219, 219, 219, 219, - 219, 214, 214, 221, 222, 222, 222, 223, 224, 224, - 225, 225, 216, 208, 208, 208, 208, 208, 208, 208, - 208, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 186, 186, 207, 207, 207, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 206, 206, 206, 228, - 228, 209, 209, 229, 229, 230, 230, 231, 231, 231, - 220, 232, 233, 233, 235, 235, 235, 235, 235, 235, - 235, 234, 234, 243, 243, 244, 244, 242, 242, 236, - 236, 237, 245, 245, 246, 246, 238, 247, 247, 239, - 239, 240, 240, 240, 248, 248, 250, 250, 249, 249, - 241, 241, 241, 241, 241, 172, 172, 251, 251, 251, - 252, 253}; + 205, 205, 205, 220, 220, 220, 220, 220, 220, 220, + 220, 214, 214, 222, 223, 223, 223, 224, 225, 225, + 226, 226, 216, 208, 208, 208, 208, 208, 208, 208, + 208, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 186, 186, 207, 207, 207, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 206, 206, 206, 229, + 229, 209, 209, 230, 230, 231, 231, 232, 232, 232, + 221, 233, 234, 234, 236, 236, 236, 236, 236, 236, + 236, 235, 235, 244, 244, 245, 245, 243, 243, 237, + 237, 238, 246, 246, 247, 247, 239, 248, 248, 240, + 240, 241, 241, 241, 249, 249, 251, 251, 250, 250, + 242, 242, 242, 242, 242, 172, 252, 252, 253, 253, + 253, 254, 219, 255}; const short GLSLParserTable::rhs [] = { 1, 1, 1, 1, 1, 3, 1, 4, 1, 3, @@ -109,7 +109,7 @@ const short GLSLParserTable::rhs [] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 4, 6, 7, 9, 10, 2, 2, 1, 1, 2, 3, 3, 2, 5, 3, 2, 3, - 2, 0, 1, 1, 1, 1, 1, 3, 5, 6, + 2, 1, 1, 1, 1, 1, 1, 3, 5, 6, 7, 8, 5, 1, 2, 4, 5, 6, 7, 4, 2, 1, 2, 1, 1, 1, 1, 4, 1, 3, 1, 3, 1, 1, 1, 2, 2, 1, 2, 3, @@ -127,10 +127,10 @@ const short GLSLParserTable::rhs [] = { 4, 1, 2, 3, 4, 1, 3, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 3, 1, 2, 1, - 2, 5, 3, 1, 1, 4, 7, 0, 1, 3, - 2, 5, 7, 6, 1, 1, 0, 1, 2, 3, - 2, 2, 2, 3, 2, 1, 2, 1, 1, 1, - 2, 2}; + 2, 5, 3, 1, 1, 4, 7, 1, 1, 3, + 2, 5, 7, 6, 1, 1, 1, 1, 2, 3, + 2, 2, 2, 3, 2, 1, 1, 2, 1, 1, + 1, 2, 0, 2}; const short GLSLParserTable::action_default [] = { 0, 143, 165, 172, 173, 174, 0, 142, 193, 196, @@ -141,442 +141,419 @@ const short GLSLParserTable::action_default [] = { 182, 187, 188, 189, 183, 190, 191, 192, 248, 127, 147, 0, 0, 0, 205, 212, 214, 209, 206, 213, 215, 239, 242, 232, 233, 210, 207, 236, 208, 216, - 217, 211, 310, 125, 0, 246, 164, 154, 225, 229, + 217, 211, 311, 125, 0, 246, 164, 154, 225, 229, 226, 230, 241, 244, 235, 227, 238, 228, 231, 178, - 179, 180, 144, 166, 167, 168, 160, 309, 306, 114, - 0, 308, 102, 92, 0, 0, 138, 0, 135, 0, - 107, 134, 245, 0, 0, 122, 155, 157, 148, 149, - 145, 121, 0, 131, 129, 0, 0, 132, 0, 128, - 130, 150, 151, 0, 0, 84, 152, 153, 0, 0, - 0, 141, 252, 0, 0, 0, 250, 253, 0, 258, - 256, 0, 0, 32, 31, 0, 4, 1, 0, 0, - 2, 30, 259, 33, 3, 41, 54, 81, 0, 52, - 56, 9, 15, 20, 0, 0, 14, 0, 58, 60, - 64, 62, 38, 26, 7, 49, 44, 24, 34, 0, - 5, 28, 27, 79, 66, 0, 34, 0, 6, 80, - 72, 76, 70, 68, 74, 71, 69, 78, 75, 73, - 77, 0, 67, 0, 0, 40, 0, 0, 0, 37, - 36, 35, 39, 0, 53, 0, 0, 50, 0, 0, - 0, 0, 48, 0, 0, 42, 43, 45, 47, 46, - 51, 260, 0, 55, 160, 21, 18, 0, 17, 22, - 23, 0, 57, 0, 59, 0, 0, 63, 0, 61, - 0, 0, 65, 12, 0, 11, 0, 10, 16, 13, - 0, 8, 29, 0, 255, 257, 0, 254, 0, 251, - 115, 0, 0, 95, 261, 120, 116, 0, 0, 118, - 117, 0, 119, 90, 133, 103, 105, 104, 93, 0, - 102, 99, 101, 106, 96, 0, 0, 97, 0, 98, - 100, 106, 102, 94, 0, 82, 311, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 276, 280, 0, - 0, 269, 263, 262, 265, 0, 266, 0, 270, 271, - 267, 264, 278, 0, 268, 122, 302, 0, 290, 301, - 291, 305, 0, 0, 0, 0, 0, 293, 0, 296, - 295, 297, 122, 298, 0, 285, 0, 0, 0, 299, - 300, 0, 274, 275, 294, 0, 0, 286, 123, 0, - 0, 0, 282, 284, 0, 283, 272, 0, 273, 279, - 303, 0, 304, 0, 0, 0, 288, 289, 0, 287, - 0, 0, 0, 292, 281, 277, 0, 83, 108, 0, - 0, 113, 109, 0, 0, 111, 110, 0, 112, 137, - 0, 139, 140, 136, 156, 312, 307, 0, 89, 0, - 0, 0, 0, 85, 0, 86, 0, 0, 87, 0, - 88, 0, 158, 0, 159}; + 179, 180, 144, 166, 167, 168, 160, 310, 307, 306, + 114, 0, 309, 313, 92, 0, 0, 138, 0, 135, + 0, 107, 134, 245, 0, 0, 122, 155, 157, 148, + 149, 145, 121, 0, 131, 129, 0, 0, 132, 0, + 128, 130, 150, 151, 0, 0, 84, 152, 153, 0, + 0, 0, 141, 252, 0, 0, 0, 250, 253, 0, + 258, 256, 0, 0, 32, 31, 0, 4, 1, 0, + 0, 2, 30, 259, 33, 3, 41, 54, 81, 0, + 52, 56, 9, 15, 20, 0, 0, 14, 0, 58, + 60, 64, 62, 38, 26, 7, 49, 44, 24, 34, + 0, 5, 28, 27, 79, 66, 0, 34, 0, 6, + 80, 72, 76, 70, 68, 74, 71, 69, 78, 75, + 73, 77, 0, 67, 0, 0, 40, 0, 0, 0, + 37, 36, 35, 39, 0, 53, 0, 0, 50, 0, + 0, 0, 0, 48, 0, 0, 42, 43, 45, 47, + 46, 51, 260, 0, 55, 160, 21, 18, 0, 17, + 22, 23, 0, 57, 0, 59, 0, 0, 63, 0, + 61, 0, 0, 65, 12, 0, 11, 0, 10, 16, + 13, 0, 8, 29, 0, 255, 257, 0, 254, 0, + 251, 308, 115, 0, 0, 95, 261, 120, 116, 0, + 0, 118, 117, 0, 119, 90, 133, 103, 105, 104, + 102, 93, 0, 313, 99, 101, 106, 96, 0, 0, + 97, 0, 98, 100, 106, 313, 94, 0, 82, 312, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 276, 280, 0, 0, 269, 263, 262, 265, 0, 266, + 0, 270, 271, 267, 264, 278, 0, 268, 122, 302, + 0, 290, 301, 291, 305, 0, 0, 0, 0, 0, + 293, 0, 296, 295, 313, 122, 298, 0, 297, 285, + 0, 0, 0, 299, 300, 0, 274, 275, 294, 0, + 0, 286, 123, 0, 0, 0, 282, 284, 0, 283, + 272, 0, 273, 279, 303, 0, 304, 0, 0, 0, + 313, 288, 289, 0, 287, 0, 0, 0, 292, 281, + 277, 0, 83, 108, 0, 0, 113, 109, 0, 0, + 111, 110, 0, 112, 137, 0, 139, 140, 136, 156, + 314, 0, 89, 0, 0, 0, 0, 85, 0, 86, + 0, 0, 87, 0, 88, 0, 158, 0, 159}; const short GLSLParserTable::goto_default [] = { - 123, 200, 194, 345, 193, 280, 181, 186, 182, 185, - 184, 183, 203, 187, 197, 206, 199, 192, 175, 196, - 195, 179, 176, 180, 188, 189, 191, 190, 204, 221, - 178, 343, 347, 115, 119, 126, 124, 288, 110, 112, - 113, 308, 109, 311, 310, 309, 312, 120, 295, 117, - 116, 118, 135, 134, 121, 127, 122, 152, 286, 160, - 344, 352, 342, 351, 346, 350, 354, 341, 348, 349, - 353, 384, 382, 392, 373, 408, 371, 376, 374, 108, - 111, 0}; + 124, 201, 195, 348, 194, 281, 182, 187, 183, 186, + 185, 184, 204, 188, 198, 207, 200, 193, 176, 197, + 196, 180, 177, 181, 189, 190, 192, 191, 205, 222, + 179, 346, 350, 116, 120, 127, 125, 289, 111, 113, + 114, 311, 110, 314, 313, 312, 315, 310, 121, 297, + 118, 117, 119, 136, 135, 122, 128, 123, 153, 287, + 161, 347, 355, 345, 354, 349, 353, 357, 344, 351, + 352, 356, 388, 386, 396, 376, 413, 374, 380, 377, + 109, 108, 112, 0}; const short GLSLParserTable::action_index [] = { - 3116, -172, -172, -172, -172, -172, 48, -172, -172, -172, + 3220, -172, -172, -172, -172, -172, 54, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, 232, + -172, -172, -172, -172, -172, -172, -172, -172, -172, 239, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -63, -172, -172, -172, -172, -172, + -172, -172, -172, -172, -54, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, 24, 70, 30, -172, -172, -172, -172, -172, -172, + -172, 47, 76, 43, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, 41, -172, -172, -172, -172, -172, + -172, -172, -172, -172, 36, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -10, - -81, -172, 118, 18, 1, 67, 160, 214, 196, 458, - -172, -172, -172, 3288, 953, -172, -172, -24, -172, -172, - -172, -172, -3, 5, -172, 64, -47, -172, -20, -172, - -172, -172, -172, 458, -83, -172, -172, -172, -30, 2448, - 2448, 224, -172, 2782, 623, 7, -172, -172, 4, -17, - -172, 71, 1617, -172, -172, 1119, -172, -31, 1119, 1119, - -172, -172, -172, -172, -172, 53, 33, -172, -74, 45, - 21, -172, -172, 1285, -75, 54, -172, -35, -121, 39, - -1, -127, 20, 293, -172, 120, 16, -172, -172, 1119, - -172, -172, -172, -172, -172, 78, 213, 1119, -172, -172, + -172, -172, -172, -172, -172, -172, -172, -172, -172, 3220, + -6, -72, -172, 143, 32, 5, 64, 172, 397, 211, + 562, -172, -172, -172, 37, 1057, -172, -172, -44, -172, + -172, -172, -172, 6, 14, -172, 57, -36, -172, 19, + -172, -172, -172, -172, 562, -73, -172, -172, -172, -11, + 2552, 2552, 231, -172, 2719, 727, 10, -172, -172, -14, + -37, -172, 55, 1721, -172, -172, 1223, -172, -38, 1223, + 1223, -172, -172, -172, -172, -172, 62, 31, -172, -69, + 40, 30, -172, -172, 1389, -62, 67, -172, -28, -115, + 42, -27, -121, 7, 138, -172, 230, 25, -172, -172, + 1223, -172, -172, -172, -172, -172, 86, 228, 1223, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, 1119, -172, 1119, 1119, 6, 1119, 1119, 1119, -172, - -172, -172, 3, 1119, 49, 1119, 1119, 95, 1119, 1119, - 1119, 1119, 31, 1119, 1119, 82, 55, 26, 23, 10, - 116, -172, 1119, 66, -52, -172, -172, 1119, -172, -172, - -172, 1119, 52, 1119, -100, 1119, 1119, -103, 1119, 51, - 69, 1119, -172, -172, 788, -172, 1119, -8, -172, 141, - -44, -172, -172, 9, -172, -172, 65, -172, 2615, -172, - 75, 1119, 2281, -172, -172, -172, -39, -107, 1119, -172, - -18, 1119, -172, -172, -172, -172, -172, -172, -172, 623, - 59, -172, -172, -32, -56, 1119, -94, -172, 623, -172, - -172, -41, 109, -172, 4624, -172, -172, -104, 1119, -126, - -15, -130, 3789, -69, -72, 4123, 1451, -172, -172, -48, - -55, -172, -172, -172, -172, 57, -172, -117, -172, -172, - -172, -172, -172, 4457, -172, -70, -172, 62, -172, -172, - -172, -172, -151, -60, 1119, 72, -112, -172, 3622, -172, - -172, 3455, -50, -172, -106, 141, -88, -40, 623, 1119, - 141, 3956, -172, -172, -172, -42, 1119, -172, -172, 1119, - 63, 3789, -172, -21, 3789, -172, -172, 4290, -172, -172, - -172, 79, -172, 1119, 81, -51, 3789, 3789, -97, -172, - 3455, -101, 3956, -172, -172, -172, 11, -172, 28, 1119, - 1949, -172, 22, -43, 1119, -172, -11, 1119, -172, -172, - 191, -172, -172, -172, -172, -172, -172, -36, -172, 2448, - 2949, 46, 15, -172, 1783, -172, -87, -58, -172, -79, - -172, 2115, -172, -54, -172, + -172, -172, 1223, -172, 1223, 1223, 24, 1223, 1223, 1223, + -172, -172, -172, 16, 1223, 46, 1223, 1223, 230, 1223, + 1223, 1223, 1223, 20, 1223, 1223, 70, 73, 18, 21, + 17, 102, -172, 1223, 65, -47, -172, -172, 1223, -172, + -172, -172, 1223, 56, 1223, -92, 1223, 1223, -112, 1223, + 51, 72, 1223, -172, -172, 892, -172, 1223, -26, -172, + 106, -48, -172, -172, 8, -172, -172, 69, -172, 2886, + -172, -172, 71, 1223, 2219, -172, -172, -172, -40, -109, + 1223, -172, -35, 1223, -172, -172, -172, -172, -172, -172, + -172, -172, 727, 53, -172, -172, -25, -51, 1223, -90, + -172, 727, -172, -172, -39, 110, -172, 4556, -172, -172, + -123, 1223, -117, -2, -104, 3721, -60, -61, 4389, 1887, + -172, -172, -63, -65, -172, -172, -172, -172, 61, -172, + -122, -172, -172, -172, -172, -172, 4055, -172, -59, -172, + 59, -172, -172, -172, -172, -135, -70, 1223, 60, -105, + -172, 3554, -172, -172, 3387, -56, -172, -106, -172, 106, + -108, -50, 727, 1223, 106, 3888, -172, -172, -172, -41, + 1223, -172, -172, 1223, 66, 3721, -172, -23, 3721, -172, + -172, 4222, -172, -172, -172, 82, -172, 1223, 87, -52, + 3721, -172, 3721, -103, -172, 3387, -107, 3888, -172, -172, + -172, -20, -172, 48, 1223, 2053, -172, 23, -75, 1223, + -172, -9, 1223, -172, -172, 206, -172, -172, -172, -172, + -172, -22, -172, 2552, 3053, 50, 29, -172, 1555, -172, + -100, -57, -172, -68, -172, 2385, -172, -67, -172, - 119, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, 2, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -40, -82, -45, 32, -41, -27, - -82, -82, -82, 141, 1, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -25, -82, - -82, -82, -82, -8, -82, -82, -82, -82, -82, 71, - 103, -82, -82, 99, 11, -82, -82, -82, -35, -82, - -82, -82, 40, -82, -82, 19, -82, -82, 18, 27, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -5, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -4, - -82, -82, -82, -82, -82, -82, -82, -7, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, 7, -82, 39, 36, -82, 6, -11, -1, -82, - -82, -82, -82, 31, -82, 24, 28, -82, 30, 51, - 44, 65, -82, 72, 42, -82, -82, -82, -82, -82, - -82, -82, 77, -82, -82, -82, -82, 8, -82, -82, - -82, 143, -82, 78, -82, 74, 13, -82, 63, -82, - -82, 5, -82, -82, 4, -82, 3, -82, -82, -82, - -82, -82, -82, -37, -82, -82, -82, -82, 84, -82, - -82, -2, 108, -82, -82, -82, -82, -82, 49, -82, - -82, 53, -82, -82, -82, -82, -82, -82, -82, 21, - -14, -82, -82, -82, -82, 115, -82, -82, 91, -82, - -82, -82, 9, -82, 10, -82, -82, -82, 15, -82, - -82, -82, 60, -82, -82, 57, 23, -82, -82, -82, - -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, - -82, -82, -82, 58, -82, -82, -82, -82, -82, -82, - -82, -82, -82, -82, 26, -82, -82, -82, 82, -82, - -82, 222, -82, -82, -82, -82, -82, -82, -12, 76, - -82, 55, -82, -82, -82, -82, 46, -82, -82, -3, - -82, 50, -82, -82, 48, -82, -82, 61, -82, -82, - -82, -82, -82, 0, -82, -82, 62, 67, -82, -82, - 150, -82, 89, -82, -82, -82, -82, -82, -82, 29, - 129, -82, -82, -82, 25, -82, -82, 35, -82, -82, - -53, -82, -82, -82, -82, -82, -82, -82, -82, 134, - 90, -82, -82, -82, 80, -82, -82, -82, -82, -82, - -82, 101, -82, -82, -82}; + 124, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, 7, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, 126, + -84, -84, -84, -84, -84, -39, -84, -48, 10, -40, + -25, -84, -84, -84, -84, -5, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -37, + -84, -84, -84, -84, -7, -84, -84, -84, -84, -84, + 28, 117, -84, -84, 114, 12, -84, -84, -84, -24, + -84, -84, -84, 38, -84, -84, 18, -84, -84, 22, + 27, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, 1, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -4, -84, -84, -84, -84, -84, -84, -84, 2, -84, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, 4, -84, 40, 37, -84, 6, 3, -10, + -84, -84, -84, -84, 25, -84, 29, 23, -84, 43, + 74, 76, 71, -84, 65, 41, -84, -84, -84, -84, + -84, -84, -84, 83, -84, -84, -84, -84, 8, -84, + -84, -84, 79, -84, 147, -84, 77, 16, -84, 62, + -84, -84, -8, -84, -84, -2, -84, 5, -84, -84, + -84, -84, -84, -84, -38, -84, -84, -84, -84, 111, + -84, -84, -84, 0, 104, -84, -84, -84, -84, -84, + 39, -84, -84, 57, -84, -84, -84, -84, -84, -84, + -84, -84, 17, -13, -84, -84, -84, -84, 105, -84, + -84, 100, -84, -84, -84, -16, -84, 9, -84, -84, + -84, 21, -84, -84, -84, 59, -84, -84, 56, 24, + -84, -84, -84, -84, -84, -84, -84, -84, -84, -84, + -84, -84, -84, -84, -84, -84, 54, -84, -84, -84, + -84, -84, -84, -84, -84, -84, -84, 26, -84, -84, + -84, 103, -84, -84, 138, -84, -84, -84, -84, -84, + -84, -84, -11, -3, -84, 58, -84, -84, -84, -84, + 55, -84, -84, -1, -84, 49, -84, -84, 46, -84, + -84, 61, -84, -84, -84, -84, -84, 78, -84, -84, + 95, -84, 64, -84, -84, 146, -84, 87, -84, -84, + -84, -84, -84, -84, 35, 109, -84, -84, -84, 36, + -84, -84, 33, -84, -84, -54, -84, -84, -84, -84, + -84, -84, -84, 93, 60, -84, -84, -84, 85, -84, + -84, -84, -84, -84, -84, 82, -84, -84, -84}; const short GLSLParserTable::action_info [] = { - 360, 386, 361, 300, 298, 389, 359, -24, 368, 314, - 385, 412, 409, 363, 132, 325, 317, 364, 314, 315, - 367, 394, 410, 406, 381, 301, 379, -24, 356, 403, - 133, 303, 427, 252, 322, 233, 251, 256, 439, 268, - 290, 261, 260, 263, 150, 448, -25, 133, 136, 145, - 137, 451, 449, 450, 159, 263, 454, 159, 162, 159, - -19, 418, 261, 268, 252, 424, 281, 426, 233, -25, - 257, 419, 223, 207, 223, 324, 141, 358, 207, 207, - 138, 283, 146, 416, 271, 207, 243, 283, 207, 235, - 444, 148, 243, 235, 207, 207, 442, 207, 265, 243, - 128, 223, 243, 420, 266, 226, 0, 243, 226, 0, - 0, 305, 0, 306, 0, 149, 0, 0, 291, 26, - 0, 244, 226, 0, 142, 0, 304, 244, 0, 0, - 147, 0, 0, 325, 244, 304, 227, 244, 228, 227, - 236, 228, 244, 238, 236, 0, 0, 445, 129, 45, - 292, 0, 293, 227, 0, 228, 224, 207, 224, 307, - 0, 305, 58, 306, 238, 1, 258, 239, 238, 0, - 305, 0, 306, 240, 6, 391, 139, 7, 443, 0, - 0, 0, 0, 0, 366, 224, 0, 0, 239, 414, - 208, 0, 239, 405, 240, 0, 1, 287, 240, 417, - 0, 1, 241, 284, 0, 6, 130, 0, 7, 307, - 6, 402, 27, 7, 210, 0, 211, 0, 307, 1, - 0, 0, 0, 241, 0, 0, 0, 241, 6, -124, - -91, 7, 0, 0, 0, 0, 212, -124, -124, 0, - 0, -124, 0, 27, 0, 0, -124, 0, 27, -124, - 0, 0, 0, 0, 0, 0, 213, 0, 0, 24, - 60, 61, 0, 0, 0, 0, 27, 0, 0, -124, - 0, 0, 0, 63, 0, 0, -124, -124, 0, 0, - 0, 0, 131, 0, -124, 0, 214, 0, 0, 0, - 0, 60, 61, 0, 0, 0, 60, 61, 0, 0, - 0, 0, 0, 87, 63, 0, 215, 216, 0, 63, - 59, 217, 0, 273, 60, 61, 0, 0, 102, 0, - -124, 218, 0, 0, -124, -124, 0, 63, -124, 0, - 274, 0, -124, -124, 87, 0, 0, -124, 0, 87, - 0, 0, 0, 0, 0, -124, 275, 0, 83, 102, - 0, 219, 0, 0, 102, 0, 0, 87, -124, 0, - 0, 0, 0, 0, 0, 0, -124, -124, 276, 0, - 0, 0, 102, 0, 0, -124, 0, 0, 220, 0, - 0, 0, -124, 0, 0, 0, 0, 0, 0, 0, - -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 389, 302, 390, 300, 385, 417, 414, 367, 303, 359, + 328, 317, 415, 363, 407, 362, 393, 371, -24, 398, + 320, -24, 410, 133, 318, 317, 383, 370, 364, 366, + 423, 455, 452, 234, 432, 431, 160, 440, 163, -25, + 305, 252, 253, 458, 292, 269, 264, 262, 325, 261, + 257, -25, 443, 453, 269, 264, 134, 137, 160, 146, + 160, 138, 282, 151, 454, -19, 429, 234, 253, 134, + 262, 284, 266, 139, 361, 208, 208, 208, 267, 327, + 421, 224, 208, 258, 236, 284, 149, 272, 208, 224, + 236, 424, 224, 244, 244, 147, 244, 244, 208, 142, + 446, 244, 208, 208, 448, 307, 129, 308, 0, 227, + 150, 0, 0, 0, 293, 0, 0, 0, 227, 0, + 0, 0, 208, 425, 0, 26, 227, 306, 245, 245, + 0, 245, 245, 0, 0, 237, 245, 328, 0, 0, + 228, 237, 229, 148, 0, 0, 294, 143, 295, 228, + 239, 229, 0, 309, 130, 45, 0, 228, 274, 229, + 306, 449, 307, 0, 308, 225, 0, 0, 58, 140, + 0, 0, 369, 225, 240, 275, 225, 1, 395, 259, + 241, 0, 447, 0, 0, 0, 6, 285, 0, 7, + 0, 276, 0, 419, 0, 307, 422, 308, 209, 409, + 0, 288, 0, 0, 0, 0, 0, 0, 0, 242, + 309, 1, 131, 277, 406, 0, 1, 0, 0, 0, + 6, 0, 0, 7, 27, 6, 0, 0, 7, 211, + 0, 212, 0, 0, 0, 0, -124, 0, 0, 0, + 0, 0, 0, 309, -124, -124, 0, 0, -124, 0, + 0, 213, 0, -124, 0, -91, -124, 0, 27, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 214, 60, 61, 0, 0, -124, 0, 239, 0, + 0, 0, 0, -124, -124, 63, 0, 0, 0, 132, + 0, -124, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 215, 240, 0, 0, 0, 60, 61, 241, 0, + 0, 60, 61, 0, 0, 87, 0, 0, 0, 63, + 0, 216, 217, 0, 63, 0, 218, -124, 0, 0, + 102, -124, -124, 0, 0, -124, 219, 242, 0, -124, + -124, 0, 0, 0, -124, 0, 0, 0, 0, 87, + 0, 0, -124, 0, 87, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 102, -124, 220, 0, 0, 102, + 0, 0, 0, -124, -124, 0, 0, 0, 0, 0, + 0, 0, -124, 0, 0, 0, 0, 0, 0, -124, + 0, 0, 0, 221, 0, 0, 0, -124, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 0, 7, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 3, 4, 5, + 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, + 20, 21, 22, 23, 0, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 85, 86, 0, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 0, 103, 104, 105, 0, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 0, 0, 0, 0, 84, 0, 0, 0, 0, 85, - 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 0, 103, 104, 105, - 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, - 0, 20, 21, 22, 23, 0, 0, 0, 0, 25, - 0, 0, 26, 0, 0, 0, 0, 0, 28, 0, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 0, 0, 0, 0, 84, - 0, 0, 0, 0, 85, 86, 0, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 0, 103, 104, 105, 0, 106, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 3, 4, 5, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, - 0, 0, 0, 0, 25, 0, 0, 26, 277, 0, - 0, 0, 0, 28, 0, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, - 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 0, 0, 0, 0, 84, 0, 0, 0, 0, 85, - 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 0, 103, 104, 105, - 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, - 0, 20, 21, 22, 23, 0, 0, 0, 0, 25, - 0, 0, 26, 437, 0, 0, 0, 0, 28, 0, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 438, 0, 0, 0, 84, - 0, 0, 0, 0, 85, 86, 0, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 0, 103, 104, 105, 0, 106, 0, 0, 0, - 0, 0, 0, 0, 0, 163, 2, 0, 3, 4, - 5, 0, 0, 0, 0, 0, 0, 0, 164, 165, - 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, - 23, 0, 0, 0, 0, 25, 0, 0, 26, 167, - 0, 0, 168, 0, 28, 0, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 0, 0, 0, 0, 0, 0, 169, 0, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 0, 0, 170, 0, 0, 0, - 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 0, 0, 0, 0, 84, 0, 0, 0, 173, - 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 0, 103, 104, - 105, 0, 106, 0, 0, 0, 174, 166, 0, 0, - 0, 163, 2, 0, 3, 4, 5, 0, 0, 0, - 0, 0, 0, 0, 164, 165, 0, 0, 0, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, - 0, 25, 0, 0, 26, 167, 0, 0, 168, 0, - 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, - 0, 0, 169, 0, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 0, 0, 170, 0, 0, 0, 0, 0, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 0, 0, 0, - 0, 84, 0, 0, 0, 173, 85, 86, 0, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 0, 103, 104, 105, 0, 254, 0, - 0, 0, 174, 166, 0, 0, 0, 163, 2, 0, - 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, - 164, 165, 0, 0, 0, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, - 21, 22, 23, 0, 0, 0, 0, 25, 0, 0, - 26, 167, 0, 0, 168, 0, 28, 0, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 0, 0, 0, 0, 0, 0, 169, 0, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 0, 0, 170, 0, - 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 400, 0, 0, 0, 84, 0, 0, - 0, 173, 85, 86, 0, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 0, - 103, 104, 105, 0, 106, 0, 0, 0, 174, 166, - 0, 0, 0, 163, 2, 0, 3, 4, 5, 0, - 0, 0, 0, 0, 0, 0, 164, 165, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, - 0, 0, 0, 25, 0, 0, 26, 167, 0, 0, - 168, 0, 28, 0, 30, 31, 32, 33, 34, 35, + 0, 0, 0, 25, 0, 0, 26, 0, 0, 0, + 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, - 0, 0, 0, 0, 169, 0, 45, 46, 47, 48, + 0, 0, 0, 0, 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, - 171, 0, 0, 0, 0, 0, 0, 172, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, - 0, 0, 0, 84, 0, 0, 0, 173, 85, 86, + 0, 0, 0, 84, 0, 0, 0, 0, 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 0, 103, 104, 105, 0, - 106, 0, 0, 0, 174, 166, 0, 0, 0, 163, + 106, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, + 20, 21, 22, 23, 0, 0, 0, 0, 25, 0, + 0, 26, 278, 0, 0, 0, 0, 28, 0, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 0, 0, 0, 0, 84, 0, + 0, 0, 0, 85, 86, 0, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 0, 103, 104, 105, 0, 106, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 3, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, + 0, 0, 0, 25, 0, 0, 26, 441, 0, 0, + 0, 0, 28, 0, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, + 0, 0, 0, 0, 0, 0, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 442, + 0, 0, 0, 84, 0, 0, 0, 0, 85, 86, + 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 0, 103, 104, 105, 0, + 106, 0, 0, 0, 0, 0, 0, 0, 0, 164, 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, - 0, 0, 164, 165, 0, 0, 0, 8, 9, 10, + 0, 0, 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, 0, 25, - 0, 0, 26, 167, 0, 0, 168, 0, 28, 0, + 0, 0, 26, 168, 0, 0, 169, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, - 169, 0, 45, 46, 47, 48, 49, 50, 51, 52, + 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, - 170, 0, 0, 0, 0, 0, 171, 0, 0, 0, - 0, 0, 0, 446, 0, 0, 0, 64, 65, 66, + 171, 0, 0, 0, 0, 0, 172, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, 0, 0, 0, 84, - 0, 0, 0, 173, 85, 86, 0, 88, 89, 90, + 0, 0, 0, 174, 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 0, 103, 104, 105, 0, 106, 0, 0, 0, - 174, 166, 0, 0, 0, 163, 2, 0, 3, 4, - 5, 0, 0, 0, 0, 0, 0, 0, 164, 165, + 175, 167, 0, 0, 0, 164, 2, 0, 3, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, - 23, 0, 0, 0, 0, 25, 0, 0, 26, 167, - 0, 0, 168, 0, 28, 0, 30, 31, 32, 33, + 23, 0, 0, 0, 0, 25, 0, 0, 26, 168, + 0, 0, 169, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 0, 0, 0, 0, 0, 0, 169, 0, 45, 46, + 0, 0, 0, 0, 0, 0, 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 0, 0, 170, 0, 0, 0, - 0, 0, 171, 0, 0, 0, 0, 0, 0, 422, + 57, 58, 0, 0, 0, 0, 171, 0, 0, 0, + 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 0, 0, 0, 0, 84, 0, 0, 0, 173, + 81, 0, 0, 0, 0, 84, 0, 0, 0, 174, 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 0, 103, 104, - 105, 0, 106, 0, 0, 0, 174, 166, 0, 0, - 0, 163, 2, 0, 3, 4, 5, 0, 0, 0, - 0, 0, 0, 0, 164, 165, 0, 0, 0, 8, + 105, 0, 255, 0, 0, 0, 175, 167, 0, 0, + 0, 164, 2, 0, 3, 4, 5, 0, 0, 0, + 0, 0, 0, 0, 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, - 0, 25, 0, 0, 26, 167, 0, 0, 168, 0, + 0, 25, 0, 0, 26, 168, 0, 0, 169, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, - 0, 0, 169, 0, 45, 46, 47, 48, 49, 50, + 0, 0, 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 0, 0, 170, 0, 0, 0, 0, 0, 171, 0, - 0, 0, 0, 0, 0, 452, 0, 0, 0, 64, + 0, 0, 171, 0, 0, 0, 0, 0, 172, 0, + 0, 0, 0, 0, 0, 450, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, 0, 0, - 0, 84, 0, 0, 0, 173, 85, 86, 0, 88, + 0, 84, 0, 0, 0, 174, 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 0, 103, 104, 105, 0, 106, 0, - 0, 0, 174, 166, 0, 0, 0, 163, 2, 0, + 0, 0, 175, 167, 0, 0, 0, 164, 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0, - 164, 165, 0, 0, 0, 8, 9, 10, 11, 12, + 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, 0, 25, 0, 0, - 26, 167, 0, 0, 168, 0, 28, 0, 30, 31, + 26, 168, 0, 0, 169, 0, 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 0, 0, 0, 0, 0, 0, 169, 0, + 42, 43, 0, 0, 0, 0, 0, 0, 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 0, 0, 170, 0, - 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, - 0, 296, 0, 0, 0, 64, 65, 66, 67, 68, + 55, 56, 57, 58, 0, 0, 0, 0, 171, 0, + 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, 0, 0, 0, 84, 0, 0, - 0, 173, 85, 86, 0, 88, 89, 90, 91, 92, + 0, 174, 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 0, - 103, 104, 105, 0, 106, 0, 0, 0, 174, 166, - 0, 0, 0, 1, 0, 2, 0, 3, 4, 5, - 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, - 0, 0, 0, 24, 25, 0, 0, 26, 0, 0, - 27, 0, 0, 28, 151, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 0, 59, 0, 0, 0, 60, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 0, 0, 83, 0, 84, 0, 0, 0, 0, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 2, 0, 3, 4, 5, 0, 0, 6, - 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, + 103, 104, 105, 0, 106, 0, 0, 0, 175, 167, + 0, 0, 0, 164, 2, 0, 3, 4, 5, 0, + 0, 0, 0, 0, 0, 0, 165, 166, 0, 0, + 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, + 0, 0, 0, 25, 0, 0, 26, 168, 0, 0, + 169, 0, 28, 0, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, + 0, 0, 0, 0, 170, 0, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 404, + 0, 0, 0, 84, 0, 0, 0, 174, 85, 86, + 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 0, 103, 104, 105, 0, + 106, 0, 0, 0, 175, 167, 0, 0, 0, 164, + 2, 0, 3, 4, 5, 0, 0, 0, 0, 0, + 0, 0, 165, 166, 0, 0, 0, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, + 0, 20, 21, 22, 23, 0, 0, 0, 0, 25, + 0, 0, 26, 168, 0, 0, 169, 0, 28, 0, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, + 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, + 171, 0, 0, 0, 0, 0, 172, 0, 0, 0, + 0, 0, 0, 427, 0, 0, 0, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 0, 0, 0, 0, 84, + 0, 0, 0, 174, 85, 86, 0, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 0, 103, 104, 105, 0, 106, 0, 0, 0, + 175, 167, 0, 0, 0, 164, 2, 0, 3, 4, + 5, 0, 0, 0, 0, 0, 0, 0, 165, 166, + 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, + 23, 0, 0, 0, 0, 25, 0, 0, 26, 168, + 0, 0, 169, 0, 28, 0, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 0, 0, 0, 0, 0, 0, 170, 0, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 0, 0, 171, 0, 0, 0, + 0, 0, 172, 0, 0, 0, 0, 0, 0, 298, + 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 0, 0, 0, 0, 84, 0, 0, 0, 174, + 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 0, 103, 104, + 105, 0, 106, 0, 0, 0, 175, 167, 0, 0, + 0, 164, 2, 0, 3, 4, 5, 0, 0, 0, + 0, 0, 0, 0, 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, - 24, 25, 0, 0, 26, 0, 0, 27, 0, 0, - 28, 151, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, - 0, 0, 0, 0, 45, 46, 47, 48, 49, 50, + 0, 25, 0, 0, 26, 168, 0, 0, 169, 0, + 28, 0, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, + 0, 0, 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 0, 59, 0, 0, 0, 60, 61, 0, 0, 0, - 0, 0, 0, 0, 289, 0, 0, 0, 63, 64, + 0, 0, 171, 0, 0, 0, 0, 0, 172, 0, + 0, 0, 0, 0, 0, 456, 0, 0, 0, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 0, 0, 83, - 0, 84, 0, 0, 0, 0, 85, 86, 87, 88, + 75, 76, 77, 78, 79, 80, 81, 0, 0, 0, + 0, 84, 0, 0, 0, 174, 85, 86, 0, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 0, - 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, + 99, 100, 101, 0, 103, 104, 105, 0, 106, 0, + 0, 0, 175, 167, 0, 0, 0, 1, 0, 2, 0, 3, 4, 5, 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, 24, 25, 0, - 0, 26, 0, 0, 27, 0, 0, 28, 151, 30, + 0, 26, 0, 0, 27, 0, 0, 28, 152, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, - 0, 156, 0, 0, 0, 63, 64, 65, 66, 67, + 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, 0, 83, 0, 84, 0, 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, @@ -587,12 +564,12 @@ const short GLSLParserTable::action_info [] = { 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, 24, 25, 0, 0, 26, 0, - 0, 27, 0, 0, 28, 151, 30, 31, 32, 33, + 0, 27, 0, 0, 28, 152, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 0, 0, 0, 60, - 61, 0, 0, 0, 0, 0, 0, 0, 441, 0, + 61, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, 0, 83, 0, 84, 0, 0, 0, 0, @@ -604,316 +581,352 @@ const short GLSLParserTable::action_info [] = { 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, 24, 25, 0, 0, 26, 0, 0, 27, 0, - 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 0, 28, 152, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, 0, 0, 0, 60, 61, 0, 0, - 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 290, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 0, + 74, 75, 76, 77, 78, 79, 80, 81, 0, 0, 83, 0, 84, 0, 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 0, 0, 0, 0, 0, 0, 0, 0, 435, 0, - 0, 0, 0, 1, 0, 2, 0, 3, 4, 5, - 0, 0, 6, 0, 0, 7, 0, 0, 0, 0, - 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, - 0, 0, 0, 24, 25, 0, 0, 26, 0, 0, - 27, 0, 0, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 0, 59, 0, 0, 0, 60, 61, - 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, - 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 0, 83, 0, 84, 0, 0, 0, 0, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 163, 2, 0, 3, 4, 5, 0, 0, 6, - 0, 0, 7, 0, 164, 165, 0, 0, 0, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, - 24, 25, 0, 0, 26, 167, 0, 27, 168, 0, - 28, 151, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 0, 0, 0, - 0, 0, 169, 0, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 0, 59, 170, 0, 0, 60, 61, 0, 171, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 0, 0, 83, - 0, 84, 0, 0, 0, 173, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 0, 106, 0, - 0, 0, 174, 166, 0, 0, 0, 1, 163, 2, - 0, 3, 4, 5, 0, 0, 6, 0, 0, 7, - 0, 164, 165, 0, 0, 0, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, - 20, 21, 22, 23, 0, 0, 0, 24, 25, 0, - 0, 26, 167, 0, 27, 168, 0, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 0, 0, 0, 0, 0, 169, - 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 0, 59, 170, - 0, 0, 60, 61, 0, 171, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 338, 0, 83, 0, 84, 0, - 0, 0, 173, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 0, 106, 0, 0, 0, 174, - 166, 0, 0, 0, 1, 163, 2, 327, 3, 4, - 5, 0, 328, 6, 0, 0, 7, 329, 164, 165, - 330, 331, 0, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 332, 0, 20, 21, 22, - 23, 0, 0, 0, 24, 25, 333, 0, 26, 167, - 334, 27, 168, 0, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 0, 0, 335, 0, 0, 169, 0, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 0, 59, 170, 0, 0, 60, - 61, 0, 171, 62, 0, 336, 0, 0, 0, 0, - 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 338, 0, 83, 0, 84, 0, 0, 339, 173, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 0, 106, 340, 0, 0, 174, 166, 0, 0, - 0, 1, 163, 2, 327, 3, 4, 5, 0, 328, - 6, 0, 0, 7, 329, 164, 165, 330, 331, 0, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 332, 0, 20, 21, 22, 23, 0, 0, - 0, 24, 25, 333, 0, 26, 167, 334, 27, 168, - 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, - 324, 0, 0, 169, 0, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 0, 59, 170, 0, 0, 60, 61, 0, 171, - 62, 0, 336, 0, 0, 0, 0, 0, 0, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 338, 0, - 83, 0, 84, 0, 0, 339, 173, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, - 340, 0, 0, 174, 166, 0, 0, 0, 1, 163, - 2, 327, 3, 4, 5, 0, 328, 6, 0, 0, - 7, 329, 164, 165, 330, 331, 0, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 332, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 2, 0, 3, 4, 5, 0, 0, 6, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 0, 24, 25, - 333, 0, 26, 167, 334, 27, 168, 0, 28, 29, + 0, 0, 26, 0, 0, 27, 0, 0, 28, 152, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 0, 0, 335, 0, 0, - 169, 0, 45, 46, 47, 48, 49, 50, 51, 52, + 40, 41, 42, 43, 44, 0, 0, 0, 0, 0, + 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 59, - 170, 0, 0, 60, 61, 0, 171, 62, 0, 336, - 0, 0, 396, 0, 0, 0, 63, 64, 65, 66, + 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, + 0, 0, 445, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 338, 0, 83, 0, 84, - 0, 0, 339, 173, 85, 86, 87, 88, 89, 90, + 77, 78, 79, 80, 81, 0, 0, 83, 0, 84, + 0, 0, 0, 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 0, 106, 340, 0, 0, - 174, 166, 0, 0, 0, 1, 163, 2, 327, 3, - 4, 5, 0, 328, 6, 0, 0, 7, 329, 164, - 165, 330, 331, 0, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 332, 0, 20, 21, - 22, 23, 0, 0, 0, 24, 25, 333, 0, 26, - 167, 334, 27, 168, 0, 28, 29, 30, 31, 32, + 101, 102, 103, 104, 105, 0, 106, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 2, 0, 3, + 4, 5, 0, 0, 6, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 0, 0, 20, 21, + 22, 23, 0, 0, 0, 24, 25, 0, 0, 26, + 0, 0, 27, 0, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 0, 0, 335, 0, 0, 169, 0, 45, + 43, 44, 0, 0, 0, 0, 0, 0, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 0, 59, 170, 0, 0, - 60, 61, 0, 171, 62, 0, 336, 0, 0, 398, + 56, 57, 58, 0, 0, 0, 59, 0, 0, 0, + 60, 61, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 338, 0, 83, 0, 84, 0, 0, 339, - 173, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 80, 81, 82, 0, 83, 0, 84, 0, 0, 0, + 0, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 0, 106, 340, 0, 0, 174, 166, 0, - 0, 0, 1, 163, 2, 327, 3, 4, 5, 0, - 328, 6, 0, 0, 7, 329, 164, 165, 330, 331, + 104, 105, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 164, 2, 0, 3, 4, 5, 0, + 0, 6, 0, 0, 7, 0, 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 332, 0, 20, 21, 22, 23, 0, - 0, 0, 24, 25, 333, 0, 26, 167, 334, 27, - 168, 0, 28, 29, 30, 31, 32, 33, 34, 35, + 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, + 0, 0, 24, 25, 0, 0, 26, 168, 0, 27, + 169, 0, 28, 152, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 0, - 0, 335, 0, 0, 169, 0, 45, 46, 47, 48, + 0, 0, 0, 0, 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 0, 0, 0, 59, 170, 0, 0, 60, 61, 0, - 171, 62, 0, 336, 0, 0, 415, 0, 0, 0, + 0, 0, 0, 59, 171, 0, 0, 60, 61, 0, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 338, - 0, 83, 0, 84, 0, 0, 339, 173, 85, 86, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 0, + 0, 83, 0, 84, 0, 0, 0, 174, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 0, - 106, 340, 0, 0, 174, 166, 0, 0, 0, 1, - 163, 2, 327, 3, 4, 5, 0, 328, 6, 0, - 0, 7, 329, 164, 165, 330, 331, 0, 8, 9, + 106, 0, 0, 0, 175, 167, 0, 0, 0, 1, + 164, 2, 0, 3, 4, 5, 0, 0, 6, 0, + 0, 7, 0, 165, 166, 0, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 332, 0, 20, 21, 22, 23, 0, 0, 0, 24, - 25, 333, 0, 26, 167, 334, 27, 168, 0, 28, + 0, 0, 20, 21, 22, 23, 0, 0, 0, 24, + 25, 0, 0, 26, 168, 0, 27, 169, 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 0, 0, 335, 0, - 0, 169, 0, 45, 46, 47, 48, 49, 50, 51, + 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, + 0, 170, 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, - 59, 170, 0, 0, 60, 61, 0, 171, 62, 0, - 336, 0, 0, 337, 0, 0, 0, 63, 64, 65, + 59, 171, 0, 0, 60, 61, 0, 172, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 338, 0, 83, 0, - 84, 0, 0, 339, 173, 85, 86, 87, 88, 89, + 76, 77, 78, 79, 80, 81, 341, 0, 83, 0, + 84, 0, 0, 0, 174, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 0, 106, 340, 0, - 0, 174, 166, 0, 0, 0, + 100, 101, 102, 103, 104, 105, 0, 106, 0, 0, + 0, 175, 167, 0, 0, 0, 1, 164, 2, 330, + 3, 4, 5, 0, 331, 6, 0, 0, 7, 332, + 165, 166, 333, 334, 0, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 335, 0, 20, + 21, 22, 23, 0, 0, 0, 24, 25, 336, 0, + 26, 168, 337, 27, 169, 0, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 0, 0, 338, 0, 0, 170, 0, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 0, 59, 171, 0, + 0, 60, 61, 0, 172, 62, 0, 339, 0, 0, + 0, 0, 0, 0, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 341, 0, 83, 0, 84, 0, 0, + 342, 174, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 0, 106, 343, 0, 0, 175, 167, + 0, 0, 0, 1, 164, 2, 330, 3, 4, 5, + 0, 331, 6, 0, 0, 7, 332, 165, 166, 333, + 334, 0, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 335, 0, 20, 21, 22, 23, + 0, 0, 0, 24, 25, 336, 0, 26, 168, 337, + 27, 169, 0, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 0, 0, 327, 0, 0, 170, 0, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 0, 0, 0, 59, 171, 0, 0, 60, 61, + 0, 172, 62, 0, 339, 0, 0, 0, 0, 0, + 0, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 341, 0, 83, 0, 84, 0, 0, 342, 174, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 0, 106, 343, 0, 0, 175, 167, 0, 0, 0, + 1, 164, 2, 330, 3, 4, 5, 0, 331, 6, + 0, 0, 7, 332, 165, 166, 333, 334, 0, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 335, 0, 20, 21, 22, 23, 0, 0, 0, + 24, 25, 336, 0, 26, 168, 337, 27, 169, 0, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 0, 0, 338, + 0, 0, 170, 0, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 0, 59, 171, 0, 0, 60, 61, 0, 172, 62, + 0, 339, 0, 0, 420, 0, 0, 0, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 341, 0, 83, + 0, 84, 0, 0, 342, 174, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 0, 106, 343, + 0, 0, 175, 167, 0, 0, 0, 1, 164, 2, + 330, 3, 4, 5, 0, 331, 6, 0, 0, 7, + 332, 165, 166, 333, 334, 0, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 335, 0, + 20, 21, 22, 23, 0, 0, 0, 24, 25, 336, + 0, 26, 168, 337, 27, 169, 0, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 0, 0, 338, 0, 0, 170, + 0, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 0, 0, 0, 59, 171, + 0, 0, 60, 61, 0, 172, 62, 0, 339, 0, + 0, 402, 0, 0, 0, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 341, 0, 83, 0, 84, 0, + 0, 342, 174, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 0, 106, 343, 0, 0, 175, + 167, 0, 0, 0, 1, 164, 2, 330, 3, 4, + 5, 0, 331, 6, 0, 0, 7, 332, 165, 166, + 333, 334, 0, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 335, 0, 20, 21, 22, + 23, 0, 0, 0, 24, 25, 336, 0, 26, 168, + 337, 27, 169, 0, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 0, 0, 338, 0, 0, 170, 0, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 0, 59, 171, 0, 0, 60, + 61, 0, 172, 62, 0, 339, 0, 0, 400, 0, + 0, 0, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 341, 0, 83, 0, 84, 0, 0, 342, 174, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 0, 106, 343, 0, 0, 175, 167, 0, 0, + 0, 1, 164, 2, 330, 3, 4, 5, 0, 331, + 6, 0, 0, 7, 332, 165, 166, 333, 334, 0, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 335, 0, 20, 21, 22, 23, 0, 0, + 0, 24, 25, 336, 0, 26, 168, 337, 27, 169, + 0, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 0, 0, + 338, 0, 0, 170, 0, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 0, 59, 171, 0, 0, 60, 61, 0, 172, + 62, 0, 339, 0, 0, 340, 0, 0, 0, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 341, 0, + 83, 0, 84, 0, 0, 342, 174, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 0, 106, + 343, 0, 0, 175, 167, 0, 0, 0, - 390, 432, 388, 404, 230, 209, 279, 255, 434, 429, - 294, 282, 278, 433, 231, 388, 270, 272, 357, 222, - 259, 229, 285, 161, 355, 158, 401, 144, 140, 365, - 205, 318, 326, 202, 201, 313, 143, 294, 0, 198, - 0, 294, 0, 198, 237, 198, 198, 294, 250, 242, - 323, 198, 234, 232, 198, 198, 225, 198, 294, 198, - 246, 294, 355, 248, 355, 294, 198, 0, 177, 355, - 247, 355, 355, 425, 355, 355, 355, 421, 198, 380, - 198, 355, 430, 428, 249, 155, 431, 198, 269, 198, - 245, 0, 198, 198, 387, 198, 372, 299, 155, 253, - 267, 302, 264, 355, 155, 321, 0, 154, 177, 395, - 447, 393, 0, 155, 0, 0, 198, 155, 383, 399, - 154, 362, 399, 198, 0, 0, 154, 397, 399, 177, - 198, 453, 407, 125, 319, 154, 177, 320, 297, 154, - 153, 157, 369, 177, 198, 316, 370, 157, 155, 0, - 107, 114, 383, 375, 0, 125, 157, 177, 198, 423, - 413, 0, 0, 0, 372, 0, 262, 0, 0, 0, - 154, 440, 107, 114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 378, 0, 0, 0, - 0, 0, 377, 0, 0, 0, 0, 0, 0, 0, + 384, 437, 394, 392, 273, 232, 279, 434, 280, 392, + 439, 283, 296, 256, 210, 438, 223, 141, 231, 271, + 260, 230, 286, 358, 360, 326, 159, 405, 145, 368, + 206, 316, 321, 202, 329, 162, 0, 203, 199, 0, + 199, 144, 156, 251, 199, 296, 235, 296, 296, 238, + 0, 296, 199, 199, 233, 199, 199, 226, 199, 247, + 358, 435, 243, 358, 155, 436, 178, 296, 358, 296, + 358, 0, 358, 358, 156, 358, 0, 199, 358, 0, + 199, 408, 433, 246, 426, 430, 199, 270, 301, 199, + 250, 199, 199, 248, 199, 249, 155, 199, 199, 0, + 199, 358, 263, 268, 391, 254, 304, 156, 399, 358, + 178, 397, 457, 178, 324, 451, 403, 375, 158, 199, + 199, 365, 387, 403, 199, 156, 403, 401, 156, 155, + 444, 156, 178, 178, 299, 319, 0, 178, 126, 428, + 126, 379, 411, 322, 0, 0, 323, 155, 0, 379, + 155, 387, 375, 155, 154, 107, 115, 107, 115, 418, + 375, 0, 199, 0, 372, 0, 412, 0, 373, 158, + 0, 265, 158, 0, 382, 0, 0, 0, 0, 0, + 381, 0, 382, 0, 0, 378, 0, 0, 381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 436, 0, 0, 0, 411, 375, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 372, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 378, 0, - 0, 0, 0, 0, 377, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0}; + 0, 416, 0, 0, 0, 0, 0, 0, 0, 0, + 0}; const short GLSLParserTable::action_check [] = { - 15, 43, 132, 110, 43, 77, 132, 77, 77, 50, - 50, 112, 109, 164, 77, 132, 110, 77, 50, 75, - 132, 42, 77, 74, 112, 43, 132, 77, 132, 77, - 50, 112, 43, 12, 16, 2, 110, 112, 74, 166, - 50, 162, 77, 4, 74, 132, 77, 50, 43, 132, - 97, 75, 110, 132, 50, 4, 110, 50, 75, 50, - 112, 50, 162, 166, 12, 43, 110, 110, 2, 77, - 16, 43, 19, 16, 19, 74, 52, 15, 16, 16, - 16, 16, 52, 16, 15, 16, 76, 16, 16, 44, - 75, 50, 76, 44, 16, 16, 50, 16, 99, 76, - 52, 19, 76, 75, 105, 102, -1, 76, 102, -1, - -1, 52, -1, 54, -1, 74, -1, -1, 43, 49, - -1, 111, 102, -1, 100, -1, 17, 111, -1, -1, - 100, -1, -1, 132, 111, 17, 133, 111, 135, 133, - 95, 135, 111, 48, 95, -1, -1, 132, 100, 79, - 75, -1, 77, 133, -1, 135, 103, 16, 103, 100, - -1, 52, 92, 54, 48, 5, 112, 72, 48, -1, - 52, -1, 54, 78, 14, 112, 112, 17, 132, -1, - -1, -1, -1, -1, 112, 103, -1, -1, 72, 132, - 112, -1, 72, 112, 78, -1, 5, 132, 78, 132, - -1, 5, 107, 132, -1, 14, 158, -1, 17, 100, - 14, 132, 52, 17, 1, -1, 3, -1, 100, 5, - -1, -1, -1, 107, -1, -1, -1, 107, 14, 5, - 112, 17, -1, -1, -1, -1, 23, 5, 14, -1, - -1, 17, -1, 52, -1, -1, 14, -1, 52, 17, - -1, -1, -1, -1, -1, -1, 43, -1, -1, 45, - 100, 101, -1, -1, -1, -1, 52, -1, -1, 45, - -1, -1, -1, 113, -1, -1, 52, 45, -1, -1, - -1, -1, 50, -1, 52, -1, 73, -1, -1, -1, - -1, 100, 101, -1, -1, -1, 100, 101, -1, -1, - -1, -1, -1, 143, 113, -1, 93, 94, -1, 113, - 96, 98, -1, 20, 100, 101, -1, -1, 158, -1, - 96, 108, -1, -1, 100, 101, -1, 113, 96, -1, - 37, -1, 100, 101, 143, -1, -1, 113, -1, 143, - -1, -1, -1, -1, -1, 113, 53, -1, 134, 158, - -1, 138, -1, -1, 158, -1, -1, 143, 134, -1, - -1, -1, -1, -1, -1, -1, 134, 143, 75, -1, - -1, -1, 158, -1, -1, 143, -1, -1, 165, -1, - -1, -1, 158, -1, -1, -1, -1, -1, -1, -1, - 158, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 50, 110, 43, 43, 112, 112, 109, 77, 43, 132, + 132, 50, 77, 15, 77, 132, 77, 77, 77, 42, + 110, 77, 74, 77, 75, 50, 132, 132, 132, 164, + 50, 75, 132, 2, 43, 110, 50, 0, 75, 77, + 112, 110, 12, 110, 50, 166, 4, 162, 16, 77, + 112, 77, 74, 110, 166, 4, 50, 43, 50, 132, + 50, 97, 110, 74, 132, 112, 43, 2, 12, 50, + 162, 16, 99, 16, 15, 16, 16, 16, 105, 74, + 16, 19, 16, 16, 44, 16, 50, 15, 16, 19, + 44, 43, 19, 76, 76, 52, 76, 76, 16, 52, + 50, 76, 16, 16, 75, 52, 52, 54, -1, 102, + 74, -1, -1, -1, 43, -1, -1, -1, 102, -1, + -1, -1, 16, 75, -1, 49, 102, 17, 111, 111, + -1, 111, 111, -1, -1, 95, 111, 132, -1, -1, + 133, 95, 135, 100, -1, -1, 75, 100, 77, 133, + 48, 135, -1, 100, 100, 79, -1, 133, 20, 135, + 17, 132, 52, -1, 54, 103, -1, -1, 92, 112, + -1, -1, 112, 103, 72, 37, 103, 5, 112, 112, + 78, -1, 132, -1, -1, -1, 14, 132, -1, 17, + -1, 53, -1, 132, -1, 52, 132, 54, 112, 112, + -1, 132, -1, -1, -1, -1, -1, -1, -1, 107, + 100, 5, 158, 75, 132, -1, 5, -1, -1, -1, + 14, -1, -1, 17, 52, 14, -1, -1, 17, 1, + -1, 3, -1, -1, -1, -1, 5, -1, -1, -1, + -1, -1, -1, 100, 5, 14, -1, -1, 17, -1, + -1, 23, -1, 14, -1, 112, 17, -1, 52, -1, + -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, + -1, 43, 100, 101, -1, -1, 45, -1, 48, -1, + -1, -1, -1, 52, 45, 113, -1, -1, -1, 50, + -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 73, 72, -1, -1, -1, 100, 101, 78, -1, + -1, 100, 101, -1, -1, 143, -1, -1, -1, 113, + -1, 93, 94, -1, 113, -1, 98, 96, -1, -1, + 158, 100, 101, -1, -1, 96, 108, 107, -1, 100, + 101, -1, -1, -1, 113, -1, -1, -1, -1, 143, + -1, -1, 113, -1, 143, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 158, 134, 138, -1, -1, 158, + -1, -1, -1, 134, 143, -1, -1, -1, -1, -1, + -1, -1, 143, -1, -1, -1, -1, -1, -1, 158, + -1, -1, -1, 165, -1, -1, -1, 158, -1, -1, + -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, + -1, 14, -1, -1, 17, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 45, -1, -1, -1, -1, -1, -1, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 96, -1, -1, -1, 100, 101, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 134, -1, -1, -1, -1, -1, -1, -1, -1, + 143, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 158, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, + -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, + 38, 39, 40, 41, -1, -1, -1, -1, 46, -1, + -1, -1, -1, -1, -1, -1, -1, 55, -1, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, -1, -1, -1, -1, 136, -1, + -1, -1, -1, 141, 142, -1, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + -1, 159, 160, 161, -1, 163, -1, -1, -1, -1, + -1, -1, -1, -1, 7, -1, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, -1, -1, 38, 39, 40, 41, -1, + -1, -1, -1, 46, -1, -1, 49, -1, -1, -1, + -1, -1, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 7, -1, 9, 10, 11, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + -1, -1, -1, 136, -1, -1, -1, -1, 141, 142, + -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, -1, + 163, -1, -1, -1, -1, -1, -1, -1, -1, 7, + -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, + 38, 39, 40, 41, -1, -1, -1, -1, 46, -1, + -1, 49, 50, -1, -1, -1, -1, 55, -1, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, + -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, - -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, - -1, -1, -1, 55, -1, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, -1, -1, -1, -1, 136, -1, + -1, -1, -1, 141, 142, -1, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + -1, 159, 160, 161, -1, 163, -1, -1, -1, -1, + -1, -1, -1, -1, 7, -1, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, -1, -1, 38, 39, 40, 41, -1, + -1, -1, -1, 46, -1, -1, 49, 50, -1, -1, + -1, -1, 55, -1, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, -1, -1, -1, -1, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, -1, -1, -1, 136, -1, -1, -1, -1, 141, - 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, - -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + -1, -1, -1, 136, -1, -1, -1, -1, 141, 142, + -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, -1, 159, 160, 161, -1, + 163, -1, -1, -1, -1, -1, -1, -1, -1, 6, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 24, 25, 26, + -1, -1, 19, 20, -1, -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, -1, -1, -1, -1, 46, - -1, -1, 49, -1, -1, -1, -1, -1, 55, -1, + -1, -1, 49, 50, -1, -1, 53, -1, 55, -1, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 97, -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, -1, -1, 136, - -1, -1, -1, -1, 141, 142, -1, 144, 145, 146, + -1, -1, -1, 140, 141, 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, -1, 163, -1, -1, -1, - -1, -1, -1, -1, -1, 7, -1, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, - -1, -1, -1, -1, 46, -1, -1, 49, 50, -1, - -1, -1, -1, 55, -1, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, -1, -1, -1, 136, -1, -1, -1, -1, 141, - 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, - -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, - 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, 38, 39, 40, 41, -1, -1, -1, -1, 46, - -1, -1, 49, 50, -1, -1, -1, -1, 55, -1, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, - -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, -1, -1, -1, 136, - -1, -1, -1, -1, 141, 142, -1, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, -1, 159, 160, 161, -1, 163, -1, -1, -1, - -1, -1, -1, -1, -1, 6, 7, -1, 9, 10, + 167, 168, -1, -1, -1, 6, 7, -1, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, 20, -1, -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, 38, 39, 40, @@ -940,7 +953,7 @@ const short GLSLParserTable::action_check [] = { -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, 103, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, + -1, -1, -1, -1, -1, 110, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, -1, -1, 136, -1, -1, -1, 140, 141, 142, -1, 144, @@ -957,9 +970,9 @@ const short GLSLParserTable::action_check [] = { 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, + -1, 110, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, -1, -1, -1, 136, -1, -1, + 129, 130, 131, -1, -1, -1, -1, 136, -1, -1, -1, 140, 141, 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, -1, 163, -1, -1, -1, 167, 168, @@ -973,9 +986,9 @@ const short GLSLParserTable::action_check [] = { -1, -1, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, - 103, -1, -1, -1, -1, -1, -1, 110, -1, -1, + 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, -1, -1, 136, -1, -1, -1, 140, 141, 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, -1, @@ -1029,57 +1042,7 @@ const short GLSLParserTable::action_check [] = { -1, 136, -1, -1, -1, 140, 141, 142, -1, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, 159, 160, 161, -1, 163, -1, - -1, -1, 167, 168, -1, -1, -1, 6, 7, -1, - 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, - 19, 20, -1, -1, -1, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, -1, -1, 38, - 39, 40, 41, -1, -1, -1, -1, 46, -1, -1, - 49, 50, -1, -1, 53, -1, 55, -1, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, -1, -1, -1, -1, 97, -1, - -1, -1, -1, -1, 103, -1, -1, -1, -1, -1, - -1, 110, -1, -1, -1, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, -1, -1, -1, -1, 136, -1, -1, - -1, 140, 141, 142, -1, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, -1, - 159, 160, 161, -1, 163, -1, -1, -1, 167, 168, - -1, -1, -1, 5, -1, 7, -1, 9, 10, 11, - -1, -1, 14, -1, -1, 17, -1, -1, -1, -1, - -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, - -1, -1, -1, 45, 46, -1, -1, 49, -1, -1, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, -1, -1, 96, -1, -1, -1, 100, 101, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - -1, -1, 134, -1, 136, -1, -1, -1, -1, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, - 5, -1, 7, -1, 9, 10, 11, -1, -1, 14, - -1, -1, 17, -1, -1, -1, -1, -1, -1, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, -1, -1, 38, 39, 40, 41, -1, -1, -1, - 45, 46, -1, -1, 49, -1, -1, 52, -1, -1, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, - -1, 96, -1, -1, -1, 100, 101, -1, -1, -1, - -1, -1, -1, -1, 109, -1, -1, -1, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, -1, -1, 134, - -1, 136, -1, -1, -1, -1, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, -1, - -1, -1, -1, -1, -1, -1, -1, 5, -1, 7, + -1, -1, 167, 168, -1, -1, -1, 5, -1, 7, -1, 9, 10, 11, -1, -1, 14, -1, -1, 17, -1, -1, -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, @@ -1090,7 +1053,7 @@ const short GLSLParserTable::action_check [] = { -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, -1, -1, -1, 100, 101, -1, -1, -1, -1, -1, -1, - -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, + -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, 134, -1, 136, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, @@ -1123,63 +1086,146 @@ const short GLSLParserTable::action_check [] = { -1, -1, -1, -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, -1, -1, -1, 100, 101, -1, -1, - 104, -1, -1, -1, -1, -1, -1, -1, -1, 113, + -1, -1, -1, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, + 124, 125, 126, 127, 128, 129, 130, 131, -1, -1, 134, -1, 136, -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, 5, -1, 7, -1, 9, 10, 11, - -1, -1, 14, -1, -1, 17, -1, -1, -1, -1, - -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, -1, -1, 38, 39, 40, 41, - -1, -1, -1, 45, 46, -1, -1, 49, -1, -1, - 52, -1, -1, 55, 56, 57, 58, 59, 60, 61, + -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, + 7, -1, 9, 10, 11, -1, -1, 14, -1, -1, + 17, -1, -1, -1, -1, -1, -1, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, + -1, 38, 39, 40, 41, -1, -1, -1, 45, 46, + -1, -1, 49, -1, -1, 52, -1, -1, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, -1, -1, -1, -1, -1, + -1, -1, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, + -1, -1, -1, 100, 101, -1, -1, -1, -1, -1, + -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, -1, -1, 134, -1, 136, + -1, -1, -1, -1, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, -1, -1, -1, + -1, -1, -1, -1, -1, 5, -1, 7, -1, 9, + 10, 11, -1, -1, 14, -1, -1, 17, -1, -1, + -1, -1, -1, -1, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, -1, -1, 38, 39, + 40, 41, -1, -1, -1, 45, 46, -1, -1, 49, + -1, -1, 52, -1, -1, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, -1, -1, -1, -1, -1, -1, -1, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, -1, -1, -1, 96, -1, -1, -1, + 100, 101, -1, -1, 104, -1, -1, -1, -1, -1, + -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, -1, 134, -1, 136, -1, -1, -1, + -1, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, -1, 163, -1, -1, -1, -1, -1, -1, + -1, -1, 5, 6, 7, -1, 9, 10, 11, -1, + -1, 14, -1, -1, 17, -1, 19, 20, -1, -1, + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, -1, -1, 38, 39, 40, 41, -1, + -1, -1, 45, 46, -1, -1, 49, 50, -1, 52, + 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, -1, + -1, -1, -1, -1, 77, -1, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + -1, -1, -1, 96, 97, -1, -1, 100, 101, -1, + 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, -1, + -1, 134, -1, 136, -1, -1, -1, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, + 163, -1, -1, -1, 167, 168, -1, -1, -1, 5, + 6, 7, -1, 9, 10, 11, -1, -1, 14, -1, + -1, 17, -1, 19, 20, -1, -1, -1, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + -1, -1, 38, 39, 40, 41, -1, -1, -1, 45, + 46, -1, -1, 49, 50, -1, 52, 53, -1, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, -1, -1, -1, -1, + -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, + 96, 97, -1, -1, 100, 101, -1, 103, 104, -1, + -1, -1, -1, -1, -1, -1, -1, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, -1, 134, -1, + 136, -1, -1, -1, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, -1, 163, -1, -1, + -1, 167, 168, -1, -1, -1, 5, 6, 7, 8, + 9, 10, 11, -1, 13, 14, -1, -1, 17, 18, + 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, -1, 38, + 39, 40, 41, -1, -1, -1, 45, 46, 47, -1, + 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, -1, -1, 74, -1, -1, 77, -1, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, -1, -1, -1, 96, 97, -1, + -1, 100, 101, -1, 103, 104, -1, 106, -1, -1, + -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, -1, 134, -1, 136, -1, -1, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, + -1, -1, -1, 5, 6, 7, 8, 9, 10, 11, + -1, 13, 14, -1, -1, 17, 18, 19, 20, 21, + 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, -1, 38, 39, 40, 41, + -1, -1, -1, 45, 46, 47, -1, 49, 50, 51, + 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - -1, -1, -1, -1, -1, -1, -1, 79, 80, 81, + -1, -1, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, -1, -1, -1, 96, -1, -1, -1, 100, 101, - -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, + 92, -1, -1, -1, 96, 97, -1, -1, 100, 101, + -1, 103, 104, -1, 106, -1, -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, -1, 134, -1, 136, -1, -1, -1, -1, 141, + 132, -1, 134, -1, 136, -1, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, - 5, 6, 7, -1, 9, 10, 11, -1, -1, 14, - -1, -1, 17, -1, 19, 20, -1, -1, -1, 24, + -1, 163, 164, -1, -1, 167, 168, -1, -1, -1, + 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, + -1, -1, 17, 18, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, -1, -1, 38, 39, 40, 41, -1, -1, -1, - 45, 46, -1, -1, 49, 50, -1, 52, 53, -1, + 35, 36, -1, 38, 39, 40, 41, -1, -1, -1, + 45, 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, -1, -1, -1, + 65, 66, 67, 68, 69, 70, 71, -1, -1, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, - -1, 96, 97, -1, -1, 100, 101, -1, 103, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 113, 114, + -1, 96, 97, -1, -1, 100, 101, -1, 103, 104, + -1, 106, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, -1, -1, 134, - -1, 136, -1, -1, -1, 140, 141, 142, 143, 144, + 125, 126, 127, 128, 129, 130, 131, 132, -1, 134, + -1, 136, -1, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, -1, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, -1, -1, -1, 5, 6, 7, - -1, 9, 10, 11, -1, -1, 14, -1, -1, 17, - -1, 19, 20, -1, -1, -1, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, - 38, 39, 40, 41, -1, -1, -1, 45, 46, -1, - -1, 49, 50, -1, 52, 53, -1, 55, 56, 57, + 8, 9, 10, 11, -1, 13, 14, -1, -1, 17, + 18, 19, 20, 21, 22, -1, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, -1, + 38, 39, 40, 41, -1, -1, -1, 45, 46, 47, + -1, 49, 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, -1, -1, -1, -1, -1, 77, + 68, 69, 70, 71, -1, -1, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, - -1, -1, 100, 101, -1, 103, 104, -1, -1, -1, - -1, -1, -1, -1, -1, 113, 114, 115, 116, 117, + -1, -1, 100, 101, -1, 103, 104, -1, 106, -1, + -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, 134, -1, 136, -1, - -1, -1, 140, 141, 142, 143, 144, 145, 146, 147, + -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, -1, 163, -1, -1, -1, 167, + 158, 159, 160, 161, -1, 163, 164, -1, -1, 167, 168, -1, -1, -1, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, 30, @@ -1190,7 +1236,7 @@ const short GLSLParserTable::action_check [] = { 71, -1, -1, 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, -1, -1, 100, - 101, -1, 103, 104, -1, 106, -1, -1, -1, -1, + 101, -1, 103, 104, -1, 106, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, 134, -1, 136, -1, -1, 139, 140, @@ -1207,111 +1253,37 @@ const short GLSLParserTable::action_check [] = { 74, -1, -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, 97, -1, -1, 100, 101, -1, 103, - 104, -1, 106, -1, -1, -1, -1, -1, -1, 113, + 104, -1, 106, -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, -1, 134, -1, 136, -1, -1, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, -1, -1, 167, 168, -1, -1, -1, 5, 6, - 7, 8, 9, 10, 11, -1, 13, 14, -1, -1, - 17, 18, 19, 20, 21, 22, -1, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - -1, 38, 39, 40, 41, -1, -1, -1, 45, 46, - 47, -1, 49, 50, 51, 52, 53, -1, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, -1, -1, 74, -1, -1, - 77, -1, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, -1, -1, -1, 96, - 97, -1, -1, 100, 101, -1, 103, 104, -1, 106, - -1, -1, 109, -1, -1, -1, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, -1, 134, -1, 136, - -1, -1, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, -1, -1, - 167, 168, -1, -1, -1, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, -1, -1, 17, 18, 19, - 20, 21, 22, -1, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, -1, 38, 39, - 40, 41, -1, -1, -1, 45, 46, 47, -1, 49, - 50, 51, 52, 53, -1, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, -1, -1, 74, -1, -1, 77, -1, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, -1, -1, -1, 96, 97, -1, -1, - 100, 101, -1, 103, 104, -1, 106, -1, -1, 109, - -1, -1, -1, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, -1, 134, -1, 136, -1, -1, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, -1, 163, 164, -1, -1, 167, 168, -1, - -1, -1, 5, 6, 7, 8, 9, 10, 11, -1, - 13, 14, -1, -1, 17, 18, 19, 20, 21, 22, - -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, -1, 38, 39, 40, 41, -1, - -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, - 53, -1, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, -1, - -1, 74, -1, -1, 77, -1, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -1, -1, -1, 96, 97, -1, -1, 100, 101, -1, - 103, 104, -1, 106, -1, -1, 109, -1, -1, -1, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - -1, 134, -1, 136, -1, -1, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, -1, -1, 167, 168, -1, -1, -1, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, -1, - -1, 17, 18, 19, 20, 21, 22, -1, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, -1, 38, 39, 40, 41, -1, -1, -1, 45, - 46, 47, -1, 49, 50, 51, 52, 53, -1, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, -1, -1, 74, -1, - -1, 77, -1, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, -1, -1, - 96, 97, -1, -1, 100, 101, -1, 103, 104, -1, - 106, -1, -1, 109, -1, -1, -1, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, -1, 134, -1, - 136, -1, -1, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, -1, 163, 164, -1, - -1, 167, 168, -1, -1, -1, + 164, -1, -1, 167, 168, -1, -1, -1, - 3, 54, 14, 3, 15, 12, 3, 12, 35, 54, - 12, 15, 8, 54, 15, 14, 3, 12, 3, 12, - 12, 15, 59, 58, 14, 14, 3, 35, 53, 3, - 3, 45, 72, 15, 15, 14, 34, 12, -1, 15, - -1, 12, -1, 15, 20, 15, 15, 12, 20, 19, - 41, 15, 21, 17, 15, 15, 17, 15, 12, 15, - 18, 12, 14, 19, 14, 12, 15, -1, 28, 14, - 19, 14, 14, 48, 14, 14, 14, 48, 15, 3, - 15, 14, 50, 48, 19, 14, 54, 15, 25, 15, - 18, -1, 15, 15, 48, 15, 14, 48, 14, 22, - 26, 48, 24, 14, 14, 14, -1, 36, 28, 61, - 30, 61, -1, 14, -1, -1, 15, 14, 63, 61, - 36, 61, 61, 15, -1, -1, 36, 70, 61, 28, - 15, 30, 70, 14, 43, 36, 28, 46, 30, 36, - 37, 57, 60, 28, 15, 30, 64, 57, 14, -1, - 31, 32, 63, 3, -1, 14, 57, 28, 15, 30, - 71, -1, -1, -1, 14, -1, 23, -1, -1, -1, - 36, 37, 31, 32, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, - -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, + 3, 55, 3, 14, 12, 15, 8, 55, 3, 14, + 35, 15, 12, 12, 12, 55, 12, 54, 15, 3, + 12, 15, 60, 14, 3, 41, 14, 3, 35, 3, + 3, 14, 45, 15, 73, 59, -1, 15, 15, -1, + 15, 34, 14, 20, 15, 12, 21, 12, 12, 20, + -1, 12, 15, 15, 17, 15, 15, 17, 15, 18, + 14, 51, 19, 14, 36, 55, 28, 12, 14, 12, + 14, -1, 14, 14, 14, 14, -1, 15, 14, -1, + 15, 3, 49, 18, 49, 49, 15, 25, 49, 15, + 19, 15, 15, 19, 15, 19, 36, 15, 15, -1, + 15, 14, 23, 26, 49, 22, 49, 14, 62, 14, + 28, 62, 30, 28, 14, 30, 62, 14, 58, 15, + 15, 62, 64, 62, 15, 14, 62, 71, 14, 36, + 37, 14, 28, 28, 30, 30, -1, 28, 14, 30, + 14, 3, 47, 43, -1, -1, 46, 36, -1, 3, + 36, 64, 14, 36, 37, 31, 32, 31, 32, 72, + 14, -1, 15, -1, 61, -1, 71, -1, 65, 58, + -1, 24, 58, -1, 36, -1, -1, -1, -1, -1, + 42, -1, 36, -1, -1, 47, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 79, -1, -1, -1, 74, 3, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 14, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, - -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1}; + -1, 75, -1, -1, -1, -1, -1, -1, -1, -1, + -1}; QT_END_NAMESPACE diff --git a/src/libs/glsl/glslparsertable_p.h b/src/libs/glsl/glslparsertable_p.h index 1d3f5790b87..6cbdf9f1132 100644 --- a/src/libs/glsl/glslparsertable_p.h +++ b/src/libs/glsl/glslparsertable_p.h @@ -235,15 +235,15 @@ public: T_XOR_ASSIGN = 165, T_XOR_OP = 166, - ACCEPT_STATE = 435, - RULE_COUNT = 312, - STATE_COUNT = 455, + ACCEPT_STATE = 440, + RULE_COUNT = 314, + STATE_COUNT = 459, TERMINAL_COUNT = 172, - NON_TERMINAL_COUNT = 82, + NON_TERMINAL_COUNT = 84, - GOTO_INDEX_OFFSET = 455, - GOTO_INFO_OFFSET = 4796, - GOTO_CHECK_OFFSET = 4796 + GOTO_INDEX_OFFSET = 459, + GOTO_INFO_OFFSET = 4728, + GOTO_CHECK_OFFSET = 4728 }; static const char *const spell []; diff --git a/src/libs/glsl/make-parser.sh b/src/libs/glsl/make-parser.sh index acd584f121f..bc76b6c0ed7 100755 --- a/src/libs/glsl/make-parser.sh +++ b/src/libs/glsl/make-parser.sh @@ -1,6 +1,5 @@ #!/bin/sh me=$(dirname $0) -cat $me/specs/glsl.g.in $me/specs/grammar.txt > $me/glsl.g -qlalr --qt --no-lines --no-debug $me/glsl.g +qlalr --qt --no-debug $me/glsl.g diff --git a/src/libs/glsl/specs/glsl.g.in b/src/libs/glsl/specs/glsl.g.in deleted file mode 100644 index 61dd17de5c1..00000000000 --- a/src/libs/glsl/specs/glsl.g.in +++ /dev/null @@ -1,447 +0,0 @@ ---------------------------------------------------------------------------- --- --- This file is part of Qt Creator --- --- Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). --- --- Contact: Nokia Corporation (qt-info@nokia.com) --- --- Commercial Usage --- --- Licensees holding valid Qt Commercial licenses may use this file in --- accordance with the Qt Commercial License Agreement provided with the --- Software or, alternatively, in accordance with the terms contained in --- a written agreement between you and Nokia. --- --- GNU Lesser General Public License Usage --- --- Alternatively, this file may be used under the terms of the GNU Lesser --- General Public License version 2.1 as published by the Free Software --- Foundation and appearing in the file LICENSE.LGPL included in the --- packaging of this file. Please review the following information to --- ensure the GNU Lesser General Public License version 2.1 requirements --- will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. --- --- If you are unsure which license is appropriate for your use, please --- contact the sales department at http://qt.nokia.com/contact. ---------------------------------------------------------------------------- - --- --- todo: --- spelling of XOR_OP and CARET - -%decl glslparser.h -%impl glslparser.cpp -%parser GLSLParserTable -%token_prefix T_ - -%token ADD_ASSIGN "+=" -%token AMPERSAND "&" -%token AND_ASSIGN "&=" -%token AND_OP "&&" -%token ATTRIBUTE "attribute" -%token BANG "!" -%token BOOL "bool" -%token BREAK "break" -%token BVEC2 "bvec2" -%token BVEC3 "bvec3" -%token BVEC4 "bvec4" -%token CARET "^" -%token CASE "case" -%token CENTROID "centroid" -%token COLON ":" -%token COMMA "," -%token CONST "const" -%token CONTINUE "continue" -%token DASH "-" -%token DEC_OP "--" -%token DEFAULT "default" -%token DISCARD "discard" -%token DIV_ASSIGN "/=" -%token DMAT2 "dmat2" -%token DMAT2X2 "dmat2x2" -%token DMAT2X3 "dmat2x3" -%token DMAT2X4 "dmat2x4" -%token DMAT3 "dmat3" -%token DMAT3X2 "dmat3x2" -%token DMAT3X3 "dmat3x3" -%token DMAT3X4 "dmat3x4" -%token DMAT4 "dmat4" -%token DMAT4X2 "dmat4x2" -%token DMAT4X3 "dmat4x3" -%token DMAT4X4 "dmat4x4" -%token DO "do" -%token DOT "." -%token DOUBLE "double" -%token DVEC2 "dvec2" -%token DVEC3 "dvec3" -%token DVEC4 "dvec4" -%token ELSE "else" -%token EQUAL "=" -%token EQ_OP "==" -%token FLAT "flat" -%token FLOAT "float" -%token FOR "for" -%token GE_OP ">=" -%token HIGHP "highp" -%token IDENTIFIER "identifier" -%token IF "if" -%token IN "in" -%token INC_OP "++" -%token INOUT "inout" -%token INT "int" -%token INVARIANT "invariant" -%token ISAMPLER1D "isampler1D" -%token ISAMPLER1DARRAY "isampler1DArray" -%token ISAMPLER2D "isampler2D" -%token ISAMPLER2DARRAY "isampler2DArray" -%token ISAMPLER2DMS "isampler2DMS" -%token ISAMPLER2DMSARRAY "isampler2DMSArray" -%token ISAMPLER2DRECT "isampler2DRect" -%token ISAMPLER3D "isampler3D" -%token ISAMPLERBUFFER "isamplerBuffer" -%token ISAMPLERCUBE "isamplerCube" -%token ISAMPLERCUBEARRAY "isamplerCubeArray" -%token IVEC2 "ivec2" -%token IVEC3 "ivec3" -%token IVEC4 "ivec4" -%token LAYOUT "layout" -%token LEFT_ANGLE "<" -%token LEFT_ASSIGN "<<=" -%token LEFT_BRACE "{" -%token LEFT_BRACKET "[" -%token LEFT_OP "<<" -%token LEFT_PAREN "(" -%token LE_OP "<=" -%token LOWP "lowp" -%token MAT2 "mat2" -%token MAT2X2 "mat2x2" -%token MAT2X3 "mat2x3" -%token MAT2X4 "mat2x4" -%token MAT3 "mat3" -%token MAT3X2 "mat3x2" -%token MAT3X3 "mat3x3" -%token MAT3X4 "mat3x4" -%token MAT4 "mat4" -%token MAT4X2 "mat4x2" -%token MAT4X3 "mat4x3" -%token MAT4X4 "mat4x4" -%token MEDIUMP "mediump" -%token MOD_ASSIGN "%=" -%token MUL_ASSIGN "*=" -%token NE_OP "!=" -%token NOPERSPECTIVE "noperspective" -%token NUMBER "number constant" -%token OR_ASSIGN "|=" -%token OR_OP "||" -%token OUT "out" -%token PATCH "patch" -%token PERCENT "%" -%token PLUS "plus" -%token PRECISION "precision" -%token QUESTION "?" -%token RETURN "return" -%token RIGHT_ANGLE ">" -%token RIGHT_ASSIGN ">>=" -%token RIGHT_BRACE "}" -%token RIGHT_BRACKET "]" -%token RIGHT_OP ">>" -%token RIGHT_PAREN ")" -%token SAMPLE "sample" -%token SAMPLER1D "sampler1D" -%token SAMPLER1DARRAY "sampler1DArray" -%token SAMPLER1DARRAYSHADOW "sampler1DArrayShadow" -%token SAMPLER1DSHADOW "sampler1DShadow" -%token SAMPLER2D "sampler2D" -%token SAMPLER2DARRAY "sampler2DArray" -%token SAMPLER2DARRAYSHADOW "sampler2DArrayShadow" -%token SAMPLER2DMS "sampler2DMS" -%token SAMPLER2DMSARRAY "sampler2DMSArray" -%token SAMPLER2DRECT "sampler2DRect" -%token SAMPLER2DRECTSHADOW "sampler2DRectShadow" -%token SAMPLER2DSHADOW "sampler2DShadow" -%token SAMPLER3D "sampler3D" -%token SAMPLERBUFFER "samplerBuffer" -%token SAMPLERCUBE "samplerCube" -%token SAMPLERCUBEARRAY "samplerCubeArray" -%token SAMPLERCUBEARRAYSHADOW "samplerCubeArrayShadow" -%token SAMPLERCUBESHADOW "samplerCubeShadow" -%token SEMICOLON ";" -%token SLASH "/" -%token SMOOTH "smooth" -%token STAR "*" -%token STRUCT "struct" -%token SUBROUTINE "subroutine" -%token SUB_ASSIGN "-=" -%token SWITCH "switch" -%token TILDE "~" -%token TYPE_NAME "type_name" -%token UINT "uint" -%token UNIFORM "uniform" -%token USAMPLER1D "usampler1D" -%token USAMPLER1DARRAY "usampler1DArray" -%token USAMPLER2D "usampler2D" -%token USAMPLER2DARRAY "usampler2DArray" -%token USAMPLER2DMS "usampler2DMS" -%token USAMPLER2DMSARRAY "usampler2DMSarray" -%token USAMPLER2DRECT "usampler2DRect" -%token USAMPLER3D "usampler3D" -%token USAMPLERBUFFER "usamplerBuffer" -%token USAMPLERCUBE "usamplerCube" -%token USAMPLERCUBEARRAY "usamplerCubeArray" -%token UVEC2 "uvec2" -%token UVEC3 "uvec3" -%token UVEC4 "uvec4" -%token VARYING "varying" -%token VEC2 "vec2" -%token VEC3 "vec3" -%token VEC4 "vec4" -%token VERTICAL_BAR "|" -%token VOID "void" -%token WHILE "while" -%token XOR_ASSIGN "^=" -%token XOR_OP "^" -%token TRUE "true" -%token FALSE "false" -%token PREPROC "preprocessor directive" -%token COMMENT "comment" -%token ERROR "error" - -%start translation_unit - -/: -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "$header" -#include "glsllexer.h" -#include "glslast.h" -#include -#include - -namespace GLSL { - -class Parser: public $table -{ -public: - Parser(const char *source, unsigned size, int variant); - ~Parser(); - - bool parse(); - -private: - inline int consumeToken() { return _index++; } - inline const Token &tokenAt(int index) const { return _tokens.at(index); } - inline int tokenKind(int index) const { return _tokens.at(index).kind; } - void dump(AST *ast); - -private: - int _tos; - int _index; - std::vector _stateStack; - std::vector _locationStack; - std::vector _astStack; - std::vector _tokens; -}; - -} // end of namespace GLSL -:/ - -/. -/************************************************************************** -** -** This file is part of Qt Creator -** -** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** Commercial Usage -** -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at http://qt.nokia.com/contact. -** -**************************************************************************/ - -#include "glslparser.h" -#include -#include - -using namespace GLSL; - -namespace GLSL { -void dumpAST(AST *); -void deleteAST(AST *ast); -} - -Parser::Parser(const char *source, unsigned size, int variant) - : _tos(-1), _index(0) -{ - _tokens.reserve(1024); - - _stateStack.resize(128); - _locationStack.resize(128); - _astStack.resize(128); - - _tokens.push_back(Token()); // invalid token - - std::stack parenStack; - std::stack bracketStack; - std::stack braceStack; - - Lexer lexer(source, size); - lexer.setVariant(variant); - Token tk; - do { - lexer.yylex(&tk); - - switch (tk.kind) { - case T_LEFT_PAREN: - parenStack.push(_tokens.size()); - break; - case T_LEFT_BRACKET: - bracketStack.push(_tokens.size()); - break; - case T_LEFT_BRACE: - braceStack.push(_tokens.size()); - break; - - case T_RIGHT_PAREN: - if (! parenStack.empty()) { - _tokens[parenStack.top()].matchingBrace = _tokens.size(); - parenStack.pop(); - } - break; - case T_RIGHT_BRACKET: - if (! bracketStack.empty()) { - _tokens[bracketStack.top()].matchingBrace = _tokens.size(); - bracketStack.pop(); - } - break; - case T_RIGHT_BRACE: - if (! braceStack.empty()) { - _tokens[braceStack.top()].matchingBrace = _tokens.size(); - braceStack.pop(); - } - break; - default: - break; - } - - _tokens.push_back(tk); - } while (tk.isNot(EOF_SYMBOL)); - - _index = 1; -} - -Parser::~Parser() -{ -} - -void Parser::dump(AST *ast) -{ - dumpAST(ast); -} - -bool Parser::parse() -{ - int action = 0; - int yytoken = -1; - int yyloc = -1; - Operand *opd = 0; - - _tos = -1; - - do { - if (yytoken == -1 && -TERMINAL_COUNT != action_index[action]) { - yyloc = consumeToken(); - yytoken = tokenKind(yyloc); - if (yytoken == T_IDENTIFIER && t_action(action, T_TYPE_NAME) != 0) { - const Token &la = tokenAt(_index); - - if (la.is(T_IDENTIFIER)) { - yytoken = T_TYPE_NAME; - } else if (la.is(T_LEFT_BRACKET) && la.matchingBrace != 0 && - tokenAt(la.matchingBrace + 1).is(T_IDENTIFIER)) { - yytoken = T_TYPE_NAME; - } - } - opd = new Operand(yyloc); - } - - if (unsigned(++_tos) == _stateStack.size()) { - _stateStack.resize(_tos * 2); - _locationStack.resize(_tos * 2); - _astStack.resize(_tos * 2); - } - - _stateStack[_tos] = action; - action = t_action(action, yytoken); - if (action > 0) { - if (action == ACCEPT_STATE) { - --_tos; - dump(_astStack[0]); - deleteAST(_astStack[0]); - return true; - } - _astStack[_tos] = opd; - _locationStack[_tos] = yyloc; - yytoken = -1; - } else if (action < 0) { - const int ruleno = -action - 1; - const int N = rhs[ruleno]; - _tos -= N; - if (N == 0) - _astStack[_tos] = 0; - else - _astStack[_tos] = new Operator(ruleno, &_astStack[_tos], &_astStack[_tos + N]); - action = nt_action(_stateStack[_tos], lhs[ruleno] - TERMINAL_COUNT); - } - } while (action); - - fprintf(stderr, "unexpected token `%s' at line %d\n", yytoken != -1 ? spell[yytoken] : "", - _tokens[yyloc].line + 1); - - return false; -} -./ diff --git a/src/libs/glsl/specs/grammar.txt b/src/libs/glsl/specs/grammar.txt index 3620800ea08..751e735fc02 100644 --- a/src/libs/glsl/specs/grammar.txt +++ b/src/libs/glsl/specs/grammar.txt @@ -99,7 +99,7 @@ parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter parameter_declaration ::= parameter_qualifier parameter_declarator ; parameter_declaration ::= parameter_type_qualifier parameter_qualifier parameter_type_specifier ; parameter_declaration ::= parameter_qualifier parameter_type_specifier ; -parameter_qualifier ::= ; +parameter_qualifier ::= empty ; parameter_qualifier ::= IN ; parameter_qualifier ::= OUT ; parameter_qualifier ::= INOUT ; @@ -285,7 +285,7 @@ selection_rest_statement ::= statement ; condition ::= expression ; condition ::= fully_specified_type IDENTIFIER EQUAL initializer ; switch_statement ::= SWITCH LEFT_PAREN expression RIGHT_PAREN LEFT_BRACE switch_statement_list RIGHT_BRACE ; -switch_statement_list ::= ; +switch_statement_list ::= empty ; switch_statement_list ::= statement_list ; case_label ::= CASE expression COLON ; case_label ::= DEFAULT COLON ; @@ -294,7 +294,7 @@ iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEM iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope ; for_init_statement ::= expression_statement ; for_init_statement ::= declaration_statement ; -conditionopt ::= ; +conditionopt ::= empty ; conditionopt ::= condition ; for_rest_statement ::= conditionopt SEMICOLON ; for_rest_statement ::= conditionopt SEMICOLON expression ; @@ -309,3 +309,4 @@ external_declaration ::= function_definition ; external_declaration ::= declaration ; external_declaration ::= SEMICOLON ; function_definition ::= function_prototype compound_statement_no_new_scope ; +empty ::= ; diff --git a/src/libs/glsl/tests/main.cpp b/src/libs/glsl/tests/main.cpp index db4921cb021..1cc1a030e6a 100644 --- a/src/libs/glsl/tests/main.cpp +++ b/src/libs/glsl/tests/main.cpp @@ -1,6 +1,7 @@ -#include "glslparser.h" -#include "glsllexer.h" +#include +#include +#include #include #include #include @@ -15,7 +16,7 @@ using namespace GLSL; #endif int main(int argc, char *argv[]) -{ +{ int variant = 0; while (argc > 1 && argv[1][0] == '-' && argv[1][1] == '-') { @@ -62,7 +63,8 @@ int main(int argc, char *argv[]) variant = Lexer::Variant_Mask & ~Lexer::Variant_Reserved; else if ((variant & (Lexer::Variant_VertexShader | Lexer::Variant_FragmentShader)) == 0) variant |= Lexer::Variant_VertexShader | Lexer::Variant_FragmentShader; - Parser parser(source, size, variant); + Engine engine; + Parser parser(&engine, source, size, variant); std::cout << argv[1] << (parser.parse() ? " OK " : " KO ") << std::endl; delete source; diff --git a/src/libs/glsl/tests/test.pro b/src/libs/glsl/tests/test.pro new file mode 100644 index 00000000000..89ead350612 --- /dev/null +++ b/src/libs/glsl/tests/test.pro @@ -0,0 +1,14 @@ +TEMPLATE = app +CONFIG -= app_bundle +CONFIG += console +TARGET = glsl +DEPENDPATH += . +INCLUDEPATH += . .. + +QT = core + +# Input +SOURCES += main.cpp + +include(../glsl-lib.pri) + diff --git a/src/plugins/glsleditor/glslhighlighter.cpp b/src/plugins/glsleditor/glslhighlighter.cpp index bc9ec107b09..d8bf89928bb 100644 --- a/src/plugins/glsleditor/glslhighlighter.cpp +++ b/src/plugins/glsleditor/glslhighlighter.cpp @@ -53,7 +53,7 @@ void Highlighter::setFormats(const QVector &formats) void Highlighter::highlightBlock(const QString &text) { const QByteArray data = text.toLatin1(); - GLSL::Lexer lex(data.constData(), data.size()); + GLSL::Lexer lex(/*engine=*/ 0, data.constData(), data.size()); lex.setState(qMax(0, previousBlockState())); lex.setScanKeywords(false); lex.setScanComments(true);