2010-11-10 12:32:34 +01:00
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 420 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
2010-11-10 15:44:59 +01:00
|
|
|
/**************************************************************************
|
|
|
|
|
**
|
|
|
|
|
** This file is part of Qt Creator
|
|
|
|
|
**
|
|
|
|
|
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
|
|
|
**
|
|
|
|
|
** Contact: Nokia Corporation (qt-info@nokia.com)
|
|
|
|
|
**
|
2010-12-17 17:14:20 +01:00
|
|
|
** No Commercial Usage
|
2010-11-10 15:44:59 +01:00
|
|
|
**
|
2010-12-17 17:14:20 +01:00
|
|
|
** This file contains pre-release code and may not be distributed.
|
|
|
|
|
** You may use this file in accordance with the terms and conditions
|
|
|
|
|
** contained in the Technology Preview License Agreement accompanying
|
|
|
|
|
** this package.
|
2010-11-10 15:44:59 +01:00
|
|
|
**
|
|
|
|
|
** 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.
|
|
|
|
|
**
|
2010-12-17 17:14:20 +01:00
|
|
|
** In addition, as a special exception, Nokia gives you certain additional
|
|
|
|
|
** rights. These rights are described in the Nokia Qt LGPL Exception
|
|
|
|
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
|
|
|
**
|
|
|
|
|
** If you have questions regarding the use of this file, please contact
|
|
|
|
|
** Nokia at qt-info@nokia.com.
|
2010-11-10 15:44:59 +01:00
|
|
|
**
|
|
|
|
|
**************************************************************************/
|
|
|
|
|
|
2010-11-10 12:32:34 +01:00
|
|
|
#include "glslparser.h"
|
2010-11-11 15:05:42 +01:00
|
|
|
#include "glslengine.h"
|
2010-11-10 12:32:34 +01:00
|
|
|
#include <iostream>
|
2010-11-10 16:30:35 +01:00
|
|
|
#include <cstdio>
|
2010-11-11 12:01:37 +01:00
|
|
|
#include <cassert>
|
2010-11-29 09:54:27 +01:00
|
|
|
#include <QtCore/QDebug>
|
2010-11-10 12:32:34 +01:00
|
|
|
|
|
|
|
|
using namespace GLSL;
|
|
|
|
|
|
2010-11-11 12:01:37 +01:00
|
|
|
Parser::Parser(Engine *engine, const char *source, unsigned size, int variant)
|
2010-11-29 09:54:27 +01:00
|
|
|
: _engine(engine), _tos(-1), _index(0), yyloc(-1), yytoken(-1), yyrecovering(0), _recovered(false)
|
2010-11-10 12:32:34 +01:00
|
|
|
{
|
|
|
|
|
_tokens.reserve(1024);
|
|
|
|
|
|
|
|
|
|
_stateStack.resize(128);
|
|
|
|
|
_locationStack.resize(128);
|
2010-11-11 12:01:37 +01:00
|
|
|
_symStack.resize(128);
|
2010-11-10 12:32:34 +01:00
|
|
|
|
|
|
|
|
_tokens.push_back(Token()); // invalid token
|
|
|
|
|
|
|
|
|
|
std::stack<int> parenStack;
|
|
|
|
|
std::stack<int> bracketStack;
|
|
|
|
|
std::stack<int> braceStack;
|
|
|
|
|
|
2010-11-11 12:01:37 +01:00
|
|
|
Lexer lexer(engine, source, size);
|
2010-11-10 12:32:34 +01:00
|
|
|
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));
|
|
|
|
|
|
2010-11-29 17:21:47 +01:00
|
|
|
_index = 0;
|
2010-11-10 12:32:34 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Parser::~Parser()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2010-11-29 17:21:47 +01:00
|
|
|
AST *Parser::parse(int startToken)
|
2010-11-10 12:32:34 +01:00
|
|
|
{
|
|
|
|
|
int action = 0;
|
2010-11-29 09:54:27 +01:00
|
|
|
yytoken = -1;
|
2010-11-12 09:53:08 +10:00
|
|
|
yyloc = -1;
|
2010-11-11 12:01:37 +01:00
|
|
|
void *yyval = 0; // value of the current token.
|
2010-11-10 12:32:34 +01:00
|
|
|
|
2010-11-29 09:54:27 +01:00
|
|
|
_recovered = false;
|
2010-11-10 12:32:34 +01:00
|
|
|
_tos = -1;
|
2010-11-29 17:21:47 +01:00
|
|
|
_startToken.kind = startToken;
|
2010-11-10 12:32:34 +01:00
|
|
|
|
|
|
|
|
do {
|
2010-11-29 09:54:27 +01:00
|
|
|
again:
|
|
|
|
|
if (unsigned(++_tos) == _stateStack.size()) {
|
|
|
|
|
_stateStack.resize(_tos * 2);
|
|
|
|
|
_locationStack.resize(_tos * 2);
|
|
|
|
|
_symStack.resize(_tos * 2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_stateStack[_tos] = action;
|
|
|
|
|
|
2010-11-10 12:32:34 +01:00
|
|
|
if (yytoken == -1 && -TERMINAL_COUNT != action_index[action]) {
|
|
|
|
|
yyloc = consumeToken();
|
|
|
|
|
yytoken = tokenKind(yyloc);
|
2010-11-29 09:54:27 +01:00
|
|
|
if (yyrecovering)
|
|
|
|
|
--yyrecovering;
|
2010-11-10 12:32:34 +01:00
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-11-11 12:01:37 +01:00
|
|
|
yyval = _tokens.at(yyloc).ptr;
|
2010-11-10 12:32:34 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
action = t_action(action, yytoken);
|
|
|
|
|
if (action > 0) {
|
|
|
|
|
if (action == ACCEPT_STATE) {
|
|
|
|
|
--_tos;
|
2010-11-11 12:01:37 +01:00
|
|
|
return _symStack[0].translation_unit;
|
2010-11-10 12:32:34 +01:00
|
|
|
}
|
2010-11-11 12:01:37 +01:00
|
|
|
_symStack[_tos].ptr = yyval;
|
2010-11-10 12:32:34 +01:00
|
|
|
_locationStack[_tos] = yyloc;
|
|
|
|
|
yytoken = -1;
|
|
|
|
|
} else if (action < 0) {
|
|
|
|
|
const int ruleno = -action - 1;
|
|
|
|
|
const int N = rhs[ruleno];
|
|
|
|
|
_tos -= N;
|
2010-11-11 12:01:37 +01:00
|
|
|
reduce(ruleno);
|
2010-11-10 12:32:34 +01:00
|
|
|
action = nt_action(_stateStack[_tos], lhs[ruleno] - TERMINAL_COUNT);
|
2010-11-29 09:54:27 +01:00
|
|
|
} else if (action == 0) {
|
|
|
|
|
const int line = _tokens[yyloc].line + 1;
|
|
|
|
|
QString message = QLatin1String("Syntax error");
|
|
|
|
|
if (yytoken != -1) {
|
|
|
|
|
const QLatin1String s(spell[yytoken]);
|
|
|
|
|
message = QString("Unexpected token `%1'").arg(s);
|
|
|
|
|
}
|
2010-11-10 12:32:34 +01:00
|
|
|
|
2010-11-29 09:54:27 +01:00
|
|
|
for (; _tos; --_tos) {
|
|
|
|
|
const int state = _stateStack[_tos];
|
|
|
|
|
|
|
|
|
|
static int tks[] = {
|
|
|
|
|
T_RIGHT_BRACE, T_RIGHT_PAREN, T_RIGHT_BRACKET,
|
|
|
|
|
T_SEMICOLON, T_COMMA, T_COLON,
|
|
|
|
|
T_NUMBER, T_TYPE_NAME, T_IDENTIFIER,
|
|
|
|
|
T_LEFT_BRACE, T_LEFT_PAREN, T_LEFT_BRACKET,
|
2010-11-29 22:21:02 +01:00
|
|
|
T_WHILE,
|
2010-11-29 09:54:27 +01:00
|
|
|
0
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
for (int *tptr = tks; *tptr; ++tptr) {
|
|
|
|
|
const int next = t_action(state, *tptr);
|
|
|
|
|
if (next > 0) {
|
|
|
|
|
if (! yyrecovering && ! _recovered) {
|
|
|
|
|
_recovered = true;
|
|
|
|
|
error(line, QString("Expected `%1'").arg(QLatin1String(spell[*tptr])));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
yyrecovering = 3;
|
|
|
|
|
if (*tptr == T_IDENTIFIER)
|
|
|
|
|
yyval = (void *) _engine->identifier(QLatin1String("$identifier"));
|
|
|
|
|
else if (*tptr == T_NUMBER || *tptr == T_TYPE_NAME)
|
|
|
|
|
yyval = (void *) _engine->identifier(QLatin1String("$0"));
|
|
|
|
|
else
|
|
|
|
|
yyval = 0;
|
|
|
|
|
|
|
|
|
|
_symStack[_tos].ptr = yyval;
|
|
|
|
|
_locationStack[_tos] = yyloc;
|
|
|
|
|
yytoken = -1;
|
|
|
|
|
|
|
|
|
|
action = next;
|
|
|
|
|
goto again;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-11-19 14:59:33 +01:00
|
|
|
|
2010-11-29 09:54:27 +01:00
|
|
|
if (! _recovered) {
|
|
|
|
|
_recovered = true;
|
|
|
|
|
error(line, message);
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-11-19 14:59:33 +01:00
|
|
|
|
2010-11-29 09:54:27 +01:00
|
|
|
} while (action);
|
2010-11-10 12:32:34 +01:00
|
|
|
|
2010-11-11 12:01:37 +01:00
|
|
|
return 0;
|
2010-11-10 12:32:34 +01:00
|
|
|
}
|
2010-11-11 12:01:37 +01:00
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 637 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
void Parser::reduce(int ruleno)
|
|
|
|
|
{
|
|
|
|
|
switch(ruleno) {
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 646 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 0: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<IdentifierExpressionAST>(string(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 653 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 1: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<LiteralExpressionAST>(string(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 660 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 2: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<LiteralExpressionAST>(_engine->identifier("true", 4));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 667 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 3: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<LiteralExpressionAST>(_engine->identifier("false", 5));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 674 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 4: {
|
2010-11-11 15:43:16 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 681 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 5: {
|
2010-11-11 15:43:16 +01:00
|
|
|
ast(1) = ast(2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 688 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 6: {
|
2010-11-11 15:43:16 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 695 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 7: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_ArrayAccess, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 702 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 8: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 709 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 9: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<MemberAccessExpressionAST>(expression(1), string(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 716 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 10: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PostIncrement, expression(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 723 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 11: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PostDecrement, expression(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 730 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 12: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 737 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 13: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 744 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 14: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<FunctionCallExpressionAST>
|
2010-11-12 10:23:46 +10:00
|
|
|
(sym(1).function.id, sym(1).function.arguments);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 752 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 15: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<FunctionCallExpressionAST>
|
2010-11-12 10:23:46 +10:00
|
|
|
(expression(1), sym(3).function.id, sym(3).function.arguments);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 760 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 16: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 767 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 17: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 774 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 18: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).function.id = sym(1).function_identifier;
|
|
|
|
|
sym(1).function.arguments = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 782 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 19: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).function.id = sym(1).function_identifier;
|
|
|
|
|
sym(1).function.arguments = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 790 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 20: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).function.id = sym(1).function_identifier;
|
|
|
|
|
sym(1).function.arguments =
|
2010-11-25 12:19:57 +01:00
|
|
|
makeAstNode< List<ExpressionAST *> >(expression(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 799 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 21: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).function.arguments =
|
2010-11-25 12:19:57 +01:00
|
|
|
makeAstNode< List<ExpressionAST *> >
|
2010-11-12 10:23:46 +10:00
|
|
|
(sym(1).function.arguments, expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 808 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 22: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 815 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 23: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<FunctionIdentifierAST>(type(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 822 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 24: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<FunctionIdentifierAST>(string(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 829 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 25: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 836 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 26: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PreIncrement, expression(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 843 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 27: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<UnaryExpressionAST>(AST::Kind_PreDecrement, expression(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 850 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 28: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<UnaryExpressionAST>(sym(1).kind, expression(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 857 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 29: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_UnaryPlus;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 864 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 30: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_UnaryMinus;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 871 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 31: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_LogicalNot;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 878 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 32: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_BitwiseNot;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 885 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 33: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 892 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 34: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Multiply, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 899 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 35: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Divide, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 906 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 36: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Modulus, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 913 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 37: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 920 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 38: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Plus, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 927 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 39: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Minus, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 934 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 40: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 941 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 41: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_ShiftLeft, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 948 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 42: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_ShiftRight, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 955 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 43: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 962 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 44: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LessThan, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 969 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 45: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_GreaterThan, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 976 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 46: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LessEqual, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 983 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 47: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_GreaterEqual, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 990 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 48: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 997 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 49: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Equal, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1004 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 50: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_NotEqual, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1011 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 51: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1018 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 52: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_BitwiseAnd, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1025 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 53: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1032 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 54: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_BitwiseXor, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1039 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 55: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1046 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 56: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_BitwiseOr, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1053 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 57: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1060 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 58: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LogicalAnd, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1067 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 59: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1074 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 60: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LogicalXor, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1081 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 61: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1088 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 62: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_LogicalOr, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1095 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 63: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1102 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 64: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TernaryExpressionAST>(AST::Kind_Conditional, expression(1), expression(3), expression(5));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1109 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 65: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1116 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 66: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<AssignmentExpressionAST>(sym(2).kind, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1123 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 67: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_Assign;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1130 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 68: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignMultiply;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1137 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 69: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignDivide;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1144 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 70: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignModulus;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1151 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 71: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignPlus;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1158 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 72: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignMinus;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1165 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 73: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignShiftLeft;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1172 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 74: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignShiftRight;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1179 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 75: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignAnd;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1186 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 76: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignXor;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1193 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 77: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).kind = AST::Kind_AssignOr;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1200 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 78: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1207 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 79: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<BinaryExpressionAST>(AST::Kind_Comma, expression(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1214 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 80: {
|
2010-11-11 15:21:27 +01:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1221 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 81: {
|
2010-11-18 13:01:27 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1228 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 82: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<InitDeclarationAST>(sym(1).declaration_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1235 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 83: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<PrecisionDeclarationAST>(sym(2).precision, type(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1242 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 84: {
|
2010-11-25 12:19:57 +01:00
|
|
|
if (sym(1).type_qualifier.qualifier != QualifiedTypeAST::Struct) {
|
2010-11-18 13:01:27 +10:00
|
|
|
// TODO: issue an error if the qualifier is not "struct".
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = makeAstNode<StructTypeAST>(string(2), sym(4).field_list);
|
|
|
|
|
ast(1) = makeAstNode<TypeDeclarationAST>(type);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1253 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 85: {
|
2010-11-25 12:19:57 +01:00
|
|
|
if ((sym(1).type_qualifier.qualifier & QualifiedTypeAST::Struct) == 0) {
|
2010-11-18 13:01:27 +10:00
|
|
|
// TODO: issue an error if the qualifier does not contain "struct".
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = makeAstNode<StructTypeAST>(string(2), sym(4).field_list);
|
|
|
|
|
TypeAST *qualtype = type;
|
|
|
|
|
if (sym(1).type_qualifier.qualifier != QualifiedTypeAST::Struct) {
|
|
|
|
|
qualtype = makeAstNode<QualifiedTypeAST>
|
|
|
|
|
(sym(1).type_qualifier.qualifier & ~QualifiedTypeAST::Struct, qualtype,
|
2010-11-18 13:01:27 +10:00
|
|
|
sym(1).type_qualifier.layout_list);
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TypeAndVariableDeclarationAST>
|
|
|
|
|
(makeAstNode<TypeDeclarationAST>(type),
|
|
|
|
|
makeAstNode<VariableDeclarationAST>(qualtype, string(6)));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1272 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 86: {
|
2010-11-25 12:19:57 +01:00
|
|
|
if ((sym(1).type_qualifier.qualifier & QualifiedTypeAST::Struct) == 0) {
|
2010-11-18 13:01:27 +10:00
|
|
|
// TODO: issue an error if the qualifier does not contain "struct".
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = makeAstNode<StructTypeAST>(string(2), sym(4).field_list);
|
|
|
|
|
TypeAST *qualtype = type;
|
|
|
|
|
if (sym(1).type_qualifier.qualifier != QualifiedTypeAST::Struct) {
|
|
|
|
|
qualtype = makeAstNode<QualifiedTypeAST>
|
|
|
|
|
(sym(1).type_qualifier.qualifier & ~QualifiedTypeAST::Struct, qualtype,
|
2010-11-18 13:01:27 +10:00
|
|
|
sym(1).type_qualifier.layout_list);
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TypeAndVariableDeclarationAST>
|
|
|
|
|
(makeAstNode<TypeDeclarationAST>(type),
|
|
|
|
|
makeAstNode<VariableDeclarationAST>
|
|
|
|
|
(makeAstNode<ArrayTypeAST>(qualtype), string(6)));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1292 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 87: {
|
2010-11-25 12:19:57 +01:00
|
|
|
if ((sym(1).type_qualifier.qualifier & QualifiedTypeAST::Struct) == 0) {
|
2010-11-18 13:01:27 +10:00
|
|
|
// TODO: issue an error if the qualifier does not contain "struct".
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = makeAstNode<StructTypeAST>(string(2), sym(4).field_list);
|
|
|
|
|
TypeAST *qualtype = type;
|
|
|
|
|
if (sym(1).type_qualifier.qualifier != QualifiedTypeAST::Struct) {
|
|
|
|
|
qualtype = makeAstNode<QualifiedTypeAST>
|
|
|
|
|
(sym(1).type_qualifier.qualifier & ~QualifiedTypeAST::Struct, qualtype,
|
2010-11-18 13:01:27 +10:00
|
|
|
sym(1).type_qualifier.layout_list);
|
|
|
|
|
}
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TypeAndVariableDeclarationAST>
|
|
|
|
|
(makeAstNode<TypeDeclarationAST>(type),
|
|
|
|
|
makeAstNode<VariableDeclarationAST>
|
|
|
|
|
(makeAstNode<ArrayTypeAST>(qualtype, expression(8)), string(6)));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1312 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 88: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = makeAstNode<QualifiedTypeAST>
|
|
|
|
|
(sym(1).type_qualifier.qualifier, (TypeAST *)0,
|
2010-11-18 13:01:27 +10:00
|
|
|
sym(1).type_qualifier.layout_list);
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TypeDeclarationAST>(type);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1322 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 89: {
|
2010-11-18 13:01:27 +10:00
|
|
|
function(1)->finishParams();
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1329 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 90: {
|
2010-11-18 13:01:27 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1336 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 91: {
|
2010-11-18 13:01:27 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1343 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 92: {
|
2010-11-25 12:19:57 +01:00
|
|
|
function(1)->params = makeAstNode< List<ParameterDeclarationAST *> >
|
2010-11-18 13:01:27 +10:00
|
|
|
(sym(2).param_declaration);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1351 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 93: {
|
2010-11-25 12:19:57 +01:00
|
|
|
function(1)->params = makeAstNode< List<ParameterDeclarationAST *> >
|
2010-11-18 13:01:27 +10:00
|
|
|
(function(1)->params, sym(3).param_declaration);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1359 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 94: {
|
2010-11-25 12:19:57 +01:00
|
|
|
function(1) = makeAstNode<FunctionDeclarationAST>(type(1), string(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1366 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 95: {
|
2010-11-17 14:46:11 +10:00
|
|
|
sym(1).param_declarator.type = type(1);
|
|
|
|
|
sym(1).param_declarator.name = string(2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1374 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 96: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).param_declarator.type = makeAstNode<ArrayTypeAST>(type(1), expression(4));
|
2010-11-17 14:46:11 +10:00
|
|
|
sym(1).param_declarator.name = string(2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1382 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 97: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ParameterDeclarationAST>
|
|
|
|
|
(makeAstNode<QualifiedTypeAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).qualifier, sym(3).param_declarator.type,
|
|
|
|
|
(List<LayoutQualifier *> *)0),
|
2010-11-25 12:19:57 +01:00
|
|
|
ParameterDeclarationAST::Qualifier(sym(2).qualifier),
|
2010-11-17 14:46:11 +10:00
|
|
|
sym(3).param_declarator.name);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1394 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 98: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ParameterDeclarationAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(2).param_declarator.type,
|
2010-11-25 12:19:57 +01:00
|
|
|
ParameterDeclarationAST::Qualifier(sym(1).qualifier),
|
2010-11-17 14:46:11 +10:00
|
|
|
sym(2).param_declarator.name);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1404 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 99: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ParameterDeclarationAST>
|
|
|
|
|
(makeAstNode<QualifiedTypeAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).qualifier, type(3), (List<LayoutQualifier *> *)0),
|
2010-11-25 12:19:57 +01:00
|
|
|
ParameterDeclarationAST::Qualifier(sym(2).qualifier),
|
2010-11-18 15:57:44 +10:00
|
|
|
(const QString *)0);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1415 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 100: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ParameterDeclarationAST>
|
|
|
|
|
(type(2), ParameterDeclarationAST::Qualifier(sym(1).qualifier),
|
2010-11-18 15:57:44 +10:00
|
|
|
(const QString *)0);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1424 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 101: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = ParameterDeclarationAST::In;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1431 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 102: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = ParameterDeclarationAST::In;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1438 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 103: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = ParameterDeclarationAST::Out;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1445 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 104: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = ParameterDeclarationAST::InOut;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1452 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 105: {
|
2010-11-17 14:46:11 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1459 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 106: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1467 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 107: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list);
|
|
|
|
|
DeclarationAST *decl = makeAstNode<VariableDeclarationAST>(type, string(3));
|
|
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration_list, decl);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1477 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 108: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list);
|
|
|
|
|
type = makeAstNode<ArrayTypeAST>(type);
|
|
|
|
|
DeclarationAST *decl = makeAstNode<VariableDeclarationAST>(type, string(3));
|
|
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration_list, decl);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1488 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 109: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list);
|
|
|
|
|
type = makeAstNode<ArrayTypeAST>(type, expression(5));
|
|
|
|
|
DeclarationAST *decl = makeAstNode<VariableDeclarationAST>(type, string(3));
|
|
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration_list, decl);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1499 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 110: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list);
|
|
|
|
|
type = makeAstNode<ArrayTypeAST>(type);
|
|
|
|
|
DeclarationAST *decl = makeAstNode<VariableDeclarationAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(type, string(3), expression(7));
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration_list, decl);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1511 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 111: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list);
|
|
|
|
|
type = makeAstNode<ArrayTypeAST>(type, expression(5));
|
|
|
|
|
DeclarationAST *decl = makeAstNode<VariableDeclarationAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(type, string(3), expression(8));
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration_list, decl);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1523 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 112: {
|
2010-11-25 12:19:57 +01:00
|
|
|
TypeAST *type = VariableDeclarationAST::declarationType(sym(1).declaration_list);
|
|
|
|
|
DeclarationAST *decl = makeAstNode<VariableDeclarationAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(type, string(3), expression(5));
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-17 14:46:11 +10:00
|
|
|
(sym(1).declaration_list, decl);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1534 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 113: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TypeDeclarationAST>(type(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1541 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 114: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<VariableDeclarationAST>(type(1), string(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1548 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 115: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<VariableDeclarationAST>
|
|
|
|
|
(makeAstNode<ArrayTypeAST>(type(1)), string(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1556 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 116: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<VariableDeclarationAST>
|
|
|
|
|
(makeAstNode<ArrayTypeAST>(type(1), expression(4)), string(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1564 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 117: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<VariableDeclarationAST>
|
|
|
|
|
(makeAstNode<ArrayTypeAST>(type(1)), string(2), expression(6));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1572 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 118: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<VariableDeclarationAST>
|
|
|
|
|
(makeAstNode<ArrayTypeAST>(type(1), expression(4)),
|
2010-11-17 14:46:11 +10:00
|
|
|
string(2), expression(7));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1581 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 119: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<VariableDeclarationAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(type(1), string(2), expression(4));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1589 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 120: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<InvariantDeclarationAST>(string(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1596 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 121: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<QualifiedTypeAST>(0, type(1), (List<LayoutQualifier *> *)0);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1603 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 122: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<QualifiedTypeAST>
|
2010-11-15 15:02:21 +10:00
|
|
|
(sym(1).type_qualifier.qualifier, type(2),
|
|
|
|
|
sym(1).type_qualifier.layout_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1612 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 123: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Invariant;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1619 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 124: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Smooth;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1626 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 125: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Flat;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1633 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 126: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::NoPerspective;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1640 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 127: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1) = sym(3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1647 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 128: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).layout_list = makeAstNode< List<LayoutQualifier *> >(sym(1).layout);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1654 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 129: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).layout_list = makeAstNode< List<LayoutQualifier *> >(sym(1).layout_list, sym(3).layout);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1661 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 130: {
|
2010-11-18 15:57:44 +10:00
|
|
|
sym(1).layout = makeAstNode<LayoutQualifier>(string(1), (const QString *)0);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1668 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 131: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).layout = makeAstNode<LayoutQualifier>(string(1), string(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1675 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 132: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Const;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1682 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 133: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.qualifier = sym(1).qualifier;
|
|
|
|
|
sym(1).type_qualifier.layout_list = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1690 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 134: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.layout_list = sym(1).layout_list;
|
|
|
|
|
sym(1).type_qualifier.qualifier = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1698 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 135: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.layout_list = sym(1).layout_list;
|
|
|
|
|
sym(1).type_qualifier.qualifier = sym(2).qualifier;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1706 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 136: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.qualifier = sym(1).qualifier | sym(2).qualifier;
|
|
|
|
|
sym(1).type_qualifier.layout_list = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1714 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 137: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.qualifier = sym(1).qualifier;
|
|
|
|
|
sym(1).type_qualifier.layout_list = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1722 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 138: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.qualifier = sym(1).qualifier | sym(2).qualifier;
|
|
|
|
|
sym(1).type_qualifier.layout_list = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1730 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 139: {
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.qualifier = sym(1).qualifier | sym(2).qualifier | sym(3).qualifier;
|
|
|
|
|
sym(1).type_qualifier.layout_list = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1738 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 140: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).type_qualifier.qualifier = QualifiedTypeAST::Invariant;
|
2010-11-15 15:02:21 +10:00
|
|
|
sym(1).type_qualifier.layout_list = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1746 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 141: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Const;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1753 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 142: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Attribute;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1760 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 143: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Varying;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1767 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 144: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::CentroidVarying;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1774 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 145: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::In;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1781 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 146: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Out;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1788 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 147: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::CentroidIn;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1795 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 148: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::CentroidOut;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1802 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 149: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::PatchIn;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1809 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 150: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::PatchOut;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1816 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 151: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::SampleIn;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1823 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 152: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::SampleOut;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1830 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 153: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).qualifier = QualifiedTypeAST::Uniform;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1837 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 154: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1844 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 155: {
|
2010-11-12 10:23:46 +10:00
|
|
|
if (!type(2)->setPrecision(sym(1).precision)) {
|
|
|
|
|
// TODO: issue an error about precision not allowed on this type.
|
|
|
|
|
}
|
|
|
|
|
ast(1) = type(2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1854 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 156: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1861 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 157: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ArrayTypeAST>(type(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1868 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 158: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ArrayTypeAST>(type(1), expression(3));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1875 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 159: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_VOID);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1882 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 160: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_FLOAT);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1889 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 161: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DOUBLE);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1896 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 162: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_INT);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1903 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 163: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_UINT);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1910 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 164: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_BOOL);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1917 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 165: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_VEC2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1924 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 166: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_VEC3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1931 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 167: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_VEC4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1938 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 168: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DVEC2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1945 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 169: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DVEC3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1952 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 170: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DVEC4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1959 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 171: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_BVEC2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1966 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 172: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_BVEC3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1973 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 173: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_BVEC4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1980 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 174: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_IVEC2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1987 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 175: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_IVEC3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 1994 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 176: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_IVEC4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2001 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 177: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_UVEC2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2008 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 178: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_UVEC3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2015 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 179: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_UVEC4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2022 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 180: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2029 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 181: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2036 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 182: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2043 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 183: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2050 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 184: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT2X3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2057 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 185: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT2X4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2064 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 186: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT3X2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2071 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 187: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2078 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 188: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT3X4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2085 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 189: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT4X2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2092 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 190: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT4X3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2099 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 191: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_MAT4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2106 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 192: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2113 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 193: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2120 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 194: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2127 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 195: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2134 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 196: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT2X3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2141 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 197: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT2X4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2148 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 198: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT3X2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2155 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 199: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2162 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 200: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT3X4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2169 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 201: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT4X2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2176 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 202: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT4X3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2183 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 203: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_DMAT4);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2190 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 204: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER1D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2197 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 205: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2204 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 206: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER3D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2211 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 207: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLERCUBE);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2218 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 208: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER1DSHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2225 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 209: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DSHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2232 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 210: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLERCUBESHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2239 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 211: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER1DARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2246 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 212: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2253 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 213: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER1DARRAYSHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2260 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 214: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DARRAYSHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2267 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 215: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLERCUBEARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2274 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 216: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLERCUBEARRAYSHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2281 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 217: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER1D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2288 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 218: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER2D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2295 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 219: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER3D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2302 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 220: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLERCUBE);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2309 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 221: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER1DARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2316 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 222: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER2DARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2323 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 223: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLERCUBEARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2330 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 224: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER1D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2337 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 225: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER2D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2344 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 226: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER3D);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2351 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 227: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLERCUBE);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2358 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 228: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER1DARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2365 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 229: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER2DARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2372 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 230: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLERCUBEARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2379 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 231: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DRECT);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2386 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 232: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DRECTSHADOW);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2393 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 233: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER2DRECT);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2400 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 234: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER2DRECT);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2407 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 235: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLERBUFFER);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2414 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 236: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLERBUFFER);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2421 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 237: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLERBUFFER);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2428 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 238: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DMS);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2435 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 239: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER2DMS);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2442 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 240: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER2DMS);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2449 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 241: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_SAMPLER2DMSARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2456 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 242: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_ISAMPLER2DMSARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2463 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 243: {
|
2010-11-29 13:04:54 +10:00
|
|
|
ast(1) = makeBasicType(T_USAMPLER2DMSARRAY);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2470 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 244: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2477 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 245: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<NamedTypeAST>(string(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2484 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 246: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).precision = TypeAST::Highp;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2491 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 247: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).precision = TypeAST::Mediump;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2498 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 248: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).precision = TypeAST::Lowp;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2505 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 249: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<StructTypeAST>(string(2), sym(4).field_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2512 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 250: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<StructTypeAST>(sym(3).field_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2519 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 251: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2526 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 252: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).field_list = appendLists(sym(1).field_list, sym(2).field_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2533 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 253: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field_list = StructTypeAST::fixInnerTypes(type(1), sym(2).field_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2540 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 254: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field_list = StructTypeAST::fixInnerTypes
|
|
|
|
|
(makeAstNode<QualifiedTypeAST>
|
2010-11-15 15:02:21 +10:00
|
|
|
(sym(1).type_qualifier.qualifier, type(2),
|
|
|
|
|
sym(1).type_qualifier.layout_list), sym(3).field_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2550 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 255: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field_list = makeAstNode< List<StructTypeAST::Field *> >(sym(1).field);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2558 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 256: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field_list = makeAstNode< List<StructTypeAST::Field *> >(sym(1).field_list, sym(3).field);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2565 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 257: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field = makeAstNode<StructTypeAST::Field>(string(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2572 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 258: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field = makeAstNode<StructTypeAST::Field>
|
|
|
|
|
(string(1), makeAstNode<ArrayTypeAST>((TypeAST *)0));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2580 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 259: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).field = makeAstNode<StructTypeAST::Field>
|
|
|
|
|
(string(1), makeAstNode<ArrayTypeAST>((TypeAST *)0, expression(3)));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2588 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 260: {
|
2010-11-17 14:46:11 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2595 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 261: {
|
2010-11-26 10:06:05 +10:00
|
|
|
ast(1) = makeAstNode<DeclarationStatementAST>(sym(1).declaration);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2602 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 262: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2609 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 263: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2616 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 264: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2623 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 265: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2630 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 266: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2637 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 267: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2644 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 268: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2651 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 269: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2658 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 270: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2665 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 271: {
|
2010-11-29 17:21:47 +01:00
|
|
|
CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>();
|
|
|
|
|
stmt->start = tokenAt(location(1)).begin();
|
|
|
|
|
stmt->end = tokenAt(location(2)).end();
|
|
|
|
|
ast(1) = stmt;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2675 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 272: {
|
2010-11-29 17:21:47 +01:00
|
|
|
CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>(sym(2).statement_list);
|
|
|
|
|
stmt->start = tokenAt(location(1)).begin();
|
|
|
|
|
stmt->end = tokenAt(location(3)).end();
|
|
|
|
|
ast(1) = stmt;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2685 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 273: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2692 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 274: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2699 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 275: {
|
2010-11-29 17:21:47 +01:00
|
|
|
CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>();
|
|
|
|
|
stmt->start = tokenAt(location(1)).begin();
|
|
|
|
|
stmt->end = tokenAt(location(2)).end();
|
|
|
|
|
ast(1) = stmt;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2709 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 276: {
|
2010-11-29 17:21:47 +01:00
|
|
|
CompoundStatementAST *stmt = makeAstNode<CompoundStatementAST>(sym(2).statement_list);
|
|
|
|
|
stmt->start = tokenAt(location(1)).begin();
|
|
|
|
|
stmt->end = tokenAt(location(3)).end();
|
|
|
|
|
ast(1) = stmt;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2719 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 277: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).statement_list = makeAstNode< List<StatementAST *> >(sym(1).statement);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2726 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 278: {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).statement_list = makeAstNode< List<StatementAST *> >(sym(1).statement_list, sym(2).statement);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2733 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 279: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<CompoundStatementAST>(); // Empty statement
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2740 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 280: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ExpressionStatementAST>(expression(1));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2747 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 281: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<IfStatementAST>(expression(3), sym(5).ifstmt.thenClause, sym(5).ifstmt.elseClause);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2754 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 282: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).ifstmt.thenClause = statement(1);
|
|
|
|
|
sym(1).ifstmt.elseClause = statement(3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2762 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 283: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).ifstmt.thenClause = statement(1);
|
|
|
|
|
sym(1).ifstmt.elseClause = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2770 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 284: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2777 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 285: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<DeclarationExpressionAST>
|
2010-11-17 14:46:11 +10:00
|
|
|
(type(1), string(2), expression(4));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2785 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 286: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<SwitchStatementAST>(expression(3), statement(6));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2792 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 287: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<CompoundStatementAST>();
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2799 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 288: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<CompoundStatementAST>(sym(1).statement_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2806 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 289: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<CaseLabelStatementAST>(expression(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2813 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 290: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<CaseLabelStatementAST>();
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2820 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 291: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<WhileStatementAST>(expression(3), statement(5));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2827 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 292: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<DoStatementAST>(statement(2), expression(5));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2834 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 293: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ForStatementAST>(statement(3), sym(4).forstmt.condition, sym(4).forstmt.increment, statement(6));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2841 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 294: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2848 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 295: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2855 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 296: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2862 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 297: {
|
2010-11-12 10:23:46 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2869 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 298: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).forstmt.condition = expression(1);
|
|
|
|
|
sym(1).forstmt.increment = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2877 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 299: {
|
2010-11-12 10:23:46 +10:00
|
|
|
sym(1).forstmt.condition = expression(1);
|
|
|
|
|
sym(1).forstmt.increment = expression(3);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2885 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 300: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<JumpStatementAST>(AST::Kind_Continue);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2892 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 301: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<JumpStatementAST>(AST::Kind_Break);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2899 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 302: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ReturnStatementAST>();
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2906 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 303: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<ReturnStatementAST>(expression(2));
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2913 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 304: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<JumpStatementAST>(AST::Kind_Discard);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2920 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 305: {
|
2010-11-25 12:19:57 +01:00
|
|
|
ast(1) = makeAstNode<TranslationUnitAST>(sym(1).declaration_list);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2927 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 306: {
|
2010-11-15 15:02:21 +10:00
|
|
|
if (sym(1).declaration) {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-15 15:02:21 +10:00
|
|
|
(sym(1).declaration);
|
|
|
|
|
} else {
|
|
|
|
|
sym(1).declaration_list = 0;
|
|
|
|
|
}
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2939 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 307: {
|
2010-11-15 15:02:21 +10:00
|
|
|
if (sym(1).declaration_list && sym(2).declaration) {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-15 15:02:21 +10:00
|
|
|
(sym(1).declaration_list, sym(2).declaration);
|
|
|
|
|
} else if (!sym(1).declaration_list) {
|
|
|
|
|
if (sym(2).declaration) {
|
2010-11-25 12:19:57 +01:00
|
|
|
sym(1).declaration_list = makeAstNode< List<DeclarationAST *> >
|
2010-11-15 15:02:21 +10:00
|
|
|
(sym(2).declaration);
|
|
|
|
|
} else {
|
|
|
|
|
sym(1).declaration_list = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2956 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 308: {
|
2010-11-18 13:01:27 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2963 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 309: {
|
2010-11-17 14:46:11 +10:00
|
|
|
// nothing to do.
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2970 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 310: {
|
2010-11-15 15:02:21 +10:00
|
|
|
ast(1) = 0;
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2977 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 311: {
|
2010-11-18 13:01:27 +10:00
|
|
|
function(1)->body = statement(2);
|
2010-11-11 12:01:37 +01:00
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2984 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
case 312: {
|
|
|
|
|
ast(1) = 0;
|
|
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2992 "./glsl.g"
|
2010-11-29 17:21:47 +01:00
|
|
|
|
|
|
|
|
case 313: {
|
|
|
|
|
ast(1) = ast(2);
|
|
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 2999 "./glsl.g"
|
2010-11-29 17:21:47 +01:00
|
|
|
|
|
|
|
|
case 314: {
|
|
|
|
|
ast(1) = ast(2);
|
|
|
|
|
} break;
|
|
|
|
|
|
2010-11-30 15:47:03 +01:00
|
|
|
#line 3005 "./glsl.g"
|
2010-11-11 12:01:37 +01:00
|
|
|
|
|
|
|
|
} // end switch
|
|
|
|
|
} // end Parser::reduce()
|