summaryrefslogtreecommitdiffstats
path: root/util/qlalr/examples/glsl
diff options
context:
space:
mode:
Diffstat (limited to 'util/qlalr/examples/glsl')
-rw-r--r--util/qlalr/examples/glsl/build.sh47
-rwxr-xr-xutil/qlalr/examples/glsl/glsl4
-rw-r--r--util/qlalr/examples/glsl/glsl-lex.l245
-rw-r--r--util/qlalr/examples/glsl/glsl.g671
-rw-r--r--util/qlalr/examples/glsl/glsl.pro4
5 files changed, 0 insertions, 971 deletions
diff --git a/util/qlalr/examples/glsl/build.sh b/util/qlalr/examples/glsl/build.sh
deleted file mode 100644
index 122431ba4e..0000000000
--- a/util/qlalr/examples/glsl/build.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/bin/sh
-#############################################################################
-##
-## Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-## Contact: http://www.qt-project.org/legal
-##
-## This file is the build configuration utility of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:LGPL$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and Digia. For licensing terms and
-## conditions see http://qt.digia.com/licensing. For further information
-## use the contact form at http://qt.digia.com/contact-us.
-##
-## 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.
-##
-## In addition, as a special exception, Digia gives you certain additional
-## rights. These rights are described in the Digia Qt LGPL Exception
-## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU
-## General Public License version 3.0 as published by the Free Software
-## Foundation and appearing in the file LICENSE.GPL included in the
-## packaging of this file. Please review the following information to
-## ensure the GNU General Public License version 3.0 requirements will be
-## met: http://www.gnu.org/copyleft/gpl.html.
-##
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
-
-${FLEX-flex} -oglsl-lex.incl glsl-lex.l
-${QLALR-qlalr} glsl.g
-
-qmake
-make
diff --git a/util/qlalr/examples/glsl/glsl b/util/qlalr/examples/glsl/glsl
deleted file mode 100755
index c19018f985..0000000000
--- a/util/qlalr/examples/glsl/glsl
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-me=$(dirname $0)
-${CPP-cpp} -nostdinc $* | $me/glsl.bin
diff --git a/util/qlalr/examples/glsl/glsl-lex.l b/util/qlalr/examples/glsl/glsl-lex.l
deleted file mode 100644
index 16ff333b79..0000000000
--- a/util/qlalr/examples/glsl/glsl-lex.l
+++ /dev/null
@@ -1,245 +0,0 @@
-
-%{
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the QLALR tool of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** 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.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights. These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <cassert>
-#define YY_DECL int GLSLParser::nextToken()
-%}
-
-%option noyywrap
-
-hex [0-9a-fA-F]
-dec [1-9][0-9]*
-oct [0-7]
-digit [0-9]
-
-fract {digit}*\.{digit}+|{digit}+\.
-exp [eE][+-]?{digit}+
-
-hexfract {hex}*\.{hex}+|{hex}+\.
-binexp [pP][+-]?{digit}+
-
-icst ({dec}|0{oct}*|0[xX]{hex}+)
-
-%%
-
-[\n] { ++context.line; }
-[ \t\r]+ { /* skip */ }
-
-"+=" { return ADD_ASSIGN; }
-"&" { return AMPERSAND; }
-"&=" { return AND_ASSIGN; }
-"&&" { return AND_OP; }
-"attribute" { return ATTRIBUTE; }
-"!" { return BANG; }
-"bool" { return BOOL; }
-"true" { return BOOLCONSTANT; }
-"false" { return BOOLCONSTANT; }
-"break" { return BREAK; }
-"bvec2" { return BVEC2; }
-"bvec3" { return BVEC3; }
-"bvec4" { return BVEC4; }
-":" { return COLON; }
-"," { return COMMA; }
-"const" { return CONST; }
-"continue" { return CONTINUE; }
-"-" { return DASH; }
-"--" { return DEC_OP; }
-"discard" { return DISCARD; }
-"/=" { return DIV_ASSIGN; }
-"do" { return DO; }
-"." { return DOT; }
-"else" { return ELSE; }
-"=" { return EQUAL; }
-"==" { return EQ_OP; }
-"float" { return FLOAT; }
-"for" { return FOR; }
-">=" { return GE_OP; }
-"if" { return IF; }
-"in" { return IN; }
-"++" { return INC_OP; }
-"inout" { return INOUT; }
-"int" { return INT; }
-"ivec2" { return IVEC2; }
-"ivec3" { return IVEC3; }
-"ivec4" { return IVEC4; }
-"<" { return LEFT_ANGLE; }
-"<<=" { return LEFT_ASSIGN; }
-"{" { return LEFT_BRACE; }
-"[" { return LEFT_BRACKET; }
-"<<" { return LEFT_OP; }
-"(" { return LEFT_PAREN; }
-"<=" { return LE_OP; }
-"mat2" { return MAT2; }
-"mat3" { return MAT3; }
-"mat4" { return MAT4; }
-"%=" { return MOD_ASSIGN; }
-"*=" { return MUL_ASSIGN; }
-"!=" { return NE_OP; }
-"|=" { return OR_ASSIGN; }
-"||" { return OR_OP; }
-"out" { return OUT; }
-"%" { return PERCENT; }
-"+" { return PLUS; }
-"?" { return QUESTION; }
-"return" { return RETURN; }
-">" { return RIGHT_ANGLE; }
-">>=" { return RIGHT_ASSIGN; }
-"}" { return RIGHT_BRACE; }
-"]" { return RIGHT_BRACKET; }
-">>" { return RIGHT_OP; }
-")" { return RIGHT_PAREN; }
-"sampler1D" { return SAMPLER1D; }
-"sampler1DShadow" { return SAMPLER1DSHADOW; }
-"sampler2D" { return SAMPLER2D; }
-"sampler2DShadow" { return SAMPLER2DSHADOW; }
-"sampler3D" { return SAMPLER3D; }
-"samplerCube" { return SAMPLERCUBE; }
-";" { return SEMICOLON; }
-"/" { return SLASH; }
-"*" { return STAR; }
-"struct" { return STRUCT; }
-"-=" { return SUB_ASSIGN; }
-"~" { return TILDE; }
-"uniform" { return UNIFORM; }
-"varying" { return VARYING; }
-"vec2" { return VEC2; }
-"vec3" { return VEC3; }
-"vec4" { return VEC4; }
-"|" { return VERTICAL_BAR; }
-"void" { return VOID; }
-"while" { return WHILE; }
-"^=" { return XOR_ASSIGN; }
-"^" { return XOR_OP; }
-"highp" { return HIGH_PRECISION; }
-"mediump" { return MEDIUM_PRECISION; }
-"lowp" { return LOW_PRECISION; }
-
-#[ \t]+[0-9]+.* {
- char *eptr = 0;
- context.line = (int) strtod(&yytext[1], &eptr);
- QString fn = QString::fromUtf8(eptr).trimmed();
- if (fn.length() > 2)
- context.fileName = fn.mid(1, fn.length()-2);
-}
-
-#.* {
- /* skip */
-}
-
-[_a-zA-Z][_a-zA-Z0-9]* {
- yylval.s = intern (yytext);
-
- if (isTypename (yylval.s))
- return TYPE_NAME;
-
- return IDENTIFIER;
-}
-
-{icst} {
- yylval.i = (int) strtol (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}[uU] {
- yylval.u = (unsigned) strtoul (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}[uU][lL] {
- yylval.ul = strtoul (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}[lL][uU] {
- yylval.ul = strtoul (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}[lL] {
- yylval.l = strtol (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}[uU](ll|LL) {
- yylval.l = strtoull (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}(ll|LL) {
- yylval.l = strtoll (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{icst}(ll|LL)[uU] {
- yylval.l = strtoull (yytext, 0, 0);
- return INTCONSTANT;
-}
-
-{fract}{exp}?[flFL]? {
- yylval.f = strtof (yytext, 0);
- return FLOATCONSTANT;
-}
-
-{digit}+{exp}[flFL]? {
- yylval.f = strtof (yytext, 0);
- return FLOATCONSTANT;
-}
-
-0[xX]{hexfract}{binexp}[flFL]? {
- yylval.f = strtof (yytext, 0);
- return FLOATCONSTANT;
-}
-
-0[xX]{hex}+{binexp}[flFL]? {
- yylval.f = strtof (yytext, 0);
- return FLOATCONSTANT;
-}
-
-. {
- fprintf (stderr, "invalid char: %d\n", yytext [0]);
- return ERROR;
-}
-
-
-%%
-
diff --git a/util/qlalr/examples/glsl/glsl.g b/util/qlalr/examples/glsl/glsl.g
deleted file mode 100644
index 64b1b0b1e5..0000000000
--- a/util/qlalr/examples/glsl/glsl.g
+++ /dev/null
@@ -1,671 +0,0 @@
-----------------------------------------------------------------------------
---
--- Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
--- Contact: http://www.qt-project.org/legal
---
--- This file is part of the QtCore module of the Qt Toolkit.
---
--- $QT_BEGIN_LICENSE:LGPL$
--- Commercial License Usage
--- Licensees holding valid commercial Qt licenses may use this file in
--- accordance with the commercial license agreement provided with the
--- Software or, alternatively, in accordance with the terms contained in
--- a written agreement between you and Digia. For licensing terms and
--- conditions see http://qt.digia.com/licensing. For further information
--- use the contact form at http://qt.digia.com/contact-us.
---
--- 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.
---
--- In addition, as a special exception, Digia gives you certain additional
--- rights. These rights are described in the Digia Qt LGPL Exception
--- version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
---
--- GNU General Public License Usage
--- Alternatively, this file may be used under the terms of the GNU
--- General Public License version 3.0 as published by the Free Software
--- Foundation and appearing in the file LICENSE.GPL included in the
--- packaging of this file. Please review the following information to
--- ensure the GNU General Public License version 3.0 requirements will be
--- met: http://www.gnu.org/copyleft/gpl.html.
---
---
--- $QT_END_LICENSE$
---
-----------------------------------------------------------------------------
-
-%parser GLSLParserTable
-%merged_output glsl.cpp
-
-%token ADD_ASSIGN
-%token AMPERSAND
-%token AND_ASSIGN
-%token AND_OP
-%token ATTRIBUTE
-%token BANG
-%token BOOL
-%token BOOLCONSTANT
-%token BREAK
-%token BVEC2
-%token BVEC3
-%token BVEC4
-%token CARET
-%token COLON
-%token COMMA
-%token CONST
-%token CONTINUE
-%token DASH
-%token DEC_OP
-%token DISCARD
-%token DIV_ASSIGN
-%token DO
-%token DOT
-%token ELSE
-%token EQUAL
-%token EQ_OP
-%token FLOAT
-%token FLOATCONSTANT
-%token FOR
-%token GE_OP
-%token IDENTIFIER
-%token IF
-%token IN
-%token INC_OP
-%token INOUT
-%token INT
-%token INTCONSTANT
-%token IVEC2
-%token IVEC3
-%token IVEC4
-%token LEFT_ANGLE
-%token LEFT_ASSIGN
-%token LEFT_BRACE
-%token LEFT_BRACKET
-%token LEFT_OP
-%token LEFT_PAREN
-%token LE_OP
-%token MAT2
-%token MAT3
-%token MAT4
-%token MOD_ASSIGN
-%token MUL_ASSIGN
-%token NE_OP
-%token OR_ASSIGN
-%token OR_OP
-%token OUT
-%token PERCENT
-%token PLUS
-%token QUESTION
-%token RETURN
-%token RIGHT_ANGLE
-%token RIGHT_ASSIGN
-%token RIGHT_BRACE
-%token RIGHT_BRACKET
-%token RIGHT_OP
-%token RIGHT_PAREN
-%token SAMPLER1D
-%token SAMPLER1DSHADOW
-%token SAMPLER2D
-%token SAMPLER2DSHADOW
-%token SAMPLER3D
-%token SAMPLERCUBE
-%token SEMICOLON
-%token SLASH
-%token STAR
-%token STRUCT
-%token SUB_ASSIGN
-%token TILDE
-%token TYPE_NAME
-%token UNIFORM
-%token VARYING
-%token VEC2
-%token VEC3
-%token VEC4
-%token VERTICAL_BAR
-%token VOID
-%token WHILE
-%token XOR_ASSIGN
-%token XOR_OP
-%token ERROR
-%token HIGH_PRECISION
-%token MEDIUM_PRECISION
-%token LOW_PRECISION
-%start translation_unit
-
-
-/:
-
-#include <QtCore>
-
-class GLSLParser: protected $table
-{
-public:
- union Value {
- int i;
- unsigned u;
- unsigned long ul;
- unsigned long long ull;
- long l;
- double d;
- float f;
- const QString *s;
- // ### more...
- };
-
-public:
- GLSLParser();
- ~GLSLParser();
-
- bool parse();
-
-protected:
- inline void reallocateStack();
-
- inline Value &sym(int index)
- { return sym_stack [tos + index - 1]; }
-
- int nextToken();
-
- bool isTypename(const QString *s) const
- {
- return types.contains(s);
- }
-
- inline const QString *intern(const QString &s)
- { return &*string_repository.insert(s); }
-
-protected:
- int tos;
- int stack_size;
- Value *sym_stack;
- int *state_stack;
- Value yylval;
- QSet<QString> string_repository;
- QSet<const QString*> types;
-
- struct /*Context*/ {
- int line;
- const QString *function_name;
- QString fileName;
-
- void init()
- {
- line = 1;
- function_name = 0;
- fileName.clear();
- }
- } context;
-};
-
-inline void GLSLParser::reallocateStack()
-{
- if (! stack_size)
- stack_size = 128;
- else
- stack_size <<= 1;
-
- sym_stack = reinterpret_cast<Value*> (realloc(sym_stack, stack_size * sizeof(Value)));
- state_stack = reinterpret_cast<int*> (realloc(state_stack, stack_size * sizeof(int)));
-}
-
-:/
-
-
-/.
-
-GLSLParser::GLSLParser():
- tos(0),
- stack_size(0),
- sym_stack(0),
- state_stack(0)
-{
-}
-
-GLSLParser::~GLSLParser()
-{
- if (stack_size) {
- free(sym_stack);
- free(state_stack);
- }
-}
-
-bool GLSLParser::parse()
-{
- const int INITIAL_STATE = 0;
-
- int yytoken = -1;
-
- reallocateStack();
-
- context.init();
- tos = 0;
- state_stack[++tos] = INITIAL_STATE;
-
- while (true)
- {
- if (yytoken == -1 && - TERMINAL_COUNT != action_index [state_stack [tos]])
- yytoken = nextToken();
-
- int act = t_action (state_stack [tos], yytoken);
-
- if (act == ACCEPT_STATE) {
- return true;
- }
-
- else if (act > 0)
- {
- if (++tos == stack_size)
- reallocateStack();
-
- sym_stack [tos] = yylval;
- state_stack [tos] = act;
- yytoken = -1;
- }
-
- else if (act < 0)
- {
- int r = - act - 1;
-
- int ridx = rule_index [r];
- printf ("*** reduce using rule %d %s ::=", r + 1, spell[rule_info [ridx]]);
- ++ridx;
- for (int i = ridx; i < ridx + rhs [r]; ++i)
- {
- int symbol = rule_info [i];
- if (const char *name = spell [symbol])
- printf (" %s", name);
- else
- printf (" #%d", symbol);
- }
- printf ("\n");
-
- tos -= rhs [r];
- act = state_stack [tos++];
-
- switch (r) {
-./
-
-
-translation_unit ::= external_declaration ;
-translation_unit ::= translation_unit external_declaration ;
-
-variable_identifier ::= IDENTIFIER ;
-
-primary_expression ::= variable_identifier ;
-primary_expression ::= INTCONSTANT ;
-primary_expression ::= FLOATCONSTANT ;
-primary_expression ::= BOOLCONSTANT ;
-primary_expression ::= LEFT_PAREN expression RIGHT_PAREN ;
-
-
-postfix_expression ::= primary_expression ;
-postfix_expression ::= postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET ;
-postfix_expression ::= function_call ;
-postfix_expression ::= postfix_expression DOT IDENTIFIER ;
-postfix_expression ::= postfix_expression DOT TYPE_NAME ;
-postfix_expression ::= postfix_expression INC_OP ;
-postfix_expression ::= postfix_expression DEC_OP ;
-
-
-integer_expression ::= expression ;
-
-function_call ::= function_call_generic ;
-
-function_call_generic ::= function_call_header_with_parameters RIGHT_PAREN ;
-function_call_generic ::= function_call_header_no_parameters RIGHT_PAREN ;
-
-function_call_header_no_parameters ::= function_call_header VOID ;
-function_call_header_no_parameters ::= function_call_header ;
-
-
-function_call_header_with_parameters ::= function_call_header assignment_expression ;
-function_call_header_with_parameters ::= function_call_header_with_parameters COMMA assignment_expression ;
-
-function_call_header ::= function_identifier LEFT_PAREN ;
-
-function_identifier ::= constructor_identifier ;
-function_identifier ::= IDENTIFIER ;
-
-
-constructor_identifier ::= FLOAT ;
-constructor_identifier ::= INT ;
-constructor_identifier ::= BOOL ;
-constructor_identifier ::= VEC2 ;
-constructor_identifier ::= VEC3 ;
-constructor_identifier ::= VEC4 ;
-constructor_identifier ::= BVEC2 ;
-constructor_identifier ::= BVEC3 ;
-constructor_identifier ::= BVEC4 ;
-constructor_identifier ::= IVEC2 ;
-constructor_identifier ::= IVEC3 ;
-constructor_identifier ::= IVEC4 ;
-constructor_identifier ::= MAT2 ;
-constructor_identifier ::= MAT3 ;
-constructor_identifier ::= MAT4 ;
-constructor_identifier ::= TYPE_NAME ;
-
-unary_expression ::= postfix_expression ;
-unary_expression ::= INC_OP unary_expression ;
-unary_expression ::= DEC_OP unary_expression ;
-unary_expression ::= unary_operator unary_expression ;
-
--- Grammar Note: No traditional style type casts.
-
-unary_operator ::= PLUS ;
-unary_operator ::= DASH ;
-unary_operator ::= BANG ;
-unary_operator ::= TILDE ; -- reserved
-
--- Grammar Note: No '*' or '&' unary ops. Pointers are not supported.
-
-multiplicative_expression ::= unary_expression ;
-multiplicative_expression ::= multiplicative_expression STAR unary_expression ;
-multiplicative_expression ::= multiplicative_expression SLASH unary_expression ;
-multiplicative_expression ::= multiplicative_expression PERCENT unary_expression ; -- reserved
-
-
-additive_expression ::= multiplicative_expression ;
-additive_expression ::= additive_expression PLUS multiplicative_expression ;
-additive_expression ::= additive_expression DASH multiplicative_expression ;
-
-shift_expression ::= additive_expression ;
-shift_expression ::= shift_expression LEFT_OP additive_expression ; -- reserved
-shift_expression ::= shift_expression RIGHT_OP additive_expression ; -- reserved
-
-relational_expression ::= shift_expression ;
-relational_expression ::= relational_expression LEFT_ANGLE shift_expression ;
-relational_expression ::= relational_expression RIGHT_ANGLE shift_expression ;
-relational_expression ::= relational_expression LE_OP shift_expression ;
-relational_expression ::= relational_expression GE_OP shift_expression ;
-
-equality_expression ::= relational_expression ;
-equality_expression ::= equality_expression EQ_OP relational_expression ;
-equality_expression ::= equality_expression NE_OP relational_expression ;
-
-and_expression ::= equality_expression ;
-and_expression ::= and_expression AMPERSAND equality_expression ; -- reserved
-
-exclusive_or_expression ::= and_expression ;
-exclusive_or_expression ::= exclusive_or_expression CARET and_expression ; -- reserved
-
-inclusive_or_expression ::= exclusive_or_expression ;
-inclusive_or_expression ::= inclusive_or_expression VERTICAL_BAR exclusive_or_expression ; -- reserved
-
-logical_and_expression ::= inclusive_or_expression ;
-logical_and_expression ::= logical_and_expression AND_OP inclusive_or_expression ;
-
-logical_xor_expression ::= logical_and_expression ;
-logical_xor_expression ::= logical_xor_expression XOR_OP logical_and_expression ;
-
-logical_or_expression ::= logical_xor_expression ;
-logical_or_expression ::= logical_or_expression OR_OP logical_xor_expression ;
-
-conditional_expression ::= logical_or_expression ;
-conditional_expression ::= logical_or_expression QUESTION expression COLON conditional_expression ;
-
-assignment_expression ::= conditional_expression ;
-assignment_expression ::= unary_expression assignment_operator assignment_expression ;
-
-assignment_operator ::= EQUAL ;
-assignment_operator ::= MUL_ASSIGN ;
-assignment_operator ::= DIV_ASSIGN ;
-assignment_operator ::= MOD_ASSIGN ; -- reserved
-assignment_operator ::= ADD_ASSIGN ;
-assignment_operator ::= SUB_ASSIGN ;
-assignment_operator ::= LEFT_ASSIGN ; -- reserved
-assignment_operator ::= RIGHT_ASSIGN ; -- reserved
-assignment_operator ::= AND_ASSIGN ; -- reserved
-assignment_operator ::= XOR_ASSIGN ; -- reserved
-assignment_operator ::= OR_ASSIGN ; -- reserved
-
-expression ::= assignment_expression ;
-expression ::= expression COMMA assignment_expression ;
-
-constant_expression ::= conditional_expression ;
-
-declaration ::= function_prototype SEMICOLON ;
-declaration ::= init_declarator_list SEMICOLON ;
-
-function_prototype ::= function_declarator RIGHT_PAREN ;
-
-function_declarator ::= function_header ;
-function_declarator ::= function_header_with_parameters ;
-
-function_header_with_parameters ::= function_header parameter_declaration ;
-function_header_with_parameters ::= function_header_with_parameters COMMA parameter_declaration ;
-
-function_header ::= fully_specified_type IDENTIFIER LEFT_PAREN ;
-/.
-case $rule_number: {
- context.function_name = sym(2).s;
-} break;
-./
-
-parameter_declarator ::= type_specifier IDENTIFIER ;
-parameter_declarator ::= type_specifier IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ;
-
-parameter_declaration ::= type_qualifier parameter_qualifier parameter_declarator ;
-parameter_declaration ::= parameter_qualifier parameter_declarator ;
-parameter_declaration ::= type_qualifier parameter_qualifier parameter_type_specifier ;
-parameter_declaration ::= parameter_qualifier parameter_type_specifier ;
-
-parameter_qualifier ::= ;
-parameter_qualifier ::= IN ;
-parameter_qualifier ::= OUT ;
-parameter_qualifier ::= INOUT ;
-
-parameter_type_specifier ::= type_specifier ;
-parameter_type_specifier ::= type_specifier LEFT_BRACKET constant_expression RIGHT_BRACKET ;
-
-init_declarator_list ::= single_declaration ;
-init_declarator_list ::= init_declarator_list COMMA IDENTIFIER ;
-init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ;
-init_declarator_list ::= init_declarator_list COMMA IDENTIFIER LEFT_BRACKET constant_expression ;
-init_declarator_list ::= RIGHT_BRACKET ;
-init_declarator_list ::= init_declarator_list COMMA IDENTIFIER EQUAL initializer ;
-
-single_declaration ::= fully_specified_type ;
-single_declaration ::= fully_specified_type IDENTIFIER ;
-single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET RIGHT_BRACKET ;
-single_declaration ::= fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ;
-single_declaration ::= fully_specified_type IDENTIFIER EQUAL initializer ;
-
--- Grammar Note: No 'enum', or 'typedef'.
-
---fully_specified_type ::= type_specifier ;
---fully_specified_type ::= type_qualifier type_specifier ;
-
-fully_specified_type ::= type_specifier ;
-fully_specified_type ::= type_qualifier ;
-fully_specified_type ::= fully_specified_type type_specifier ;
-fully_specified_type ::= fully_specified_type type_qualifier ;
-
-type_qualifier ::= CONST ;
-type_qualifier ::= ATTRIBUTE ; -- Vertex only.
-type_qualifier ::= VARYING ;
-type_qualifier ::= UNIFORM ;
-
-type_specifier ::= type_specifier_no_prec ;
-type_specifier ::= precision_qualifier type_specifier_no_prec ;
-
-type_specifier_no_prec ::= VOID ;
-type_specifier_no_prec ::= FLOAT ;
-type_specifier_no_prec ::= INT ;
-type_specifier_no_prec ::= BOOL ;
-type_specifier_no_prec ::= VEC2 ;
-type_specifier_no_prec ::= VEC3 ;
-type_specifier_no_prec ::= VEC4 ;
-type_specifier_no_prec ::= BVEC2 ;
-type_specifier_no_prec ::= BVEC3 ;
-type_specifier_no_prec ::= BVEC4 ;
-type_specifier_no_prec ::= IVEC2 ;
-type_specifier_no_prec ::= IVEC3 ;
-type_specifier_no_prec ::= IVEC4 ;
-type_specifier_no_prec ::= MAT2 ;
-type_specifier_no_prec ::= MAT3 ;
-type_specifier_no_prec ::= MAT4 ;
-type_specifier_no_prec ::= SAMPLER1D ;
-type_specifier_no_prec ::= SAMPLER2D ;
-type_specifier_no_prec ::= SAMPLER3D ;
-type_specifier_no_prec ::= SAMPLERCUBE ;
-type_specifier_no_prec ::= SAMPLER1DSHADOW ;
-type_specifier_no_prec ::= SAMPLER2DSHADOW ;
-type_specifier_no_prec ::= struct_specifier ;
-type_specifier_no_prec ::= TYPE_NAME ;
-
-precision_qualifier ::= HIGH_PRECISION ;
-precision_qualifier ::= MEDIUM_PRECISION ;
-precision_qualifier ::= LOW_PRECISION ;
-
-struct_specifier ::= STRUCT IDENTIFIER LEFT_BRACE struct_declaration_list RIGHT_BRACE ;
-/.
-case $rule_number: {
- types.insert(sym(2).s);
-} break;
-./
-
-struct_specifier ::= STRUCT LEFT_BRACE struct_declaration_list RIGHT_BRACE ;
-
-struct_declaration_list ::= struct_declaration ;
-struct_declaration_list ::= struct_declaration_list struct_declaration ;
-
-struct_declaration ::= type_specifier struct_declarator_list SEMICOLON ;
-
-struct_declarator_list ::= struct_declarator ;
-struct_declarator_list ::= struct_declarator_list COMMA struct_declarator ;
-
-struct_declarator ::= IDENTIFIER ;
-struct_declarator ::= IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET ;
-
-initializer ::= assignment_expression ;
-
-declaration_statement ::= declaration ;
-
-statement ::= compound_statement ;
-statement ::= simple_statement ;
-
--- Grammar Note: No labeled statements; 'goto' is not supported.
-
-simple_statement ::= declaration_statement ;
-simple_statement ::= expression_statement ;
-simple_statement ::= selection_statement ;
-simple_statement ::= iteration_statement ;
-simple_statement ::= jump_statement ;
-
-compound_statement ::= LEFT_BRACE RIGHT_BRACE ;
-compound_statement ::= LEFT_BRACE statement_list RIGHT_BRACE ;
-
-statement_no_new_scope ::= compound_statement_no_new_scope ;
-statement_no_new_scope ::= simple_statement ;
-
-compound_statement_no_new_scope ::= LEFT_BRACE RIGHT_BRACE ;
-compound_statement_no_new_scope ::= LEFT_BRACE statement_list RIGHT_BRACE ;
-
-statement_list ::= statement ;
-statement_list ::= statement_list statement ;
-
-expression_statement ::= SEMICOLON ;
-expression_statement ::= expression SEMICOLON ;
-
-selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN statement ELSE statement ;
-selection_statement ::= IF LEFT_PAREN expression RIGHT_PAREN statement ;
-
--- Grammar Note: No 'switch'. Switch statements not supported.
-
-condition ::= expression ;
-condition ::= fully_specified_type IDENTIFIER EQUAL initializer ;
-
-iteration_statement ::= WHILE LEFT_PAREN condition RIGHT_PAREN statement_no_new_scope ;
-iteration_statement ::= DO statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON ;
-iteration_statement ::= FOR LEFT_PAREN for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope ;
-
-for_init_statement ::= expression_statement ;
-for_init_statement ::= declaration_statement ;
-
-conditionopt ::= ;
-conditionopt ::= condition ;
-
-for_rest_statement ::= conditionopt SEMICOLON ;
-for_rest_statement ::= conditionopt SEMICOLON expression ;
-
-jump_statement ::= CONTINUE SEMICOLON ;
-jump_statement ::= BREAK SEMICOLON ;
-jump_statement ::= RETURN SEMICOLON ;
-jump_statement ::= RETURN expression SEMICOLON ;
-jump_statement ::= DISCARD SEMICOLON ; -- Fragment shader only.
-
--- Grammar Note: No 'goto'. Gotos are not supported.
-
-external_declaration ::= function_definition ;
-external_declaration ::= declaration ;
-
-function_definition ::= function_prototype compound_statement_no_new_scope ;
-/.
- case $rule_number: { // $rule_name
- qDebug() << "--> function" << *context.function_name;
- } break;
-./
-
-
-
-
-
-/.
- } // switch
-
- state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT);
- }
-
- else
- {
- // ### ERROR RECOVERY HERE
- break;
- }
- }
-
- fprintf (stderr, "%s:%d: Syntax Error\n", qPrintable(context.fileName), context.line);
-
- return false;
-}
-
-#include "glsl-lex.incl"
-
-
-/////////////////////////////
-// entry point
-/////////////////////////////
-int main()
-{
-#if 0 // dump the GLSL grammar
- for (int r = 0; r < GLSLParserTable::RULE_COUNT; ++r)
- {
- int ridx = GLSLParserTable::rule_index [r];
- int rhs = GLSLParserTable::rhs [r];
- printf ("%3d) %s ::=", r + 1, GLSLParserTable::spell[GLSLParserTable::rule_info [ridx]]);
- ++ridx;
- for (int i = ridx; i < ridx + rhs; ++i)
- {
- int symbol = GLSLParserTable::rule_info [i];
- if (const char *name = GLSLParserTable::spell [symbol])
- printf (" %s", name);
- else
- printf (" #%d", symbol);
- }
- printf ("\n");
- }
-#endif
-
- GLSLParser parser;
-
- if (parser.parse())
- qDebug() << "OK";
- else
- qDebug() << "KO";
-}
-
-./
diff --git a/util/qlalr/examples/glsl/glsl.pro b/util/qlalr/examples/glsl/glsl.pro
deleted file mode 100644
index 8ac775f21d..0000000000
--- a/util/qlalr/examples/glsl/glsl.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-QT = core
-TARGET = glsl.bin
-SOURCES += glsl.cpp
-