From 33cf679b6a47b3516d6bd7f77615a28fadf7e656 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Fri, 29 Nov 2019 08:22:41 +0000 Subject: [PATCH] remove qlalr utility documentation and examples Signed-off-by: Ivailo Monev --- util/qlalr/doc/qlalr.qdocconf | 65 -- util/qlalr/doc/src/classic.css | 97 --- util/qlalr/doc/src/images/qt-logo.png | Bin 1369 -> 0 bytes util/qlalr/doc/src/images/trolltech-logo.png | Bin 1512 -> 0 bytes util/qlalr/doc/src/qlalr.qdoc | 106 --- util/qlalr/examples/dummy-xml/dummy-xml.pro | 2 - .../examples/dummy-xml/ll/dummy-xml-ll.cpp | 123 ---- util/qlalr/examples/dummy-xml/xml.g | 241 ------- util/qlalr/examples/glsl/build.sh | 46 -- util/qlalr/examples/glsl/glsl | 4 - util/qlalr/examples/glsl/glsl-lex.l | 245 ------- util/qlalr/examples/glsl/glsl.g | 670 ------------------ util/qlalr/examples/glsl/glsl.pro | 4 - util/qlalr/examples/lambda/COMPILE | 3 - util/qlalr/examples/lambda/lambda.g | 80 --- util/qlalr/examples/lambda/lambda.pro | 3 - util/qlalr/examples/lambda/main.cpp | 199 ------ util/qlalr/examples/qparser/COMPILE | 3 - util/qlalr/examples/qparser/calc.g | 132 ---- util/qlalr/examples/qparser/calc.l | 61 -- util/qlalr/examples/qparser/qparser.cpp | 43 -- util/qlalr/examples/qparser/qparser.h | 144 ---- util/qlalr/examples/qparser/qparser.pro | 4 - 23 files changed, 2275 deletions(-) delete mode 100644 util/qlalr/doc/qlalr.qdocconf delete mode 100644 util/qlalr/doc/src/classic.css delete mode 100644 util/qlalr/doc/src/images/qt-logo.png delete mode 100644 util/qlalr/doc/src/images/trolltech-logo.png delete mode 100644 util/qlalr/doc/src/qlalr.qdoc delete mode 100644 util/qlalr/examples/dummy-xml/dummy-xml.pro delete mode 100644 util/qlalr/examples/dummy-xml/ll/dummy-xml-ll.cpp delete mode 100644 util/qlalr/examples/dummy-xml/xml.g delete mode 100644 util/qlalr/examples/glsl/build.sh delete mode 100755 util/qlalr/examples/glsl/glsl delete mode 100644 util/qlalr/examples/glsl/glsl-lex.l delete mode 100644 util/qlalr/examples/glsl/glsl.g delete mode 100644 util/qlalr/examples/glsl/glsl.pro delete mode 100644 util/qlalr/examples/lambda/COMPILE delete mode 100644 util/qlalr/examples/lambda/lambda.g delete mode 100644 util/qlalr/examples/lambda/lambda.pro delete mode 100644 util/qlalr/examples/lambda/main.cpp delete mode 100644 util/qlalr/examples/qparser/COMPILE delete mode 100644 util/qlalr/examples/qparser/calc.g delete mode 100644 util/qlalr/examples/qparser/calc.l delete mode 100644 util/qlalr/examples/qparser/qparser.cpp delete mode 100644 util/qlalr/examples/qparser/qparser.h delete mode 100644 util/qlalr/examples/qparser/qparser.pro diff --git a/util/qlalr/doc/qlalr.qdocconf b/util/qlalr/doc/qlalr.qdocconf deleted file mode 100644 index db6bba752..000000000 --- a/util/qlalr/doc/qlalr.qdocconf +++ /dev/null @@ -1,65 +0,0 @@ -# Run qdoc from the directory that contains this file. - -project = qlalr -description = qlalr Reference Documentation -url = http://qt.nokia.com/doc/ - -language = Cpp - -# sourcedirs = $PWD/src -sourcedirs = src -sources.fileextensions = "*.qdoc" - -exampledirs = ../examples - -imagedirs = src/images -outputdir = html -codeindent = 1 -extraimages.HTML = qt-logo \ - trolltech-logo - -macro.key = "\\bold" -macro.menu = "\\bold" -macro.gui = "\\bold" -macro.reg.HTML = "®" -macro.raisedaster.HTML = "*" -macro.BR.HTML = "
" -macro.br.HTML = "
" -macro.QD = "\\e{Qt Designer}" -macro.QA = "\\e{Qt Assistant}" -macro.eacute.HTML = "é" -macro.aring.HTML = "å" -macro.oslash.HTML = "ø" -macro.ouml.HTML = "ö" -macro.Auml.HTML = "Ä" -macro.uuml.HTML = "ü" - -HTML.stylesheets = src/classic.css -HTML.postheader = "\n" \ - "\n" \ - "\n" \ - "" \ - "\n" \ - "
" \ - "" \ - "  " \ - "" \ - "Home ·" \ - " " \ - "All Classes ·" \ - " " \ - "Main Classes ·" \ - " " \ - "Grouped Classes ·" \ - " " \ - "Modules ·" \ - " " \ - "Functions" \ - "
" - -HTML.footer = "


\n" \ - "\n" \ - "\n" \ - "\n" \ - "\n" \ - "
Copyright © 2015 The Qt Company LtdTrademarks
Qt \\version
" diff --git a/util/qlalr/doc/src/classic.css b/util/qlalr/doc/src/classic.css deleted file mode 100644 index afc66d548..000000000 --- a/util/qlalr/doc/src/classic.css +++ /dev/null @@ -1,97 +0,0 @@ -h3.fn,span.fn -{ - margin-left: 1cm; - text-indent: -1cm; -} - -a:link -{ - color: #004faf; - text-decoration: none -} - -a:visited -{ - color: #672967; - text-decoration: none -} - -td.postheader -{ - font-family: sans-serif -} - -tr.address -{ - font-family: sans-serif -} - -body -{ - background: #ffffff; - color: black -} - -table tr.odd { - background: #f0f0f0; - color: black; -} - -table tr.even { - background: #e4e4e4; - color: black; -} - -table.annotated { - border-spacing: 0px; -} - -table.annotated th { - font-weight: bold; - padding: 3px; - text-align: left -} - -table.annotated td { - padding: 3px; -} - -table tr pre -{ - padding-top: none; - padding-bottom: none; - padding-left: none; - padding-right: none; - border: none; - background: none -} - -tr.qt-style -{ - background: #a2c511; - color: black -} - -body pre -{ - padding: 0.2em; - border: #e7e7e7 1px solid; - background: #f1f1f1; - color: black -} - -span.preprocessor, span.preprocessor a -{ - color: darkblue; -} - -span.comment -{ - color: darkred; - font-style: italic -} - -span.string,span.char -{ - color: darkgreen; -} diff --git a/util/qlalr/doc/src/images/qt-logo.png b/util/qlalr/doc/src/images/qt-logo.png deleted file mode 100644 index c3053263b26a0db698a1f49c23343a96b7a3cc64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1369 zcmV-f1*ZCmP)Px#8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?F zJQ@H1010qNS#tmY0Dk}g0Dl3vw#n1PFjSl|K!hw?qcaRh9zlgH z3`ib7f-5_IDm#BGJ%B4rk}pMyEliRxVX8GrjxJW6GEbH;U8OWSeJVYHD^i&;K7lJ= zs5C=|ElH0qOOP*7m@r(WGdq4OOOY=`i7iEmEkA=SQ=2hAgDhUBGz>@{3`iafNFEGG z9x7`l3`iafNFGy~F~^?H*Xzp=OdnsUG=02OXt6k!$#wny{q*?r{r>zDP#_{FuY`Smby zC_RBJ&*s3f%dA?WGp)y{f~tK}nlW39S)R*-qtAxt^WPv`C}62HiNa+pXD}ycCGPg= zjKpYCm@)77>o|KUA6_I~rZi`#N66#1VyrbGU?+U0c=!AD7gZrEY$jZ#Ghe4PrO}C? z&Vrx5n>cbfVy!iY!C^UkDnx-iM~F6Un`$IrE5p~o;_%tW+QT+_Dyqk$?egm(U?gCu zG!sxE)#K7z~Om?_S zGHf+%v_IzZ-s|<{MtnsmX(hARoQAA|bERW!nrQ6x=H>F;PnIx{#%)H6F6;8@M0`WM z*Rk*R>VUFqsL+sZv_baz^H!cR@AvA^=fQ=tcPC~gO_MLD(TjekdXcn@M2anayj2%d zBSU*cVwqG_I5loKNsBUIkX@I_b{JJ6Rh2!!-mFxcF*9v8 zM~yD%^WjH~EmM;^NQ^FIo=#DOPGFl!);!rO0000!bW%=J0Os&?`d@!wWFav{)vMJ0 z#PZ_&5KZe>{g%eg=lm$qqNi@|X#GZSQ1t4w6a4$Z66(du2@acG$NO5C7U-K@MsWZD z0oF-GK~y-)V_*OR4Q(ym5?L{61r<&PY(U+i#vTS#mE{$cfQGo;#4=*zp zOo5t1wLMnAFUSp6!0O;=j{|Uk6|lnYOD;MHYP|(zG2Lfvs+1vM4 z7G`58DDJYeTefm{IH?HbS&WK~QChw$zr_Vy=^ zZ<$-~jhP)7=)0001QP)t-srOi10 z{{Ez94S}tkFl=>Z|7Q$lmO=;O@N2;)=A@S^xk4yV+>$_13A+K;!SizuR%d-hJ@)-p=Hb z)8?I4yfdr-00lHjL_t(|Ufo#NcH=q>6j;@}dwTZ&zwrXBk}2QlBriD`*;ZE+2n{%jxAW>GJ!y{Q7(Wgv9S2E^VvvYPEI)y2A~0Sl4oG z2#!Yxy1;o15A93qy*;kT@R-b7AI_0^C~*+iwOsO$ZC&I%=Vh%Wq%O#TZYAyPC1i{- zrSR+Sh=wDVJgy8}L^d!U=BF{}a-6T{@Jup8NgH9dDx~%G~>F|o6=_GH!-Nb+u5}C?r74m7P%59NSd^gWj*a48sqys6-7AYB^gdNAMCi^2^P#*4BnI0_^Tm*$>} zanOpgYBPxd2`!^dW+)}a7*1=TxtPe8)fGOG%Jntm3q>3bT$o9w5?#6l7clmuNMk&Qb4+KgaNiK+sUOOP+Whv^?*B4D(AnqZ5!dV@VOl6+E&Pe4M z7PS&iv^2&T(+|0%wh1=IINa@#CNL@)*8zvAE`<$ZkfN2IOOIRznfP;oqO7y=4XGU0 z^#yR0{WC7*R=(`uf_ri_ki5u5auQ1(bV(hobXju=Cra&|onP#KJJuIZaD0$2#RD$Q zii>LU=sJc;l~CErmw31&x}^S~!f^>WxKKDHb^naQoNSD#UAp9Vy0AuZNM+&jmOxH> zb%8B^ASX8-pR()%j*IKZ!m^Jsy(`ApDqoTqvo76Qs!QS^)rD>33qa2smzy6m31D%G zeKN`Q20q66UAf=fb1`Qcn41qVvXtga*Rj@~hd?*V{ZyAU_X~k2sParbc{t9bMToH% zKmM0xPvZ~HF-r3Z!Rb>1EyWN^b6Hd!kTLO9Q zIL8z(3r-qxid>g3=MDQ8WdNpAecRn3F9@M zV-fKj1GYQ&)pmV}OEG)X`l7!+$JBj{313{8jslE{{UcV;!!3!ipVSx4I^O_~#7>mNF3hV^VPg%hHPRSE>S%Nz* z5lnC9i)tcb)`F}DWjG>~V*J71E>bR%^C_2$Jrn1xpUHwxQ{kDyc*Zobp>_mV77jE* zm$`9#0cuV&yMiB`*haKrkKGh3LSJ#mlNCbJIuy7?E?m}VSp+VB2mb+>Htm2G@iIIB O0000 -#include - -enum Token { - EOF_SYMBOL, - LEFT_ANGLE, - RIGHT_ANGLE, - ANY, -}; - -static int current_char; -static int yytoken; -static bool in_tag = false; - -bool parseXmlStream(); -bool parseTagOrWord(); -bool parseTagName(); - -inline int nextToken() -{ - current_char = fgetc(stdin); - if (current_char == EOF) { - return (yytoken = EOF_SYMBOL); - } else if (current_char == '<') { - in_tag = true; - return (yytoken = LEFT_ANGLE); - } else if (in_tag && current_char == '>') { - in_tag = false; - return (yytoken = RIGHT_ANGLE); - } - return (yytoken = ANY); -} - -bool parse() -{ - nextToken(); - return parseXmlStream(); -} - -bool parseXmlStream() -{ - while (parseTagOrWord()) - ; - - return true; -} - -bool parseTagOrWord() -{ - if (yytoken == LEFT_ANGLE) { - nextToken(); - if (! parseTagName()) - return false; - if (yytoken != RIGHT_ANGLE) - return false; - nextToken(); - - fprintf (stderr, "*** found a tag\n"); - - } else if (yytoken == ANY) { - nextToken(); - } else { - return false; - } - return true; -} - -bool parseTagName() -{ - while (yytoken == ANY) - nextToken(); - - return true; -} - -int main() -{ - if (parse()) - printf("OK\n"); - else - printf("KO\n"); -} diff --git a/util/qlalr/examples/dummy-xml/xml.g b/util/qlalr/examples/dummy-xml/xml.g deleted file mode 100644 index b84148e86..000000000 --- a/util/qlalr/examples/dummy-xml/xml.g +++ /dev/null @@ -1,241 +0,0 @@ ----------------------------------------------------------------------------- --- --- Copyright (C) 2015 The Qt Company Ltd. --- --- This file is part of the QtCore module of the Katie 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 The Qt Company. For licensing terms --- and conditions see http://www.qt.io/terms-conditions. For further --- information use the contact form at http://www.qt.io/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. --- --- As a special exception, The Qt Company gives you certain additional --- rights. These rights are described in The Qt Company 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 XMLTable - -%impl xmlreader.cpp - -%token LEFT_ANGLE -%token RIGHT_ANGLE -%token ANY - -%start XmlStream - -/. -#ifndef XMLREADER_H -#define XMLREADER_H - -#include -#include -#include -#include -#include "$header" - -class XMLReader: protected $table -{ -public: - XMLReader(const QByteArray &bytes); - ~XMLReader(); - - bool parse(); - - inline int nextToken() - { - switch (*bufptr++) { - case '\0': - return EOF_SYMBOL; - - case '<': - in_tag = true; - return LEFT_ANGLE; - - case '>': - if (! in_tag) - break; - in_tag = false; - return RIGHT_ANGLE; - break; - - } // switch - - return ANY; - } - -protected: - inline void reallocateStack(); - - inline int &sym(int index) - { return stack [tos + index - 1].ival; } - -protected: - int tos; - int stack_size; - - struct StackItem { - int state; - int ival; - }; - - QVarLengthArray stack; - unsigned in_tag: 1; - QByteArray bytes; - const char *bufptr; -}; - -inline void XMLReader::reallocateStack() -{ - if (! stack_size) - stack_size = 128; - else - stack_size <<= 1; - - stack.resize (stack_size); -} - -#endif // XMLREADER_H - -XMLReader::XMLReader(const QByteArray &bytes): - tos(0), - stack_size(0), - bytes(bytes) -{ - bufptr = bytes.constData(); -} - -XMLReader::~XMLReader() -{ -} - -bool XMLReader::parse() -{ - const int INITIAL_STATE = 0; - - in_tag = 0; - bufptr = bytes.constData(); - - int yytoken = -1; - reallocateStack(); - - tos = 0; - stack [++tos].state = INITIAL_STATE; - - while (true) - { - const int state = stack [tos].state; - - if (yytoken == -1 && - TERMINAL_COUNT != action_index [state]) - yytoken = nextToken(); - - int act = t_action (state, yytoken); - - if (act == ACCEPT_STATE) - return true; - - else if (act > 0) - { - if (++tos == stack_size) - reallocateStack(); - - stack [tos].ival = *bufptr; // ### save the token value here - stack [tos].state = act; - yytoken = -1; - } - - else if (act < 0) - { - int r = - act - 1; - - tos -= rhs [r]; - act = stack [tos++].state; - - switch (r) { -./ - - - - -XmlStream: TagOrWord ; -XmlStream: XmlStream TagOrWord ; - -TagOrWord: Tag ; -TagOrWord: ANY ; - -Tag: LEFT_ANGLE TagName RIGHT_ANGLE ; -/. - case $rule_number: { - fprintf (stderr, "*** found a tag\n"); - } break; -./ - -TagName: ANY ; -TagName: TagName ANY ; - - -/. - } // switch - - stack [tos].state = nt_action (act, lhs [r] - TERMINAL_COUNT); - } - - else - { - // ### ERROR RECOVERY HERE - break; - } - } - - return false; -} - - - -///////////////////////////// -// entry point -///////////////////////////// -int main(int, char *argv[]) -{ - QFile f (argv[1]); - - if (f.open(QFile::ReadOnly)) { - QByteArray contents = f.readAll(); - XMLReader parser (contents); - - if (parser.parse()) - printf ("OK\n"); - else - printf ("KO\n"); - } -} - - - - -./ - diff --git a/util/qlalr/examples/glsl/build.sh b/util/qlalr/examples/glsl/build.sh deleted file mode 100644 index c8e0dd613..000000000 --- a/util/qlalr/examples/glsl/build.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh -############################################################################# -## -## Copyright (C) 2015 The Qt Company Ltd. -## -## This file is the build configuration utility of the Katie 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 The Qt Company. For licensing terms -## and conditions see http://www.qt.io/terms-conditions. For further -## information use the contact form at http://www.qt.io/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 or version 3 as published by the Free -## Software Foundation and appearing in the file LICENSE.LGPLv21 and -## LICENSE.LGPLv3 included in the packaging of this file. Please review the -## following information to ensure the GNU Lesser General Public License -## requirements will be met: https://www.gnu.org/licenses/lgpl.html and -## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -## -## As a special exception, The Qt Company gives you certain additional -## rights. These rights are described in The Qt Company 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 c19018f98..000000000 --- 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 2e4d18e7e..000000000 --- a/util/qlalr/examples/glsl/glsl-lex.l +++ /dev/null @@ -1,245 +0,0 @@ - -%{ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the QLALR tool of the Katie 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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 -#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 34d8c367d..000000000 --- a/util/qlalr/examples/glsl/glsl.g +++ /dev/null @@ -1,670 +0,0 @@ ----------------------------------------------------------------------------- --- --- Copyright (C) 2015 The Qt Company Ltd. --- --- This file is part of the QtCore module of the Katie 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 The Qt Company. For licensing terms --- and conditions see http://www.qt.io/terms-conditions. For further --- information use the contact form at http://www.qt.io/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. --- --- As a special exception, The Qt Company gives you certain additional --- rights. These rights are described in The Qt Company 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 - -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 string_repository; - QSet 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 (qRealloc(sym_stack, stack_size * sizeof(Value))); - state_stack = reinterpret_cast (qRealloc(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 8ac775f21..000000000 --- a/util/qlalr/examples/glsl/glsl.pro +++ /dev/null @@ -1,4 +0,0 @@ -QT = core -TARGET = glsl.bin -SOURCES += glsl.cpp - diff --git a/util/qlalr/examples/lambda/COMPILE b/util/qlalr/examples/lambda/COMPILE deleted file mode 100644 index 3226ec95f..000000000 --- a/util/qlalr/examples/lambda/COMPILE +++ /dev/null @@ -1,3 +0,0 @@ -qlalr lambda.g -qmake -make diff --git a/util/qlalr/examples/lambda/lambda.g b/util/qlalr/examples/lambda/lambda.g deleted file mode 100644 index 56e3160b4..000000000 --- a/util/qlalr/examples/lambda/lambda.g +++ /dev/null @@ -1,80 +0,0 @@ ----------------------------------------------------------------------------- --- --- Copyright (C) 2015 The Qt Company Ltd. --- --- This file is part of the QtCore module of the Katie 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 The Qt Company. For licensing terms --- and conditions see http://www.qt.io/terms-conditions. For further --- information use the contact form at http://www.qt.io/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 or version 3 as published by the Free --- Software Foundation and appearing in the file LICENSE.LGPLv21 and --- LICENSE.LGPLv3 included in the packaging of this file. Please review the --- following information to ensure the GNU Lesser General Public License --- requirements will be met: https://www.gnu.org/licenses/lgpl.html and --- http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. --- --- As a special exception, The Qt Company gives you certain additional --- rights. These rights are described in The Qt Company 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$ --- ----------------------------------------------------------------------------- - --- lambda calculus - -%decl lambda.h - -%token LPAREN -%token RPAREN -%token ID -%token FUN -%token DOT - -%nonassoc SHIFT_THERE -%nonassoc LPAREN RPAREN ID FUN DOT -%nonassoc REDUCE_HERE - -%start Expr - -/: -enum { -:/ - - -Expr ::= ID %prec SHIFT_THERE ; -/: Symbol = $rule_number, -:/ - -Expr ::= LPAREN Expr RPAREN %prec SHIFT_THERE ; -/: SubExpression = $rule_number, -:/ - -Expr ::= Expr Expr %prec REDUCE_HERE ; -/: Appl = $rule_number, -:/ - -Expr ::= FUN ID DOT Expr %prec SHIFT_THERE ; -/: Abstr = $rule_number, -:/ - -/:}; -:/ - diff --git a/util/qlalr/examples/lambda/lambda.pro b/util/qlalr/examples/lambda/lambda.pro deleted file mode 100644 index dfe482402..000000000 --- a/util/qlalr/examples/lambda/lambda.pro +++ /dev/null @@ -1,3 +0,0 @@ -HEADERS += lambda.h parser_table_p.h -SOURCES += main.cpp parser_table.cpp -QT = core diff --git a/util/qlalr/examples/lambda/main.cpp b/util/qlalr/examples/lambda/main.cpp deleted file mode 100644 index 43594f012..000000000 --- a/util/qlalr/examples/lambda/main.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the QLALR module of the Katie 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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 "lambda.h" - -#include -#include -#include -#include "parser_table_p.h" - -class Parser: protected parser_table -{ -public: - union Value { - int ival; - // ### more... - }; - -public: - Parser(); - ~Parser(); - - bool parse(); - -protected: - inline void reallocateStack(); - - inline Value &sym(int index) - { return sym_stack [tos + index - 1]; } - - int nextToken(); - void consumeRule(int ruleno); - -protected: - int tos; - int stack_size; - Value *sym_stack; - int *state_stack; - int current_char; - unsigned in_tag: 1; -}; - -inline void Parser::reallocateStack() -{ - if (! stack_size) - stack_size = 128; - else - stack_size <<= 1; - - sym_stack = reinterpret_cast (::realloc(sym_stack, stack_size * sizeof(Value))); - state_stack = reinterpret_cast (::realloc(state_stack, stack_size * sizeof(int))); -} - -Parser::Parser(): - tos(0), - stack_size(0), - sym_stack(0), - state_stack(0) -{ -} - -Parser::~Parser() -{ - if (stack_size) { - ::free(sym_stack); - ::free(state_stack); - } -} - -bool Parser::parse() -{ - const int INITIAL_STATE = 0; - - current_char = 0; - in_tag = 0; - - int yytoken = -1; - reallocateStack(); - - 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].ival = current_char; // ### save the token value here - state_stack [tos] = act; - yytoken = -1; - } - - else if (act < 0) - { - int r = - act - 1; - - tos -= rhs [r]; - act = state_stack [tos++]; - consumeRule (r); - state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT); - } - - else - break; - } - - return false; -} - - -int Parser::nextToken() -{ - static int tokens[] = { ID, ID, ID, EOF_SYMBOL }; - static int *tk = tokens; - - return *tk++; -} - -void Parser::consumeRule(int ruleno) -{ - switch (ruleno) { - case Symbol: - printf("symbol\n"); - break; - case SubExpression: - printf("sub-expr\n"); - break; - case Appl: - printf("appl\n"); - break; - case Abstr: - printf("abstr\n"); - break; - } -} - -///////////////////////////// -// entry point -///////////////////////////// -int main() -{ - Parser parser; - - if (parser.parse()) - printf ("OK\n"); - else - printf ("KO\n"); -} - - diff --git a/util/qlalr/examples/qparser/COMPILE b/util/qlalr/examples/qparser/COMPILE deleted file mode 100644 index 4aad300a9..000000000 --- a/util/qlalr/examples/qparser/COMPILE +++ /dev/null @@ -1,3 +0,0 @@ -qlalr calc.g -qmake -make diff --git a/util/qlalr/examples/qparser/calc.g b/util/qlalr/examples/qparser/calc.g deleted file mode 100644 index ec98b5af7..000000000 --- a/util/qlalr/examples/qparser/calc.g +++ /dev/null @@ -1,132 +0,0 @@ ----------------------------------------------------------------------------- --- --- Copyright (C) 2015 The Qt Company Ltd. --- --- This file is part of the QtCore module of the Katie 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 The Qt Company. For licensing terms --- and conditions see http://www.qt.io/terms-conditions. For further --- information use the contact form at http://www.qt.io/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. --- --- As a special exception, The Qt Company gives you certain additional --- rights. These rights are described in The Qt Company 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 calc_grammar -%decl calc_parser.h -%impl calc_parser.cpp - -%token_prefix Token_ -%token number -%token lparen -%token rparen -%token plus -%token minus - -%start Goal - -/: -#ifndef CALC_PARSER_H -#define CALC_PARSER_H - -#include "qparser.h" -#include "calc_grammar_p.h" - -class CalcParser: public QParser -{ -public: - int nextToken(); - void consumeRule(int ruleno); -}; - -#endif // CALC_PARSER_H -:/ - - - - - -/. -#include "calc_parser.h" - -#include -#include - -void CalcParser::consumeRule(int ruleno) - { - switch (ruleno) { -./ - -Goal: Expression ; -/. -case $rule_number: - qDebug() << "value:" << sym(1); - break; -./ - -PrimaryExpression: number ; -PrimaryExpression: lparen Expression rparen ; -/. -case $rule_number: - sym(1) = sym (2); - break; -./ - -Expression: PrimaryExpression ; - -Expression: Expression plus PrimaryExpression; -/. -case $rule_number: - sym(1) += sym (3); - break; -./ - -Expression: Expression minus PrimaryExpression; -/. -case $rule_number: - sym(1) -= sym (3); - break; -./ - - - -/. - } // switch -} - -#include - -int main() -{ - CalcParser p; - - if (p.parse()) - printf("ok\n"); -} -./ diff --git a/util/qlalr/examples/qparser/calc.l b/util/qlalr/examples/qparser/calc.l deleted file mode 100644 index dd18684f2..000000000 --- a/util/qlalr/examples/qparser/calc.l +++ /dev/null @@ -1,61 +0,0 @@ - -%option noyywrap - -%{ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the QLALR tool of the Katie 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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 "calc_parser.h" -#include - -#define YY_DECL int CalcParser::nextToken() -%} - -%% - -[ \t\n] { /* eat me */ } -[0-9]+ { sym(1) = atoi (yytext); return Token_number; } -"(" { return Token_lparen; } -")" { return Token_rparen; } -"+" { return Token_plus; } -"-" { return Token_minus; } - -%% diff --git a/util/qlalr/examples/qparser/qparser.cpp b/util/qlalr/examples/qparser/qparser.cpp deleted file mode 100644 index 138977e4a..000000000 --- a/util/qlalr/examples/qparser/qparser.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the QLALR module of the Katie 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 The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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 "qparser.h" - diff --git a/util/qlalr/examples/qparser/qparser.h b/util/qlalr/examples/qparser/qparser.h deleted file mode 100644 index 68e75d1ad..000000000 --- a/util/qlalr/examples/qparser/qparser.h +++ /dev/null @@ -1,144 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Copyright (C) 2016-2019 Ivailo Monev -** -** This file is part of the QLALR module of the Katie Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** 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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company 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$ -** -****************************************************************************/ - -#ifndef QPARSER_H -#define QPARSER_H - -#include -#include - -template -class QParser: protected _Table -{ -public: - QParser(); - ~QParser(); - - bool parse(); - - inline _Value &sym(int index); - -private: - inline int nextToken() - { - return static_cast<_Parser*> (this)->nextToken(); - } - - inline void consumeRule(int rule) - { - static_cast<_Parser*> (this)->consumeRule(rule); - } - - enum { DefaultStackSize = 128 }; - - struct Data: public QSharedData - { - Data(): stackSize (DefaultStackSize), tos (0) {} - - QVarLengthArray stateStack; - QVarLengthArray<_Value, DefaultStackSize> parseStack; - int stackSize; - int tos; - - void reallocateStack() { - stackSize <<= 1; - stateStack.resize(stackSize); - parseStack.resize(stackSize); - } - }; - - QSharedDataPointer d; -}; - -template -inline _Value &QParser<_Parser, _Table, _Value>::sym(int n) -{ - return d->parseStack [d->tos + n - 1]; -} - -template -QParser<_Parser, _Table, _Value>::QParser(): - d(new Data()) -{ -} - -template -QParser<_Parser, _Table, _Value>::~QParser() -{ -} - -template -bool QParser<_Parser, _Table, _Value>::parse() -{ - const int INITIAL_STATE = 0; - - d->tos = 0; - d->reallocateStack(); - - int act = d->stateStack[++d->tos] = INITIAL_STATE; - int token = -1; - - forever { - if (token == -1 && - _Table::TERMINAL_COUNT != _Table::action_index[act]) - token = nextToken(); - - act = _Table::t_action(act, token); - - if (d->stateStack[d->tos] == _Table::ACCEPT_STATE) - return true; - - else if (act > 0) { - if (++d->tos == d->stackSize) - d->reallocateStack(); - - d->parseStack[d->tos] = d->parseStack[d->tos - 1]; - d->stateStack[d->tos] = act; - token = -1; - } - - else if (act < 0) { - int r = - act - 1; - d->tos -= _Table::rhs[r]; - act = d->stateStack[d->tos++]; - consumeRule(r); - act = d->stateStack[d->tos] = _Table::nt_action(act, _Table::lhs[r] - _Table::TERMINAL_COUNT); - } - - else break; - } - - return false; -} - - -#endif // QPARSER_H diff --git a/util/qlalr/examples/qparser/qparser.pro b/util/qlalr/examples/qparser/qparser.pro deleted file mode 100644 index 938e33693..000000000 --- a/util/qlalr/examples/qparser/qparser.pro +++ /dev/null @@ -1,4 +0,0 @@ -QT = core -HEADERS += calc_grammar_p.h calc_parser.h qparser.h -SOURCES += calc_grammar.cpp calc_parser.cpp qparser.cpp -LEXSOURCES += calc.l