From 768fb8b49eca2b4840463fc54011d6d327d36ed7 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 00:29:11 +0100 Subject: [PATCH 1/4] Remove bison binaries see issue #103 --- tools/bison.exe | Bin 513536 -> 0 bytes tools/data/Makefile.am | 30 - tools/data/Makefile.in | 1639 ---------------- tools/data/README | 70 - tools/data/bison.m4 | 610 ------ tools/data/c++-skel.m4 | 26 - tools/data/c++.m4 | 205 -- tools/data/c-like.m4 | 44 - tools/data/c-skel.m4 | 26 - tools/data/c.m4 | 722 ------- tools/data/glr.c | 2589 -------------------------- tools/data/glr.cc | 346 ---- tools/data/java-skel.m4 | 26 - tools/data/java.m4 | 304 --- tools/data/lalr1.cc | 1143 ------------ tools/data/lalr1.java | 927 --------- tools/data/location.cc | 299 --- tools/data/m4sugar/foreach.m4 | 362 ---- tools/data/m4sugar/m4sugar.m4 | 3301 --------------------------------- tools/data/stack.hh | 121 -- tools/data/xslt/bison.xsl | 105 -- tools/data/xslt/xml2dot.xsl | 397 ---- tools/data/xslt/xml2text.xsl | 569 ------ tools/data/xslt/xml2xhtml.xsl | 745 -------- tools/data/yacc.c | 2065 --------------------- 25 files changed, 16671 deletions(-) delete mode 100755 tools/bison.exe delete mode 100644 tools/data/Makefile.am delete mode 100644 tools/data/Makefile.in delete mode 100644 tools/data/README delete mode 100644 tools/data/bison.m4 delete mode 100644 tools/data/c++-skel.m4 delete mode 100644 tools/data/c++.m4 delete mode 100644 tools/data/c-like.m4 delete mode 100644 tools/data/c-skel.m4 delete mode 100644 tools/data/c.m4 delete mode 100644 tools/data/glr.c delete mode 100644 tools/data/glr.cc delete mode 100644 tools/data/java-skel.m4 delete mode 100644 tools/data/java.m4 delete mode 100644 tools/data/lalr1.cc delete mode 100644 tools/data/lalr1.java delete mode 100644 tools/data/location.cc delete mode 100644 tools/data/m4sugar/foreach.m4 delete mode 100644 tools/data/m4sugar/m4sugar.m4 delete mode 100644 tools/data/stack.hh delete mode 100644 tools/data/xslt/bison.xsl delete mode 100644 tools/data/xslt/xml2dot.xsl delete mode 100644 tools/data/xslt/xml2text.xsl delete mode 100644 tools/data/xslt/xml2xhtml.xsl delete mode 100644 tools/data/yacc.c diff --git a/tools/bison.exe b/tools/bison.exe deleted file mode 100755 index bdc1101efbbda2be1841ae9b2d4bd52a711d49e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513536 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P^1JvLws4+R+`;H`Rxu9VkxfmFP*ccd0n83n||FbYK2rw`(7_c!gFgQTiObiUH z42)oT7|qbY0SPj4oh9c&C5AO=p%!O&35z_7uPjX?&d z8U_Z2MmCVE5GoAV7z!XxLx>@<^h#1IN*EXzRtT^`90c+!DAJMCC@?T2=oO_TmLxJT z97}-uJ&A#VK@1cI2!##|3=Vn_WeiV(85tNBurV+^U|?XVz)*KUuP8MqKbe7nr52>0 zgMp!rfq@}{9mIiS2L=WwIA@eW*ANKpe$)I$rP+d^)AbL3iy|WfL$@nOw*yOXcLYaR zcy|R)r|XB#*gKuI4|->V9Mov}|^ZU}zQp|NsAMQHWPvIXVS88DFy>cjW;2KRzzH+x1Vg z1w$!ow=YL0hw%YRR}TKE2fCle9zJvC%$d;cHw!n!yE6obg&W^~kvE%(p}Ur&`-7!? zoqzLjmhS)E?5zh%%)32Uta(AoYR$V39(=*7?Z#s5#!)QN9mdnk($xG=eizt7k2nQh zb9b`^c5{UNzu0_)qdSztx%oJYwN%ZH?ql(B(Xod?_BFrZfLdvM`^BGGObnf_KfnSn z-h(-RAe=|Dm>9Z0fMS=UJ5VDa?Ej_aBOI3Ub=KYfEZrhAyV<&Z{{(dh*n|cCztjy1 zqd(moK>-2Xjz0e{bceHav&`z|>-O{s2n+jv(Yg7EinV;r(QdJBr<&FSC2V2;FEk%v z345_}D+@z+>7Q=4ZikxYBP_^LeIO~KWn zwA1xZSUAX`4jkPL6Brm6v{^x6)!F;v{r~^nz5<=S55NqG&Z&1mj8Kuz-Zvly@1D=@ z481Ik-Mm{qyEAl7eF72;mFb*%1H=&Mc3|l?_UN?{xcI)CXQ%bK5}8`o-f+g(%)Rda zAzBb}rBAwjdAcFyv+U~rc<>#ob^(iZ0Y@=^w*yZ%%ZBEM@|RzzFuvyL76=UJcH#jA z07uJ#5~27FjB(w*e~iz*=-tA?0P<;fE7*Q-l^5sEGct68-P*}`+!a)RG8}jP0;+sp zvqAIMRIn#mc6D>~hJFaj0Lk@E{qX+(|Db?w#}be&0-dg3S`UCy`>kVxVsnZ_o?83a^(pO3JA+$2!3Ig#lX;fM55(DiG24|aF8)|pF8-H znfYMzGiY8qw~6u6BMyOX-yhwsUmQDqe^{R=T4f7z27gQZe^B`Ui8nrLbRh1PP{aCthb-M9rAJo2SeYlRfGmNL(ji=L%qq|JR_++OaODA7HDHPK%%<|l7I{os4%&N>n6^R?{V*I$TH!R5UycGe$? z`LvG(WHE%j_)^Tu(0qia+x1Jg?~CqGo=$^q8^&%Ym0l0_gD;tlzcHWhEPc{h`@#Ar zf3px10|P8QHP|!ow>$t9>!B~YeZO?y*OuX8z72w%u@9_o@HZa;%klKO%+ly|y)&UZ z^aaR{+7I2QLFs~rsW+U_`V@cjT#&NEh!PiCK(&bTw-|t=eD8E~c8eO^c4ug=>H5LI z-@BiIfuY%^i=l?y5k%Gg?5@>lKJj0hrK{UlCi_4HGpogIcZTrZ&=W!3p%Q`JzBhup zLq!6+eFXwQrH{mmN5B972d7p3)+eAE#P>@#BPigxx;<68V^1_61bLkKME3{lgT>zgPl$ytq1BPyNd+0KUyEF73eN~ z(jEJN`Cz9LN2e3d>wM;e0YNY7r!X-TA>5k95cuNadWh$8HnG6$DdEdv2o8IpegP!I^IEUh zS^nS)*3LMA<{ylu9LL#qTySG}&32s4;i4NuZ`sa3da6ldfa&=1zv z_?r~}{r?ZjbVA)lD&4+Mdc(j8OTe+y_lfl>{-%4Nbme=Y`2b6&>lbj1&EnYUd%@a6 zguiFYumArWYX39vwcy%TULUL znjhVa-2p1y4BfE`LA@-^;V-U!0To7|`rQx|99-Ru-M%XSSsKFvL80m^)9oq|9N6tE z6431`5ZKKX5E%aA(+`jqmDf=qj~&-O*on(ymdpnO!d`1b%PQ9^u)<0hR#<^@KctxA zV?G$reJJ3?wSI6Ybi4j&KEML4VOtme`2Qc&JcYJIAysl{_nRF#p!SvWCgk>2w<}Lr zcd1He>l#qY$W@@TcLj*yE7Cc23y2Xa5#C+P(NHhJ(Al~HB;YF3**gWq@KxxXItRoE z)#%&{YC?3j&UpX-e`oIk5IJ?p`~Uy>TfNyC7`nj?+-`T3;4Fr~fES;qGBFt62Iarj zBk%wJx0EPR=uJ^!=w|2^2xuXO|G(h*`u~6T4^ZyfyW{=;|EP^9Q2U3y+o7b__d{R?sL29tIfa8#0HoQ(-{Qc= zzyNJJ@wX_kF)+O5h8A{U_w0eTpFm#g4&>=(axlK#xfj&Ve6gUPiJ`Og49N4XU}*=Q z&bgp=R>$1eU@z50b)P@@lC`t4tS-&9dte@7$A?++sQ%l77 ze`gp+r$uK4ODCkM3vsyzPv_nPpj5GU4=8vn`TK%c7#O<2t?}kV9G#HXDMYOUPj}1? zj&4wB?SzL`=iDpr|NjStnJ6gCdO@+!%`yQNZbH!ZIR~g|3~PY%w>X1}n_h4BuZ5ESar#tXQ21qv)^2^h@NY{kIe6A01|aTTuiomn>}Ez|BeP|4lPVr_k+m{0p~ z0H|dyk_BnsLAo{&+oys9PqNo%g2rohXd3Ni?6w89vbtH?TMtwUG@t*k{iC}T9847~ zC2UU32U%XX7eL<=0gX6Fn3>MzR~!Ioq?gDlGUsE)DNd_aHK%`&yYq5 zb8{=GyTEd+6_lD8p&bM#9`{bLQfmwT9{+#;|2OOfNi*=bw1V0Z;9LohFi=$GV~eVs zZivUGf(w&YP#F^z*bR=*pzf)lvL_(0yBAa#1$WN{<*gTwKZ1%+iIxNWEh(UG2iR?p z)()t;0drqQfMg(@G?YY85(w#Kf$|1d_f&9N0Qa+z0D5SB}>IrKex+1l6M8er~s5cPpsg=w+GEEzoJvDc;T4Jrz`8{AX$E-V3TTdRdwv zA#KfG$JEK*4X$s(g1W)AOi(wtJ__h=1*MUo?x~<85)c&FeK_F7L~sgGdF|i57ZjM? z{N0Y=`W{@`vxL8p1v$=-1=9Q0KG=MO1!on^!wm9rLkGmmNL^q4rq@6J|L+FZHPBA* zEReulP+evG&C<9;x%+T8N4H>eRSiQ4Z}-7&j_$x3a7oVM)@-wxp_gTI>HXjr6PK_s zbZ-Th;LxFwXymbxB9Ju5{h(IJff6>D7owJc!jz@k7u4sDdtn1ohElyl#(xxo!;Eit zf9Q<;V*Q!Fg_DVaAsp8K+YcJfe&GR%n*$C3Sqd*4!A5fUm%i$DW9jw~=oajD{Sp+A zv8UFZ;e`TJ-HS8JSQtR*#8IYOpx5_JU>0Mq?~B0B*f-rlC1Bqvv>qsBZ9efIG=le{ z)Adic8%t;G2g?W%{=RBP28Lcgj!xenp!zsKqI(voH@zQ}i@N{6*bA~B;*@QRLB0b! zrH-ZBU7*{8r<=1oTm~{E2Fa@Y-9bFv;2|;SXbTglZi8gg7N`?gy4^)Qx@$iKTmLAP z&UgayNI2A%7tG5*cJREsz`($e!BXeW01m|F0}cT%UVzd^7)!Sk*y7kf-61nMx}8{> zkMIO!$beJ|!3^04Qt8Li4GE1W;Lv#B9M~EA1Qr}Jtp`dukGuZ)4;ndS>vnwr3X<3# z&DIR15*aoi!;XSH3$nHl6vjt5UTbG~fW+6r#3ProFua(*n1!L+m!n%4maU)+?z0&=~Pg{^p4c z3=9(*>={Z*yT5CHVEzVzyFufe-KQ=ewl3uL`-#^{Q4!&S!X6*H6v_4qu*?kO4 zKe9xp+f|^OX9IEG;z51nlM`b<8R9T|Nnn{oY4XB7;Svq z21YOg(wTtxzxj<$Sa&f?w;MR$aCV2mGi*4hawU*sIhxP^@2vgunzOr1#ILjTOZUHS zXO?ac3FB{_zE7I}|L1R+2x@~;qTL6WMJs^29-+2|E){E@V6WTCD{OhZYLg4 z$JC{RquW8C^+1Vw_YRQNt^Z48yIo&c|KRVL%fP@;D$pJJqG zUygvVz~C1z{(_n+0xbthO08>Olp4U5GMB1=d%&$vK|=|(0u0dprR$Go3kLockio}X z|1p9_9De*SW$i5e(0#1+e~ErW?LP+oR*+>4a81oM%^VE;t)NMmZr>lxmJIwYlORFF z2y%ZgOSh9uw*aU-aP0KG(H&IM>w5znI#&V%-2Pu`K7t%DS0DjnT_D2W^A^;mtNqVV z>I|~B)V90!OZRa|dXL`$8k+$peaixoIwes4M0oq-AE>uWg}Q@T+^ma4Y92P9_z%$v za(D@QbIoQBhSFE@-N(R&K+;cmK*p6CcZL_6=dmz=in$l@3s@M8|2H4uv8?4Ns}1Ys z*&Uei1f*gjOoiw(HE%_skB^95#n0jV;Bsd_Y@g~7e~2#<9wM^S6s3puEG1`DVfVOa>O zJvibab333+0P0T*fcn#y7a{kj!!kHP>L1L7dZ}kV3q!XlXwazn2#2+)%WZcC{$5au zTL^AN@@(i949XAyX;}-?5;-4a7Y}NWc0xDrm0Ru%-NztPAl)pD-2&jag>`Vjz12W) z&W3bwOTwU?+Y%>mf3^p#0z3u8d=MqHWI)#I!K}YE4^;Dj2mL{vbnv+UA!w7Q{Qv*| zZctzJSpEP1KSKqi_tPAxZ|8ya{%JnKVSG03#kAQ-^8%po5&?zR;)ST;r2#Tw1Iz?a zq`||hb1SF^0JX2zl@ZjOf%Sio!_Nd{L@vw-Nl?rk!3@6(q=g@U3urDA8ixEWD?kH& znDZ-P87?5pKg@=Pz#LF89^rX$e>Mw4_O}RTQ_$dcZ-qm58BenvLyc88TkC-ebx{6+ zbR!_?^-8=uL->n?xv1&%PIwmAi&?Wkse$9QaK?>zcZQ4yV3lSNTe?vis9B)O3LIk4 z*y04m7D^cQ90N54GJHTzwuL$QDtJNHZwd{#bIAl!Exo2bd3Zi%4|yaDlsF z*5_)RyG23TyF~=F&mlMRM7lBiW8&S={um@#bc3w{k9q%b=)SIft(T`2)D!`=vsfmB zXK1?Jq3-I*`~Uy{W{wtFh1>27C88MtAb-2gVqxg5aCosA+{kBnQQXSJ097HKkpfbo z3{}wyQ2~*RkBcs0eZltU|9?;|51y|C&9~Zs`hvWma0(00Vh9L)A<_)$JMb(9rM4H_ zL8GSN+~3U$3aRd6ovweZ5Ayf2gPT)eufY2A|Ez!V_dWu(20%qS12lxrYai=oY0^H| zeGyTuLna>KqaPCRiAS^$YB^9+4+^1fmdT*__+iOWlHYyo`;A@^i*Aw0%&vbxF(L|b zXtzjHwmPVzXo1ovI2artq0qze|NsB!Z>*r$;V5B!ar5{8 z{|iCs!uVVF4@-j*Mcn-72WQTmT(xjIAt;Z*80E1uUiyUiX+BfST=X_f@>m{ zM(aa0THU;0ZIarDx*u7K0Ash-|XHP|MjV((UGG{k`Z_CrdYI9NYDalVfM-59

+dILQK#P#{|NsA6 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%0DbifACK^V11u|%E1oT{~f;nT2An{ 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 z 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

5xJLrB7=r>{?5YJtkig4+@X`{HBtE}=^2Xt} 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 z - - - - - -

GNU Bison XML Automaton Report

-

- input grammar: -

- - -

Table of Contents

- - - - - - -
- - -

- - Reductions -

- - - -
- - -

- - Nonterminals useless in grammar -

- - -

- - - - - - -

-
- - - -

- - Terminals unused in grammar -

- - -

- - - - - - - -

-
- - - -

- - Rules useless in grammar -

- - - -

- - - - -

-
- - - - - -

- - Rules useless in parser due to conflicts -

- -

- - - -

- - - - - -

- - Grammar -

- -

- - - -

- - - - - - - - - - - - - - - - - - - - - -

- - Conflicts -

- - - - - -

- - -

-
- - - - - - - - - -
- - - - - - conflicts: - - - - - - - - - - - - - - -

- - Terminals, with rules where they appear -

- -

- -

- -
- - -

- - Nonterminals, with rules where they appear -

- -

- -

- - - - - - - - - - - - - - - - - on left: - - - - - - - - - on right: - - - - - - - - - -
- - - - - - - - -

- - Automaton -

- - - -
- - - - -

- - - - - - state - -

- -

- - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - . - - - - - - - - - - - - - - - - - - - - - - - ε - - - - [ - - ] - - - - - - , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - error - ( - - ) - - - - - - - - - - - - [ - - - - accept - - - - - - - - - ( - - ) - - - - ] - - - - - - - - - - - - - Conflict between - - - - - - - and token - - resolved as - - an - - - ( - - ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - diff --git a/tools/data/yacc.c b/tools/data/yacc.c deleted file mode 100644 index b34549f1..00000000 --- a/tools/data/yacc.c +++ /dev/null @@ -1,2065 +0,0 @@ - -*- C -*- - -# Yacc compatible skeleton for Bison - -# Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, -# Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Check the value of %define api.push-pull. -b4_percent_define_default([[api.push-pull]], [[pull]]) -b4_percent_define_check_values([[[[api.push-pull]], - [[pull]], [[push]], [[both]]]]) -b4_define_flag_if([pull]) m4_define([b4_pull_flag], [[1]]) -b4_define_flag_if([push]) m4_define([b4_push_flag], [[1]]) -m4_case(b4_percent_define_get([[api.push-pull]]), - [pull], [m4_define([b4_push_flag], [[0]])], - [push], [m4_define([b4_pull_flag], [[0]])]) - -# Handle BISON_USE_PUSH_FOR_PULL for the test suite. So that push parsing -# tests function as written, do not let BISON_USE_PUSH_FOR_PULL modify the -# behavior of Bison at all when push parsing is already requested. -b4_define_flag_if([use_push_for_pull]) -b4_use_push_for_pull_if([ - b4_push_if([m4_define([b4_use_push_for_pull_flag], [[0]])], - [m4_define([b4_push_flag], [[1]])])]) - -# Check the value of %define parse.lac and friends, where LAC stands for -# lookahead correction. -b4_percent_define_default([[parse.lac]], [[none]]) -b4_percent_define_default([[parse.lac.es-capacity-initial]], [[20]]) -b4_percent_define_default([[parse.lac.memory-trace]], [[failures]]) -b4_percent_define_check_values([[[[parse.lac]], [[full]], [[none]]]], - [[[[parse.lac.memory-trace]], - [[failures]], [[full]]]]) -b4_define_flag_if([lac]) -m4_define([b4_lac_flag], - [m4_if(b4_percent_define_get([[parse.lac]]), - [none], [[0]], [[1]])]) - -m4_include(b4_pkgdatadir/[c.m4]) - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# Stack parameters. -m4_define_default([b4_stack_depth_max], [10000]) -m4_define_default([b4_stack_depth_init], [200]) - - -## ------------------------ ## -## Pure/impure interfaces. ## -## ------------------------ ## - -b4_percent_define_default([[api.pure]], [[false]]) -b4_percent_define_check_values([[[[api.pure]], - [[false]], [[true]], [[]], [[full]]]]) - -m4_define([b4_pure_flag], [[0]]) -m4_case(b4_percent_define_get([[api.pure]]), - [false], [m4_define([b4_pure_flag], [[0]])], - [true], [m4_define([b4_pure_flag], [[1]])], - [], [m4_define([b4_pure_flag], [[1]])], - [full], [m4_define([b4_pure_flag], [[2]])]) - -m4_define([b4_pure_if], -[m4_case(b4_pure_flag, - [0], [$2], - [1], [$1], - [2], [$1])]) - [m4_fatal([invalid api.pure value: ]$1)])]) - -# b4_yyerror_arg_loc_if(ARG) -# -------------------------- -# Expand ARG iff yyerror is to be given a location as argument. -m4_define([b4_yyerror_arg_loc_if], -[b4_locations_if([m4_case(b4_pure_flag, - [1], [m4_ifset([b4_parse_param], [$1])], - [2], [$1])])]) - -# b4_yyerror_args -# --------------- -# Arguments passed to yyerror: user args plus yylloc. -m4_define([b4_yyerror_args], -[b4_yyerror_arg_loc_if([&yylloc, ])dnl -m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) - - -# b4_lex_param -# ------------ -# Accumulate in b4_lex_param all the yylex arguments. -# b4_lex_param arrives quoted twice, but we want to keep only one level. -m4_define([b4_lex_param], -m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl -b4_locations_if([, [[YYLTYPE *], [&yylloc]]])m4_ifdef([b4_lex_param], [, ])])dnl -m4_ifdef([b4_lex_param], b4_lex_param))) - - -## ------------ ## -## Data Types. ## -## ------------ ## - -# b4_int_type(MIN, MAX) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# MIN to MAX (included). Overwrite the version from c.m4, which -# uses only C89 types, so that the user can override the shorter -# types, and so that pre-C89 compilers are handled correctly. -m4_define([b4_int_type], -[m4_if(b4_ints_in($@, [0], [255]), [1], [yytype_uint8], - b4_ints_in($@, [-128], [127]), [1], [yytype_int8], - - b4_ints_in($@, [0], [65535]), [1], [yytype_uint16], - b4_ints_in($@, [-32768], [32767]), [1], [yytype_int16], - - m4_eval([0 <= $1]), [1], [unsigned int], - - [int])]) - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], -[(yyval[]m4_ifval([$1], [.$1]))]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -m4_define([b4_rhs_value], -[(yyvsp@{($2) - ($1)@}m4_ifval([$3], [.$3]))]) - - - -## ----------- ## -## Locations. ## -## ----------- ## - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(yyloc)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[(yylsp@{($2) - ($1)@})]) - - -## -------------- ## -## Declarations. ## -## -------------- ## - -# b4_declare_scanner_communication_variables -# ------------------------------------------ -# Declare the variables that are global, or local to YYPARSE if -# pure-parser. -m4_define([b4_declare_scanner_communication_variables], [[ -/* The lookahead symbol. */ -int yychar; - -]b4_pure_if([[ -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else -/* Default value used for initialization, for pacifying older GCCs - or non-GCC compilers. */ -static YYSTYPE yyval_default; -# define YY_INITIAL_VALUE(Value) = Value -#endif]b4_locations_if([[ -static YYLTYPE yyloc_default][]b4_yyloc_default[;]])])[ -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);]b4_locations_if([[ - -/* Location data for the lookahead symbol. */ -YYLTYPE yylloc]b4_pure_if([ = yyloc_default], [b4_yyloc_default])[; -]])b4_pure_if([], [[ - -/* Number of syntax errors so far. */ -int yynerrs;]])]) - - -# b4_declare_parser_state_variables -# --------------------------------- -# Declare all the variables that are needed to maintain the parser state -# between calls to yypush_parse. -m4_define([b4_declare_parser_state_variables], [b4_pure_if([[ - /* Number of syntax errors so far. */ - int yynerrs; -]])[ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values.]b4_locations_if([[ - `yyls': related to locations.]])[ - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp;]b4_locations_if([[ - - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls; - YYLTYPE *yylsp; - - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[3];]])[ - - YYSIZE_T yystacksize;]b4_lac_if([[ - - yytype_int16 yyesa@{]b4_percent_define_get([[parse.lac.es-capacity-initial]])[@}; - yytype_int16 *yyes; - YYSIZE_T yyes_capacity;]])]) - - -# b4_declare_yyparse_push_ -# ------------------------ -# Declaration of yyparse (and dependencies) when using the push parser -# (including in pull mode). -m4_define([b4_declare_yyparse_push_], -[[#ifndef YYPUSH_MORE_DEFINED -# define YYPUSH_MORE_DEFINED -enum { YYPUSH_MORE = 4 }; -#endif - -typedef struct ]b4_prefix[pstate ]b4_prefix[pstate; - -]b4_pull_if([b4_c_function_decl([b4_prefix[parse]], [[int]], b4_parse_param) -])b4_c_function_decl([b4_prefix[push_parse]], [[int]], - [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([, - [[[int pushed_char]], [[pushed_char]]], - [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([, - [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [, - b4_parse_param])) -b4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]], - [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [, - b4_parse_param]))]) -b4_c_function_decl([b4_prefix[pstate_new]], [b4_prefix[pstate *]], - [[[void]], []]) -b4_c_function_decl([b4_prefix[pstate_delete]], [[void]], - [[b4_prefix[pstate *ps]], [[ps]]])dnl -]) - -# b4_declare_yyparse_ -# ------------------- -# When not the push parser. -m4_define([b4_declare_yyparse_], -[[#ifdef YYPARSE_PARAM -]b4_c_function_decl(b4_prefix[parse], [int], - [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ -#else /* ! YYPARSE_PARAM */ -]b4_c_function_decl(b4_prefix[parse], [int], b4_parse_param)[ -#endif /* ! YYPARSE_PARAM */]dnl -]) - - -# b4_declare_yyparse -# ------------------ -m4_define([b4_declare_yyparse], -[b4_push_if([b4_declare_yyparse_push_], - [b4_declare_yyparse_])[]dnl -]) - - -# b4_shared_declarations -# ---------------------- -# Declaration that might either go into the header (if --defines) -# or open coded in the parser body. -m4_define([b4_shared_declarations], -[b4_cpp_guard_open([b4_spec_defines_file])[ -]b4_declare_yydebug[ -]b4_percent_code_get([[requires]])[ -]b4_token_enums_defines(b4_tokens)[ -]b4_declare_yylstype[ -]b4_declare_yyparse[ -]b4_percent_code_get([[provides]])[ -]b4_cpp_guard_close([b4_spec_defines_file])[]dnl -]) - - -## -------------- ## -## Output files. ## -## -------------- ## - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Bison implementation for Yacc-like parsers in C], - [1984, 1989-1990, 2000-2012])[ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -]b4_identification -b4_percent_code_get([[top]])[]dnl -m4_if(b4_api_prefix, [yy], [], -[[/* Substitute the type names. */ -#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[ -#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[ -]m4_if(b4_prefix, [yy], [], -[[/* Substitute the variable and function names. */]b4_pull_if([[ -#define yyparse ]b4_prefix[parse]])b4_push_if([[ -#define yypush_parse ]b4_prefix[push_parse]b4_pull_if([[ -#define yypull_parse ]b4_prefix[pull_parse]])[ -#define yypstate_new ]b4_prefix[pstate_new -#define yypstate_delete ]b4_prefix[pstate_delete -#define yypstate ]b4_prefix[pstate]])[ -#define yylex ]b4_prefix[lex -#define yyerror ]b4_prefix[error -#define yylval ]b4_prefix[lval -#define yychar ]b4_prefix[char -#define yydebug ]b4_prefix[debug -#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ -#define yylloc ]b4_prefix[lloc]])])[ - -/* Copy the first part of user declarations. */ -]b4_user_pre_prologue[ - -]b4_null_define[ - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ -#endif - -]m4_ifval(m4_quote(b4_spec_defines_file), -[[/* In a future release of Bison, this section will be replaced - by #include "@basename(]b4_spec_defines_file[@)". */ -]])dnl -b4_shared_declarations[ - -/* Copy the second part of user declarations. */ -]b4_user_post_prologue -b4_percent_code_get[]dnl - -[#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#elif ]b4_c_modern[ -typedef signed char yytype_int8; -#else -typedef short int yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short int yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T && ]b4_c_modern[ -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t -# else -# define YYSIZE_T unsigned int -# endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[ -{ - return yyi; -} -#endif - -#if ]b4_lac_if([[1]], [[! defined yyoverflow || YYERROR_VERBOSE]])[ - -/* The parser invokes alloca or malloc; define the necessary symbols. */]dnl -b4_push_if([], [b4_lac_if([], [[ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && ]b4_c_modern[ -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif]])])[ - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && ]b4_c_modern[ -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && ]b4_c_modern[ -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif]b4_lac_if([[ -# define YYCOPY_NEEDED 1]])[ -#endif]b4_lac_if([], [[ /* ! defined yyoverflow || YYERROR_VERBOSE */]])[ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \ - && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc;]b4_locations_if([ - YYLTYPE yyls_alloc;])[ -}; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -]b4_locations_if( -[# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ - + 2 * YYSTACK_GAP_MAXIMUM)], -[# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM)])[ - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (YYID (0)) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL ]b4_final_state_number[ -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST ]b4_last[ - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS ]b4_tokens_number[ -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS ]b4_nterms_number[ -/* YYNRULES -- Number of rules. */ -#define YYNRULES ]b4_rules_number[ -/* YYNRULES -- Number of states. */ -#define YYNSTATES ]b4_states_number[ - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK ]b4_undef_token_number[ -#define YYMAXUTOK ]b4_user_token_number_max[ - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const ]b4_int_type_for([b4_translate])[ yytranslate[] = -{ - ]b4_translate[ -}; - -#if ]b4_api_PREFIX[DEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const ]b4_int_type_for([b4_prhs])[ yyprhs[] = -{ - ]b4_prhs[ -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const ]b4_int_type_for([b4_rhs])[ yyrhs[] = -{ - ]b4_rhs[ -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const ]b4_int_type_for([b4_rline])[ yyrline[] = -{ - ]b4_rline[ -}; -#endif - -#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[ -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - ]b4_tname[ -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ -static const ]b4_int_type_for([b4_toknum])[ yytoknum[] = -{ - ]b4_toknum[ -}; -# endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const ]b4_int_type_for([b4_r1])[ yyr1[] = -{ - ]b4_r1[ -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const ]b4_int_type_for([b4_r2])[ yyr2[] = -{ - ]b4_r2[ -}; - -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ -static const ]b4_int_type_for([b4_defact])[ yydefact[] = -{ - ]b4_defact[ -}; - -/* YYDEFGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = -{ - ]b4_defgoto[ -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF ]b4_pact_ninf[ -static const ]b4_int_type_for([b4_pact])[ yypact[] = -{ - ]b4_pact[ -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = -{ - ]b4_pgoto[ -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF ]b4_table_ninf[ -static const ]b4_int_type_for([b4_table])[ yytable[] = -{ - ]b4_table[ -}; - -#define yypact_value_is_default(Yystate) \ - ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[ - -#define yytable_value_is_error(Yytable_value) \ - ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[ - -static const ]b4_int_type_for([b4_check])[ yycheck[] = -{ - ]b4_check[ -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const ]b4_int_type_for([b4_stos])[ yystos[] = -{ - ]b4_stos[ -}; - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ - -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \]b4_lac_if([[ - YY_LAC_DISCARD ("YYBACKUP"); \]])[ - goto yybackup; \ - } \ - else \ - { \ - yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - -]b4_locations_if([[ -]b4_yylloc_default_define[ -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -]])[ -]b4_yy_location_print_define[ - -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM) -#else -# define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ -#endif - -/* Enable debugging if requested. */ -#if ]b4_api_PREFIX[DEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value]b4_locations_if([, Location])[]b4_user_args[); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - -]b4_yy_symbol_print_generate([b4_c_function_def])[ - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -]b4_c_function_def([yy_stack_print], [static void], - [[yytype_int16 *yybottom], [yybottom]], - [[yytype_int16 *yytop], [yytop]])[ -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -]b4_c_function_def([yy_reduce_print], [static void], - [[YYSTYPE *yyvsp], [yyvsp]], - b4_locations_if([[[YYLTYPE *yylsp], [yylsp]], - ])[[int yyrule], [yyrule]]m4_ifset([b4_parse_param], [, - b4_parse_param]))[ -{ - int yynrhs = yyr2[yyrule]; - int yyi; - unsigned long int yylno = yyrline[yyrule]; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &]b4_rhs_value(yynrhs, yyi + 1)[ - ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl - b4_user_args[); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, ]b4_locations_if([yylsp, ])[Rule]b4_user_args[); \ -} while (YYID (0)) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !]b4_api_PREFIX[DEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !]b4_api_PREFIX[DEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH ]b4_stack_depth_init[ -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH ]b4_stack_depth_max[ -#endif]b4_lac_if([[ - -/* Given a state stack such that *YYBOTTOM is its bottom, such that - *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty - stack, and such that *YYCAPACITY is the maximum number of elements it - can hold without a reallocation, make sure there is enough room to - store YYADD more elements. If not, allocate a new stack using - YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM, - *YYTOP, and *YYCAPACITY to reflect the new capacity and memory - location. If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack - using YYSTACK_FREE. Return 0 if successful or if no reallocation is - required. Return 1 if memory is exhausted. */ -static int -yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd, -#if ]b4_api_PREFIX[DEBUG - char const *yydebug_prefix, - char const *yydebug_suffix, -#endif - yytype_int16 **yybottom, - yytype_int16 *yybottom_no_free, - yytype_int16 **yytop, yytype_int16 *yytop_empty) -{ - YYSIZE_T yysize_old = - *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1; - YYSIZE_T yysize_new = yysize_old + yyadd; - if (*yycapacity < yysize_new) - { - YYSIZE_T yyalloc = 2 * yysize_new; - yytype_int16 *yybottom_new; - /* Use YYMAXDEPTH for maximum stack size given that the stack - should never need to grow larger than the main state stack - needs to grow without LAC. */ - if (YYMAXDEPTH < yysize_new) - { - YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix, - yydebug_suffix)); - return 1; - } - if (YYMAXDEPTH < yyalloc) - yyalloc = YYMAXDEPTH; - yybottom_new = - (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new); - if (!yybottom_new) - { - YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix, - yydebug_suffix)); - return 1; - } - if (*yytop != yytop_empty) - { - YYCOPY (yybottom_new, *yybottom, yysize_old); - *yytop = yybottom_new + (yysize_old - 1); - } - if (*yybottom != yybottom_no_free) - YYSTACK_FREE (*yybottom); - *yybottom = yybottom_new; - *yycapacity = yyalloc;]m4_if(b4_percent_define_get([[parse.lac.memory-trace]]), - [full], [[ - YYDPRINTF ((stderr, "%srealloc to %lu%s", yydebug_prefix, - (unsigned long int) yyalloc, yydebug_suffix));]])[ - } - return 0; -} - -/* Establish the initial context for the current lookahead if no initial - context is currently established. - - We define a context as a snapshot of the parser stacks. We define - the initial context for a lookahead as the context in which the - parser initially examines that lookahead in order to select a - syntactic action. Thus, if the lookahead eventually proves - syntactically unacceptable (possibly in a later context reached via a - series of reductions), the initial context can be used to determine - the exact set of tokens that would be syntactically acceptable in the - lookahead's place. Moreover, it is the context after which any - further semantic actions would be erroneous because they would be - determined by a syntactically unacceptable token. - - YY_LAC_ESTABLISH should be invoked when a reduction is about to be - performed in an inconsistent state (which, for the purposes of LAC, - includes consistent states that don't know they're consistent because - their default reductions have been disabled). Iff there is a - lookahead token, it should also be invoked before reporting a syntax - error. This latter case is for the sake of the debugging output. - - For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as - follows. If no initial context is currently established for the - current lookahead, then check if that lookahead can eventually be - shifted if syntactic actions continue from the current context. - Report a syntax error if it cannot. */ -#define YY_LAC_ESTABLISH \ -do { \ - if (!yy_lac_established) \ - { \ - YYDPRINTF ((stderr, \ - "LAC: initial context established for %s\n", \ - yytname[yytoken])); \ - yy_lac_established = 1; \ - { \ - int yy_lac_status = \ - yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \ - if (yy_lac_status == 2) \ - goto yyexhaustedlab; \ - if (yy_lac_status == 1) \ - goto yyerrlab; \ - } \ - } \ -} while (YYID (0)) - -/* Discard any previous initial lookahead context because of Event, - which may be a lookahead change or an invalidation of the currently - established initial context for the current lookahead. - - The most common example of a lookahead change is a shift. An example - of both cases is syntax error recovery. That is, a syntax error - occurs when the lookahead is syntactically erroneous for the - currently established initial context, so error recovery manipulates - the parser stacks to try to find a new initial context in which the - current lookahead is syntactically acceptable. If it fails to find - such a context, it discards the lookahead. */ -#if ]b4_api_PREFIX[DEBUG -# define YY_LAC_DISCARD(Event) \ -do { \ - if (yy_lac_established) \ - { \ - if (yydebug) \ - YYFPRINTF (stderr, "LAC: initial context discarded due to " \ - Event "\n"); \ - yy_lac_established = 0; \ - } \ -} while (YYID (0)) -#else -# define YY_LAC_DISCARD(Event) yy_lac_established = 0 -#endif - -/* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can - eventually (after perhaps some reductions) be shifted, return 1 if - not, or return 2 if memory is exhausted. As preconditions and - postconditions: *YYES_CAPACITY is the allocated size of the array to - which *YYES points, and either *YYES = YYESA or *YYES points to an - array allocated with YYSTACK_ALLOC. yy_lac may overwrite the - contents of either array, alter *YYES and *YYES_CAPACITY, and free - any old *YYES other than YYESA. */ -static int -yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes, - YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken) -{ - yytype_int16 *yyes_prev = yyssp; - yytype_int16 *yyesp = yyes_prev; - YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken])); - if (yytoken == YYUNDEFTOK) - { - YYDPRINTF ((stderr, " Always Err\n")); - return 1; - } - while (1) - { - int yyrule = yypact[*yyesp]; - if (yypact_value_is_default (yyrule) - || (yyrule += yytoken) < 0 || YYLAST < yyrule - || yycheck[yyrule] != yytoken) - { - yyrule = yydefact[*yyesp]; - if (yyrule == 0) - { - YYDPRINTF ((stderr, " Err\n")); - return 1; - } - } - else - { - yyrule = yytable[yyrule]; - if (yytable_value_is_error (yyrule)) - { - YYDPRINTF ((stderr, " Err\n")); - return 1; - } - if (0 < yyrule) - { - YYDPRINTF ((stderr, " S%d\n", yyrule)); - return 0; - } - yyrule = -yyrule; - } - { - YYSIZE_T yylen = yyr2[yyrule]; - YYDPRINTF ((stderr, " R%d", yyrule - 1)); - if (yyesp != yyes_prev) - { - YYSIZE_T yysize = yyesp - *yyes + 1; - if (yylen < yysize) - { - yyesp -= yylen; - yylen = 0; - } - else - { - yylen -= yysize; - yyesp = yyes_prev; - } - } - if (yylen) - yyesp = yyes_prev -= yylen; - } - { - int yystate; - { - int yylhs = yyr1[yyrule] - YYNTOKENS; - yystate = yypgoto[yylhs] + *yyesp; - if (yystate < 0 || YYLAST < yystate - || yycheck[yystate] != *yyesp) - yystate = yydefgoto[yylhs]; - else - yystate = yytable[yystate]; - } - if (yyesp == yyes_prev) - { - yyesp = *yyes; - *yyesp = yystate; - } - else - { - if (yy_lac_stack_realloc (yyes_capacity, 1, -#if ]b4_api_PREFIX[DEBUG - " (", ")", -#endif - yyes, yyesa, &yyesp, yyes_prev)) - { - YYDPRINTF ((stderr, "\n")); - return 2; - } - *++yyesp = yystate; - } - YYDPRINTF ((stderr, " G%d", yystate)); - } - } -}]])[ - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -]b4_c_function_def([yystrlen], [static YYSIZE_T], - [[const char *yystr], [yystr]])[ -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -]b4_c_function_def([yystpcpy], [static char *], - [[char *yydest], [yydest]], [[const char *yysrc], [yysrc]])[ -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP.]b4_lac_if([[ In order to see if a particular token T is a - valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).]])[ - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store]b4_lac_if([[ or if - yy_lac returned 2]])[. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - ]b4_lac_if([[yytype_int16 *yyesa, yytype_int16 **yyes, - YYSIZE_T *yyes_capacity, ]])[yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULL; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar.]b4_lac_if([[ - In the first two cases, it might appear that the current syntax - error should have been detected in the previous state when yy_lac - was invoked. However, at that time, there might have been a - different syntax error that discarded a different initial context - during error recovery, leaving behind the current lookahead.]], [[ - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state.]])[ - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp];]b4_lac_if([[ - YYDPRINTF ((stderr, "Constructing syntax error message\n"));]])[ - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - {]b4_lac_if([], [[ - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;]])[ - int yyx;]b4_lac_if([[ - - for (yyx = 0; yyx < YYNTOKENS; ++yyx) - if (yyx != YYTERROR && yyx != YYUNDEFTOK) - { - { - int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity, - yyssp, yyx); - if (yy_lac_status == 2) - return 2; - if (yy_lac_status == 1) - continue; - }]], [[ - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - {]])[ - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - }]b4_lac_if([[ -# if ]b4_api_PREFIX[DEBUG - else if (yydebug) - YYFPRINTF (stderr, "No expected tokens.\n"); -# endif]])[ - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -]b4_yydestruct_generate([b4_c_function_def])[ - -]b4_pure_if([], [ - -b4_declare_scanner_communication_variables])[]b4_push_if([[ - -struct yypstate - {]b4_declare_parser_state_variables[ - /* Used to determine if this is the first time this instance has - been used. */ - int yynew; - };]b4_pure_if([], [[ - -static char yypstate_allocated = 0;]])b4_pull_if([ - -b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[ -{ - return yypull_parse (YY_NULL]m4_ifset([b4_parse_param], - [[, ]b4_c_args(b4_parse_param)])[); -} - -]b4_c_function_def([[yypull_parse]], [[int]], - [[[yypstate *yyps]], [[yyps]]]m4_ifset([b4_parse_param], [, - b4_parse_param]))[ -{ - int yystatus; - yypstate *yyps_local;]b4_pure_if([[ - int yychar; - YYSTYPE yylval;]b4_locations_if([[ - static YYLTYPE yyloc_default][]b4_yyloc_default[; - YYLTYPE yylloc = yyloc_default;]])])[ - if (yyps) - yyps_local = yyps; - else - { - yyps_local = yypstate_new (); - if (!yyps_local) - {]b4_pure_if([[ - yyerror (]b4_yyerror_args[YY_("memory exhausted"));]], [[ - if (!yypstate_allocated) - yyerror (]b4_yyerror_args[YY_("memory exhausted"));]])[ - return 2; - } - } - do { - yychar = YYLEX; - yystatus = - yypush_parse (yyps_local]b4_pure_if([[, yychar, &yylval]b4_locations_if([[, &yylloc]])])m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])[); - } while (yystatus == YYPUSH_MORE); - if (!yyps) - yypstate_delete (yyps_local); - return yystatus; -}]])[ - -/* Initialize the parser data structure. */ -]b4_c_function_def([[yypstate_new]], [[yypstate *]])[ -{ - yypstate *yyps;]b4_pure_if([], [[ - if (yypstate_allocated) - return YY_NULL;]])[ - yyps = (yypstate *) malloc (sizeof *yyps); - if (!yyps) - return YY_NULL; - yyps->yynew = 1;]b4_pure_if([], [[ - yypstate_allocated = 1;]])[ - return yyps; -} - -]b4_c_function_def([[yypstate_delete]], [[void]], - [[[yypstate *yyps]], [[yyps]]])[ -{ -#ifndef yyoverflow - /* If the stack was reallocated but the parse did not complete, then the - stack still needs to be freed. */ - if (!yyps->yynew && yyps->yyss != yyps->yyssa) - YYSTACK_FREE (yyps->yyss); -#endif]b4_lac_if([[ - if (!yyps->yynew && yyps->yyes != yyps->yyesa) - YYSTACK_FREE (yyps->yyes);]])[ - free (yyps);]b4_pure_if([], [[ - yypstate_allocated = 0;]])[ -} -]b4_pure_if([[ -#define ]b4_prefix[nerrs yyps->]b4_prefix[nerrs]])[ -#define yystate yyps->yystate -#define yyerrstatus yyps->yyerrstatus -#define yyssa yyps->yyssa -#define yyss yyps->yyss -#define yyssp yyps->yyssp -#define yyvsa yyps->yyvsa -#define yyvs yyps->yyvs -#define yyvsp yyps->yyvsp]b4_locations_if([[ -#define yylsa yyps->yylsa -#define yyls yyps->yyls -#define yylsp yyps->yylsp -#define yyerror_range yyps->yyerror_range]])[ -#define yystacksize yyps->yystacksize]b4_lac_if([[ -#define yyesa yyps->yyesa -#define yyes yyps->yyes -#define yyes_capacity yyps->yyes_capacity]])[ - - -/*---------------. -| yypush_parse. | -`---------------*/ - -]b4_c_function_def([[yypush_parse]], [[int]], - [[[yypstate *yyps]], [[yyps]]]b4_pure_if([, - [[[int yypushed_char]], [[yypushed_char]]], - [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([, - [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [, - b4_parse_param]))], [[ - - -/*----------. -| yyparse. | -`----------*/ - -#ifdef YYPARSE_PARAM -]b4_c_function_def([yyparse], [int], - [[void *YYPARSE_PARAM], [YYPARSE_PARAM]])[ -#else /* ! YYPARSE_PARAM */ -]b4_c_function_def([yyparse], [int], b4_parse_param)[ -#endif]])[ -{]b4_pure_if([b4_declare_scanner_communication_variables -])b4_push_if([b4_pure_if([], [[ - int yypushed_char = yychar; - YYSTYPE yypushed_val = yylval;]b4_locations_if([[ - YYLTYPE yypushed_loc = yylloc;]]) -])], - [b4_declare_parser_state_variables -])b4_lac_if([[ - int yy_lac_established = 0;]])[ - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval;]b4_locations_if([[ - YYLTYPE yyloc;]])[ - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)]b4_locations_if([, yylsp -= (N)])[) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0;]b4_push_if([[ - - if (!yyps->yynew) - { - yyn = yypact[yystate]; - goto yyread_pushed_token; - }]])[ - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa;]b4_locations_if([[ - yylsp = yyls = yylsa;]])[ - yystacksize = YYINITDEPTH;]b4_lac_if([[ - - yyes = yyesa; - yyes_capacity = sizeof yyesa / sizeof *yyes; - if (YYMAXDEPTH < yyes_capacity) - yyes_capacity = YYMAXDEPTH;]])[ - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [], - [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef[]dnl -m4_ifdef([b4_dollar_dollar_used],[[ yyvsp[0] = yylval; -]])])dnl -b4_locations_if([[ yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[; -]])dnl -[ goto yysetstate; - -/*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | -`------------------------------------------------------------*/ - yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - yysetstate: - *yyssp = yystate; - - if (yyss + yystacksize - 1 <= yyssp) - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; - -#ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss;]b4_locations_if([ - YYLTYPE *yyls1 = yyls;])[ - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp),]b4_locations_if([ - &yyls1, yysize * sizeof (*yylsp),])[ - &yystacksize); -]b4_locations_if([ - yyls = yyls1;])[ - yyss = yyss1; - yyvs = yyvs1; - } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs);]b4_locations_if([ - YYSTACK_RELOCATE (yyls_alloc, yyls);])[ -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif -#endif /* no yyoverflow */ - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1;]b4_locations_if([ - yylsp = yyls + yysize - 1;])[ - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - {]b4_push_if([[ - if (!yyps->yynew) - {]b4_use_push_for_pull_if([], [[ - YYDPRINTF ((stderr, "Return for a new token:\n"));]])[ - yyresult = YYPUSH_MORE; - goto yypushreturn; - } - yyps->yynew = 0;]b4_pure_if([], [[ - /* Restoring the pushed token is only necessary for the first - yypush_parse invocation since subsequent invocations don't overwrite - it before jumping to yyread_pushed_token. */ - yychar = yypushed_char; - yylval = yypushed_val;]b4_locations_if([[ - yylloc = yypushed_loc;]])])[ -yyread_pushed_token:]])[ - YYDPRINTF ((stderr, "Reading a token: "));]b4_push_if([b4_pure_if([[ - yychar = yypushed_char; - if (yypushed_val) - yylval = *yypushed_val;]b4_locations_if([[ - if (yypushed_loc) - yylloc = *yypushed_loc;]])])], [[ - yychar = YYLEX;]])[ - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)]b4_lac_if([[ - { - YY_LAC_ESTABLISH; - goto yydefault; - }]], [[ - goto yydefault;]])[ - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab;]b4_lac_if([[ - YY_LAC_ESTABLISH;]])[ - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY;]b4_lac_if([[ - YY_LAC_DISCARD ("shift");]])[ - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END -]b4_locations_if([ *++yylsp = yylloc;])[ - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- Do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - -]b4_locations_if( -[[ /* Default location. */ - YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);]])[ - YY_REDUCE_PRINT (yyn);]b4_lac_if([[ - { - int yychar_backup = yychar; - switch (yyn) - { - ]b4_user_actions[ - default: break; - } - if (yychar_backup != yychar) - YY_LAC_DISCARD ("yychar change"); - }]], [[ - switch (yyn) - { - ]b4_user_actions[ - default: break; - }]])[ - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval;]b4_locations_if([ - *++yylsp = yyloc;])[ - - /* Now `shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; - - goto yynewstate; - - -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (]b4_yyerror_args[YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \]b4_lac_if([[ - yyesa, &yyes, &yyes_capacity, \]])[ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status;]b4_lac_if([[ - if (yychar != YYEMPTY) - YY_LAC_ESTABLISH;]])[ - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (]b4_yyerror_args[yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif - } - -]b4_locations_if([[ yyerror_range[1] = yylloc;]])[ - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; - -]b4_locations_if([[ yyerror_range[1] = yylsp[1-yylen]; -]])[ /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - -]b4_locations_if([[ yyerror_range[1] = *yylsp;]])[ - yydestruct ("Error: popping", - yystos[yystate], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - }]b4_lac_if([[ - - /* If the stack popping above didn't lose the initial context for the - current lookahead token, the shift below will for sure. */ - YY_LAC_DISCARD ("error recovery");]])[ - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END -]b4_locations_if([[ - yyerror_range[2] = yylloc; - /* Using YYLLOC is tempting, but would change the location of - the lookahead. YYLOC is available though. */ - YYLLOC_DEFAULT (yyloc, yyerror_range, 2); - *++yylsp = yyloc;]])[ - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - -#if ]b4_lac_if([[1]], [[!defined yyoverflow || YYERROR_VERBOSE]])[ -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (]b4_yyerror_args[YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ -#endif - -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval]b4_locations_if([, &yylloc])[]b4_user_args[); - } - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp]b4_locations_if([, yylsp])[]b4_user_args[); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif]b4_lac_if([[ - if (yyes != yyesa) - YYSTACK_FREE (yyes);]])b4_push_if([[ - yyps->yynew = 1; - -yypushreturn:]])[ -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - /* Make sure YYID is used. */ - return YYID (yyresult); -} - - -]b4_epilogue[]dnl -b4_output_end() - -b4_defines_if( -[b4_output_begin([b4_spec_defines_file])[ -]b4_copyright([Bison interface for Yacc-like parsers in C], - [1984, 1989-1990, 2000-2012])[ - -]b4_shared_declarations[ -]b4_output_end() -]) From ac1324032855ce082e387b8495dfa4a082d4acf5 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 00:31:43 +0100 Subject: [PATCH 2/4] Add a note to README.md about how to build the bison grammar --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index f56817c7..7a60e280 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,20 @@ CMake: The currently maintained and preferred way of building is through CMake. In MSVC, after running CMake, you may need to use the Configuration Manager to check the INSTALL project. +The grammar in glslang/MachineIndependent/glslang.y has to be recompiled with +bison if it changes, the output files are committed to the repo to avoid every +developer needing to have bison configured to compile the project when grammar +changes are quite infrequent. For windows you can get binaries from +[GnuWin32](http://gnuwin32.sourceforge.net/packages/bison.htm). + +The command to rebuild is: + +``` +bison --defines=MachineIndependent/glslang_tab.cpp.h + -t MachineIndependent/glslang.y + -o MachineIndependent/glslang_tab.cpp +``` + Programmatic Interfaces ----------------------- From 530690e44250e0fa7278c3af637120b0b1483a9d Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 00:54:05 +0100 Subject: [PATCH 3/4] Commit bison-generated files from Windows GNU Bison 2.7 --- .gitignore | 2 - glslang/MachineIndependent/glslang_tab.cpp | 7790 ++++++++++++++++++ glslang/MachineIndependent/glslang_tab.cpp.h | 370 + 3 files changed, 8160 insertions(+), 2 deletions(-) create mode 100644 glslang/MachineIndependent/glslang_tab.cpp create mode 100644 glslang/MachineIndependent/glslang_tab.cpp.h diff --git a/.gitignore b/.gitignore index 153aa048..d93c2022 100644 --- a/.gitignore +++ b/.gitignore @@ -3,8 +3,6 @@ *.so *.exe tags -glslang/MachineIndependent/glslang_tab.cpp -glslang/MachineIndependent/glslang_tab.cpp.h build/ Test/localResults/ Test/multiThread.out diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp new file mode 100644 index 00000000..d435aa80 --- /dev/null +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -0,0 +1,7790 @@ +/* A Bison parser, made by GNU Bison 2.7. */ + +/* Bison implementation for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.7" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Push parsers. */ +#define YYPUSH 0 + +/* Pull parsers. */ +#define YYPULL 1 + + + + +/* Copy the first part of user declarations. */ +/* Line 371 of yacc.c */ +#line 41 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + +/* Based on: +ANSI C Yacc grammar + +In 1985, Jeff Lee published his Yacc grammar (which is accompanied by a +matching Lex specification) for the April 30, 1985 draft version of the +ANSI C standard. Tom Stockfisch reposted it to net.sources in 1987; that +original, as mentioned in the answer to question 17.25 of the comp.lang.c +FAQ, can be ftp'ed from ftp.uu.net, file usenet/net.sources/ansi.c.grammar.Z. + +I intend to keep this version as close to the current C Standard grammar as +possible; please let me know if you discover discrepancies. + +Jutta Degener, 1995 +*/ + +#include "SymbolTable.h" +#include "ParseHelper.h" +#include "../Public/ShaderLang.h" + +using namespace glslang; + + +/* Line 371 of yacc.c */ +#line 93 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" + +# ifndef YY_NULL +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULL nullptr +# else +# define YY_NULL 0 +# endif +# endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* In a future release of Bison, this section will be replaced + by #include "glslang_tab.cpp.h". */ +#ifndef YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + BREAK = 266, + CONTINUE = 267, + DO = 268, + ELSE = 269, + FOR = 270, + IF = 271, + DISCARD = 272, + RETURN = 273, + SWITCH = 274, + CASE = 275, + DEFAULT = 276, + SUBROUTINE = 277, + BVEC2 = 278, + BVEC3 = 279, + BVEC4 = 280, + IVEC2 = 281, + IVEC3 = 282, + IVEC4 = 283, + UVEC2 = 284, + UVEC3 = 285, + UVEC4 = 286, + VEC2 = 287, + VEC3 = 288, + VEC4 = 289, + MAT2 = 290, + MAT3 = 291, + MAT4 = 292, + CENTROID = 293, + IN = 294, + OUT = 295, + INOUT = 296, + UNIFORM = 297, + PATCH = 298, + SAMPLE = 299, + BUFFER = 300, + SHARED = 301, + COHERENT = 302, + VOLATILE = 303, + RESTRICT = 304, + READONLY = 305, + WRITEONLY = 306, + DVEC2 = 307, + DVEC3 = 308, + DVEC4 = 309, + DMAT2 = 310, + DMAT3 = 311, + DMAT4 = 312, + NOPERSPECTIVE = 313, + FLAT = 314, + SMOOTH = 315, + LAYOUT = 316, + MAT2X2 = 317, + MAT2X3 = 318, + MAT2X4 = 319, + MAT3X2 = 320, + MAT3X3 = 321, + MAT3X4 = 322, + MAT4X2 = 323, + MAT4X3 = 324, + MAT4X4 = 325, + DMAT2X2 = 326, + DMAT2X3 = 327, + DMAT2X4 = 328, + DMAT3X2 = 329, + DMAT3X3 = 330, + DMAT3X4 = 331, + DMAT4X2 = 332, + DMAT4X3 = 333, + DMAT4X4 = 334, + ATOMIC_UINT = 335, + SAMPLER1D = 336, + SAMPLER2D = 337, + SAMPLER3D = 338, + SAMPLERCUBE = 339, + SAMPLER1DSHADOW = 340, + SAMPLER2DSHADOW = 341, + SAMPLERCUBESHADOW = 342, + SAMPLER1DARRAY = 343, + SAMPLER2DARRAY = 344, + SAMPLER1DARRAYSHADOW = 345, + SAMPLER2DARRAYSHADOW = 346, + ISAMPLER1D = 347, + ISAMPLER2D = 348, + ISAMPLER3D = 349, + ISAMPLERCUBE = 350, + ISAMPLER1DARRAY = 351, + ISAMPLER2DARRAY = 352, + USAMPLER1D = 353, + USAMPLER2D = 354, + USAMPLER3D = 355, + USAMPLERCUBE = 356, + USAMPLER1DARRAY = 357, + USAMPLER2DARRAY = 358, + SAMPLER2DRECT = 359, + SAMPLER2DRECTSHADOW = 360, + ISAMPLER2DRECT = 361, + USAMPLER2DRECT = 362, + SAMPLERBUFFER = 363, + ISAMPLERBUFFER = 364, + USAMPLERBUFFER = 365, + SAMPLERCUBEARRAY = 366, + SAMPLERCUBEARRAYSHADOW = 367, + ISAMPLERCUBEARRAY = 368, + USAMPLERCUBEARRAY = 369, + SAMPLER2DMS = 370, + ISAMPLER2DMS = 371, + USAMPLER2DMS = 372, + SAMPLER2DMSARRAY = 373, + ISAMPLER2DMSARRAY = 374, + USAMPLER2DMSARRAY = 375, + SAMPLEREXTERNALOES = 376, + SAMPLER = 377, + SAMPLERSHADOW = 378, + TEXTURE1D = 379, + TEXTURE2D = 380, + TEXTURE3D = 381, + TEXTURECUBE = 382, + TEXTURE1DARRAY = 383, + TEXTURE2DARRAY = 384, + ITEXTURE1D = 385, + ITEXTURE2D = 386, + ITEXTURE3D = 387, + ITEXTURECUBE = 388, + ITEXTURE1DARRAY = 389, + ITEXTURE2DARRAY = 390, + UTEXTURE1D = 391, + UTEXTURE2D = 392, + UTEXTURE3D = 393, + UTEXTURECUBE = 394, + UTEXTURE1DARRAY = 395, + UTEXTURE2DARRAY = 396, + TEXTURE2DRECT = 397, + ITEXTURE2DRECT = 398, + UTEXTURE2DRECT = 399, + TEXTUREBUFFER = 400, + ITEXTUREBUFFER = 401, + UTEXTUREBUFFER = 402, + TEXTURECUBEARRAY = 403, + ITEXTURECUBEARRAY = 404, + UTEXTURECUBEARRAY = 405, + TEXTURE2DMS = 406, + ITEXTURE2DMS = 407, + UTEXTURE2DMS = 408, + TEXTURE2DMSARRAY = 409, + ITEXTURE2DMSARRAY = 410, + UTEXTURE2DMSARRAY = 411, + SUBPASSINPUT = 412, + SUBPASSINPUTMS = 413, + ISUBPASSINPUT = 414, + ISUBPASSINPUTMS = 415, + USUBPASSINPUT = 416, + USUBPASSINPUTMS = 417, + IMAGE1D = 418, + IIMAGE1D = 419, + UIMAGE1D = 420, + IMAGE2D = 421, + IIMAGE2D = 422, + UIMAGE2D = 423, + IMAGE3D = 424, + IIMAGE3D = 425, + UIMAGE3D = 426, + IMAGE2DRECT = 427, + IIMAGE2DRECT = 428, + UIMAGE2DRECT = 429, + IMAGECUBE = 430, + IIMAGECUBE = 431, + UIMAGECUBE = 432, + IMAGEBUFFER = 433, + IIMAGEBUFFER = 434, + UIMAGEBUFFER = 435, + IMAGE1DARRAY = 436, + IIMAGE1DARRAY = 437, + UIMAGE1DARRAY = 438, + IMAGE2DARRAY = 439, + IIMAGE2DARRAY = 440, + UIMAGE2DARRAY = 441, + IMAGECUBEARRAY = 442, + IIMAGECUBEARRAY = 443, + UIMAGECUBEARRAY = 444, + IMAGE2DMS = 445, + IIMAGE2DMS = 446, + UIMAGE2DMS = 447, + IMAGE2DMSARRAY = 448, + IIMAGE2DMSARRAY = 449, + UIMAGE2DMSARRAY = 450, + STRUCT = 451, + VOID = 452, + WHILE = 453, + IDENTIFIER = 454, + TYPE_NAME = 455, + FLOATCONSTANT = 456, + DOUBLECONSTANT = 457, + INTCONSTANT = 458, + UINTCONSTANT = 459, + BOOLCONSTANT = 460, + LEFT_OP = 461, + RIGHT_OP = 462, + INC_OP = 463, + DEC_OP = 464, + LE_OP = 465, + GE_OP = 466, + EQ_OP = 467, + NE_OP = 468, + AND_OP = 469, + OR_OP = 470, + XOR_OP = 471, + MUL_ASSIGN = 472, + DIV_ASSIGN = 473, + ADD_ASSIGN = 474, + MOD_ASSIGN = 475, + LEFT_ASSIGN = 476, + RIGHT_ASSIGN = 477, + AND_ASSIGN = 478, + XOR_ASSIGN = 479, + OR_ASSIGN = 480, + SUB_ASSIGN = 481, + LEFT_PAREN = 482, + RIGHT_PAREN = 483, + LEFT_BRACKET = 484, + RIGHT_BRACKET = 485, + LEFT_BRACE = 486, + RIGHT_BRACE = 487, + DOT = 488, + COMMA = 489, + COLON = 490, + EQUAL = 491, + SEMICOLON = 492, + BANG = 493, + DASH = 494, + TILDE = 495, + PLUS = 496, + STAR = 497, + SLASH = 498, + PERCENT = 499, + LEFT_ANGLE = 500, + RIGHT_ANGLE = 501, + VERTICAL_BAR = 502, + CARET = 503, + AMPERSAND = 504, + QUESTION = 505, + INVARIANT = 506, + PRECISE = 507, + HIGH_PRECISION = 508, + MEDIUM_PRECISION = 509, + LOW_PRECISION = 510, + PRECISION = 511, + PACKED = 512, + RESOURCE = 513, + SUPERP = 514 + }; +#endif + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ +/* Line 387 of yacc.c */ +#line 66 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + struct { + glslang::TSourceLoc loc; + union { + glslang::TString *string; + int i; + unsigned int u; + bool b; + double d; + }; + glslang::TSymbol* symbol; + } lex; + struct { + glslang::TSourceLoc loc; + glslang::TOperator op; + union { + TIntermNode* intermNode; + glslang::TIntermNodePair nodePair; + glslang::TIntermTyped* intermTypedNode; + }; + union { + glslang::TPublicType type; + glslang::TFunction* function; + glslang::TParameter param; + glslang::TTypeLoc typeLine; + glslang::TTypeList* typeList; + glslang::TArraySizes* arraySizes; + glslang::TIdentifierList* identifierList; + }; + } interm; + + +/* Line 387 of yacc.c */ +#line 428 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + +#endif /* !YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ + +/* Copy the second part of user declarations. */ +/* Line 390 of yacc.c */ +#line 98 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + +/* windows only pragma */ +#ifdef _MSC_VER + #pragma warning(disable : 4065) + #pragma warning(disable : 4127) + #pragma warning(disable : 4244) +#endif + +#define parseContext (*pParseContext) +#define yyerror(context, msg) context->parserError(msg) + +extern int yylex(YYSTYPE*, TParseContext&); + + +/* Line 390 of yacc.c */ +#line 471 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if defined YYENABLE_NLS && YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(Msgid) dgettext ("bison-runtime", Msgid) +# endif +# endif +# ifndef YY_ +# define YY_(Msgid) Msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(E) ((void) (E)) +#else +# define YYUSE(E) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; +#endif +{ + return yyi; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef EXIT_SUCCESS +# define EXIT_SUCCESS 0 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +# define YYCOPY_NEEDED 1 + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +#if defined YYCOPY_NEEDED && YYCOPY_NEEDED +/* Copy COUNT objects from SRC to DST. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(Dst, Src, Count) \ + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) +# else +# define YYCOPY(Dst, Src, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif +#endif /* !YYCOPY_NEEDED */ + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 240 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 5659 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 260 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 100 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 411 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 543 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 514 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint16 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, + 21, 23, 28, 30, 34, 37, 40, 42, 44, 46, + 49, 52, 55, 57, 60, 64, 67, 69, 71, 73, + 76, 79, 82, 84, 86, 88, 90, 92, 96, 100, + 104, 106, 110, 114, 116, 120, 124, 126, 130, 134, + 138, 142, 144, 148, 152, 154, 158, 160, 164, 166, + 170, 172, 176, 178, 182, 184, 188, 190, 191, 198, + 200, 204, 206, 208, 210, 212, 214, 216, 218, 220, + 222, 224, 226, 228, 232, 234, 237, 240, 245, 248, + 252, 257, 260, 264, 269, 270, 277, 280, 284, 287, + 289, 291, 294, 298, 302, 305, 309, 312, 314, 317, + 319, 321, 323, 327, 332, 339, 345, 347, 350, 354, + 360, 365, 367, 370, 372, 374, 376, 378, 383, 385, + 389, 391, 395, 397, 399, 401, 404, 406, 408, 410, + 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, + 452, 457, 459, 463, 465, 468, 471, 475, 479, 484, + 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, + 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, + 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, + 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, + 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, + 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, + 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, + 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, + 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, + 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, + 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, + 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, + 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, + 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, + 806, 808, 810, 812, 814, 816, 817, 824, 825, 831, + 833, 836, 840, 845, 847, 851, 853, 856, 858, 862, + 867, 869, 873, 875, 877, 879, 881, 883, 885, 887, + 889, 891, 893, 896, 897, 898, 904, 906, 908, 909, + 912, 913, 916, 919, 923, 925, 928, 930, 933, 939, + 943, 945, 947, 952, 953, 962, 963, 965, 969, 972, + 973, 980, 981, 990, 991, 999, 1001, 1003, 1005, 1006, + 1009, 1013, 1016, 1019, 1022, 1026, 1029, 1031, 1034, 1036, + 1038, 1039 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 356, 0, -1, 199, -1, 261, -1, 203, -1, 204, + -1, 201, -1, 202, -1, 205, -1, 227, 289, 228, + -1, 262, -1, 263, 229, 264, 230, -1, 265, -1, + 263, 233, 199, -1, 263, 208, -1, 263, 209, -1, + 289, -1, 266, -1, 267, -1, 269, 228, -1, 268, + 228, -1, 270, 197, -1, 270, -1, 270, 287, -1, + 269, 234, 287, -1, 271, 227, -1, 315, -1, 263, + -1, 263, -1, 208, 272, -1, 209, 272, -1, 273, + 272, -1, 241, -1, 239, -1, 238, -1, 240, -1, + 272, -1, 274, 242, 272, -1, 274, 243, 272, -1, + 274, 244, 272, -1, 274, -1, 275, 241, 274, -1, + 275, 239, 274, -1, 275, -1, 276, 206, 275, -1, + 276, 207, 275, -1, 276, -1, 277, 245, 276, -1, + 277, 246, 276, -1, 277, 210, 276, -1, 277, 211, + 276, -1, 277, -1, 278, 212, 277, -1, 278, 213, + 277, -1, 278, -1, 279, 249, 278, -1, 279, -1, + 280, 248, 279, -1, 280, -1, 281, 247, 280, -1, + 281, -1, 282, 214, 281, -1, 282, -1, 283, 216, + 282, -1, 283, -1, 284, 215, 283, -1, 284, -1, + -1, 284, 250, 286, 289, 235, 287, -1, 285, -1, + 272, 288, 287, -1, 236, -1, 217, -1, 218, -1, + 220, -1, 219, -1, 226, -1, 221, -1, 222, -1, + 223, -1, 224, -1, 225, -1, 287, -1, 289, 234, + 287, -1, 285, -1, 295, 237, -1, 302, 237, -1, + 256, 318, 315, 237, -1, 292, 237, -1, 292, 199, + 237, -1, 292, 199, 316, 237, -1, 311, 237, -1, + 311, 199, 237, -1, 311, 199, 294, 237, -1, -1, + 311, 199, 231, 293, 322, 232, -1, 234, 199, -1, + 294, 234, 199, -1, 296, 228, -1, 298, -1, 297, + -1, 298, 300, -1, 297, 234, 300, -1, 304, 199, + 227, -1, 315, 199, -1, 315, 199, 316, -1, 311, + 299, -1, 299, -1, 311, 301, -1, 301, -1, 315, + -1, 303, -1, 302, 234, 199, -1, 302, 234, 199, + 316, -1, 302, 234, 199, 316, 236, 326, -1, 302, + 234, 199, 236, 326, -1, 304, -1, 304, 199, -1, + 304, 199, 316, -1, 304, 199, 316, 236, 326, -1, + 304, 199, 236, 326, -1, 315, -1, 311, 315, -1, + 251, -1, 60, -1, 59, -1, 58, -1, 61, 227, + 308, 228, -1, 309, -1, 308, 234, 309, -1, 199, + -1, 199, 236, 290, -1, 46, -1, 252, -1, 312, + -1, 311, 312, -1, 313, -1, 307, -1, 318, -1, + 306, -1, 305, -1, 310, -1, 5, -1, 3, -1, + 4, -1, 41, -1, 39, -1, 40, -1, 38, -1, + 43, -1, 44, -1, 42, -1, 45, -1, 46, -1, + 47, -1, 48, -1, 49, -1, 50, -1, 51, -1, + 22, -1, 22, 227, 314, 228, -1, 200, -1, 314, + 234, 200, -1, 317, -1, 317, 316, -1, 229, 230, + -1, 229, 285, 230, -1, 316, 229, 230, -1, 316, + 229, 285, 230, -1, 197, -1, 7, -1, 8, -1, + 9, -1, 10, -1, 6, -1, 32, -1, 33, -1, + 34, -1, 52, -1, 53, -1, 54, -1, 23, -1, + 24, -1, 25, -1, 26, -1, 27, -1, 28, -1, + 29, -1, 30, -1, 31, -1, 35, -1, 36, -1, + 37, -1, 62, -1, 63, -1, 64, -1, 65, -1, + 66, -1, 67, -1, 68, -1, 69, -1, 70, -1, + 55, -1, 56, -1, 57, -1, 71, -1, 72, -1, + 73, -1, 74, -1, 75, -1, 76, -1, 77, -1, + 78, -1, 79, -1, 80, -1, 81, -1, 82, -1, + 83, -1, 84, -1, 85, -1, 86, -1, 87, -1, + 88, -1, 89, -1, 90, -1, 91, -1, 111, -1, + 112, -1, 92, -1, 93, -1, 94, -1, 95, -1, + 96, -1, 97, -1, 113, -1, 98, -1, 99, -1, + 100, -1, 101, -1, 102, -1, 103, -1, 114, -1, + 104, -1, 105, -1, 106, -1, 107, -1, 108, -1, + 109, -1, 110, -1, 115, -1, 116, -1, 117, -1, + 118, -1, 119, -1, 120, -1, 122, -1, 123, -1, + 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, + 129, -1, 148, -1, 130, -1, 131, -1, 132, -1, + 133, -1, 134, -1, 135, -1, 149, -1, 136, -1, + 137, -1, 138, -1, 139, -1, 140, -1, 141, -1, + 150, -1, 142, -1, 143, -1, 144, -1, 145, -1, + 146, -1, 147, -1, 151, -1, 152, -1, 153, -1, + 154, -1, 155, -1, 156, -1, 163, -1, 164, -1, + 165, -1, 166, -1, 167, -1, 168, -1, 169, -1, + 170, -1, 171, -1, 172, -1, 173, -1, 174, -1, + 175, -1, 176, -1, 177, -1, 178, -1, 179, -1, + 180, -1, 181, -1, 182, -1, 183, -1, 184, -1, + 185, -1, 186, -1, 187, -1, 188, -1, 189, -1, + 190, -1, 191, -1, 192, -1, 193, -1, 194, -1, + 195, -1, 121, -1, 157, -1, 158, -1, 159, -1, + 160, -1, 161, -1, 162, -1, 319, -1, 200, -1, + 253, -1, 254, -1, 255, -1, -1, 196, 199, 231, + 320, 322, 232, -1, -1, 196, 231, 321, 322, 232, + -1, 323, -1, 322, 323, -1, 315, 324, 237, -1, + 311, 315, 324, 237, -1, 325, -1, 324, 234, 325, + -1, 199, -1, 199, 316, -1, 287, -1, 231, 327, + 232, -1, 231, 327, 234, 232, -1, 326, -1, 327, + 234, 326, -1, 291, -1, 331, -1, 330, -1, 328, + -1, 340, -1, 341, -1, 344, -1, 347, -1, 348, + -1, 355, -1, 231, 232, -1, -1, -1, 231, 332, + 339, 333, 232, -1, 338, -1, 330, -1, -1, 336, + 331, -1, -1, 337, 330, -1, 231, 232, -1, 231, + 339, 232, -1, 329, -1, 339, 329, -1, 237, -1, + 289, 237, -1, 16, 227, 289, 228, 342, -1, 335, + 14, 335, -1, 335, -1, 289, -1, 304, 199, 236, + 326, -1, -1, 19, 227, 289, 228, 345, 231, 346, + 232, -1, -1, 339, -1, 20, 289, 235, -1, 21, + 235, -1, -1, 198, 227, 349, 343, 228, 334, -1, + -1, 13, 350, 329, 198, 227, 289, 228, 237, -1, + -1, 15, 227, 351, 352, 354, 228, 334, -1, 340, + -1, 328, -1, 343, -1, -1, 353, 237, -1, 353, + 237, 289, -1, 12, 237, -1, 11, 237, -1, 18, + 237, -1, 18, 289, 237, -1, 17, 237, -1, 357, + -1, 356, 357, -1, 358, -1, 291, -1, -1, 295, + 359, 338, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 244, 244, 250, 253, 256, 260, 263, 267, 270, + 278, 281, 284, 287, 290, 295, 303, 310, 317, 323, + 327, 334, 337, 343, 350, 360, 368, 373, 403, 409, + 413, 417, 437, 438, 439, 440, 446, 447, 452, 457, + 466, 467, 472, 480, 481, 487, 496, 497, 502, 507, + 512, 520, 521, 529, 540, 541, 550, 551, 560, 561, + 570, 571, 579, 580, 588, 589, 597, 598, 598, 616, + 617, 632, 636, 640, 644, 649, 653, 657, 661, 665, + 669, 673, 680, 683, 693, 700, 705, 710, 718, 722, + 726, 730, 735, 740, 749, 749, 760, 764, 771, 778, + 781, 788, 796, 816, 834, 849, 872, 883, 893, 903, + 913, 922, 925, 929, 933, 938, 946, 951, 956, 961, + 966, 975, 986, 1013, 1022, 1029, 1036, 1046, 1052, 1055, + 1062, 1066, 1070, 1078, 1084, 1087, 1098, 1101, 1104, 1107, + 1111, 1115, 1122, 1126, 1138, 1152, 1157, 1163, 1169, 1176, + 1182, 1187, 1192, 1197, 1204, 1208, 1212, 1216, 1220, 1224, + 1230, 1242, 1245, 1250, 1254, 1263, 1268, 1276, 1280, 1290, + 1294, 1298, 1303, 1307, 1312, 1316, 1321, 1326, 1331, 1337, + 1343, 1349, 1354, 1359, 1364, 1369, 1374, 1379, 1385, 1391, + 1397, 1402, 1407, 1412, 1417, 1422, 1427, 1432, 1437, 1442, + 1447, 1452, 1457, 1463, 1469, 1475, 1481, 1487, 1493, 1499, + 1505, 1511, 1517, 1523, 1529, 1534, 1539, 1544, 1549, 1554, + 1559, 1564, 1569, 1574, 1579, 1584, 1589, 1594, 1599, 1604, + 1609, 1614, 1619, 1624, 1629, 1634, 1639, 1644, 1649, 1654, + 1659, 1664, 1669, 1674, 1679, 1684, 1689, 1694, 1699, 1704, + 1709, 1714, 1719, 1724, 1729, 1734, 1739, 1744, 1749, 1754, + 1759, 1764, 1769, 1774, 1779, 1784, 1789, 1794, 1799, 1804, + 1809, 1814, 1819, 1824, 1829, 1834, 1839, 1844, 1849, 1854, + 1859, 1864, 1869, 1874, 1879, 1884, 1889, 1894, 1899, 1904, + 1909, 1914, 1919, 1924, 1929, 1934, 1939, 1944, 1949, 1954, + 1959, 1964, 1969, 1974, 1979, 1984, 1989, 1994, 1999, 2004, + 2009, 2014, 2019, 2024, 2029, 2034, 2039, 2044, 2049, 2054, + 2059, 2064, 2069, 2074, 2080, 2086, 2092, 2098, 2104, 2110, + 2116, 2121, 2137, 2143, 2149, 2158, 2158, 2169, 2169, 2179, + 2182, 2195, 2213, 2237, 2241, 2247, 2252, 2263, 2266, 2272, + 2281, 2284, 2290, 2294, 2295, 2301, 2302, 2303, 2304, 2305, + 2306, 2307, 2311, 2312, 2316, 2312, 2328, 2329, 2333, 2333, + 2340, 2340, 2354, 2357, 2365, 2373, 2384, 2385, 2389, 2396, + 2400, 2408, 2412, 2425, 2425, 2445, 2448, 2454, 2466, 2478, + 2478, 2493, 2493, 2509, 2509, 2530, 2533, 2539, 2542, 2548, + 2552, 2559, 2564, 2569, 2576, 2594, 2603, 2607, 2614, 2617, + 2623, 2623 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || 0 +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "ATTRIBUTE", "VARYING", "CONST", "BOOL", + "FLOAT", "DOUBLE", "INT", "UINT", "BREAK", "CONTINUE", "DO", "ELSE", + "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", + "SUBROUTINE", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", + "UVEC2", "UVEC3", "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", + "MAT4", "CENTROID", "IN", "OUT", "INOUT", "UNIFORM", "PATCH", "SAMPLE", + "BUFFER", "SHARED", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "DVEC2", "DVEC3", "DVEC4", "DMAT2", "DMAT3", "DMAT4", + "NOPERSPECTIVE", "FLAT", "SMOOTH", "LAYOUT", "MAT2X2", "MAT2X3", + "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", "MAT4X4", + "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", "DMAT3X4", + "DMAT4X2", "DMAT4X3", "DMAT4X4", "ATOMIC_UINT", "SAMPLER1D", "SAMPLER2D", + "SAMPLER3D", "SAMPLERCUBE", "SAMPLER1DSHADOW", "SAMPLER2DSHADOW", + "SAMPLERCUBESHADOW", "SAMPLER1DARRAY", "SAMPLER2DARRAY", + "SAMPLER1DARRAYSHADOW", "SAMPLER2DARRAYSHADOW", "ISAMPLER1D", + "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER1DARRAY", + "ISAMPLER2DARRAY", "USAMPLER1D", "USAMPLER2D", "USAMPLER3D", + "USAMPLERCUBE", "USAMPLER1DARRAY", "USAMPLER2DARRAY", "SAMPLER2DRECT", + "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", + "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLERCUBEARRAY", + "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", + "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", + "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", + "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", "TEXTURE2D", "TEXTURE3D", + "TEXTURECUBE", "TEXTURE1DARRAY", "TEXTURE2DARRAY", "ITEXTURE1D", + "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE1DARRAY", + "ITEXTURE2DARRAY", "UTEXTURE1D", "UTEXTURE2D", "UTEXTURE3D", + "UTEXTURECUBE", "UTEXTURE1DARRAY", "UTEXTURE2DARRAY", "TEXTURE2DRECT", + "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", + "UTEXTUREBUFFER", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", + "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS", + "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY", + "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", + "USUBPASSINPUT", "USUBPASSINPUTMS", "IMAGE1D", "IIMAGE1D", "UIMAGE1D", + "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", "IIMAGE3D", "UIMAGE3D", + "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", "IMAGECUBE", "IIMAGECUBE", + "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", "UIMAGEBUFFER", + "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", "IMAGE2DARRAY", + "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", "IIMAGECUBEARRAY", + "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", "UIMAGE2DMS", + "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", "STRUCT", "VOID", + "WHILE", "IDENTIFIER", "TYPE_NAME", "FLOATCONSTANT", "DOUBLECONSTANT", + "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP", + "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", + "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", + "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", + "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", + "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", + "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", + "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", + "AMPERSAND", "QUESTION", "INVARIANT", "PRECISE", "HIGH_PRECISION", + "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", + "SUPERP", "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", + "function_call_header_no_parameters", + "function_call_header_with_parameters", "function_call_header", + "function_identifier", "unary_expression", "unary_operator", + "multiplicative_expression", "additive_expression", "shift_expression", + "relational_expression", "equality_expression", "and_expression", + "exclusive_or_expression", "inclusive_or_expression", + "logical_and_expression", "logical_xor_expression", + "logical_or_expression", "conditional_expression", "$@1", + "assignment_expression", "assignment_operator", "expression", + "constant_expression", "declaration", "block_structure", "$@2", + "identifier_list", "function_prototype", "function_declarator", + "function_header_with_parameters", "function_header", + "parameter_declarator", "parameter_declaration", + "parameter_type_specifier", "init_declarator_list", "single_declaration", + "fully_specified_type", "invariant_qualifier", "interpolation_qualifier", + "layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id", + "precise_qualifier", "type_qualifier", "single_type_qualifier", + "storage_qualifier", "type_name_list", "type_specifier", + "array_specifier", "type_specifier_nonarray", "precision_qualifier", + "struct_specifier", "$@3", "$@4", "struct_declaration_list", + "struct_declaration", "struct_declarator_list", "struct_declarator", + "initializer", "initializer_list", "declaration_statement", "statement", + "simple_statement", "compound_statement", "$@5", "$@6", + "statement_no_new_scope", "statement_scoped", "$@7", "$@8", + "compound_statement_no_new_scope", "statement_list", + "expression_statement", "selection_statement", + "selection_rest_statement", "condition", "switch_statement", "$@9", + "switch_statement_list", "case_label", "iteration_statement", "$@10", + "$@11", "$@12", "for_init_statement", "conditionopt", + "for_rest_statement", "jump_statement", "translation_unit", + "external_declaration", "function_definition", "$@13", YY_NULL +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 260, 261, 262, 262, 262, 262, 262, 262, 262, + 263, 263, 263, 263, 263, 263, 264, 265, 266, 267, + 267, 268, 268, 269, 269, 270, 271, 271, 272, 272, + 272, 272, 273, 273, 273, 273, 274, 274, 274, 274, + 275, 275, 275, 276, 276, 276, 277, 277, 277, 277, + 277, 278, 278, 278, 279, 279, 280, 280, 281, 281, + 282, 282, 283, 283, 284, 284, 285, 286, 285, 287, + 287, 288, 288, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 289, 289, 290, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 293, 292, 294, 294, 295, 296, + 296, 297, 297, 298, 299, 299, 300, 300, 300, 300, + 301, 302, 302, 302, 302, 302, 303, 303, 303, 303, + 303, 304, 304, 305, 306, 306, 306, 307, 308, 308, + 309, 309, 309, 310, 311, 311, 312, 312, 312, 312, + 312, 312, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 314, 314, 315, 315, 316, 316, 316, 316, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 318, 318, 318, 320, 319, 321, 319, 322, + 322, 323, 323, 324, 324, 325, 325, 326, 326, 326, + 327, 327, 328, 329, 329, 330, 330, 330, 330, 330, + 330, 330, 331, 332, 333, 331, 334, 334, 336, 335, + 337, 335, 338, 338, 339, 339, 340, 340, 341, 342, + 342, 343, 343, 345, 344, 346, 346, 347, 347, 349, + 348, 350, 348, 351, 348, 352, 352, 353, 353, 354, + 354, 355, 355, 355, 355, 355, 356, 356, 357, 357, + 359, 358 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 4, 1, 3, 2, 2, 1, 1, 1, 2, + 2, 2, 1, 2, 3, 2, 1, 1, 1, 2, + 2, 2, 1, 1, 1, 1, 1, 3, 3, 3, + 1, 3, 3, 1, 3, 3, 1, 3, 3, 3, + 3, 1, 3, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 0, 6, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 2, 2, 4, 2, 3, + 4, 2, 3, 4, 0, 6, 2, 3, 2, 1, + 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, + 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, + 4, 1, 2, 1, 1, 1, 1, 4, 1, 3, + 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 1, 3, 1, 2, 2, 3, 3, 4, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 6, 0, 5, 1, + 2, 3, 4, 1, 3, 1, 2, 1, 3, 4, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 0, 0, 5, 1, 1, 0, 2, + 0, 2, 2, 3, 1, 2, 1, 2, 5, 3, + 1, 1, 4, 0, 8, 0, 1, 3, 2, 0, + 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, + 3, 2, 2, 2, 3, 2, 1, 2, 1, 1, + 0, 3 +}; + +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 143, 144, 142, 174, 170, 171, 172, 173, 159, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 175, + 176, 177, 190, 191, 192, 148, 146, 147, 145, 151, + 149, 150, 152, 153, 154, 155, 156, 157, 158, 178, + 179, 180, 202, 203, 204, 126, 125, 124, 0, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 228, + 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, + 240, 242, 243, 244, 245, 246, 247, 248, 226, 227, + 234, 241, 249, 250, 251, 252, 253, 254, 323, 255, + 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, + 267, 268, 269, 271, 272, 273, 274, 275, 276, 278, + 279, 280, 281, 282, 283, 263, 270, 277, 284, 285, + 286, 287, 288, 289, 324, 325, 326, 327, 328, 329, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 0, 169, 331, 123, 133, 332, 333, + 334, 0, 409, 0, 410, 0, 100, 99, 0, 111, + 116, 140, 139, 137, 141, 0, 134, 136, 121, 163, + 138, 330, 0, 406, 408, 0, 0, 0, 337, 0, + 0, 88, 85, 0, 98, 0, 107, 101, 109, 0, + 110, 0, 86, 117, 0, 91, 135, 122, 0, 164, + 1, 407, 161, 0, 132, 130, 0, 128, 335, 0, + 0, 89, 0, 0, 411, 102, 106, 108, 104, 112, + 103, 0, 118, 94, 0, 92, 0, 2, 6, 7, + 4, 5, 8, 0, 0, 0, 165, 34, 33, 35, + 32, 3, 10, 28, 12, 17, 18, 0, 0, 22, + 0, 36, 0, 40, 43, 46, 51, 54, 56, 58, + 60, 62, 64, 66, 0, 26, 0, 160, 0, 0, + 127, 0, 0, 0, 0, 0, 339, 87, 90, 0, + 0, 391, 0, 0, 0, 0, 0, 0, 0, 0, + 363, 372, 376, 36, 69, 82, 0, 352, 0, 121, + 355, 374, 354, 353, 0, 356, 357, 358, 359, 360, + 361, 105, 0, 113, 0, 347, 120, 0, 0, 96, + 0, 93, 29, 30, 0, 14, 15, 0, 0, 20, + 19, 0, 169, 23, 25, 31, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 67, 166, 167, 0, 162, + 84, 131, 129, 0, 0, 345, 0, 343, 338, 340, + 402, 401, 0, 393, 0, 405, 403, 0, 0, 0, + 388, 389, 362, 0, 72, 73, 75, 74, 77, 78, + 79, 80, 81, 76, 71, 0, 0, 377, 373, 375, + 115, 0, 350, 0, 119, 0, 97, 9, 0, 16, + 13, 24, 37, 38, 39, 42, 41, 44, 45, 49, + 50, 47, 48, 52, 53, 55, 57, 59, 61, 63, + 65, 0, 168, 336, 0, 346, 0, 341, 0, 0, + 0, 404, 0, 387, 0, 364, 70, 83, 114, 348, + 0, 95, 11, 0, 342, 344, 0, 396, 395, 398, + 370, 383, 381, 0, 0, 0, 0, 349, 351, 0, + 0, 397, 0, 0, 380, 0, 0, 378, 0, 0, + 0, 365, 68, 0, 399, 0, 370, 369, 371, 385, + 0, 367, 390, 366, 0, 400, 394, 379, 386, 0, + 382, 392, 384 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 281, 282, 283, 448, 284, 285, 286, 287, 288, + 289, 290, 333, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 334, 471, 335, 435, 336, + 401, 337, 193, 358, 266, 338, 195, 196, 197, 226, + 227, 228, 198, 199, 200, 201, 202, 203, 246, 247, + 204, 205, 206, 207, 243, 305, 239, 209, 210, 211, + 312, 249, 315, 316, 406, 407, 356, 443, 340, 341, + 342, 343, 423, 506, 532, 514, 515, 516, 533, 344, + 345, 346, 517, 505, 347, 518, 539, 348, 349, 484, + 412, 479, 499, 512, 513, 350, 212, 213, 214, 223 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -466 +static const yytype_int16 yypact[] = +{ + 2275, -466, -466, -466, -466, -466, -466, -466, -466, -205, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -192, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -179, -466, -466, -466, -466, -466, -466, + -466, -122, -466, -186, -198, -173, -175, 3686, -194, -466, + -121, -466, -466, -466, -466, 2749, -466, -466, -466, -141, + -466, -466, 527, -466, -466, -97, -37, -117, -466, 5459, + -200, -466, -466, -112, -466, 3686, -466, -466, -466, 3686, + -71, -44, -466, -191, -142, -466, -466, -466, 4117, -82, + -466, -466, -466, -202, -466, -76, -137, -466, -466, 3686, + -73, -466, -196, 781, -466, -466, -466, -466, -141, -155, + -466, 4342, -152, -466, -38, -466, -177, -466, -466, -466, + -466, -466, -466, 5015, 5015, 5015, -466, -466, -466, -466, + -466, -466, -466, -185, -466, -466, -466, -63, -128, 5237, + -61, -466, 5015, -106, -100, -157, -183, -78, -81, -79, + -80, -43, -46, -197, -58, -466, 4568, -466, -27, 5015, + -466, -37, 3686, 3686, -25, 2984, -466, -466, -466, -62, + -57, -466, -51, -48, -56, 4793, -45, 5015, -50, -40, + -41, -466, -466, -153, -466, -466, -147, -466, -198, -39, + -466, -466, -466, -466, 1035, -466, -466, -466, -466, -466, + -466, -82, 4342, -143, 4342, -466, -466, 4342, 3686, -466, + -15, -466, -466, -466, -126, -466, -466, 5015, -10, -466, + -466, 5015, -36, -466, -466, -466, 5015, 5015, 5015, 5015, + 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, 5015, + 5015, 5015, 5015, 5015, 5015, -466, -466, -466, -35, -466, + -466, -466, -466, 3218, -25, -141, -127, -466, -466, -466, + -466, -466, 1289, -466, 5015, -466, -466, -108, 5015, -91, + -466, -466, -466, 1289, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, 5015, 5015, -466, -466, -466, + -466, 4342, -466, -92, -466, 3452, -466, -466, -34, -31, + -466, -466, -466, -466, -466, -106, -106, -100, -100, -157, + -157, -157, -157, -183, -183, -78, -81, -79, -80, -43, + -46, 5015, -466, -466, -107, -82, -25, -466, -4, 2036, + -123, -466, -116, -466, 2510, 1289, -466, -466, -466, -466, + 3890, -466, -466, -83, -466, -466, -29, -466, -466, 2510, + -32, -466, -31, 1, 3686, -24, -26, -466, -466, 5015, + 5015, -466, -30, -19, 196, -20, 1797, -466, -18, -22, + 1543, -466, -466, -113, 5015, 1543, -32, -466, -466, 1289, + 4342, -466, -466, -466, -17, -31, -466, -466, 1289, -14, + -466, -466, -466 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -466, -466, -466, -466, -466, -466, -466, -466, -466, -466, + -466, -466, -52, -466, -226, -225, -261, -229, -166, -164, + -167, -165, -162, -161, -466, -227, -466, -258, -466, -269, + -466, 4, -466, -466, -466, 5, -466, -466, -466, -1, + 9, 6, -466, -466, -465, -466, -466, -466, -466, -75, + -466, -195, -204, -466, -466, 0, -212, -466, 46, -466, + -466, -466, -297, -299, -160, -238, -340, -466, -240, -337, + -440, -273, -466, -466, -282, -281, -466, -466, 23, -413, + -232, -466, -466, -251, -466, -466, -466, -466, -466, -466, + -466, -466, -466, -466, -466, -466, -466, 40, -466, -466 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -369 +static const yytype_int16 yytable[] = +{ + 208, 236, 229, 355, 192, 194, 364, 439, 252, 244, + 485, 304, 440, 220, 442, 403, 409, 444, 394, 503, + 217, 262, 215, 365, 366, 236, 307, 383, 384, 238, + 229, 373, 308, 306, 503, 216, 260, 251, 238, 222, + 231, 318, -27, 232, 367, 261, 351, 353, 368, 381, + 382, 221, 218, 395, 313, 224, 417, 360, 419, 225, + 361, 445, 385, 386, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 238, 478, 528, 306, 233, 398, + 531, 352, 400, 434, 357, 531, 306, 436, 238, 263, + 437, 310, 264, 441, 355, 265, 355, 311, 449, 355, + 370, 488, 447, 242, 409, 500, 371, 476, 436, 236, + 477, 436, 501, 451, 248, 534, 538, 313, 436, 253, + 313, 436, 459, 460, 461, 462, 436, 476, 258, 481, + 494, 188, 189, 190, 387, 388, 376, 377, 378, 379, + 489, 380, 490, 436, 483, 480, 409, 306, 439, 482, + 508, 436, 509, 455, 456, 259, 457, 458, 463, 464, + 309, 359, 245, 313, 317, 369, 374, 391, 389, 390, + 393, 392, 396, 399, 405, 410, 413, 486, 487, 414, + 411, 415, 418, 355, 446, 420, 291, 421, -26, 450, + 540, 422, -21, 475, 496, 472, 492, 230, 510, -368, + 519, 439, 493, 436, 520, 237, 521, 524, 313, 525, + 526, 330, 208, 529, 530, 502, 192, 194, 542, 250, + 541, 362, 363, 465, 467, 230, 466, 468, 256, 230, + 502, 469, 355, 470, 255, 257, 402, 219, 495, 497, + 375, 523, 527, 536, 474, 537, 254, 498, 511, 314, + 313, 522, 241, 339, 291, 535, 0, 291, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 355, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 504, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 236, 0, 0, 0, 504, 0, 0, 0, 0, 0, + 0, 0, 314, 404, 0, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 452, 453, 454, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 0, 339, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, + 0, 0, 339, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, + 0, 0, 0, 0, 339, 339, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, + 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 339, 0, 0, 0, + 339, 0, 0, 0, 0, 339, 0, 240, 0, 339, + 1, 2, 3, 4, 5, 6, 7, 8, 339, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 0, 0, 185, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 186, 187, + 188, 189, 190, 191, 1, 2, 3, 4, 5, 6, + 7, 8, 319, 320, 321, 0, 322, 323, 324, 325, + 326, 327, 328, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 329, + 267, 185, 268, 269, 270, 271, 272, 0, 0, 273, + 274, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 275, 0, + 0, 0, 330, 331, 0, 0, 0, 0, 332, 277, + 278, 279, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 187, 188, 189, 190, 191, 1, 2, + 3, 4, 5, 6, 7, 8, 319, 320, 321, 0, + 322, 323, 324, 325, 326, 327, 328, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 329, 267, 185, 268, 269, 270, 271, + 272, 0, 0, 273, 274, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 275, 0, 0, 0, 330, 438, 0, 0, + 0, 0, 332, 277, 278, 279, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 186, 187, 188, 189, + 190, 191, 1, 2, 3, 4, 5, 6, 7, 8, + 319, 320, 321, 0, 322, 323, 324, 325, 326, 327, + 328, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 329, 267, 185, + 268, 269, 270, 271, 272, 0, 0, 273, 274, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 275, 0, 0, 0, + 330, 0, 0, 0, 0, 0, 332, 277, 278, 279, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 186, 187, 188, 189, 190, 191, 1, 2, 3, 4, + 5, 6, 7, 8, 319, 320, 321, 0, 322, 323, + 324, 325, 326, 327, 328, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 329, 267, 185, 268, 269, 270, 271, 272, 0, + 0, 273, 274, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 0, 0, 0, 253, 0, 0, 0, 0, 0, + 332, 277, 278, 279, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 186, 187, 188, 189, 190, 191, + 1, 2, 3, 4, 5, 6, 7, 8, 319, 320, + 321, 0, 322, 323, 324, 325, 326, 327, 328, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 329, 267, 185, 268, 269, + 270, 271, 272, 0, 0, 273, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 277, 278, 279, 280, 1, + 2, 3, 4, 5, 6, 7, 8, 0, 186, 187, + 188, 189, 190, 191, 0, 0, 0, 0, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 0, 267, 185, 268, 269, 270, + 271, 272, 0, 0, 273, 274, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 275, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 332, 277, 278, 279, 280, 1, 2, + 3, 4, 5, 6, 7, 8, 0, 186, 187, 188, + 189, 190, 191, 0, 0, 0, 0, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 0, 0, 185, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 186, 187, 188, 189, + 190, 191, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 0, 267, + 185, 268, 269, 270, 271, 272, 0, 0, 273, 274, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 277, 278, + 279, 280, 1, 2, 3, 4, 5, 6, 7, 8, + 0, 186, 187, 188, 189, 190, 0, 0, 0, 0, + 0, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 0, 234, 185, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 235, 1, 2, 3, + 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, + 186, 187, 188, 189, 190, 0, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 0, 0, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 408, 0, 0, 0, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, + 0, 0, 0, 0, 0, 186, 187, 188, 189, 190, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 0, 0, 185, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 473, 0, 0, 0, 0, 1, 2, 3, 4, 5, + 6, 7, 8, 0, 0, 0, 0, 0, 0, 186, + 187, 188, 189, 190, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 0, 0, 185, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 491, 0, 0, 0, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, + 0, 0, 0, 186, 187, 188, 189, 190, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 0, 0, 185, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, + 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 186, 187, 188, + 189, 190, 39, 40, 41, 42, 43, 44, 0, 0, + 0, 0, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 0, 267, + 185, 268, 269, 270, 271, 272, 0, 0, 273, 274, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, + 0, 354, 507, 4, 5, 6, 7, 8, 277, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 0, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 0, 267, 185, 268, 269, + 270, 271, 272, 0, 0, 273, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 0, 0, 276, 4, 5, + 6, 7, 8, 0, 0, 277, 278, 279, 280, 0, + 0, 0, 0, 0, 0, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 40, 41, 42, 43, 44, + 0, 0, 0, 0, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 0, 267, 185, 268, 269, 270, 271, 272, 0, 0, + 273, 274, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 275, + 0, 0, 0, 354, 4, 5, 6, 7, 8, 0, + 277, 278, 279, 280, 0, 0, 0, 0, 0, 0, + 0, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 39, 40, 41, 42, 43, 44, 0, 0, 0, 0, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 0, 267, 185, 268, + 269, 270, 271, 272, 0, 0, 273, 274, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 275, 0, 0, 397, 4, + 5, 6, 7, 8, 0, 0, 277, 278, 279, 280, + 0, 0, 0, 0, 0, 0, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, + 44, 0, 0, 0, 0, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 0, 267, 185, 268, 269, 270, 271, 272, 0, + 0, 273, 274, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 275, 4, 5, 6, 7, 8, 0, 0, 0, 0, + 416, 277, 278, 279, 280, 0, 0, 0, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 39, 40, 41, + 42, 43, 44, 0, 0, 0, 0, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 0, 267, 185, 268, 269, 270, 271, + 272, 0, 0, 273, 274, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 275, 4, 5, 6, 7, 8, 0, 0, + 0, 0, 0, 277, 278, 279, 280, 0, 0, 0, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, + 40, 41, 42, 43, 44, 0, 0, 0, 0, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 372, 0, 267, 185, 268, 269, + 270, 271, 272, 0, 0, 273, 274, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 4, 5, 6, 7, 8, + 0, 0, 0, 0, 0, 277, 278, 279, 280, 0, + 0, 0, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 39, 40, 41, 42, 43, 44, 0, 0, 0, + 0, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 0, 0, 185 +}; + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-466))) + +#define yytable_value_is_error(Yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 0, 205, 197, 261, 0, 0, 275, 344, 220, 46, + 423, 238, 352, 199, 354, 312, 315, 357, 215, 484, + 199, 233, 227, 208, 209, 229, 228, 210, 211, 229, + 225, 289, 234, 229, 499, 227, 227, 237, 229, 237, + 234, 237, 227, 237, 229, 236, 258, 259, 233, 206, + 207, 237, 231, 250, 249, 228, 325, 234, 327, 234, + 237, 358, 245, 246, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 229, 412, 516, 229, 199, 306, + 520, 236, 309, 236, 236, 525, 229, 234, 229, 231, + 237, 228, 234, 236, 352, 237, 354, 234, 367, 357, + 228, 441, 228, 200, 403, 228, 234, 234, 234, 313, + 237, 234, 228, 371, 231, 228, 529, 312, 234, 231, + 315, 234, 383, 384, 385, 386, 234, 234, 199, 237, + 237, 253, 254, 255, 212, 213, 242, 243, 244, 239, + 232, 241, 234, 234, 235, 414, 445, 229, 485, 418, + 490, 234, 235, 379, 380, 199, 381, 382, 387, 388, + 236, 199, 199, 358, 237, 228, 227, 247, 249, 248, + 216, 214, 230, 200, 199, 237, 227, 435, 436, 227, + 237, 237, 227, 441, 199, 235, 238, 227, 227, 199, + 530, 232, 228, 405, 198, 230, 230, 197, 227, 231, + 199, 538, 471, 234, 228, 205, 232, 237, 403, 228, + 14, 231, 212, 231, 236, 484, 212, 212, 232, 219, + 237, 273, 274, 389, 391, 225, 390, 392, 229, 229, + 499, 393, 490, 394, 225, 229, 311, 191, 476, 479, + 292, 510, 515, 525, 404, 526, 223, 479, 499, 249, + 445, 509, 212, 253, 306, 524, -1, 309, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 530, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 484, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 504, -1, -1, -1, 499, -1, -1, -1, -1, -1, + -1, -1, 312, 313, -1, 315, -1, -1, -1, -1, + -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, -1, 344, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 358, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 403, -1, -1, -1, -1, -1, -1, + -1, -1, 412, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 445, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 479, + -1, -1, -1, -1, 484, 485, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 499, + -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 516, -1, -1, -1, + 520, -1, -1, -1, -1, 525, -1, 0, -1, 529, + 3, 4, 5, 6, 7, 8, 9, 10, 538, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, -1, -1, 200, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 251, 252, + 253, 254, 255, 256, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, -1, -1, 208, + 209, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 227, -1, + -1, -1, 231, 232, -1, -1, -1, -1, 237, 238, + 239, 240, 241, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 251, 252, 253, 254, 255, 256, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, -1, -1, 208, 209, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 227, -1, -1, -1, 231, 232, -1, -1, + -1, -1, 237, 238, 239, 240, 241, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 251, 252, 253, 254, + 255, 256, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, -1, -1, 208, 209, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 227, -1, -1, -1, + 231, -1, -1, -1, -1, -1, 237, 238, 239, 240, + 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 251, 252, 253, 254, 255, 256, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, -1, + -1, 208, 209, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 227, -1, -1, -1, 231, -1, -1, -1, -1, -1, + 237, 238, 239, 240, 241, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 251, 252, 253, 254, 255, 256, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, -1, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, -1, -1, 208, 209, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 237, 238, 239, 240, 241, 3, + 4, 5, 6, 7, 8, 9, 10, -1, 251, 252, + 253, 254, 255, 256, -1, -1, -1, -1, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, -1, 199, 200, 201, 202, 203, + 204, 205, -1, -1, 208, 209, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 227, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 237, 238, 239, 240, 241, 3, 4, + 5, 6, 7, 8, 9, 10, -1, 251, 252, 253, + 254, 255, 256, -1, -1, -1, -1, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, -1, -1, 200, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, 251, 252, 253, 254, + 255, 256, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, + 200, 201, 202, 203, 204, 205, -1, -1, 208, 209, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 227, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 238, 239, + 240, 241, 3, 4, 5, 6, 7, 8, 9, 10, + -1, 251, 252, 253, 254, 255, -1, -1, -1, -1, + -1, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, -1, 199, 200, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 237, 3, 4, 5, + 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, + 251, 252, 253, 254, 255, -1, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, -1, -1, 200, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 232, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, -1, + -1, -1, -1, -1, -1, 251, 252, 253, 254, 255, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, -1, -1, 200, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 232, -1, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, 10, -1, -1, -1, -1, -1, -1, 251, + 252, 253, 254, 255, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + -1, -1, 200, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 232, -1, -1, -1, -1, 3, + 4, 5, 6, 7, 8, 9, 10, -1, -1, -1, + -1, -1, -1, 251, 252, 253, 254, 255, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, -1, -1, 200, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 6, 7, 8, 9, + 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 251, 252, 253, + 254, 255, 52, 53, 54, 55, 56, 57, -1, -1, + -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, -1, 199, + 200, 201, 202, 203, 204, 205, -1, -1, 208, 209, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 227, -1, -1, + -1, 231, 232, 6, 7, 8, 9, 10, 238, 239, + 240, 241, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, + 53, 54, 55, 56, 57, -1, -1, -1, -1, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, + 203, 204, 205, -1, -1, 208, 209, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, -1, -1, 230, 6, 7, + 8, 9, 10, -1, -1, 238, 239, 240, 241, -1, + -1, -1, -1, -1, -1, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 52, 53, 54, 55, 56, 57, + -1, -1, -1, -1, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + -1, 199, 200, 201, 202, 203, 204, 205, -1, -1, + 208, 209, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 227, + -1, -1, -1, 231, 6, 7, 8, 9, 10, -1, + 238, 239, 240, 241, -1, -1, -1, -1, -1, -1, + -1, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 52, 53, 54, 55, 56, 57, -1, -1, -1, -1, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, -1, 199, 200, 201, + 202, 203, 204, 205, -1, -1, 208, 209, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 227, -1, -1, 230, 6, + 7, 8, 9, 10, -1, -1, 238, 239, 240, 241, + -1, -1, -1, -1, -1, -1, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 52, 53, 54, 55, 56, + 57, -1, -1, -1, -1, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, -1, 199, 200, 201, 202, 203, 204, 205, -1, + -1, 208, 209, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 227, 6, 7, 8, 9, 10, -1, -1, -1, -1, + 237, 238, 239, 240, 241, -1, -1, -1, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 52, 53, 54, + 55, 56, 57, -1, -1, -1, -1, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, -1, 199, 200, 201, 202, 203, 204, + 205, -1, -1, 208, 209, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 227, 6, 7, 8, 9, 10, -1, -1, + -1, -1, -1, 238, 239, 240, 241, -1, -1, -1, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 52, + 53, 54, 55, 56, 57, -1, -1, -1, -1, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, -1, 199, 200, 201, 202, + 203, 204, 205, -1, -1, 208, 209, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 227, 6, 7, 8, 9, 10, + -1, -1, -1, -1, -1, 238, 239, 240, 241, -1, + -1, -1, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 52, 53, 54, 55, 56, 57, -1, -1, -1, + -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, -1, -1, 200 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 3, 4, 5, 6, 7, 8, 9, 10, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 200, 251, 252, 253, 254, + 255, 256, 291, 292, 295, 296, 297, 298, 302, 303, + 304, 305, 306, 307, 310, 311, 312, 313, 315, 317, + 318, 319, 356, 357, 358, 227, 227, 199, 231, 318, + 199, 237, 237, 359, 228, 234, 299, 300, 301, 311, + 315, 234, 237, 199, 199, 237, 312, 315, 229, 316, + 0, 357, 200, 314, 46, 199, 308, 309, 231, 321, + 315, 237, 316, 231, 338, 300, 299, 301, 199, 199, + 227, 236, 316, 231, 234, 237, 294, 199, 201, 202, + 203, 204, 205, 208, 209, 227, 230, 238, 239, 240, + 241, 261, 262, 263, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 315, 229, 228, 234, 236, + 228, 234, 320, 311, 315, 322, 323, 237, 237, 11, + 12, 13, 15, 16, 17, 18, 19, 20, 21, 198, + 231, 232, 237, 272, 285, 287, 289, 291, 295, 315, + 328, 329, 330, 331, 339, 340, 341, 344, 347, 348, + 355, 316, 236, 316, 231, 287, 326, 236, 293, 199, + 234, 237, 272, 272, 289, 208, 209, 229, 233, 228, + 228, 234, 197, 287, 227, 272, 242, 243, 244, 239, + 241, 206, 207, 210, 211, 245, 246, 212, 213, 249, + 248, 247, 214, 216, 215, 250, 230, 230, 285, 200, + 285, 290, 309, 322, 315, 199, 324, 325, 232, 323, + 237, 237, 350, 227, 227, 237, 237, 289, 227, 289, + 235, 227, 232, 332, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 236, 288, 234, 237, 232, 329, + 326, 236, 326, 327, 326, 322, 199, 228, 264, 289, + 199, 287, 272, 272, 272, 274, 274, 275, 275, 276, + 276, 276, 276, 277, 277, 278, 279, 280, 281, 282, + 283, 286, 230, 232, 324, 316, 234, 237, 329, 351, + 289, 237, 289, 235, 349, 339, 287, 287, 326, 232, + 234, 232, 230, 289, 237, 325, 198, 328, 340, 352, + 228, 228, 289, 304, 311, 343, 333, 232, 326, 235, + 227, 343, 353, 354, 335, 336, 337, 342, 345, 199, + 228, 232, 287, 289, 237, 228, 14, 331, 330, 231, + 236, 330, 334, 338, 228, 289, 334, 335, 339, 346, + 326, 237, 232 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (pParseContext, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, parseContext) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, pParseContext); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif +{ + FILE *yyo = yyoutput; + YYUSE (yyo); + if (!yyvaluep) + return; + YYUSE (pParseContext); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, pParseContext) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + glslang::TParseContext* pParseContext; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +#else +static void +yy_reduce_print (yyvsp, yyrule, pParseContext) + YYSTYPE *yyvsp; + int yyrule; + glslang::TParseContext* pParseContext; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , pParseContext); + YYFPRINTF (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, pParseContext); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULL; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, pParseContext) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + glslang::TParseContext* pParseContext; +#endif +{ + YYUSE (yyvaluep); + YYUSE (pParseContext); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (glslang::TParseContext* pParseContext) +#else +int +yyparse (pParseContext) + glslang::TParseContext* pParseContext; +#endif +#endif +{ +/* The lookahead symbol. */ +int yychar; + + +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else +/* Default value used for initialization, for pacifying older GCCs + or non-GCC compilers. */ +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); + + /* Number of syntax errors so far. */ + int yynerrs; + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + YYSIZE_T yystacksize; + + int yyn; + int yyresult; + /* Lookahead token as an internal (translated) token number. */ + int yytoken = 0; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + yyssp = yyss = yyssa; + yyvsp = yyvs = yyvsa; + yystacksize = YYINITDEPTH; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + if (yystate == YYFINAL) + YYACCEPT; + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + lookahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to lookahead token. */ + yyn = yypact[yystate]; + if (yypact_value_is_default (yyn)) + goto yydefault; + + /* Not known => get a lookahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the lookahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + + yystate = yyn; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +/* Line 1792 of yacc.c */ +#line 244 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[(1) - (1)].lex).loc, (yyvsp[(1) - (1)].lex).symbol, (yyvsp[(1) - (1)].lex).string); + } + break; + + case 3: +/* Line 1792 of yacc.c */ +#line 250 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 4: +/* Line 1792 of yacc.c */ +#line 253 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).i, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 5: +/* Line 1792 of yacc.c */ +#line 256 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).u, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 6: +/* Line 1792 of yacc.c */ +#line 260 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtFloat, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 7: +/* Line 1792 of yacc.c */ +#line 263 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).d, EbtDouble, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 8: +/* Line 1792 of yacc.c */ +#line 267 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[(1) - (1)].lex).b, (yyvsp[(1) - (1)].lex).loc, true); + } + break; + + case 9: +/* Line 1792 of yacc.c */ +#line 270 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + } + break; + + case 10: +/* Line 1792 of yacc.c */ +#line 278 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 11: +/* Line 1792 of yacc.c */ +#line 281 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.intermTypedNode), (yyvsp[(3) - (4)].interm.intermTypedNode)); + } + break; + + case 12: +/* Line 1792 of yacc.c */ +#line 284 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 13: +/* Line 1792 of yacc.c */ +#line 287 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[(3) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode), *(yyvsp[(3) - (3)].lex).string); + } + break; + + case 14: +/* Line 1792 of yacc.c */ +#line 290 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "++", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "++", EOpPostIncrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); + } + break; + + case 15: +/* Line 1792 of yacc.c */ +#line 295 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[(1) - (2)].interm.intermTypedNode)); + parseContext.lValueErrorCheck((yyvsp[(2) - (2)].lex).loc, "--", (yyvsp[(1) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(2) - (2)].lex).loc, "--", EOpPostDecrement, (yyvsp[(1) - (2)].interm.intermTypedNode)); + } + break; + + case 16: +/* Line 1792 of yacc.c */ +#line 303 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.integerCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]"); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 17: +/* Line 1792 of yacc.c */ +#line 310 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[(1) - (1)].interm).loc, (yyvsp[(1) - (1)].interm).function, (yyvsp[(1) - (1)].interm).intermNode); + delete (yyvsp[(1) - (1)].interm).function; + } + break; + + case 18: +/* Line 1792 of yacc.c */ +#line 317 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + } + break; + + case 19: +/* Line 1792 of yacc.c */ +#line 323 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + } + break; + + case 20: +/* Line 1792 of yacc.c */ +#line 327 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + } + break; + + case 21: +/* Line 1792 of yacc.c */ +#line 334 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + } + break; + + case 22: +/* Line 1792 of yacc.c */ +#line 337 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + } + break; + + case 23: +/* Line 1792 of yacc.c */ +#line 343 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[(2) - (2)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (2)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (2)].interm).function; + (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode); + } + break; + + case 24: +/* Line 1792 of yacc.c */ +#line 350 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[(3) - (3)].interm.intermTypedNode)->getType()); + (yyvsp[(1) - (3)].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[(1) - (3)].interm).function; + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 25: +/* Line 1792 of yacc.c */ +#line 360 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (2)].interm); + } + break; + + case 26: +/* Line 1792 of yacc.c */ +#line 368 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type)); + } + break; + + case 27: +/* Line 1792 of yacc.c */ +#line 373 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // + // Should be a method or subroutine call, but we haven't recognized the arguments yet. + // + (yyval.interm).function = 0; + (yyval.interm).intermNode = 0; + + TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode(); + if (method) { + (yyval.interm).function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); + (yyval.interm).intermNode = method->getObject(); + } else { + TIntermSymbol* symbol = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsSymbolNode(); + if (symbol) { + parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); + TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); + (yyval.interm).function = function; + } else + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); + } + + if ((yyval.interm).function == 0) { + // error recover + TString empty(""); + (yyval.interm).function = new TFunction(&empty, TType(EbtVoid), EOpNull); + } + } + break; + + case 28: +/* Line 1792 of yacc.c */ +#line 403 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.variableCheck((yyvsp[(1) - (1)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + if (TIntermMethod* method = (yyvsp[(1) - (1)].interm.intermTypedNode)->getAsMethodNode()) + parseContext.error((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); + } + break; + + case 29: +/* Line 1792 of yacc.c */ +#line 409 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "++", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "++", EOpPreIncrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } + break; + + case 30: +/* Line 1792 of yacc.c */ +#line 413 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.lValueErrorCheck((yyvsp[(1) - (2)].lex).loc, "--", (yyvsp[(2) - (2)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].lex).loc, "--", EOpPreDecrement, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } + break; + + case 31: +/* Line 1792 of yacc.c */ +#line 417 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (2)].interm).op != EOpNull) { + char errorOp[2] = {0, 0}; + switch((yyvsp[(1) - (2)].interm).op) { + case EOpNegative: errorOp[0] = '-'; break; + case EOpLogicalNot: errorOp[0] = '!'; break; + case EOpBitwiseNot: errorOp[0] = '~'; break; + default: break; // some compilers want this + } + (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[(1) - (2)].interm).loc, errorOp, (yyvsp[(1) - (2)].interm).op, (yyvsp[(2) - (2)].interm.intermTypedNode)); + } else { + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode); + if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) + (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); + } + } + break; + + case 32: +/* Line 1792 of yacc.c */ +#line 437 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNull; } + break; + + case 33: +/* Line 1792 of yacc.c */ +#line 438 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpNegative; } + break; + + case 34: +/* Line 1792 of yacc.c */ +#line 439 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLogicalNot; } + break; + + case 35: +/* Line 1792 of yacc.c */ +#line 440 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpBitwiseNot; + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise not"); } + break; + + case 36: +/* Line 1792 of yacc.c */ +#line 446 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 37: +/* Line 1792 of yacc.c */ +#line 447 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "*", EOpMul, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 38: +/* Line 1792 of yacc.c */ +#line 452 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "/", EOpDiv, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 39: +/* Line 1792 of yacc.c */ +#line 457 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "%"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "%", EOpMod, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 40: +/* Line 1792 of yacc.c */ +#line 466 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 41: +/* Line 1792 of yacc.c */ +#line 467 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "+", EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 42: +/* Line 1792 of yacc.c */ +#line 472 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "-", EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 43: +/* Line 1792 of yacc.c */ +#line 480 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 44: +/* Line 1792 of yacc.c */ +#line 481 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift left"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<<", EOpLeftShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 45: +/* Line 1792 of yacc.c */ +#line 487 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bit shift right"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">>", EOpRightShift, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 46: +/* Line 1792 of yacc.c */ +#line 496 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 47: +/* Line 1792 of yacc.c */ +#line 497 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<", EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 48: +/* Line 1792 of yacc.c */ +#line 502 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">", EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 49: +/* Line 1792 of yacc.c */ +#line 507 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "<=", EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 50: +/* Line 1792 of yacc.c */ +#line 512 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 51: +/* Line 1792 of yacc.c */ +#line 520 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 52: +/* Line 1792 of yacc.c */ +#line 521 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "=="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "==", EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 53: +/* Line 1792 of yacc.c */ +#line 529 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array comparison"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + parseContext.specializationCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "!="); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "!=", EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 54: +/* Line 1792 of yacc.c */ +#line 540 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 55: +/* Line 1792 of yacc.c */ +#line 541 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise and"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&", EOpAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 56: +/* Line 1792 of yacc.c */ +#line 550 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 57: +/* Line 1792 of yacc.c */ +#line 551 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise exclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^", EOpExclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 58: +/* Line 1792 of yacc.c */ +#line 560 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 59: +/* Line 1792 of yacc.c */ +#line 561 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(2) - (3)].lex).loc, "bitwise inclusive or"); + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "|", EOpInclusiveOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + break; + + case 60: +/* Line 1792 of yacc.c */ +#line 570 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 61: +/* Line 1792 of yacc.c */ +#line 571 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "&&", EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 62: +/* Line 1792 of yacc.c */ +#line 579 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 63: +/* Line 1792 of yacc.c */ +#line 580 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "^^", EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 64: +/* Line 1792 of yacc.c */ +#line 588 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 65: +/* Line 1792 of yacc.c */ +#line 589 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[(2) - (3)].lex).loc, "||", EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + if ((yyval.interm.intermTypedNode) == 0) + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[(2) - (3)].lex).loc); + } + break; + + case 66: +/* Line 1792 of yacc.c */ +#line 597 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 67: +/* Line 1792 of yacc.c */ +#line 598 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + ++parseContext.controlFlowNestingLevel; + } + break; + + case 68: +/* Line 1792 of yacc.c */ +#line 601 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + --parseContext.controlFlowNestingLevel; + parseContext.boolCheck((yyvsp[(2) - (6)].lex).loc, (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (6)].lex).loc, "?", (yyvsp[(1) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(5) - (6)].lex).loc, ":", (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[(1) - (6)].interm.intermTypedNode), (yyvsp[(4) - (6)].interm.intermTypedNode), (yyvsp[(6) - (6)].interm.intermTypedNode), (yyvsp[(2) - (6)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (6)].lex).loc, ":", (yyvsp[(4) - (6)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(6) - (6)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(6) - (6)].interm.intermTypedNode); + } + } + break; + + case 69: +/* Line 1792 of yacc.c */ +#line 616 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); } + break; + + case 70: +/* Line 1792 of yacc.c */ +#line 617 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayObjectCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "array assignment"); + parseContext.opaqueCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.specializationCheck((yyvsp[(2) - (3)].interm).loc, (yyvsp[(1) - (3)].interm.intermTypedNode)->getType(), "="); + parseContext.lValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)); + parseContext.rValueErrorCheck((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(3) - (3)].interm.intermTypedNode)); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addAssign((yyvsp[(2) - (3)].interm).op, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].interm).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.assignError((yyvsp[(2) - (3)].interm).loc, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode); + } + } + break; + + case 71: +/* Line 1792 of yacc.c */ +#line 632 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAssign; + } + break; + + case 72: +/* Line 1792 of yacc.c */ +#line 636 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpMulAssign; + } + break; + + case 73: +/* Line 1792 of yacc.c */ +#line 640 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpDivAssign; + } + break; + + case 74: +/* Line 1792 of yacc.c */ +#line 644 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "%="); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpModAssign; + } + break; + + case 75: +/* Line 1792 of yacc.c */ +#line 649 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpAddAssign; + } + break; + + case 76: +/* Line 1792 of yacc.c */ +#line 653 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm).op = EOpSubAssign; + } + break; + + case 77: +/* Line 1792 of yacc.c */ +#line 657 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift left assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; + } + break; + + case 78: +/* Line 1792 of yacc.c */ +#line 661 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bit-shift right assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpRightShiftAssign; + } + break; + + case 79: +/* Line 1792 of yacc.c */ +#line 665 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-and assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpAndAssign; + } + break; + + case 80: +/* Line 1792 of yacc.c */ +#line 669 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-xor assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; + } + break; + + case 81: +/* Line 1792 of yacc.c */ +#line 673 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "bitwise-or assign"); + (yyval.interm).loc = (yyvsp[(1) - (1)].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; + } + break; + + case 82: +/* Line 1792 of yacc.c */ +#line 680 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 83: +/* Line 1792 of yacc.c */ +#line 683 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).loc); + if ((yyval.interm.intermTypedNode) == 0) { + parseContext.binaryOpError((yyvsp[(2) - (3)].lex).loc, ",", (yyvsp[(1) - (3)].interm.intermTypedNode)->getCompleteString(), (yyvsp[(3) - (3)].interm.intermTypedNode)->getCompleteString()); + (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode); + } + } + break; + + case 84: +/* Line 1792 of yacc.c */ +#line 693 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.constantValueCheck((yyvsp[(1) - (1)].interm.intermTypedNode), ""); + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 85: +/* Line 1792 of yacc.c */ +#line 700 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.handleFunctionDeclarator((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).function, true /* prototype */); + (yyval.interm.intermNode) = 0; + // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature + } + break; + + case 86: +/* Line 1792 of yacc.c */ +#line 705 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (2)].interm).intermNode && (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()) + (yyvsp[(1) - (2)].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermNode; + } + break; + + case 87: +/* Line 1792 of yacc.c */ +#line 710 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ENoProfile, 130, 0, "precision statement"); + + // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope + parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); + parseContext.setDefaultPrecision((yyvsp[(1) - (4)].lex).loc, (yyvsp[(3) - (4)].interm.type), (yyvsp[(2) - (4)].interm.type).qualifier.precision); + (yyval.interm.intermNode) = 0; + } + break; + + case 88: +/* Line 1792 of yacc.c */ +#line 718 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[(1) - (2)].interm).loc, *(yyvsp[(1) - (2)].interm).typeList); + (yyval.interm.intermNode) = 0; + } + break; + + case 89: +/* Line 1792 of yacc.c */ +#line 722 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[(1) - (3)].interm).loc, *(yyvsp[(1) - (3)].interm).typeList, (yyvsp[(2) - (3)].lex).string); + (yyval.interm.intermNode) = 0; + } + break; + + case 90: +/* Line 1792 of yacc.c */ +#line 726 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.declareBlock((yyvsp[(1) - (4)].interm).loc, *(yyvsp[(1) - (4)].interm).typeList, (yyvsp[(2) - (4)].lex).string, (yyvsp[(3) - (4)].interm).arraySizes); + (yyval.interm.intermNode) = 0; + } + break; + + case 91: +/* Line 1792 of yacc.c */ +#line 730 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.updateStandaloneQualifierDefaults((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type)); + (yyval.interm.intermNode) = 0; + } + break; + + case 92: +/* Line 1792 of yacc.c */ +#line 735 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).shaderQualifiers); + parseContext.addQualifierToExisting((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).qualifier, *(yyvsp[(2) - (3)].lex).string); + (yyval.interm.intermNode) = 0; + } + break; + + case 93: +/* Line 1792 of yacc.c */ +#line 740 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + (yyvsp[(3) - (4)].interm.identifierList)->push_back((yyvsp[(2) - (4)].lex).string); + parseContext.addQualifierToExisting((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier, *(yyvsp[(3) - (4)].interm.identifierList)); + (yyval.interm.intermNode) = 0; + } + break; + + case 94: +/* Line 1792 of yacc.c */ +#line 749 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { parseContext.nestedBlockCheck((yyvsp[(1) - (3)].interm.type).loc); } + break; + + case 95: +/* Line 1792 of yacc.c */ +#line 749 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + --parseContext.structNestingLevel; + parseContext.blockName = (yyvsp[(2) - (6)].lex).string; + parseContext.globalQualifierFixCheck((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).qualifier); + parseContext.checkNoShaderLayouts((yyvsp[(1) - (6)].interm.type).loc, (yyvsp[(1) - (6)].interm.type).shaderQualifiers); + parseContext.currentBlockQualifier = (yyvsp[(1) - (6)].interm.type).qualifier; + (yyval.interm).loc = (yyvsp[(1) - (6)].interm.type).loc; + (yyval.interm).typeList = (yyvsp[(5) - (6)].interm.typeList); + } + break; + + case 96: +/* Line 1792 of yacc.c */ +#line 760 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.identifierList) = new TIdentifierList; + (yyval.interm.identifierList)->push_back((yyvsp[(2) - (2)].lex).string); + } + break; + + case 97: +/* Line 1792 of yacc.c */ +#line 764 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.identifierList) = (yyvsp[(1) - (3)].interm.identifierList); + (yyval.interm.identifierList)->push_back((yyvsp[(3) - (3)].lex).string); + } + break; + + case 98: +/* Line 1792 of yacc.c */ +#line 771 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).function = (yyvsp[(1) - (2)].interm.function); + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + } + break; + + case 99: +/* Line 1792 of yacc.c */ +#line 778 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); + } + break; + + case 100: +/* Line 1792 of yacc.c */ +#line 781 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function); + } + break; + + case 101: +/* Line 1792 of yacc.c */ +#line 788 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function); + if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid) + (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param); + else + delete (yyvsp[(2) - (2)].interm).param.type; + } + break; + + case 102: +/* Line 1792 of yacc.c */ +#line 796 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // + // Only first parameter of one-parameter functions can be void + // The check for named parameters not being void is done in parameter_declarator + // + if ((yyvsp[(3) - (3)].interm).param.type->getBasicType() == EbtVoid) { + // + // This parameter > first is void + // + parseContext.error((yyvsp[(2) - (3)].lex).loc, "cannot be an argument type except for '(void)'", "void", ""); + delete (yyvsp[(3) - (3)].interm).param.type; + } else { + // Add the parameter + (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function); + (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param); + } + } + break; + + case 103: +/* Line 1792 of yacc.c */ +#line 816 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier.storage != EvqTemporary) { + parseContext.error((yyvsp[(2) - (3)].lex).loc, "no qualifiers allowed for function return", + GetStorageQualifierString((yyvsp[(1) - (3)].interm.type).qualifier.storage), ""); + } + if ((yyvsp[(1) - (3)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + + // Add the function as a prototype after parsing it (we do not support recursion) + TFunction *function; + TType type((yyvsp[(1) - (3)].interm.type)); + function = new TFunction((yyvsp[(2) - (3)].lex).string, type); + (yyval.interm.function) = function; + } + break; + + case 104: +/* Line 1792 of yacc.c */ +#line 834 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (2)].interm.type).loc, *(yyvsp[(1) - (2)].interm.type).arraySizes); + } + if ((yyvsp[(1) - (2)].interm.type).basicType == EbtVoid) { + parseContext.error((yyvsp[(2) - (2)].lex).loc, "illegal use of type 'void'", (yyvsp[(2) - (2)].lex).string->c_str(), ""); + } + parseContext.reservedErrorCheck((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string); + + TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (2)].lex).loc; + (yyval.interm).param = param; + } + break; + + case 105: +/* Line 1792 of yacc.c */ +#line 849 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + parseContext.arrayDimCheck((yyvsp[(2) - (3)].lex).loc, (yyvsp[(1) - (3)].interm.type).arraySizes, (yyvsp[(3) - (3)].interm).arraySizes); + + parseContext.arraySizeRequiredCheck((yyvsp[(3) - (3)].interm).loc, *(yyvsp[(3) - (3)].interm).arraySizes); + parseContext.reservedErrorCheck((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string); + + (yyvsp[(1) - (3)].interm.type).arraySizes = (yyvsp[(3) - (3)].interm).arraySizes; + + TParameter param = { (yyvsp[(2) - (3)].lex).string, new TType((yyvsp[(1) - (3)].interm.type))}; + (yyval.interm).loc = (yyvsp[(2) - (3)].lex).loc; + (yyval.interm).param = param; + } + break; + + case 106: +/* Line 1792 of yacc.c */ +#line 872 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); + + } + break; + + case 107: +/* Line 1792 of yacc.c */ +#line 883 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + } + break; + + case 108: +/* Line 1792 of yacc.c */ +#line 893 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(2) - (2)].interm); + if ((yyvsp[(1) - (2)].interm.type).qualifier.precision != EpqNone) + (yyval.interm).param.type->getQualifier().precision = (yyvsp[(1) - (2)].interm.type).qualifier.precision; + parseContext.precisionQualifierCheck((yyvsp[(1) - (2)].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.parameterTypeCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(1) - (2)].interm.type).qualifier.storage, *(yyval.interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, *(yyval.interm).param.type); + } + break; + + case 109: +/* Line 1792 of yacc.c */ +#line 903 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + + parseContext.parameterTypeCheck((yyvsp[(1) - (1)].interm).loc, EvqIn, *(yyvsp[(1) - (1)].interm).param.type); + parseContext.paramCheckFix((yyvsp[(1) - (1)].interm).loc, EvqTemporary, *(yyval.interm).param.type); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + } + break; + + case 110: +/* Line 1792 of yacc.c */ +#line 913 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) }; + (yyval.interm).param = param; + if ((yyvsp[(1) - (1)].interm.type).arraySizes) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (1)].interm.type).loc, *(yyvsp[(1) - (1)].interm.type).arraySizes); + } + break; + + case 111: +/* Line 1792 of yacc.c */ +#line 922 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (1)].interm); + } + break; + + case 112: +/* Line 1792 of yacc.c */ +#line 925 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (3)].interm); + parseContext.declareVariable((yyvsp[(3) - (3)].lex).loc, *(yyvsp[(3) - (3)].lex).string, (yyvsp[(1) - (3)].interm).type); + } + break; + + case 113: +/* Line 1792 of yacc.c */ +#line 929 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (4)].interm); + parseContext.declareVariable((yyvsp[(3) - (4)].lex).loc, *(yyvsp[(3) - (4)].lex).string, (yyvsp[(1) - (4)].interm).type, (yyvsp[(4) - (4)].interm).arraySizes); + } + break; + + case 114: +/* Line 1792 of yacc.c */ +#line 933 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (6)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (6)].lex).loc, *(yyvsp[(3) - (6)].lex).string, (yyvsp[(1) - (6)].interm).type, (yyvsp[(4) - (6)].interm).arraySizes, (yyvsp[(6) - (6)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, initNode, (yyvsp[(5) - (6)].lex).loc); + } + break; + + case 115: +/* Line 1792 of yacc.c */ +#line 938 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (5)].interm).type; + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(3) - (5)].lex).loc, *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, 0, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[(1) - (5)].interm).intermNode, initNode, (yyvsp[(4) - (5)].lex).loc); + } + break; + + case 116: +/* Line 1792 of yacc.c */ +#line 946 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (1)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + } + break; + + case 117: +/* Line 1792 of yacc.c */ +#line 951 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (2)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[(2) - (2)].lex).loc, *(yyvsp[(2) - (2)].lex).string, (yyvsp[(1) - (2)].interm.type)); + } + break; + + case 118: +/* Line 1792 of yacc.c */ +#line 956 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (3)].interm.type); + (yyval.interm).intermNode = 0; + parseContext.declareVariable((yyvsp[(2) - (3)].lex).loc, *(yyvsp[(2) - (3)].lex).string, (yyvsp[(1) - (3)].interm.type), (yyvsp[(3) - (3)].interm).arraySizes); + } + break; + + case 119: +/* Line 1792 of yacc.c */ +#line 961 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (5)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (5)].lex).loc, *(yyvsp[(2) - (5)].lex).string, (yyvsp[(1) - (5)].interm.type), (yyvsp[(3) - (5)].interm).arraySizes, (yyvsp[(5) - (5)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(4) - (5)].lex).loc); + } + break; + + case 120: +/* Line 1792 of yacc.c */ +#line 966 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).type = (yyvsp[(1) - (4)].interm.type); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[(3) - (4)].lex).loc); + } + break; + + case 121: +/* Line 1792 of yacc.c */ +#line 975 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (1)].interm.type).loc, (yyvsp[(1) - (1)].interm.type).qualifier, (yyval.interm.type)); + if ((yyvsp[(1) - (1)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (1)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + } + + parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); + } + break; + + case 122: +/* Line 1792 of yacc.c */ +#line 986 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier); + parseContext.globalQualifierTypeCheck((yyvsp[(1) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier, (yyvsp[(2) - (2)].interm.type)); + + if ((yyvsp[(2) - (2)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (2)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + } + + if ((yyvsp[(2) - (2)].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).qualifier)) + (yyvsp[(2) - (2)].interm.type).arraySizes = 0; + + parseContext.checkNoShaderLayouts((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(1) - (2)].interm.type).shaderQualifiers); + (yyvsp[(2) - (2)].interm.type).shaderQualifiers.merge((yyvsp[(1) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).qualifier, (yyvsp[(1) - (2)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (2)].interm.type).loc, (yyvsp[(2) - (2)].interm.type).basicType, (yyvsp[(2) - (2)].interm.type).qualifier); + + (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type); + + if (! (yyval.interm.type).qualifier.isInterpolation() && + ((parseContext.language == EShLangVertex && (yyval.interm.type).qualifier.storage == EvqVaryingOut) || + (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) + (yyval.interm.type).qualifier.smooth = true; + } + break; + + case 123: +/* Line 1792 of yacc.c */ +#line 1013 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.invariant = true; + } + break; + + case 124: +/* Line 1792 of yacc.c */ +#line 1022 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "smooth"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.smooth = true; + } + break; + + case 125: +/* Line 1792 of yacc.c */ +#line 1029 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "flat"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.flat = true; + } + break; + + case 126: +/* Line 1792 of yacc.c */ +#line 1036 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "noperspective"); + parseContext.requireProfile((yyvsp[(1) - (1)].lex).loc, ~EEsProfile, "noperspective"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "noperspective"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.nopersp = true; + } + break; + + case 127: +/* Line 1792 of yacc.c */ +#line 1046 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(3) - (4)].interm.type); + } + break; + + case 128: +/* Line 1792 of yacc.c */ +#line 1052 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 129: +/* Line 1792 of yacc.c */ +#line 1055 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (3)].interm.type); + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(3) - (3)].interm.type).shaderQualifiers); + parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[(3) - (3)].interm.type).qualifier, false); + } + break; + + case 130: +/* Line 1792 of yacc.c */ +#line 1062 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (1)].lex).string); + } + break; + + case 131: +/* Line 1792 of yacc.c */ +#line 1066 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (3)].lex).loc); + parseContext.setLayoutQualifier((yyvsp[(1) - (3)].lex).loc, (yyval.interm.type), *(yyvsp[(1) - (3)].lex).string, (yyvsp[(3) - (3)].interm.intermTypedNode)); + } + break; + + case 132: +/* Line 1792 of yacc.c */ +#line 1070 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { // because "shared" is both an identifier and a keyword + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + TString strShared("shared"); + parseContext.setLayoutQualifier((yyvsp[(1) - (1)].lex).loc, (yyval.interm.type), strShared); + } + break; + + case 133: +/* Line 1792 of yacc.c */ +#line 1078 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + } + break; + + case 134: +/* Line 1792 of yacc.c */ +#line 1084 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 135: +/* Line 1792 of yacc.c */ +#line 1087 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + if ((yyval.interm.type).basicType == EbtVoid) + (yyval.interm.type).basicType = (yyvsp[(2) - (2)].interm.type).basicType; + + (yyval.interm.type).shaderQualifiers.merge((yyvsp[(2) - (2)].interm.type).shaderQualifiers); + parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[(2) - (2)].interm.type).qualifier, false); + } + break; + + case 136: +/* Line 1792 of yacc.c */ +#line 1098 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 137: +/* Line 1792 of yacc.c */ +#line 1101 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 138: +/* Line 1792 of yacc.c */ +#line 1104 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 139: +/* Line 1792 of yacc.c */ +#line 1107 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 140: +/* Line 1792 of yacc.c */ +#line 1111 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 141: +/* Line 1792 of yacc.c */ +#line 1115 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + } + break; + + case 142: +/* Line 1792 of yacc.c */ +#line 1122 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant + } + break; + + case 143: +/* Line 1792 of yacc.c */ +#line 1126 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "attribute"); + + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "attribute"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } + break; + + case 144: +/* Line 1792 of yacc.c */ +#line 1138 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "varying"); + + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + if (parseContext.language == EShLangVertex) + (yyval.interm.type).qualifier.storage = EvqVaryingOut; + else + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } + break; + + case 145: +/* Line 1792 of yacc.c */ +#line 1152 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "inout"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqInOut; + } + break; + + case 146: +/* Line 1792 of yacc.c */ +#line 1157 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "in"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqIn; + } + break; + + case 147: +/* Line 1792 of yacc.c */ +#line 1163 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "out"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later + (yyval.interm.type).qualifier.storage = EvqOut; + } + break; + + case 148: +/* Line 1792 of yacc.c */ +#line 1169 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "centroid"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.centroid = true; + } + break; + + case 149: +/* Line 1792 of yacc.c */ +#line 1176 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "patch"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.patch = true; + } + break; + + case 150: +/* Line 1792 of yacc.c */ +#line 1182 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "sample"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.sample = true; + } + break; + + case 151: +/* Line 1792 of yacc.c */ +#line 1187 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "uniform"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + } + break; + + case 152: +/* Line 1792 of yacc.c */ +#line 1192 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "buffer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqBuffer; + } + break; + + case 153: +/* Line 1792 of yacc.c */ +#line 1197 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ECoreProfile | ECompatibilityProfile, 430, 0, "shared"); + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangCompute, "shared"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqShared; + } + break; + + case 154: +/* Line 1792 of yacc.c */ +#line 1204 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.coherent = true; + } + break; + + case 155: +/* Line 1792 of yacc.c */ +#line 1208 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.volatil = true; + } + break; + + case 156: +/* Line 1792 of yacc.c */ +#line 1212 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.restrict = true; + } + break; + + case 157: +/* Line 1792 of yacc.c */ +#line 1216 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.readonly = true; + } + break; + + case 158: +/* Line 1792 of yacc.c */ +#line 1220 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.writeonly = true; + } + break; + + case 159: +/* Line 1792 of yacc.c */ +#line 1224 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (1)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (1)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + } + break; + + case 160: +/* Line 1792 of yacc.c */ +#line 1230 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.spvRemoved((yyvsp[(1) - (4)].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[(1) - (4)].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[(1) - (4)].lex).loc); + (yyval.interm.type).qualifier.storage = EvqUniform; + // TODO: 4.0 semantics: subroutines + // 1) make sure each identifier is a type declared earlier with SUBROUTINE + // 2) save all of the identifiers for future comparison with the declared function + } + break; + + case 161: +/* Line 1792 of yacc.c */ +#line 1242 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // TODO: 4.0 functionality: subroutine type to list + } + break; + + case 162: +/* Line 1792 of yacc.c */ +#line 1245 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + } + break; + + case 163: +/* Line 1792 of yacc.c */ +#line 1250 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + } + break; + + case 164: +/* Line 1792 of yacc.c */ +#line 1254 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayDimCheck((yyvsp[(2) - (2)].interm).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + (yyval.interm.type) = (yyvsp[(1) - (2)].interm.type); + (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); + (yyval.interm.type).arraySizes = (yyvsp[(2) - (2)].interm).arraySizes; + } + break; + + case 165: +/* Line 1792 of yacc.c */ +#line 1263 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; + (yyval.interm).arraySizes->addInnerSize(); + } + break; + + case 166: +/* Line 1792 of yacc.c */ +#line 1268 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm).loc = (yyvsp[(1) - (3)].lex).loc; + (yyval.interm).arraySizes = new TArraySizes; + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(2) - (3)].interm.intermTypedNode)->getLoc(), (yyvsp[(2) - (3)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); + } + break; + + case 167: +/* Line 1792 of yacc.c */ +#line 1276 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (3)].interm); + (yyval.interm).arraySizes->addInnerSize(); + } + break; + + case 168: +/* Line 1792 of yacc.c */ +#line 1280 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm) = (yyvsp[(1) - (4)].interm); + + TArraySize size; + parseContext.arraySizeCheck((yyvsp[(3) - (4)].interm.intermTypedNode)->getLoc(), (yyvsp[(3) - (4)].interm.intermTypedNode), size); + (yyval.interm).arraySizes->addInnerSize(size); + } + break; + + case 169: +/* Line 1792 of yacc.c */ +#line 1290 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtVoid; + } + break; + + case 170: +/* Line 1792 of yacc.c */ +#line 1294 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + } + break; + + case 171: +/* Line 1792 of yacc.c */ +#line 1298 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + } + break; + + case 172: +/* Line 1792 of yacc.c */ +#line 1303 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + } + break; + + case 173: +/* Line 1792 of yacc.c */ +#line 1307 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + } + break; + + case 174: +/* Line 1792 of yacc.c */ +#line 1312 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + } + break; + + case 175: +/* Line 1792 of yacc.c */ +#line 1316 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); + } + break; + + case 176: +/* Line 1792 of yacc.c */ +#line 1321 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } + break; + + case 177: +/* Line 1792 of yacc.c */ +#line 1326 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); + } + break; + + case 178: +/* Line 1792 of yacc.c */ +#line 1331 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } + break; + + case 179: +/* Line 1792 of yacc.c */ +#line 1337 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } + break; + + case 180: +/* Line 1792 of yacc.c */ +#line 1343 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); + } + break; + + case 181: +/* Line 1792 of yacc.c */ +#line 1349 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(2); + } + break; + + case 182: +/* Line 1792 of yacc.c */ +#line 1354 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); + } + break; + + case 183: +/* Line 1792 of yacc.c */ +#line 1359 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); + } + break; + + case 184: +/* Line 1792 of yacc.c */ +#line 1364 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } + break; + + case 185: +/* Line 1792 of yacc.c */ +#line 1369 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } + break; + + case 186: +/* Line 1792 of yacc.c */ +#line 1374 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } + break; + + case 187: +/* Line 1792 of yacc.c */ +#line 1379 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } + break; + + case 188: +/* Line 1792 of yacc.c */ +#line 1385 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } + break; + + case 189: +/* Line 1792 of yacc.c */ +#line 1391 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.fullIntegerCheck((yyvsp[(1) - (1)].lex).loc, "unsigned integer vector"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); + } + break; + + case 190: +/* Line 1792 of yacc.c */ +#line 1397 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 191: +/* Line 1792 of yacc.c */ +#line 1402 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 192: +/* Line 1792 of yacc.c */ +#line 1407 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 193: +/* Line 1792 of yacc.c */ +#line 1412 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 194: +/* Line 1792 of yacc.c */ +#line 1417 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); + } + break; + + case 195: +/* Line 1792 of yacc.c */ +#line 1422 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); + } + break; + + case 196: +/* Line 1792 of yacc.c */ +#line 1427 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); + } + break; + + case 197: +/* Line 1792 of yacc.c */ +#line 1432 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 198: +/* Line 1792 of yacc.c */ +#line 1437 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); + } + break; + + case 199: +/* Line 1792 of yacc.c */ +#line 1442 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); + } + break; + + case 200: +/* Line 1792 of yacc.c */ +#line 1447 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); + } + break; + + case 201: +/* Line 1792 of yacc.c */ +#line 1452 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 202: +/* Line 1792 of yacc.c */ +#line 1457 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 203: +/* Line 1792 of yacc.c */ +#line 1463 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 204: +/* Line 1792 of yacc.c */ +#line 1469 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 205: +/* Line 1792 of yacc.c */ +#line 1475 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } + break; + + case 206: +/* Line 1792 of yacc.c */ +#line 1481 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } + break; + + case 207: +/* Line 1792 of yacc.c */ +#line 1487 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } + break; + + case 208: +/* Line 1792 of yacc.c */ +#line 1493 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } + break; + + case 209: +/* Line 1792 of yacc.c */ +#line 1499 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } + break; + + case 210: +/* Line 1792 of yacc.c */ +#line 1505 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); + } + break; + + case 211: +/* Line 1792 of yacc.c */ +#line 1511 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); + } + break; + + case 212: +/* Line 1792 of yacc.c */ +#line 1517 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); + } + break; + + case 213: +/* Line 1792 of yacc.c */ +#line 1523 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.doubleCheck((yyvsp[(1) - (1)].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } + break; + + case 214: +/* Line 1792 of yacc.c */ +#line 1529 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.vulkanRemoved((yyvsp[(1) - (1)].lex).loc, "atomic counter types"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAtomicUint; + } + break; + + case 215: +/* Line 1792 of yacc.c */ +#line 1534 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D); + } + break; + + case 216: +/* Line 1792 of yacc.c */ +#line 1539 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + } + break; + + case 217: +/* Line 1792 of yacc.c */ +#line 1544 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd3D); + } + break; + + case 218: +/* Line 1792 of yacc.c */ +#line 1549 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube); + } + break; + + case 219: +/* Line 1792 of yacc.c */ +#line 1554 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); + } + break; + + case 220: +/* Line 1792 of yacc.c */ +#line 1559 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); + } + break; + + case 221: +/* Line 1792 of yacc.c */ +#line 1564 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); + } + break; + + case 222: +/* Line 1792 of yacc.c */ +#line 1569 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); + } + break; + + case 223: +/* Line 1792 of yacc.c */ +#line 1574 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); + } + break; + + case 224: +/* Line 1792 of yacc.c */ +#line 1579 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); + } + break; + + case 225: +/* Line 1792 of yacc.c */ +#line 1584 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); + } + break; + + case 226: +/* Line 1792 of yacc.c */ +#line 1589 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); + } + break; + + case 227: +/* Line 1792 of yacc.c */ +#line 1594 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); + } + break; + + case 228: +/* Line 1792 of yacc.c */ +#line 1599 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D); + } + break; + + case 229: +/* Line 1792 of yacc.c */ +#line 1604 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D); + } + break; + + case 230: +/* Line 1792 of yacc.c */ +#line 1609 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd3D); + } + break; + + case 231: +/* Line 1792 of yacc.c */ +#line 1614 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube); + } + break; + + case 232: +/* Line 1792 of yacc.c */ +#line 1619 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); + } + break; + + case 233: +/* Line 1792 of yacc.c */ +#line 1624 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); + } + break; + + case 234: +/* Line 1792 of yacc.c */ +#line 1629 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); + } + break; + + case 235: +/* Line 1792 of yacc.c */ +#line 1634 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D); + } + break; + + case 236: +/* Line 1792 of yacc.c */ +#line 1639 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D); + } + break; + + case 237: +/* Line 1792 of yacc.c */ +#line 1644 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd3D); + } + break; + + case 238: +/* Line 1792 of yacc.c */ +#line 1649 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube); + } + break; + + case 239: +/* Line 1792 of yacc.c */ +#line 1654 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); + } + break; + + case 240: +/* Line 1792 of yacc.c */ +#line 1659 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); + } + break; + + case 241: +/* Line 1792 of yacc.c */ +#line 1664 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); + } + break; + + case 242: +/* Line 1792 of yacc.c */ +#line 1669 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); + } + break; + + case 243: +/* Line 1792 of yacc.c */ +#line 1674 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); + } + break; + + case 244: +/* Line 1792 of yacc.c */ +#line 1679 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdRect); + } + break; + + case 245: +/* Line 1792 of yacc.c */ +#line 1684 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdRect); + } + break; + + case 246: +/* Line 1792 of yacc.c */ +#line 1689 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); + } + break; + + case 247: +/* Line 1792 of yacc.c */ +#line 1694 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); + } + break; + + case 248: +/* Line 1792 of yacc.c */ +#line 1699 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); + } + break; + + case 249: +/* Line 1792 of yacc.c */ +#line 1704 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); + } + break; + + case 250: +/* Line 1792 of yacc.c */ +#line 1709 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); + } + break; + + case 251: +/* Line 1792 of yacc.c */ +#line 1714 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); + } + break; + + case 252: +/* Line 1792 of yacc.c */ +#line 1719 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); + } + break; + + case 253: +/* Line 1792 of yacc.c */ +#line 1724 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + } + break; + + case 254: +/* Line 1792 of yacc.c */ +#line 1729 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); + } + break; + + case 255: +/* Line 1792 of yacc.c */ +#line 1734 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(false); + } + break; + + case 256: +/* Line 1792 of yacc.c */ +#line 1739 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(true); + } + break; + + case 257: +/* Line 1792 of yacc.c */ +#line 1744 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + } + break; + + case 258: +/* Line 1792 of yacc.c */ +#line 1749 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); + } + break; + + case 259: +/* Line 1792 of yacc.c */ +#line 1754 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + } + break; + + case 260: +/* Line 1792 of yacc.c */ +#line 1759 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); + } + break; + + case 261: +/* Line 1792 of yacc.c */ +#line 1764 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + } + break; + + case 262: +/* Line 1792 of yacc.c */ +#line 1769 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); + } + break; + + case 263: +/* Line 1792 of yacc.c */ +#line 1774 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + } + break; + + case 264: +/* Line 1792 of yacc.c */ +#line 1779 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + } + break; + + case 265: +/* Line 1792 of yacc.c */ +#line 1784 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + } + break; + + case 266: +/* Line 1792 of yacc.c */ +#line 1789 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + } + break; + + case 267: +/* Line 1792 of yacc.c */ +#line 1794 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + } + break; + + case 268: +/* Line 1792 of yacc.c */ +#line 1799 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + } + break; + + case 269: +/* Line 1792 of yacc.c */ +#line 1804 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + } + break; + + case 270: +/* Line 1792 of yacc.c */ +#line 1809 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); + } + break; + + case 271: +/* Line 1792 of yacc.c */ +#line 1814 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + } + break; + + case 272: +/* Line 1792 of yacc.c */ +#line 1819 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + } + break; + + case 273: +/* Line 1792 of yacc.c */ +#line 1824 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + } + break; + + case 274: +/* Line 1792 of yacc.c */ +#line 1829 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); + } + break; + + case 275: +/* Line 1792 of yacc.c */ +#line 1834 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); + } + break; + + case 276: +/* Line 1792 of yacc.c */ +#line 1839 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); + } + break; + + case 277: +/* Line 1792 of yacc.c */ +#line 1844 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + } + break; + + case 278: +/* Line 1792 of yacc.c */ +#line 1849 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + } + break; + + case 279: +/* Line 1792 of yacc.c */ +#line 1854 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); + } + break; + + case 280: +/* Line 1792 of yacc.c */ +#line 1859 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); + } + break; + + case 281: +/* Line 1792 of yacc.c */ +#line 1864 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); + } + break; + + case 282: +/* Line 1792 of yacc.c */ +#line 1869 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); + } + break; + + case 283: +/* Line 1792 of yacc.c */ +#line 1874 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); + } + break; + + case 284: +/* Line 1792 of yacc.c */ +#line 1879 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); + } + break; + + case 285: +/* Line 1792 of yacc.c */ +#line 1884 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); + } + break; + + case 286: +/* Line 1792 of yacc.c */ +#line 1889 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); + } + break; + + case 287: +/* Line 1792 of yacc.c */ +#line 1894 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); + } + break; + + case 288: +/* Line 1792 of yacc.c */ +#line 1899 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); + } + break; + + case 289: +/* Line 1792 of yacc.c */ +#line 1904 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); + } + break; + + case 290: +/* Line 1792 of yacc.c */ +#line 1909 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); + } + break; + + case 291: +/* Line 1792 of yacc.c */ +#line 1914 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); + } + break; + + case 292: +/* Line 1792 of yacc.c */ +#line 1919 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); + } + break; + + case 293: +/* Line 1792 of yacc.c */ +#line 1924 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); + } + break; + + case 294: +/* Line 1792 of yacc.c */ +#line 1929 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); + } + break; + + case 295: +/* Line 1792 of yacc.c */ +#line 1934 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); + } + break; + + case 296: +/* Line 1792 of yacc.c */ +#line 1939 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); + } + break; + + case 297: +/* Line 1792 of yacc.c */ +#line 1944 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); + } + break; + + case 298: +/* Line 1792 of yacc.c */ +#line 1949 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); + } + break; + + case 299: +/* Line 1792 of yacc.c */ +#line 1954 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); + } + break; + + case 300: +/* Line 1792 of yacc.c */ +#line 1959 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); + } + break; + + case 301: +/* Line 1792 of yacc.c */ +#line 1964 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); + } + break; + + case 302: +/* Line 1792 of yacc.c */ +#line 1969 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); + } + break; + + case 303: +/* Line 1792 of yacc.c */ +#line 1974 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); + } + break; + + case 304: +/* Line 1792 of yacc.c */ +#line 1979 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); + } + break; + + case 305: +/* Line 1792 of yacc.c */ +#line 1984 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + } + break; + + case 306: +/* Line 1792 of yacc.c */ +#line 1989 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + } + break; + + case 307: +/* Line 1792 of yacc.c */ +#line 1994 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + } + break; + + case 308: +/* Line 1792 of yacc.c */ +#line 1999 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + } + break; + + case 309: +/* Line 1792 of yacc.c */ +#line 2004 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + } + break; + + case 310: +/* Line 1792 of yacc.c */ +#line 2009 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + } + break; + + case 311: +/* Line 1792 of yacc.c */ +#line 2014 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + } + break; + + case 312: +/* Line 1792 of yacc.c */ +#line 2019 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + } + break; + + case 313: +/* Line 1792 of yacc.c */ +#line 2024 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + } + break; + + case 314: +/* Line 1792 of yacc.c */ +#line 2029 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + } + break; + + case 315: +/* Line 1792 of yacc.c */ +#line 2034 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + } + break; + + case 316: +/* Line 1792 of yacc.c */ +#line 2039 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + } + break; + + case 317: +/* Line 1792 of yacc.c */ +#line 2044 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + } + break; + + case 318: +/* Line 1792 of yacc.c */ +#line 2049 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + } + break; + + case 319: +/* Line 1792 of yacc.c */ +#line 2054 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + } + break; + + case 320: +/* Line 1792 of yacc.c */ +#line 2059 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + } + break; + + case 321: +/* Line 1792 of yacc.c */ +#line 2064 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + } + break; + + case 322: +/* Line 1792 of yacc.c */ +#line 2069 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + } + break; + + case 323: +/* Line 1792 of yacc.c */ +#line 2074 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { // GL_OES_EGL_image_external + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.external = true; + } + break; + + case 324: +/* Line 1792 of yacc.c */ +#line 2080 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat); + } + break; + + case 325: +/* Line 1792 of yacc.c */ +#line 2086 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat, true); + } + break; + + case 326: +/* Line 1792 of yacc.c */ +#line 2092 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtInt); + } + break; + + case 327: +/* Line 1792 of yacc.c */ +#line 2098 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtInt, true); + } + break; + + case 328: +/* Line 1792 of yacc.c */ +#line 2104 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtUint); + } + break; + + case 329: +/* Line 1792 of yacc.c */ +#line 2110 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (1)].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtUint, true); + } + break; + + case 330: +/* Line 1792 of yacc.c */ +#line 2116 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type); + (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; + parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); + } + break; + + case 331: +/* Line 1792 of yacc.c */ +#line 2121 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // + // This is for user defined type names. The lexical phase looked up the + // type. + // + if (const TVariable* variable = ((yyvsp[(1) - (1)].lex).symbol)->getAsVariable()) { + const TType& structure = variable->getType(); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = &structure; + } else + parseContext.error((yyvsp[(1) - (1)].lex).loc, "expected type name", (yyvsp[(1) - (1)].lex).string->c_str(), ""); + } + break; + + case 332: +/* Line 1792 of yacc.c */ +#line 2137 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + if (parseContext.profile == EEsProfile) + (yyval.interm.type).qualifier.precision = EpqHigh; + } + break; + + case 333: +/* Line 1792 of yacc.c */ +#line 2143 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + if (parseContext.profile == EEsProfile) + (yyval.interm.type).qualifier.precision = EpqMedium; + } + break; + + case 334: +/* Line 1792 of yacc.c */ +#line 2149 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.profileRequires((yyvsp[(1) - (1)].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); + (yyval.interm.type).init((yyvsp[(1) - (1)].lex).loc, parseContext.symbolTable.atGlobalLevel()); + if (parseContext.profile == EEsProfile) + (yyval.interm.type).qualifier.precision = EpqLow; + } + break; + + case 335: +/* Line 1792 of yacc.c */ +#line 2158 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (3)].lex).loc); } + break; + + case 336: +/* Line 1792 of yacc.c */ +#line 2158 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TType* structure = new TType((yyvsp[(5) - (6)].interm.typeList), *(yyvsp[(2) - (6)].lex).string); + parseContext.structArrayCheck((yyvsp[(2) - (6)].lex).loc, *structure); + TVariable* userTypeDef = new TVariable((yyvsp[(2) - (6)].lex).string, *structure, true); + if (! parseContext.symbolTable.insert(*userTypeDef)) + parseContext.error((yyvsp[(2) - (6)].lex).loc, "redefinition", (yyvsp[(2) - (6)].lex).string->c_str(), "struct"); + (yyval.interm.type).init((yyvsp[(1) - (6)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } + break; + + case 337: +/* Line 1792 of yacc.c */ +#line 2169 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[(1) - (2)].lex).loc); } + break; + + case 338: +/* Line 1792 of yacc.c */ +#line 2169 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString("")); + (yyval.interm.type).init((yyvsp[(1) - (5)].lex).loc); + (yyval.interm.type).basicType = EbtStruct; + (yyval.interm.type).userDef = structure; + --parseContext.structNestingLevel; + } + break; + + case 339: +/* Line 1792 of yacc.c */ +#line 2179 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList); + } + break; + + case 340: +/* Line 1792 of yacc.c */ +#line 2182 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList); + for (unsigned int i = 0; i < (yyvsp[(2) - (2)].interm.typeList)->size(); ++i) { + for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { + if ((*(yyval.interm.typeList))[j].type->getFieldName() == (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName()) + parseContext.error((*(yyvsp[(2) - (2)].interm.typeList))[i].loc, "duplicate member name:", "", (*(yyvsp[(2) - (2)].interm.typeList))[i].type->getFieldName().c_str()); + } + (yyval.interm.typeList)->push_back((*(yyvsp[(2) - (2)].interm.typeList))[i]); + } + } + break; + + case 341: +/* Line 1792 of yacc.c */ +#line 2195 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(1) - (3)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(1) - (3)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(1) - (3)].interm.type).loc, *(yyvsp[(1) - (3)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList); + + parseContext.voidErrorCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyvsp[(2) - (3)].interm.typeList))[0].type->getFieldName(), (yyvsp[(1) - (3)].interm.type).basicType); + parseContext.precisionQualifierCheck((yyvsp[(1) - (3)].interm.type).loc, (yyvsp[(1) - (3)].interm.type).basicType, (yyvsp[(1) - (3)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (3)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(1) - (3)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(1) - (3)].interm.type)); + } + } + break; + + case 342: +/* Line 1792 of yacc.c */ +#line 2213 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.globalQualifierFixCheck((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).qualifier); + if ((yyvsp[(2) - (4)].interm.type).arraySizes) { + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); + parseContext.profileRequires((yyvsp[(2) - (4)].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + if (parseContext.profile == EEsProfile) + parseContext.arraySizeRequiredCheck((yyvsp[(2) - (4)].interm.type).loc, *(yyvsp[(2) - (4)].interm.type).arraySizes); + } + + (yyval.interm.typeList) = (yyvsp[(3) - (4)].interm.typeList); + + parseContext.checkNoShaderLayouts((yyvsp[(1) - (4)].interm.type).loc, (yyvsp[(1) - (4)].interm.type).shaderQualifiers); + parseContext.voidErrorCheck((yyvsp[(2) - (4)].interm.type).loc, (*(yyvsp[(3) - (4)].interm.typeList))[0].type->getFieldName(), (yyvsp[(2) - (4)].interm.type).basicType); + parseContext.mergeQualifiers((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).qualifier, (yyvsp[(1) - (4)].interm.type).qualifier, true); + parseContext.precisionQualifierCheck((yyvsp[(2) - (4)].interm.type).loc, (yyvsp[(2) - (4)].interm.type).basicType, (yyvsp[(2) - (4)].interm.type).qualifier); + + for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { + parseContext.arrayDimCheck((yyvsp[(1) - (4)].interm.type).loc, (*(yyval.interm.typeList))[i].type, (yyvsp[(2) - (4)].interm.type).arraySizes); + (*(yyval.interm.typeList))[i].type->mergeType((yyvsp[(2) - (4)].interm.type)); + } + } + break; + + case 343: +/* Line 1792 of yacc.c */ +#line 2237 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList) = new TTypeList; + (yyval.interm.typeList)->push_back((yyvsp[(1) - (1)].interm.typeLine)); + } + break; + + case 344: +/* Line 1792 of yacc.c */ +#line 2241 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine)); + } + break; + + case 345: +/* Line 1792 of yacc.c */ +#line 2247 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (1)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (1)].lex).string); + } + break; + + case 346: +/* Line 1792 of yacc.c */ +#line 2252 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.arrayDimCheck((yyvsp[(1) - (2)].lex).loc, (yyvsp[(2) - (2)].interm).arraySizes, 0); + + (yyval.interm.typeLine).type = new TType(EbtVoid); + (yyval.interm.typeLine).loc = (yyvsp[(1) - (2)].lex).loc; + (yyval.interm.typeLine).type->setFieldName(*(yyvsp[(1) - (2)].lex).string); + (yyval.interm.typeLine).type->newArraySizes(*(yyvsp[(2) - (2)].interm).arraySizes); + } + break; + + case 347: +/* Line 1792 of yacc.c */ +#line 2263 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 348: +/* Line 1792 of yacc.c */ +#line 2266 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (3)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode); + } + break; + + case 349: +/* Line 1792 of yacc.c */ +#line 2272 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[(1) - (4)].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[(2) - (4)].interm.intermTypedNode); + } + break; + + case 350: +/* Line 1792 of yacc.c */ +#line 2281 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[(1) - (1)].interm.intermTypedNode), (yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc()); + } + break; + + case 351: +/* Line 1792 of yacc.c */ +#line 2284 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode)); + } + break; + + case 352: +/* Line 1792 of yacc.c */ +#line 2290 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 353: +/* Line 1792 of yacc.c */ +#line 2294 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 354: +/* Line 1792 of yacc.c */ +#line 2295 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 355: +/* Line 1792 of yacc.c */ +#line 2301 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 356: +/* Line 1792 of yacc.c */ +#line 2302 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 357: +/* Line 1792 of yacc.c */ +#line 2303 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 358: +/* Line 1792 of yacc.c */ +#line 2304 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 359: +/* Line 1792 of yacc.c */ +#line 2305 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 360: +/* Line 1792 of yacc.c */ +#line 2306 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 361: +/* Line 1792 of yacc.c */ +#line 2307 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 362: +/* Line 1792 of yacc.c */ +#line 2311 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } + break; + + case 363: +/* Line 1792 of yacc.c */ +#line 2312 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } + break; + + case 364: +/* Line 1792 of yacc.c */ +#line 2316 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } + break; + + case 365: +/* Line 1792 of yacc.c */ +#line 2320 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(3) - (5)].interm.intermNode) && (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()) + (yyvsp[(3) - (5)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(3) - (5)].interm.intermNode); + } + break; + + case 366: +/* Line 1792 of yacc.c */ +#line 2328 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 367: +/* Line 1792 of yacc.c */ +#line 2329 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); } + break; + + case 368: +/* Line 1792 of yacc.c */ +#line 2333 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + ++parseContext.controlFlowNestingLevel; + } + break; + + case 369: +/* Line 1792 of yacc.c */ +#line 2336 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + --parseContext.controlFlowNestingLevel; + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); + } + break; + + case 370: +/* Line 1792 of yacc.c */ +#line 2340 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 371: +/* Line 1792 of yacc.c */ +#line 2345 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); + } + break; + + case 372: +/* Line 1792 of yacc.c */ +#line 2354 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + } + break; + + case 373: +/* Line 1792 of yacc.c */ +#line 2357 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(2) - (3)].interm.intermNode) && (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()) + (yyvsp[(2) - (3)].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermNode); + } + break; + + case 374: +/* Line 1792 of yacc.c */ +#line 2365 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode)); + if ((yyvsp[(1) - (1)].interm.intermNode) && (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(1) - (1)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence(0, (yyvsp[(1) - (1)].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + } + } + break; + + case 375: +/* Line 1792 of yacc.c */ +#line 2373 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if ((yyvsp[(2) - (2)].interm.intermNode) && (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode() && ((yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || + (yyvsp[(2) - (2)].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { + parseContext.wrapupSwitchSubsequence((yyvsp[(1) - (2)].interm.intermNode) ? (yyvsp[(1) - (2)].interm.intermNode)->getAsAggregate() : 0, (yyvsp[(2) - (2)].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + } else + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); + } + break; + + case 376: +/* Line 1792 of yacc.c */ +#line 2384 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } + break; + + case 377: +/* Line 1792 of yacc.c */ +#line 2385 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = static_cast((yyvsp[(1) - (2)].interm.intermTypedNode)); } + break; + + case 378: +/* Line 1792 of yacc.c */ +#line 2389 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.boolCheck((yyvsp[(1) - (5)].lex).loc, (yyvsp[(3) - (5)].interm.intermTypedNode)); + (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yyvsp[(1) - (5)].lex).loc); + } + break; + + case 379: +/* Line 1792 of yacc.c */ +#line 2396 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode); + } + break; + + case 380: +/* Line 1792 of yacc.c */ +#line 2400 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode); + (yyval.interm.nodePair).node2 = 0; + } + break; + + case 381: +/* Line 1792 of yacc.c */ +#line 2408 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + parseContext.boolCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLoc(), (yyvsp[(1) - (1)].interm.intermTypedNode)); + } + break; + + case 382: +/* Line 1792 of yacc.c */ +#line 2412 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.boolCheck((yyvsp[(2) - (4)].lex).loc, (yyvsp[(1) - (4)].interm.type)); + + TType type((yyvsp[(1) - (4)].interm.type)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[(2) - (4)].lex).loc, *(yyvsp[(2) - (4)].lex).string, (yyvsp[(1) - (4)].interm.type), 0, (yyvsp[(4) - (4)].interm.intermTypedNode)); + if (initNode) + (yyval.interm.intermTypedNode) = initNode->getAsTyped(); + else + (yyval.interm.intermTypedNode) = 0; + } + break; + + case 383: +/* Line 1792 of yacc.c */ +#line 2425 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // start new switch sequence on the switch stack + ++parseContext.controlFlowNestingLevel; + ++parseContext.statementNestingLevel; + parseContext.switchSequenceStack.push_back(new TIntermSequence); + parseContext.switchLevel.push_back(parseContext.statementNestingLevel); + parseContext.symbolTable.push(); + } + break; + + case 384: +/* Line 1792 of yacc.c */ +#line 2433 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[(1) - (8)].lex).loc, (yyvsp[(3) - (8)].interm.intermTypedNode), (yyvsp[(7) - (8)].interm.intermNode) ? (yyvsp[(7) - (8)].interm.intermNode)->getAsAggregate() : 0); + delete parseContext.switchSequenceStack.back(); + parseContext.switchSequenceStack.pop_back(); + parseContext.switchLevel.pop_back(); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 385: +/* Line 1792 of yacc.c */ +#line 2445 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + } + break; + + case 386: +/* Line 1792 of yacc.c */ +#line 2448 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 387: +/* Line 1792 of yacc.c */ +#line 2454 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot appear outside switch statement", "case", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error((yyvsp[(1) - (3)].lex).loc, "cannot be nested inside control flow", "case", ""); + else { + parseContext.constantValueCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + parseContext.integerCheck((yyvsp[(2) - (3)].interm.intermTypedNode), "case"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); + } + } + break; + + case 388: +/* Line 1792 of yacc.c */ +#line 2466 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = 0; + if (parseContext.switchLevel.size() == 0) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot appear outside switch statement", "default", ""); + else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "cannot be nested inside control flow", "default", ""); + else + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 389: +/* Line 1792 of yacc.c */ +#line 2478 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (! parseContext.limits.whileLoops) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "while loops not available", "limitation", ""); + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 390: +/* Line 1792 of yacc.c */ +#line 2486 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(6) - (6)].interm.intermNode), (yyvsp[(4) - (6)].interm.intermTypedNode), 0, true, (yyvsp[(1) - (6)].lex).loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 391: +/* Line 1792 of yacc.c */ +#line 2493 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 392: +/* Line 1792 of yacc.c */ +#line 2498 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (! parseContext.limits.whileLoops) + parseContext.error((yyvsp[(1) - (8)].lex).loc, "do-while loops not available", "limitation", ""); + + parseContext.boolCheck((yyvsp[(8) - (8)].lex).loc, (yyvsp[(6) - (8)].interm.intermTypedNode)); + + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[(3) - (8)].interm.intermNode), (yyvsp[(6) - (8)].interm.intermTypedNode), 0, false, (yyvsp[(4) - (8)].lex).loc); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 393: +/* Line 1792 of yacc.c */ +#line 2509 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.push(); + ++parseContext.loopNestingLevel; + ++parseContext.statementNestingLevel; + ++parseContext.controlFlowNestingLevel; + } + break; + + case 394: +/* Line 1792 of yacc.c */ +#line 2515 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[(4) - (7)].interm.intermNode), (yyvsp[(2) - (7)].lex).loc); + TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[(7) - (7)].interm.intermNode), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast((yyvsp[(5) - (7)].interm.nodePair).node2), true, (yyvsp[(1) - (7)].lex).loc); + if (! parseContext.limits.nonInductiveForLoops) + parseContext.inductiveLoopCheck((yyvsp[(1) - (7)].lex).loc, (yyvsp[(4) - (7)].interm.intermNode), forLoop); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyval.interm.intermNode), forLoop, (yyvsp[(1) - (7)].lex).loc); + (yyval.interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + --parseContext.loopNestingLevel; + --parseContext.statementNestingLevel; + --parseContext.controlFlowNestingLevel; + } + break; + + case 395: +/* Line 1792 of yacc.c */ +#line 2530 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 396: +/* Line 1792 of yacc.c */ +#line 2533 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 397: +/* Line 1792 of yacc.c */ +#line 2539 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); + } + break; + + case 398: +/* Line 1792 of yacc.c */ +#line 2542 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermTypedNode) = 0; + } + break; + + case 399: +/* Line 1792 of yacc.c */ +#line 2548 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = 0; + } + break; + + case 400: +/* Line 1792 of yacc.c */ +#line 2552 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode); + (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode); + } + break; + + case 401: +/* Line 1792 of yacc.c */ +#line 2559 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (parseContext.loopNestingLevel <= 0) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "continue statement only allowed in loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 402: +/* Line 1792 of yacc.c */ +#line 2564 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "break statement only allowed in switch and loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 403: +/* Line 1792 of yacc.c */ +#line 2569 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).loc); + if (parseContext.currentFunctionType->getBasicType() != EbtVoid) + parseContext.error((yyvsp[(1) - (2)].lex).loc, "non-void function must return a value", "return", ""); + if (parseContext.inMain) + parseContext.postMainReturn = true; + } + break; + + case 404: +/* Line 1792 of yacc.c */ +#line 2576 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.functionReturnsValue = true; + if (parseContext.currentFunctionType->getBasicType() == EbtVoid) { + parseContext.error((yyvsp[(1) - (3)].lex).loc, "void function cannot return a value", "return", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(1) - (3)].lex).loc); + } else if (*(parseContext.currentFunctionType) != (yyvsp[(2) - (3)].interm.intermTypedNode)->getType()) { + TIntermTyped* converted = parseContext.intermediate.addConversion(EOpReturn, *parseContext.currentFunctionType, (yyvsp[(2) - (3)].interm.intermTypedNode)); + if (converted) { + if (parseContext.version < 420) + parseContext.warn((yyvsp[(1) - (3)].lex).loc, "type conversion on return values was not explicitly allowed until version 420", "return", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, converted, (yyvsp[(1) - (3)].lex).loc); + } else { + parseContext.error((yyvsp[(1) - (3)].lex).loc, "type does not match, or is not convertible to, the function's return type", "return", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); + } + } else + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).loc); + } + break; + + case 405: +/* Line 1792 of yacc.c */ +#line 2594 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[(1) - (2)].lex).loc, EShLangFragment, "discard"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[(1) - (2)].lex).loc); + } + break; + + case 406: +/* Line 1792 of yacc.c */ +#line 2603 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + } + break; + + case 407: +/* Line 1792 of yacc.c */ +#line 2607 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode)); + parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); + } + break; + + case 408: +/* Line 1792 of yacc.c */ +#line 2614 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 409: +/* Line 1792 of yacc.c */ +#line 2617 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); + } + break; + + case 410: +/* Line 1792 of yacc.c */ +#line 2623 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + (yyvsp[(1) - (1)].interm).function = parseContext.handleFunctionDeclarator((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function, false /* not prototype */); + (yyvsp[(1) - (1)].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[(1) - (1)].interm).loc, *(yyvsp[(1) - (1)].interm).function); + } + break; + + case 411: +/* Line 1792 of yacc.c */ +#line 2627 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + { + // May be best done as post process phase on intermediate code + if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) + parseContext.error((yyvsp[(1) - (3)].interm).loc, "function does not return a value:", "", (yyvsp[(1) - (3)].interm).function->getName().c_str()); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermNode)); + parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[(1) - (3)].interm).function->getType(), (yyvsp[(1) - (3)].interm).loc); + (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[(1) - (3)].interm).function->getMangledName().c_str()); + + // store the pragma information for debug and optimize and other vendor specific + // information. This information can be queried from the parse tree + (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); + (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); + (yyval.interm.intermNode)->getAsAggregate()->addToPragmaTable(parseContext.contextPragma.pragmaTable); + } + break; + + +/* Line 1792 of yacc.c */ +#line 7558 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp" + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires + that yytoken be updated with the new translation. We take the + approach of translating immediately before every use of yytoken. + One alternative is translating here after every semantic action, + but that translation would be missed if the semantic action invokes + YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or + if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an + incorrect destructor might then be invoked immediately. In the + case of YYERROR or YYBACKUP, subsequent parser actions might lead + to an incorrect destructor call or verbose syntax error message + before the lookahead is translated. */ + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (pParseContext, YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (pParseContext, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, pParseContext); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse lookahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, pParseContext); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + *++yyvsp = yylval; + YY_IGNORE_MAYBE_UNINITIALIZED_END + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#if !defined yyoverflow || YYERROR_VERBOSE +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (pParseContext, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, pParseContext); + } + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, pParseContext); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +/* Line 2055 of yacc.c */ +#line 2644 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h new file mode 100644 index 00000000..0c6ab3bc --- /dev/null +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -0,0 +1,370 @@ +/* A Bison parser, made by GNU Bison 2.7. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +#ifndef YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 1 +#endif +#if YYDEBUG +extern int yydebug; +#endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ATTRIBUTE = 258, + VARYING = 259, + CONST = 260, + BOOL = 261, + FLOAT = 262, + DOUBLE = 263, + INT = 264, + UINT = 265, + BREAK = 266, + CONTINUE = 267, + DO = 268, + ELSE = 269, + FOR = 270, + IF = 271, + DISCARD = 272, + RETURN = 273, + SWITCH = 274, + CASE = 275, + DEFAULT = 276, + SUBROUTINE = 277, + BVEC2 = 278, + BVEC3 = 279, + BVEC4 = 280, + IVEC2 = 281, + IVEC3 = 282, + IVEC4 = 283, + UVEC2 = 284, + UVEC3 = 285, + UVEC4 = 286, + VEC2 = 287, + VEC3 = 288, + VEC4 = 289, + MAT2 = 290, + MAT3 = 291, + MAT4 = 292, + CENTROID = 293, + IN = 294, + OUT = 295, + INOUT = 296, + UNIFORM = 297, + PATCH = 298, + SAMPLE = 299, + BUFFER = 300, + SHARED = 301, + COHERENT = 302, + VOLATILE = 303, + RESTRICT = 304, + READONLY = 305, + WRITEONLY = 306, + DVEC2 = 307, + DVEC3 = 308, + DVEC4 = 309, + DMAT2 = 310, + DMAT3 = 311, + DMAT4 = 312, + NOPERSPECTIVE = 313, + FLAT = 314, + SMOOTH = 315, + LAYOUT = 316, + MAT2X2 = 317, + MAT2X3 = 318, + MAT2X4 = 319, + MAT3X2 = 320, + MAT3X3 = 321, + MAT3X4 = 322, + MAT4X2 = 323, + MAT4X3 = 324, + MAT4X4 = 325, + DMAT2X2 = 326, + DMAT2X3 = 327, + DMAT2X4 = 328, + DMAT3X2 = 329, + DMAT3X3 = 330, + DMAT3X4 = 331, + DMAT4X2 = 332, + DMAT4X3 = 333, + DMAT4X4 = 334, + ATOMIC_UINT = 335, + SAMPLER1D = 336, + SAMPLER2D = 337, + SAMPLER3D = 338, + SAMPLERCUBE = 339, + SAMPLER1DSHADOW = 340, + SAMPLER2DSHADOW = 341, + SAMPLERCUBESHADOW = 342, + SAMPLER1DARRAY = 343, + SAMPLER2DARRAY = 344, + SAMPLER1DARRAYSHADOW = 345, + SAMPLER2DARRAYSHADOW = 346, + ISAMPLER1D = 347, + ISAMPLER2D = 348, + ISAMPLER3D = 349, + ISAMPLERCUBE = 350, + ISAMPLER1DARRAY = 351, + ISAMPLER2DARRAY = 352, + USAMPLER1D = 353, + USAMPLER2D = 354, + USAMPLER3D = 355, + USAMPLERCUBE = 356, + USAMPLER1DARRAY = 357, + USAMPLER2DARRAY = 358, + SAMPLER2DRECT = 359, + SAMPLER2DRECTSHADOW = 360, + ISAMPLER2DRECT = 361, + USAMPLER2DRECT = 362, + SAMPLERBUFFER = 363, + ISAMPLERBUFFER = 364, + USAMPLERBUFFER = 365, + SAMPLERCUBEARRAY = 366, + SAMPLERCUBEARRAYSHADOW = 367, + ISAMPLERCUBEARRAY = 368, + USAMPLERCUBEARRAY = 369, + SAMPLER2DMS = 370, + ISAMPLER2DMS = 371, + USAMPLER2DMS = 372, + SAMPLER2DMSARRAY = 373, + ISAMPLER2DMSARRAY = 374, + USAMPLER2DMSARRAY = 375, + SAMPLEREXTERNALOES = 376, + SAMPLER = 377, + SAMPLERSHADOW = 378, + TEXTURE1D = 379, + TEXTURE2D = 380, + TEXTURE3D = 381, + TEXTURECUBE = 382, + TEXTURE1DARRAY = 383, + TEXTURE2DARRAY = 384, + ITEXTURE1D = 385, + ITEXTURE2D = 386, + ITEXTURE3D = 387, + ITEXTURECUBE = 388, + ITEXTURE1DARRAY = 389, + ITEXTURE2DARRAY = 390, + UTEXTURE1D = 391, + UTEXTURE2D = 392, + UTEXTURE3D = 393, + UTEXTURECUBE = 394, + UTEXTURE1DARRAY = 395, + UTEXTURE2DARRAY = 396, + TEXTURE2DRECT = 397, + ITEXTURE2DRECT = 398, + UTEXTURE2DRECT = 399, + TEXTUREBUFFER = 400, + ITEXTUREBUFFER = 401, + UTEXTUREBUFFER = 402, + TEXTURECUBEARRAY = 403, + ITEXTURECUBEARRAY = 404, + UTEXTURECUBEARRAY = 405, + TEXTURE2DMS = 406, + ITEXTURE2DMS = 407, + UTEXTURE2DMS = 408, + TEXTURE2DMSARRAY = 409, + ITEXTURE2DMSARRAY = 410, + UTEXTURE2DMSARRAY = 411, + SUBPASSINPUT = 412, + SUBPASSINPUTMS = 413, + ISUBPASSINPUT = 414, + ISUBPASSINPUTMS = 415, + USUBPASSINPUT = 416, + USUBPASSINPUTMS = 417, + IMAGE1D = 418, + IIMAGE1D = 419, + UIMAGE1D = 420, + IMAGE2D = 421, + IIMAGE2D = 422, + UIMAGE2D = 423, + IMAGE3D = 424, + IIMAGE3D = 425, + UIMAGE3D = 426, + IMAGE2DRECT = 427, + IIMAGE2DRECT = 428, + UIMAGE2DRECT = 429, + IMAGECUBE = 430, + IIMAGECUBE = 431, + UIMAGECUBE = 432, + IMAGEBUFFER = 433, + IIMAGEBUFFER = 434, + UIMAGEBUFFER = 435, + IMAGE1DARRAY = 436, + IIMAGE1DARRAY = 437, + UIMAGE1DARRAY = 438, + IMAGE2DARRAY = 439, + IIMAGE2DARRAY = 440, + UIMAGE2DARRAY = 441, + IMAGECUBEARRAY = 442, + IIMAGECUBEARRAY = 443, + UIMAGECUBEARRAY = 444, + IMAGE2DMS = 445, + IIMAGE2DMS = 446, + UIMAGE2DMS = 447, + IMAGE2DMSARRAY = 448, + IIMAGE2DMSARRAY = 449, + UIMAGE2DMSARRAY = 450, + STRUCT = 451, + VOID = 452, + WHILE = 453, + IDENTIFIER = 454, + TYPE_NAME = 455, + FLOATCONSTANT = 456, + DOUBLECONSTANT = 457, + INTCONSTANT = 458, + UINTCONSTANT = 459, + BOOLCONSTANT = 460, + LEFT_OP = 461, + RIGHT_OP = 462, + INC_OP = 463, + DEC_OP = 464, + LE_OP = 465, + GE_OP = 466, + EQ_OP = 467, + NE_OP = 468, + AND_OP = 469, + OR_OP = 470, + XOR_OP = 471, + MUL_ASSIGN = 472, + DIV_ASSIGN = 473, + ADD_ASSIGN = 474, + MOD_ASSIGN = 475, + LEFT_ASSIGN = 476, + RIGHT_ASSIGN = 477, + AND_ASSIGN = 478, + XOR_ASSIGN = 479, + OR_ASSIGN = 480, + SUB_ASSIGN = 481, + LEFT_PAREN = 482, + RIGHT_PAREN = 483, + LEFT_BRACKET = 484, + RIGHT_BRACKET = 485, + LEFT_BRACE = 486, + RIGHT_BRACE = 487, + DOT = 488, + COMMA = 489, + COLON = 490, + EQUAL = 491, + SEMICOLON = 492, + BANG = 493, + DASH = 494, + TILDE = 495, + PLUS = 496, + STAR = 497, + SLASH = 498, + PERCENT = 499, + LEFT_ANGLE = 500, + RIGHT_ANGLE = 501, + VERTICAL_BAR = 502, + CARET = 503, + AMPERSAND = 504, + QUESTION = 505, + INVARIANT = 506, + PRECISE = 507, + HIGH_PRECISION = 508, + MEDIUM_PRECISION = 509, + LOW_PRECISION = 510, + PRECISION = 511, + PACKED = 512, + RESOURCE = 513, + SUPERP = 514 + }; +#endif + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +{ +/* Line 2058 of yacc.c */ +#line 66 "C:/Projects/glslang/glslang/MachineIndependent/glslang.y" + + struct { + glslang::TSourceLoc loc; + union { + glslang::TString *string; + int i; + unsigned int u; + bool b; + double d; + }; + glslang::TSymbol* symbol; + } lex; + struct { + glslang::TSourceLoc loc; + glslang::TOperator op; + union { + TIntermNode* intermNode; + glslang::TIntermNodePair nodePair; + glslang::TIntermTyped* intermTypedNode; + }; + union { + glslang::TPublicType type; + glslang::TFunction* function; + glslang::TParameter param; + glslang::TTypeLoc typeLine; + glslang::TTypeList* typeList; + glslang::TArraySizes* arraySizes; + glslang::TIdentifierList* identifierList; + }; + } interm; + + +/* Line 2058 of yacc.c */ +#line 349 "C:/Projects/glslang/glslang/MachineIndependent/glslang_tab.cpp.h" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (glslang::TParseContext* pParseContext); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + +#endif /* !YY_YY_C_PROJECTS_GLSLANG_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ From 395b7dd3f5dd738998d97f78469885debb901c92 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 1 Jan 2016 01:21:56 +0100 Subject: [PATCH 4/4] Remove custom command for bison, it fails if bison is not found --- glslang/CMakeLists.txt | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 803203df..9725eccf 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -64,22 +64,6 @@ set(HEADERS MachineIndependent/preprocessor/PpContext.h MachineIndependent/preprocessor/PpTokens.h) -find_package(BISON) -if(NOT BISON_FOUND) - if (WIN32) - set(BISON_EXECUTABLE ../tools/bison.exe) - message("bison not found. Assuming it is at ${BISON_EXECUTABLE}") - else() - message(FATAL_ERROR "bison required but not found. Please install via your package management tool.") - endif() -endif() - -# Always use a custom command since our use of --defines isn't assumed by CMake's BISON_TARGET, -# which ends up causing the target to always be rebuilt. -add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h - COMMAND ${BISON_EXECUTABLE} --defines=${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp.h -t ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang.y -o ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp - MAIN_DEPENDENCY MachineIndependent/glslang.y - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) set(BISON_GLSLParser_OUTPUT_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/MachineIndependent/glslang_tab.cpp) add_library(glslang STATIC ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${HEADERS})

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 diff --git a/tools/data/Makefile.am b/tools/data/Makefile.am deleted file mode 100644 index e209325c..00000000 --- a/tools/data/Makefile.am +++ /dev/null @@ -1,30 +0,0 @@ -## Copyright (C) 2002, 2005-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -dist_pkgdata_DATA = README bison.m4 \ - c-like.m4 \ - c-skel.m4 c.m4 yacc.c glr.c \ - c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \ - java-skel.m4 java.m4 lalr1.java - -m4sugardir = $(pkgdatadir)/m4sugar -dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/foreach.m4 - -xsltdir = $(pkgdatadir)/xslt -dist_xslt_DATA = \ - xslt/bison.xsl \ - xslt/xml2dot.xsl \ - xslt/xml2text.xsl \ - xslt/xml2xhtml.xsl diff --git a/tools/data/Makefile.in b/tools/data/Makefile.in deleted file mode 100644 index a15e670b..00000000 --- a/tools/data/Makefile.in +++ /dev/null @@ -1,1639 +0,0 @@ -# Makefile.in generated by automake 1.12.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2012 Free Software Foundation, Inc. - -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = data -DIST_COMMON = README $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) \ - $(dist_xslt_DATA) $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \ - $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/asm-underscore.m4 \ - $(top_srcdir)/m4/assert.m4 $(top_srcdir)/m4/bison-i18n.m4 \ - $(top_srcdir)/m4/c-working.m4 $(top_srcdir)/m4/calloc.m4 \ - $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/close.m4 \ - $(top_srcdir)/m4/closeout.m4 $(top_srcdir)/m4/codeset.m4 \ - $(top_srcdir)/m4/config-h.m4 $(top_srcdir)/m4/configmake.m4 \ - $(top_srcdir)/m4/cxx.m4 $(top_srcdir)/m4/dirname.m4 \ - $(top_srcdir)/m4/dmalloc.m4 \ - $(top_srcdir)/m4/double-slash-root.m4 $(top_srcdir)/m4/dup2.m4 \ - $(top_srcdir)/m4/environ.m4 $(top_srcdir)/m4/errno_h.m4 \ - $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \ - $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \ - $(top_srcdir)/m4/extensions.m4 \ - $(top_srcdir)/m4/extern-inline.m4 \ - $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \ - $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \ - $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \ - $(top_srcdir)/m4/fopen.m4 $(top_srcdir)/m4/fpending.m4 \ - $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \ - $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \ - $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \ - $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \ - $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \ - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \ - $(top_srcdir)/m4/gnulib-common.m4 \ - $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \ - $(top_srcdir)/m4/include_next.m4 \ - $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \ - $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \ - $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \ - $(top_srcdir)/m4/isnand.m4 $(top_srcdir)/m4/isnanf.m4 \ - $(top_srcdir)/m4/isnanl.m4 $(top_srcdir)/m4/iswblank.m4 \ - $(top_srcdir)/m4/javacomp.m4 $(top_srcdir)/m4/javaexec.m4 \ - $(top_srcdir)/m4/largefile.m4 $(top_srcdir)/m4/ldexp.m4 \ - $(top_srcdir)/m4/ldexpl.m4 $(top_srcdir)/m4/lib-ld.m4 \ - $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ - $(top_srcdir)/m4/libunistring-base.m4 \ - $(top_srcdir)/m4/localcharset.m4 $(top_srcdir)/m4/locale-fr.m4 \ - $(top_srcdir)/m4/locale-ja.m4 $(top_srcdir)/m4/locale-zh.m4 \ - $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \ - $(top_srcdir)/m4/m4.m4 $(top_srcdir)/m4/malloc.m4 \ - $(top_srcdir)/m4/math_h.m4 $(top_srcdir)/m4/mbchar.m4 \ - $(top_srcdir)/m4/mbiter.m4 $(top_srcdir)/m4/mbrtowc.m4 \ - $(top_srcdir)/m4/mbsinit.m4 $(top_srcdir)/m4/mbstate_t.m4 \ - $(top_srcdir)/m4/mbswidth.m4 $(top_srcdir)/m4/memchr.m4 \ - $(top_srcdir)/m4/mmap-anon.m4 $(top_srcdir)/m4/mode_t.m4 \ - $(top_srcdir)/m4/msvc-inval.m4 \ - $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \ - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \ - $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \ - $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \ - $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \ - $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \ - $(top_srcdir)/m4/printf-frexp.m4 \ - $(top_srcdir)/m4/printf-frexpl.m4 \ - $(top_srcdir)/m4/printf-posix-rpl.m4 \ - $(top_srcdir)/m4/printf.m4 $(top_srcdir)/m4/progtest.m4 \ - $(top_srcdir)/m4/quote.m4 $(top_srcdir)/m4/quotearg.m4 \ - $(top_srcdir)/m4/raise.m4 $(top_srcdir)/m4/rawmemchr.m4 \ - $(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/sched_h.m4 \ - $(top_srcdir)/m4/setenv.m4 $(top_srcdir)/m4/sig_atomic_t.m4 \ - $(top_srcdir)/m4/sigaction.m4 $(top_srcdir)/m4/signal_h.m4 \ - $(top_srcdir)/m4/signalblocking.m4 $(top_srcdir)/m4/signbit.m4 \ - $(top_srcdir)/m4/size_max.m4 \ - $(top_srcdir)/m4/snprintf-posix.m4 \ - $(top_srcdir)/m4/snprintf.m4 $(top_srcdir)/m4/spawn-pipe.m4 \ - $(top_srcdir)/m4/spawn_h.m4 $(top_srcdir)/m4/sprintf-posix.m4 \ - $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stat.m4 \ - $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stddef_h.m4 \ - $(top_srcdir)/m4/stdint.m4 $(top_srcdir)/m4/stdint_h.m4 \ - $(top_srcdir)/m4/stdio_h.m4 $(top_srcdir)/m4/stdlib_h.m4 \ - $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strchrnul.m4 \ - $(top_srcdir)/m4/strdup.m4 $(top_srcdir)/m4/strerror.m4 \ - $(top_srcdir)/m4/strerror_r.m4 $(top_srcdir)/m4/string_h.m4 \ - $(top_srcdir)/m4/strndup.m4 $(top_srcdir)/m4/strnlen.m4 \ - $(top_srcdir)/m4/strtoul.m4 $(top_srcdir)/m4/strverscmp.m4 \ - $(top_srcdir)/m4/sys_socket_h.m4 \ - $(top_srcdir)/m4/sys_stat_h.m4 $(top_srcdir)/m4/sys_types_h.m4 \ - $(top_srcdir)/m4/sys_wait_h.m4 $(top_srcdir)/m4/threadlib.m4 \ - $(top_srcdir)/m4/time_h.m4 $(top_srcdir)/m4/timevar.m4 \ - $(top_srcdir)/m4/unistd-safer.m4 $(top_srcdir)/m4/unistd_h.m4 \ - $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/vasnprintf.m4 \ - $(top_srcdir)/m4/vfprintf-posix.m4 \ - $(top_srcdir)/m4/vsnprintf-posix.m4 \ - $(top_srcdir)/m4/vsnprintf.m4 \ - $(top_srcdir)/m4/vsprintf-posix.m4 \ - $(top_srcdir)/m4/wait-process.m4 $(top_srcdir)/m4/waitpid.m4 \ - $(top_srcdir)/m4/warn-on-use.m4 $(top_srcdir)/m4/warnings.m4 \ - $(top_srcdir)/m4/wchar_h.m4 $(top_srcdir)/m4/wchar_t.m4 \ - $(top_srcdir)/m4/wctype_h.m4 $(top_srcdir)/m4/wcwidth.m4 \ - $(top_srcdir)/m4/wint_t.m4 $(top_srcdir)/m4/xalloc.m4 \ - $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/m4/xstrndup.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(m4sugardir)" "$(DESTDIR)$(pkgdatadir)" \ - "$(DESTDIR)$(xsltdir)" -DATA = $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) $(dist_xslt_DATA) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -pkglibexecdir = @pkglibexecdir@ -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -ALLOCA_H = @ALLOCA_H@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ -AR = @AR@ -ARFLAGS = @ARFLAGS@ -ASM_SYMBOL_PREFIX = @ASM_SYMBOL_PREFIX@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOM4TE = @AUTOM4TE@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BISON_CXX_WORKS = @BISON_CXX_WORKS@ -BISON_C_WORKS = @BISON_C_WORKS@ -BISON_LOCALEDIR = @BISON_LOCALEDIR@ -BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ -BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ -BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ -BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ -BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CLASSPATH = @CLASSPATH@ -CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@ -CONFIG_INCLUDE = @CONFIG_INCLUDE@ -CONF_JAVA = @CONF_JAVA@ -CONF_JAVAC = @CONF_JAVAC@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@ -CYGPATH_W = @CYGPATH_W@ -C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DOT = @DOT@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ -EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ -ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ -ENOLINK_VALUE = @ENOLINK_VALUE@ -EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ -EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ -ERRNO_H = @ERRNO_H@ -EXEEXT = @EXEEXT@ -FLOAT_H = @FLOAT_H@ -GCC = @GCC@ -GETOPT_H = @GETOPT_H@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ -GLIBC21 = @GLIBC21@ -GMSGFMT = @GMSGFMT@ -GMSGFMT_015 = @GMSGFMT_015@ -GNULIB_ACOSF = @GNULIB_ACOSF@ -GNULIB_ACOSL = @GNULIB_ACOSL@ -GNULIB_ASINF = @GNULIB_ASINF@ -GNULIB_ASINL = @GNULIB_ASINL@ -GNULIB_ATAN2F = @GNULIB_ATAN2F@ -GNULIB_ATANF = @GNULIB_ATANF@ -GNULIB_ATANL = @GNULIB_ATANL@ -GNULIB_ATOLL = @GNULIB_ATOLL@ -GNULIB_BTOWC = @GNULIB_BTOWC@ -GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ -GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ -GNULIB_CBRT = @GNULIB_CBRT@ -GNULIB_CBRTF = @GNULIB_CBRTF@ -GNULIB_CBRTL = @GNULIB_CBRTL@ -GNULIB_CEIL = @GNULIB_CEIL@ -GNULIB_CEILF = @GNULIB_CEILF@ -GNULIB_CEILL = @GNULIB_CEILL@ -GNULIB_CHDIR = @GNULIB_CHDIR@ -GNULIB_CHOWN = @GNULIB_CHOWN@ -GNULIB_CLOSE = @GNULIB_CLOSE@ -GNULIB_COPYSIGN = @GNULIB_COPYSIGN@ -GNULIB_COPYSIGNF = @GNULIB_COPYSIGNF@ -GNULIB_COPYSIGNL = @GNULIB_COPYSIGNL@ -GNULIB_COSF = @GNULIB_COSF@ -GNULIB_COSHF = @GNULIB_COSHF@ -GNULIB_COSL = @GNULIB_COSL@ -GNULIB_DPRINTF = @GNULIB_DPRINTF@ -GNULIB_DUP = @GNULIB_DUP@ -GNULIB_DUP2 = @GNULIB_DUP2@ -GNULIB_DUP3 = @GNULIB_DUP3@ -GNULIB_ENVIRON = @GNULIB_ENVIRON@ -GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ -GNULIB_EXP2 = @GNULIB_EXP2@ -GNULIB_EXP2F = @GNULIB_EXP2F@ -GNULIB_EXP2L = @GNULIB_EXP2L@ -GNULIB_EXPF = @GNULIB_EXPF@ -GNULIB_EXPL = @GNULIB_EXPL@ -GNULIB_EXPM1 = @GNULIB_EXPM1@ -GNULIB_EXPM1F = @GNULIB_EXPM1F@ -GNULIB_EXPM1L = @GNULIB_EXPM1L@ -GNULIB_FABSF = @GNULIB_FABSF@ -GNULIB_FABSL = @GNULIB_FABSL@ -GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ -GNULIB_FCHDIR = @GNULIB_FCHDIR@ -GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ -GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ -GNULIB_FCLOSE = @GNULIB_FCLOSE@ -GNULIB_FCNTL = @GNULIB_FCNTL@ -GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ -GNULIB_FDOPEN = @GNULIB_FDOPEN@ -GNULIB_FFLUSH = @GNULIB_FFLUSH@ -GNULIB_FFSL = @GNULIB_FFSL@ -GNULIB_FFSLL = @GNULIB_FFSLL@ -GNULIB_FGETC = @GNULIB_FGETC@ -GNULIB_FGETS = @GNULIB_FGETS@ -GNULIB_FLOOR = @GNULIB_FLOOR@ -GNULIB_FLOORF = @GNULIB_FLOORF@ -GNULIB_FLOORL = @GNULIB_FLOORL@ -GNULIB_FMA = @GNULIB_FMA@ -GNULIB_FMAF = @GNULIB_FMAF@ -GNULIB_FMAL = @GNULIB_FMAL@ -GNULIB_FMOD = @GNULIB_FMOD@ -GNULIB_FMODF = @GNULIB_FMODF@ -GNULIB_FMODL = @GNULIB_FMODL@ -GNULIB_FOPEN = @GNULIB_FOPEN@ -GNULIB_FPRINTF = @GNULIB_FPRINTF@ -GNULIB_FPRINTF_POSIX = @GNULIB_FPRINTF_POSIX@ -GNULIB_FPURGE = @GNULIB_FPURGE@ -GNULIB_FPUTC = @GNULIB_FPUTC@ -GNULIB_FPUTS = @GNULIB_FPUTS@ -GNULIB_FREAD = @GNULIB_FREAD@ -GNULIB_FREOPEN = @GNULIB_FREOPEN@ -GNULIB_FREXP = @GNULIB_FREXP@ -GNULIB_FREXPF = @GNULIB_FREXPF@ -GNULIB_FREXPL = @GNULIB_FREXPL@ -GNULIB_FSCANF = @GNULIB_FSCANF@ -GNULIB_FSEEK = @GNULIB_FSEEK@ -GNULIB_FSEEKO = @GNULIB_FSEEKO@ -GNULIB_FSTAT = @GNULIB_FSTAT@ -GNULIB_FSTATAT = @GNULIB_FSTATAT@ -GNULIB_FSYNC = @GNULIB_FSYNC@ -GNULIB_FTELL = @GNULIB_FTELL@ -GNULIB_FTELLO = @GNULIB_FTELLO@ -GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ -GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ -GNULIB_FWRITE = @GNULIB_FWRITE@ -GNULIB_GETC = @GNULIB_GETC@ -GNULIB_GETCHAR = @GNULIB_GETCHAR@ -GNULIB_GETCWD = @GNULIB_GETCWD@ -GNULIB_GETDELIM = @GNULIB_GETDELIM@ -GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ -GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ -GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ -GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ -GNULIB_GETLINE = @GNULIB_GETLINE@ -GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ -GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ -GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ -GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ -GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ -GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ -GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ -GNULIB_GRANTPT = @GNULIB_GRANTPT@ -GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ -GNULIB_HYPOT = @GNULIB_HYPOT@ -GNULIB_HYPOTF = @GNULIB_HYPOTF@ -GNULIB_HYPOTL = @GNULIB_HYPOTL@ -GNULIB_ILOGB = @GNULIB_ILOGB@ -GNULIB_ILOGBF = @GNULIB_ILOGBF@ -GNULIB_ILOGBL = @GNULIB_ILOGBL@ -GNULIB_IMAXABS = @GNULIB_IMAXABS@ -GNULIB_IMAXDIV = @GNULIB_IMAXDIV@ -GNULIB_ISATTY = @GNULIB_ISATTY@ -GNULIB_ISFINITE = @GNULIB_ISFINITE@ -GNULIB_ISINF = @GNULIB_ISINF@ -GNULIB_ISNAN = @GNULIB_ISNAN@ -GNULIB_ISNAND = @GNULIB_ISNAND@ -GNULIB_ISNANF = @GNULIB_ISNANF@ -GNULIB_ISNANL = @GNULIB_ISNANL@ -GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ -GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ -GNULIB_LCHMOD = @GNULIB_LCHMOD@ -GNULIB_LCHOWN = @GNULIB_LCHOWN@ -GNULIB_LDEXPF = @GNULIB_LDEXPF@ -GNULIB_LDEXPL = @GNULIB_LDEXPL@ -GNULIB_LINK = @GNULIB_LINK@ -GNULIB_LINKAT = @GNULIB_LINKAT@ -GNULIB_LOG = @GNULIB_LOG@ -GNULIB_LOG10 = @GNULIB_LOG10@ -GNULIB_LOG10F = @GNULIB_LOG10F@ -GNULIB_LOG10L = @GNULIB_LOG10L@ -GNULIB_LOG1P = @GNULIB_LOG1P@ -GNULIB_LOG1PF = @GNULIB_LOG1PF@ -GNULIB_LOG1PL = @GNULIB_LOG1PL@ -GNULIB_LOG2 = @GNULIB_LOG2@ -GNULIB_LOG2F = @GNULIB_LOG2F@ -GNULIB_LOG2L = @GNULIB_LOG2L@ -GNULIB_LOGB = @GNULIB_LOGB@ -GNULIB_LOGBF = @GNULIB_LOGBF@ -GNULIB_LOGBL = @GNULIB_LOGBL@ -GNULIB_LOGF = @GNULIB_LOGF@ -GNULIB_LOGL = @GNULIB_LOGL@ -GNULIB_LSEEK = @GNULIB_LSEEK@ -GNULIB_LSTAT = @GNULIB_LSTAT@ -GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ -GNULIB_MBRLEN = @GNULIB_MBRLEN@ -GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ -GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ -GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ -GNULIB_MBSCHR = @GNULIB_MBSCHR@ -GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ -GNULIB_MBSINIT = @GNULIB_MBSINIT@ -GNULIB_MBSLEN = @GNULIB_MBSLEN@ -GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ -GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ -GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ -GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ -GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ -GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ -GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ -GNULIB_MBSSEP = @GNULIB_MBSSEP@ -GNULIB_MBSSPN = @GNULIB_MBSSPN@ -GNULIB_MBSSTR = @GNULIB_MBSSTR@ -GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ -GNULIB_MBTOWC = @GNULIB_MBTOWC@ -GNULIB_MEMCHR = @GNULIB_MEMCHR@ -GNULIB_MEMMEM = @GNULIB_MEMMEM@ -GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ -GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ -GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ -GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ -GNULIB_MKFIFO = @GNULIB_MKFIFO@ -GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ -GNULIB_MKNOD = @GNULIB_MKNOD@ -GNULIB_MKNODAT = @GNULIB_MKNODAT@ -GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ -GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ -GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ -GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ -GNULIB_MKTIME = @GNULIB_MKTIME@ -GNULIB_MODF = @GNULIB_MODF@ -GNULIB_MODFF = @GNULIB_MODFF@ -GNULIB_MODFL = @GNULIB_MODFL@ -GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ -GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ -GNULIB_OBSTACK_PRINTF = @GNULIB_OBSTACK_PRINTF@ -GNULIB_OBSTACK_PRINTF_POSIX = @GNULIB_OBSTACK_PRINTF_POSIX@ -GNULIB_OPEN = @GNULIB_OPEN@ -GNULIB_OPENAT = @GNULIB_OPENAT@ -GNULIB_PCLOSE = @GNULIB_PCLOSE@ -GNULIB_PERROR = @GNULIB_PERROR@ -GNULIB_PIPE = @GNULIB_PIPE@ -GNULIB_PIPE2 = @GNULIB_PIPE2@ -GNULIB_POPEN = @GNULIB_POPEN@ -GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ -GNULIB_POSIX_SPAWN = @GNULIB_POSIX_SPAWN@ -GNULIB_POSIX_SPAWNATTR_DESTROY = @GNULIB_POSIX_SPAWNATTR_DESTROY@ -GNULIB_POSIX_SPAWNATTR_GETFLAGS = @GNULIB_POSIX_SPAWNATTR_GETFLAGS@ -GNULIB_POSIX_SPAWNATTR_GETPGROUP = @GNULIB_POSIX_SPAWNATTR_GETPGROUP@ -GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPARAM@ -GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_GETSCHEDPOLICY@ -GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_GETSIGDEFAULT@ -GNULIB_POSIX_SPAWNATTR_GETSIGMASK = @GNULIB_POSIX_SPAWNATTR_GETSIGMASK@ -GNULIB_POSIX_SPAWNATTR_INIT = @GNULIB_POSIX_SPAWNATTR_INIT@ -GNULIB_POSIX_SPAWNATTR_SETFLAGS = @GNULIB_POSIX_SPAWNATTR_SETFLAGS@ -GNULIB_POSIX_SPAWNATTR_SETPGROUP = @GNULIB_POSIX_SPAWNATTR_SETPGROUP@ -GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPARAM@ -GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY = @GNULIB_POSIX_SPAWNATTR_SETSCHEDPOLICY@ -GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT = @GNULIB_POSIX_SPAWNATTR_SETSIGDEFAULT@ -GNULIB_POSIX_SPAWNATTR_SETSIGMASK = @GNULIB_POSIX_SPAWNATTR_SETSIGMASK@ -GNULIB_POSIX_SPAWNP = @GNULIB_POSIX_SPAWNP@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_DESTROY@ -GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT = @GNULIB_POSIX_SPAWN_FILE_ACTIONS_INIT@ -GNULIB_POWF = @GNULIB_POWF@ -GNULIB_PREAD = @GNULIB_PREAD@ -GNULIB_PRINTF = @GNULIB_PRINTF@ -GNULIB_PRINTF_POSIX = @GNULIB_PRINTF_POSIX@ -GNULIB_PTHREAD_SIGMASK = @GNULIB_PTHREAD_SIGMASK@ -GNULIB_PTSNAME = @GNULIB_PTSNAME@ -GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ -GNULIB_PUTC = @GNULIB_PUTC@ -GNULIB_PUTCHAR = @GNULIB_PUTCHAR@ -GNULIB_PUTENV = @GNULIB_PUTENV@ -GNULIB_PUTS = @GNULIB_PUTS@ -GNULIB_PWRITE = @GNULIB_PWRITE@ -GNULIB_RAISE = @GNULIB_RAISE@ -GNULIB_RANDOM = @GNULIB_RANDOM@ -GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ -GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ -GNULIB_READ = @GNULIB_READ@ -GNULIB_READLINK = @GNULIB_READLINK@ -GNULIB_READLINKAT = @GNULIB_READLINKAT@ -GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ -GNULIB_REALPATH = @GNULIB_REALPATH@ -GNULIB_REMAINDER = @GNULIB_REMAINDER@ -GNULIB_REMAINDERF = @GNULIB_REMAINDERF@ -GNULIB_REMAINDERL = @GNULIB_REMAINDERL@ -GNULIB_REMOVE = @GNULIB_REMOVE@ -GNULIB_RENAME = @GNULIB_RENAME@ -GNULIB_RENAMEAT = @GNULIB_RENAMEAT@ -GNULIB_RINT = @GNULIB_RINT@ -GNULIB_RINTF = @GNULIB_RINTF@ -GNULIB_RINTL = @GNULIB_RINTL@ -GNULIB_RMDIR = @GNULIB_RMDIR@ -GNULIB_ROUND = @GNULIB_ROUND@ -GNULIB_ROUNDF = @GNULIB_ROUNDF@ -GNULIB_ROUNDL = @GNULIB_ROUNDL@ -GNULIB_RPMATCH = @GNULIB_RPMATCH@ -GNULIB_SCANF = @GNULIB_SCANF@ -GNULIB_SETENV = @GNULIB_SETENV@ -GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ -GNULIB_SIGACTION = @GNULIB_SIGACTION@ -GNULIB_SIGNAL_H_SIGPIPE = @GNULIB_SIGNAL_H_SIGPIPE@ -GNULIB_SIGNBIT = @GNULIB_SIGNBIT@ -GNULIB_SIGPROCMASK = @GNULIB_SIGPROCMASK@ -GNULIB_SINF = @GNULIB_SINF@ -GNULIB_SINHF = @GNULIB_SINHF@ -GNULIB_SINL = @GNULIB_SINL@ -GNULIB_SLEEP = @GNULIB_SLEEP@ -GNULIB_SNPRINTF = @GNULIB_SNPRINTF@ -GNULIB_SPRINTF_POSIX = @GNULIB_SPRINTF_POSIX@ -GNULIB_SQRTF = @GNULIB_SQRTF@ -GNULIB_SQRTL = @GNULIB_SQRTL@ -GNULIB_STAT = @GNULIB_STAT@ -GNULIB_STDIO_H_NONBLOCKING = @GNULIB_STDIO_H_NONBLOCKING@ -GNULIB_STDIO_H_SIGPIPE = @GNULIB_STDIO_H_SIGPIPE@ -GNULIB_STPCPY = @GNULIB_STPCPY@ -GNULIB_STPNCPY = @GNULIB_STPNCPY@ -GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ -GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ -GNULIB_STRDUP = @GNULIB_STRDUP@ -GNULIB_STRERROR = @GNULIB_STRERROR@ -GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ -GNULIB_STRNCAT = @GNULIB_STRNCAT@ -GNULIB_STRNDUP = @GNULIB_STRNDUP@ -GNULIB_STRNLEN = @GNULIB_STRNLEN@ -GNULIB_STRPBRK = @GNULIB_STRPBRK@ -GNULIB_STRPTIME = @GNULIB_STRPTIME@ -GNULIB_STRSEP = @GNULIB_STRSEP@ -GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ -GNULIB_STRSTR = @GNULIB_STRSTR@ -GNULIB_STRTOD = @GNULIB_STRTOD@ -GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@ -GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ -GNULIB_STRTOLL = @GNULIB_STRTOLL@ -GNULIB_STRTOULL = @GNULIB_STRTOULL@ -GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@ -GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ -GNULIB_SYMLINK = @GNULIB_SYMLINK@ -GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ -GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ -GNULIB_TANF = @GNULIB_TANF@ -GNULIB_TANHF = @GNULIB_TANHF@ -GNULIB_TANL = @GNULIB_TANL@ -GNULIB_TIMEGM = @GNULIB_TIMEGM@ -GNULIB_TIME_R = @GNULIB_TIME_R@ -GNULIB_TMPFILE = @GNULIB_TMPFILE@ -GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ -GNULIB_TRUNC = @GNULIB_TRUNC@ -GNULIB_TRUNCF = @GNULIB_TRUNCF@ -GNULIB_TRUNCL = @GNULIB_TRUNCL@ -GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ -GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ -GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ -GNULIB_UNLINK = @GNULIB_UNLINK@ -GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ -GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ -GNULIB_UNSETENV = @GNULIB_UNSETENV@ -GNULIB_USLEEP = @GNULIB_USLEEP@ -GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ -GNULIB_VASPRINTF = @GNULIB_VASPRINTF@ -GNULIB_VDPRINTF = @GNULIB_VDPRINTF@ -GNULIB_VFPRINTF = @GNULIB_VFPRINTF@ -GNULIB_VFPRINTF_POSIX = @GNULIB_VFPRINTF_POSIX@ -GNULIB_VFSCANF = @GNULIB_VFSCANF@ -GNULIB_VPRINTF = @GNULIB_VPRINTF@ -GNULIB_VPRINTF_POSIX = @GNULIB_VPRINTF_POSIX@ -GNULIB_VSCANF = @GNULIB_VSCANF@ -GNULIB_VSNPRINTF = @GNULIB_VSNPRINTF@ -GNULIB_VSPRINTF_POSIX = @GNULIB_VSPRINTF_POSIX@ -GNULIB_WAITPID = @GNULIB_WAITPID@ -GNULIB_WCPCPY = @GNULIB_WCPCPY@ -GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ -GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ -GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ -GNULIB_WCSCAT = @GNULIB_WCSCAT@ -GNULIB_WCSCHR = @GNULIB_WCSCHR@ -GNULIB_WCSCMP = @GNULIB_WCSCMP@ -GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ -GNULIB_WCSCPY = @GNULIB_WCSCPY@ -GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ -GNULIB_WCSDUP = @GNULIB_WCSDUP@ -GNULIB_WCSLEN = @GNULIB_WCSLEN@ -GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ -GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ -GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ -GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ -GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ -GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ -GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ -GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ -GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ -GNULIB_WCSSPN = @GNULIB_WCSSPN@ -GNULIB_WCSSTR = @GNULIB_WCSSTR@ -GNULIB_WCSTOK = @GNULIB_WCSTOK@ -GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ -GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ -GNULIB_WCTOB = @GNULIB_WCTOB@ -GNULIB_WCTOMB = @GNULIB_WCTOMB@ -GNULIB_WCTRANS = @GNULIB_WCTRANS@ -GNULIB_WCTYPE = @GNULIB_WCTYPE@ -GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ -GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ -GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ -GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ -GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ -GNULIB_WMEMSET = @GNULIB_WMEMSET@ -GNULIB_WRITE = @GNULIB_WRITE@ -GNULIB__EXIT = @GNULIB__EXIT@ -GREP = @GREP@ -HAVE_ACOSF = @HAVE_ACOSF@ -HAVE_ACOSL = @HAVE_ACOSL@ -HAVE_ASINF = @HAVE_ASINF@ -HAVE_ASINL = @HAVE_ASINL@ -HAVE_ATAN2F = @HAVE_ATAN2F@ -HAVE_ATANF = @HAVE_ATANF@ -HAVE_ATANL = @HAVE_ATANL@ -HAVE_ATOLL = @HAVE_ATOLL@ -HAVE_BTOWC = @HAVE_BTOWC@ -HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ -HAVE_CBRT = @HAVE_CBRT@ -HAVE_CBRTF = @HAVE_CBRTF@ -HAVE_CBRTL = @HAVE_CBRTL@ -HAVE_CHOWN = @HAVE_CHOWN@ -HAVE_COPYSIGN = @HAVE_COPYSIGN@ -HAVE_COPYSIGNL = @HAVE_COPYSIGNL@ -HAVE_COSF = @HAVE_COSF@ -HAVE_COSHF = @HAVE_COSHF@ -HAVE_COSL = @HAVE_COSL@ -HAVE_DECL_ACOSL = @HAVE_DECL_ACOSL@ -HAVE_DECL_ASINL = @HAVE_DECL_ASINL@ -HAVE_DECL_ATANL = @HAVE_DECL_ATANL@ -HAVE_DECL_CBRTF = @HAVE_DECL_CBRTF@ -HAVE_DECL_CBRTL = @HAVE_DECL_CBRTL@ -HAVE_DECL_CEILF = @HAVE_DECL_CEILF@ -HAVE_DECL_CEILL = @HAVE_DECL_CEILL@ -HAVE_DECL_COPYSIGNF = @HAVE_DECL_COPYSIGNF@ -HAVE_DECL_COSL = @HAVE_DECL_COSL@ -HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ -HAVE_DECL_EXP2 = @HAVE_DECL_EXP2@ -HAVE_DECL_EXP2F = @HAVE_DECL_EXP2F@ -HAVE_DECL_EXP2L = @HAVE_DECL_EXP2L@ -HAVE_DECL_EXPL = @HAVE_DECL_EXPL@ -HAVE_DECL_EXPM1L = @HAVE_DECL_EXPM1L@ -HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ -HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ -HAVE_DECL_FLOORF = @HAVE_DECL_FLOORF@ -HAVE_DECL_FLOORL = @HAVE_DECL_FLOORL@ -HAVE_DECL_FPURGE = @HAVE_DECL_FPURGE@ -HAVE_DECL_FREXPL = @HAVE_DECL_FREXPL@ -HAVE_DECL_FSEEKO = @HAVE_DECL_FSEEKO@ -HAVE_DECL_FTELLO = @HAVE_DECL_FTELLO@ -HAVE_DECL_GETDELIM = @HAVE_DECL_GETDELIM@ -HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ -HAVE_DECL_GETLINE = @HAVE_DECL_GETLINE@ -HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ -HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ -HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ -HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ -HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@ -HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@ -HAVE_DECL_LDEXPL = @HAVE_DECL_LDEXPL@ -HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ -HAVE_DECL_LOG10L = @HAVE_DECL_LOG10L@ -HAVE_DECL_LOG2 = @HAVE_DECL_LOG2@ -HAVE_DECL_LOG2F = @HAVE_DECL_LOG2F@ -HAVE_DECL_LOG2L = @HAVE_DECL_LOG2L@ -HAVE_DECL_LOGB = @HAVE_DECL_LOGB@ -HAVE_DECL_LOGL = @HAVE_DECL_LOGL@ -HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ -HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ -HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@ -HAVE_DECL_REMAINDER = @HAVE_DECL_REMAINDER@ -HAVE_DECL_REMAINDERL = @HAVE_DECL_REMAINDERL@ -HAVE_DECL_RINTF = @HAVE_DECL_RINTF@ -HAVE_DECL_ROUND = @HAVE_DECL_ROUND@ -HAVE_DECL_ROUNDF = @HAVE_DECL_ROUNDF@ -HAVE_DECL_ROUNDL = @HAVE_DECL_ROUNDL@ -HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ -HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ -HAVE_DECL_SINL = @HAVE_DECL_SINL@ -HAVE_DECL_SNPRINTF = @HAVE_DECL_SNPRINTF@ -HAVE_DECL_SQRTL = @HAVE_DECL_SQRTL@ -HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ -HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ -HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ -HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ -HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ -HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@ -HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ -HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@ -HAVE_DECL_TANL = @HAVE_DECL_TANL@ -HAVE_DECL_TRUNC = @HAVE_DECL_TRUNC@ -HAVE_DECL_TRUNCF = @HAVE_DECL_TRUNCF@ -HAVE_DECL_TRUNCL = @HAVE_DECL_TRUNCL@ -HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ -HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ -HAVE_DECL_VSNPRINTF = @HAVE_DECL_VSNPRINTF@ -HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ -HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ -HAVE_DPRINTF = @HAVE_DPRINTF@ -HAVE_DUP2 = @HAVE_DUP2@ -HAVE_DUP3 = @HAVE_DUP3@ -HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ -HAVE_EXPF = @HAVE_EXPF@ -HAVE_EXPL = @HAVE_EXPL@ -HAVE_EXPM1 = @HAVE_EXPM1@ -HAVE_EXPM1F = @HAVE_EXPM1F@ -HAVE_FABSF = @HAVE_FABSF@ -HAVE_FABSL = @HAVE_FABSL@ -HAVE_FACCESSAT = @HAVE_FACCESSAT@ -HAVE_FCHDIR = @HAVE_FCHDIR@ -HAVE_FCHMODAT = @HAVE_FCHMODAT@ -HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ -HAVE_FCNTL = @HAVE_FCNTL@ -HAVE_FDATASYNC = @HAVE_FDATASYNC@ -HAVE_FEATURES_H = @HAVE_FEATURES_H@ -HAVE_FFSL = @HAVE_FFSL@ -HAVE_FFSLL = @HAVE_FFSLL@ -HAVE_FMA = @HAVE_FMA@ -HAVE_FMAF = @HAVE_FMAF@ -HAVE_FMAL = @HAVE_FMAL@ -HAVE_FMODF = @HAVE_FMODF@ -HAVE_FMODL = @HAVE_FMODL@ -HAVE_FREXPF = @HAVE_FREXPF@ -HAVE_FSEEKO = @HAVE_FSEEKO@ -HAVE_FSTATAT = @HAVE_FSTATAT@ -HAVE_FSYNC = @HAVE_FSYNC@ -HAVE_FTELLO = @HAVE_FTELLO@ -HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ -HAVE_FUTIMENS = @HAVE_FUTIMENS@ -HAVE_GCJ_C = @HAVE_GCJ_C@ -HAVE_GCJ_IN_PATH = @HAVE_GCJ_IN_PATH@ -HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ -HAVE_GETGROUPS = @HAVE_GETGROUPS@ -HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ -HAVE_GETLOGIN = @HAVE_GETLOGIN@ -HAVE_GETOPT_H = @HAVE_GETOPT_H@ -HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ -HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ -HAVE_GIJ = @HAVE_GIJ@ -HAVE_GIJ_IN_PATH = @HAVE_GIJ_IN_PATH@ -HAVE_GRANTPT = @HAVE_GRANTPT@ -HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ -HAVE_HYPOTF = @HAVE_HYPOTF@ -HAVE_HYPOTL = @HAVE_HYPOTL@ -HAVE_ILOGB = @HAVE_ILOGB@ -HAVE_ILOGBF = @HAVE_ILOGBF@ -HAVE_ILOGBL = @HAVE_ILOGBL@ -HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ -HAVE_ISNAND = @HAVE_ISNAND@ -HAVE_ISNANF = @HAVE_ISNANF@ -HAVE_ISNANL = @HAVE_ISNANL@ -HAVE_ISWBLANK = @HAVE_ISWBLANK@ -HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ -HAVE_JAVA = @HAVE_JAVA@ -HAVE_JAVAC = @HAVE_JAVAC@ -HAVE_JAVAC_ENVVAR = @HAVE_JAVAC_ENVVAR@ -HAVE_JAVAC_IN_PATH = @HAVE_JAVAC_IN_PATH@ -HAVE_JAVA_ENVVAR = @HAVE_JAVA_ENVVAR@ -HAVE_JAVA_IN_PATH = @HAVE_JAVA_IN_PATH@ -HAVE_JIKES = @HAVE_JIKES@ -HAVE_JIKES_IN_PATH = @HAVE_JIKES_IN_PATH@ -HAVE_JRE = @HAVE_JRE@ -HAVE_JRE_IN_PATH = @HAVE_JRE_IN_PATH@ -HAVE_JVIEW = @HAVE_JVIEW@ -HAVE_JVIEW_IN_PATH = @HAVE_JVIEW_IN_PATH@ -HAVE_LCHMOD = @HAVE_LCHMOD@ -HAVE_LCHOWN = @HAVE_LCHOWN@ -HAVE_LDEXPF = @HAVE_LDEXPF@ -HAVE_LINK = @HAVE_LINK@ -HAVE_LINKAT = @HAVE_LINKAT@ -HAVE_LOG10F = @HAVE_LOG10F@ -HAVE_LOG10L = @HAVE_LOG10L@ -HAVE_LOG1P = @HAVE_LOG1P@ -HAVE_LOG1PF = @HAVE_LOG1PF@ -HAVE_LOG1PL = @HAVE_LOG1PL@ -HAVE_LOGBF = @HAVE_LOGBF@ -HAVE_LOGBL = @HAVE_LOGBL@ -HAVE_LOGF = @HAVE_LOGF@ -HAVE_LOGL = @HAVE_LOGL@ -HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ -HAVE_LSTAT = @HAVE_LSTAT@ -HAVE_MBRLEN = @HAVE_MBRLEN@ -HAVE_MBRTOWC = @HAVE_MBRTOWC@ -HAVE_MBSINIT = @HAVE_MBSINIT@ -HAVE_MBSLEN = @HAVE_MBSLEN@ -HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ -HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ -HAVE_MEMCHR = @HAVE_MEMCHR@ -HAVE_MEMPCPY = @HAVE_MEMPCPY@ -HAVE_MKDIRAT = @HAVE_MKDIRAT@ -HAVE_MKDTEMP = @HAVE_MKDTEMP@ -HAVE_MKFIFO = @HAVE_MKFIFO@ -HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ -HAVE_MKNOD = @HAVE_MKNOD@ -HAVE_MKNODAT = @HAVE_MKNODAT@ -HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ -HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ -HAVE_MKSTEMP = @HAVE_MKSTEMP@ -HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ -HAVE_MODFF = @HAVE_MODFF@ -HAVE_MODFL = @HAVE_MODFL@ -HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ -HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ -HAVE_OPENAT = @HAVE_OPENAT@ -HAVE_OS_H = @HAVE_OS_H@ -HAVE_PCLOSE = @HAVE_PCLOSE@ -HAVE_PIPE = @HAVE_PIPE@ -HAVE_PIPE2 = @HAVE_PIPE2@ -HAVE_POPEN = @HAVE_POPEN@ -HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ -HAVE_POSIX_SIGNALBLOCKING = @HAVE_POSIX_SIGNALBLOCKING@ -HAVE_POSIX_SPAWN = @HAVE_POSIX_SPAWN@ -HAVE_POSIX_SPAWNATTR_T = @HAVE_POSIX_SPAWNATTR_T@ -HAVE_POSIX_SPAWN_FILE_ACTIONS_T = @HAVE_POSIX_SPAWN_FILE_ACTIONS_T@ -HAVE_POWF = @HAVE_POWF@ -HAVE_PREAD = @HAVE_PREAD@ -HAVE_PTHREAD_SIGMASK = @HAVE_PTHREAD_SIGMASK@ -HAVE_PTSNAME = @HAVE_PTSNAME@ -HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ -HAVE_PWRITE = @HAVE_PWRITE@ -HAVE_RAISE = @HAVE_RAISE@ -HAVE_RANDOM = @HAVE_RANDOM@ -HAVE_RANDOM_H = @HAVE_RANDOM_H@ -HAVE_RANDOM_R = @HAVE_RANDOM_R@ -HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ -HAVE_READLINK = @HAVE_READLINK@ -HAVE_READLINKAT = @HAVE_READLINKAT@ -HAVE_REALPATH = @HAVE_REALPATH@ -HAVE_REMAINDER = @HAVE_REMAINDER@ -HAVE_REMAINDERF = @HAVE_REMAINDERF@ -HAVE_RENAMEAT = @HAVE_RENAMEAT@ -HAVE_RINT = @HAVE_RINT@ -HAVE_RINTL = @HAVE_RINTL@ -HAVE_RPMATCH = @HAVE_RPMATCH@ -HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@ -HAVE_SCHED_H = @HAVE_SCHED_H@ -HAVE_SETENV = @HAVE_SETENV@ -HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ -HAVE_SIGACTION = @HAVE_SIGACTION@ -HAVE_SIGHANDLER_T = @HAVE_SIGHANDLER_T@ -HAVE_SIGINFO_T = @HAVE_SIGINFO_T@ -HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ -HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ -HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ -HAVE_SIGSET_T = @HAVE_SIGSET_T@ -HAVE_SINF = @HAVE_SINF@ -HAVE_SINHF = @HAVE_SINHF@ -HAVE_SINL = @HAVE_SINL@ -HAVE_SLEEP = @HAVE_SLEEP@ -HAVE_SPAWN_H = @HAVE_SPAWN_H@ -HAVE_SQRTF = @HAVE_SQRTF@ -HAVE_SQRTL = @HAVE_SQRTL@ -HAVE_STDINT_H = @HAVE_STDINT_H@ -HAVE_STPCPY = @HAVE_STPCPY@ -HAVE_STPNCPY = @HAVE_STPNCPY@ -HAVE_STRCASESTR = @HAVE_STRCASESTR@ -HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ -HAVE_STRPBRK = @HAVE_STRPBRK@ -HAVE_STRPTIME = @HAVE_STRPTIME@ -HAVE_STRSEP = @HAVE_STRSEP@ -HAVE_STRTOD = @HAVE_STRTOD@ -HAVE_STRTOLL = @HAVE_STRTOLL@ -HAVE_STRTOULL = @HAVE_STRTOULL@ -HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ -HAVE_STRUCT_SCHED_PARAM = @HAVE_STRUCT_SCHED_PARAM@ -HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ -HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ -HAVE_SYMLINK = @HAVE_SYMLINK@ -HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ -HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ -HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ -HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ -HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ -HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ -HAVE_TANF = @HAVE_TANF@ -HAVE_TANHF = @HAVE_TANHF@ -HAVE_TANL = @HAVE_TANL@ -HAVE_TIMEGM = @HAVE_TIMEGM@ -HAVE_TYPE_VOLATILE_SIG_ATOMIC_T = @HAVE_TYPE_VOLATILE_SIG_ATOMIC_T@ -HAVE_UNISTD_H = @HAVE_UNISTD_H@ -HAVE_UNLINKAT = @HAVE_UNLINKAT@ -HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ -HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ -HAVE_USLEEP = @HAVE_USLEEP@ -HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ -HAVE_VASPRINTF = @HAVE_VASPRINTF@ -HAVE_VDPRINTF = @HAVE_VDPRINTF@ -HAVE_WCHAR_H = @HAVE_WCHAR_H@ -HAVE_WCHAR_T = @HAVE_WCHAR_T@ -HAVE_WCPCPY = @HAVE_WCPCPY@ -HAVE_WCPNCPY = @HAVE_WCPNCPY@ -HAVE_WCRTOMB = @HAVE_WCRTOMB@ -HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ -HAVE_WCSCAT = @HAVE_WCSCAT@ -HAVE_WCSCHR = @HAVE_WCSCHR@ -HAVE_WCSCMP = @HAVE_WCSCMP@ -HAVE_WCSCOLL = @HAVE_WCSCOLL@ -HAVE_WCSCPY = @HAVE_WCSCPY@ -HAVE_WCSCSPN = @HAVE_WCSCSPN@ -HAVE_WCSDUP = @HAVE_WCSDUP@ -HAVE_WCSLEN = @HAVE_WCSLEN@ -HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ -HAVE_WCSNCAT = @HAVE_WCSNCAT@ -HAVE_WCSNCMP = @HAVE_WCSNCMP@ -HAVE_WCSNCPY = @HAVE_WCSNCPY@ -HAVE_WCSNLEN = @HAVE_WCSNLEN@ -HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ -HAVE_WCSPBRK = @HAVE_WCSPBRK@ -HAVE_WCSRCHR = @HAVE_WCSRCHR@ -HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ -HAVE_WCSSPN = @HAVE_WCSSPN@ -HAVE_WCSSTR = @HAVE_WCSSTR@ -HAVE_WCSTOK = @HAVE_WCSTOK@ -HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ -HAVE_WCSXFRM = @HAVE_WCSXFRM@ -HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ -HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ -HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ -HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ -HAVE_WINT_T = @HAVE_WINT_T@ -HAVE_WMEMCHR = @HAVE_WMEMCHR@ -HAVE_WMEMCMP = @HAVE_WMEMCMP@ -HAVE_WMEMCPY = @HAVE_WMEMCPY@ -HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ -HAVE_WMEMSET = @HAVE_WMEMSET@ -HAVE__BOOL = @HAVE__BOOL@ -HAVE__EXIT = @HAVE__EXIT@ -HELP2MAN = @HELP2MAN@ -INCLUDE_NEXT = @INCLUDE_NEXT@ -INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INT32_MAX_LT_INTMAX_MAX = @INT32_MAX_LT_INTMAX_MAX@ -INT64_MAX_EQ_LONG_MAX = @INT64_MAX_EQ_LONG_MAX@ -INTLLIBS = @INTLLIBS@ -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ -ISNAND_LIBM = @ISNAND_LIBM@ -ISNANF_LIBM = @ISNANF_LIBM@ -ISNANL_LIBM = @ISNANL_LIBM@ -ISNAN_LIBM = @ISNAN_LIBM@ -LDEXPL_LIBM = @LDEXPL_LIBM@ -LDEXP_LIBM = @LDEXP_LIBM@ -LDFLAGS = @LDFLAGS@ -LEX = @LEX@ -LEXLIB = @LEXLIB@ -LEX_IS_FLEX = @LEX_IS_FLEX@ -LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ -LIBBISON_LIBDEPS = @LIBBISON_LIBDEPS@ -LIBBISON_LTLIBDEPS = @LIBBISON_LTLIBDEPS@ -LIBICONV = @LIBICONV@ -LIBINTL = @LIBINTL@ -LIBMULTITHREAD = @LIBMULTITHREAD@ -LIBOBJS = @LIBOBJS@ -LIBPTH = @LIBPTH@ -LIBPTH_PREFIX = @LIBPTH_PREFIX@ -LIBS = @LIBS@ -LIBTHREAD = @LIBTHREAD@ -LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ -LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ -LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ -LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ -LOCALE_JA = @LOCALE_JA@ -LOCALE_ZH_CN = @LOCALE_ZH_CN@ -LTLIBICONV = @LTLIBICONV@ -LTLIBINTL = @LTLIBINTL@ -LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ -LTLIBOBJS = @LTLIBOBJS@ -LTLIBPTH = @LTLIBPTH@ -LTLIBTHREAD = @LTLIBTHREAD@ -M4 = @M4@ -M4_DEBUGFILE = @M4_DEBUGFILE@ -M4_GNU = @M4_GNU@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MSGFMT = @MSGFMT@ -MSGFMT_015 = @MSGFMT_015@ -MSGMERGE = @MSGMERGE@ -NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ -NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ -NEXT_AS_FIRST_DIRECTIVE_FLOAT_H = @NEXT_AS_FIRST_DIRECTIVE_FLOAT_H@ -NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ -NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H = @NEXT_AS_FIRST_DIRECTIVE_INTTYPES_H@ -NEXT_AS_FIRST_DIRECTIVE_MATH_H = @NEXT_AS_FIRST_DIRECTIVE_MATH_H@ -NEXT_AS_FIRST_DIRECTIVE_SCHED_H = @NEXT_AS_FIRST_DIRECTIVE_SCHED_H@ -NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H = @NEXT_AS_FIRST_DIRECTIVE_SIGNAL_H@ -NEXT_AS_FIRST_DIRECTIVE_SPAWN_H = @NEXT_AS_FIRST_DIRECTIVE_SPAWN_H@ -NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ -NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ -NEXT_AS_FIRST_DIRECTIVE_STDIO_H = @NEXT_AS_FIRST_DIRECTIVE_STDIO_H@ -NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ -NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ -NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_WAIT_H@ -NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ -NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ -NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ -NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ -NEXT_ERRNO_H = @NEXT_ERRNO_H@ -NEXT_FCNTL_H = @NEXT_FCNTL_H@ -NEXT_FLOAT_H = @NEXT_FLOAT_H@ -NEXT_GETOPT_H = @NEXT_GETOPT_H@ -NEXT_INTTYPES_H = @NEXT_INTTYPES_H@ -NEXT_MATH_H = @NEXT_MATH_H@ -NEXT_SCHED_H = @NEXT_SCHED_H@ -NEXT_SIGNAL_H = @NEXT_SIGNAL_H@ -NEXT_SPAWN_H = @NEXT_SPAWN_H@ -NEXT_STDDEF_H = @NEXT_STDDEF_H@ -NEXT_STDINT_H = @NEXT_STDINT_H@ -NEXT_STDIO_H = @NEXT_STDIO_H@ -NEXT_STDLIB_H = @NEXT_STDLIB_H@ -NEXT_STRING_H = @NEXT_STRING_H@ -NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ -NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ -NEXT_SYS_WAIT_H = @NEXT_SYS_WAIT_H@ -NEXT_TIME_H = @NEXT_TIME_H@ -NEXT_UNISTD_H = @NEXT_UNISTD_H@ -NEXT_WCHAR_H = @NEXT_WCHAR_H@ -NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ -OBJEXT = @OBJEXT@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_COPYRIGHT_YEAR = @PACKAGE_COPYRIGHT_YEAR@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -POSUB = @POSUB@ -PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ -PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ -PRIPTR_PREFIX = @PRIPTR_PREFIX@ -PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@ -PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ -PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ -RANLIB = @RANLIB@ -REPLACE_BTOWC = @REPLACE_BTOWC@ -REPLACE_CALLOC = @REPLACE_CALLOC@ -REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ -REPLACE_CBRTF = @REPLACE_CBRTF@ -REPLACE_CBRTL = @REPLACE_CBRTL@ -REPLACE_CEIL = @REPLACE_CEIL@ -REPLACE_CEILF = @REPLACE_CEILF@ -REPLACE_CEILL = @REPLACE_CEILL@ -REPLACE_CHOWN = @REPLACE_CHOWN@ -REPLACE_CLOSE = @REPLACE_CLOSE@ -REPLACE_DPRINTF = @REPLACE_DPRINTF@ -REPLACE_DUP = @REPLACE_DUP@ -REPLACE_DUP2 = @REPLACE_DUP2@ -REPLACE_EXP2 = @REPLACE_EXP2@ -REPLACE_EXP2L = @REPLACE_EXP2L@ -REPLACE_EXPM1 = @REPLACE_EXPM1@ -REPLACE_EXPM1F = @REPLACE_EXPM1F@ -REPLACE_FABSL = @REPLACE_FABSL@ -REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ -REPLACE_FCLOSE = @REPLACE_FCLOSE@ -REPLACE_FCNTL = @REPLACE_FCNTL@ -REPLACE_FDOPEN = @REPLACE_FDOPEN@ -REPLACE_FFLUSH = @REPLACE_FFLUSH@ -REPLACE_FLOOR = @REPLACE_FLOOR@ -REPLACE_FLOORF = @REPLACE_FLOORF@ -REPLACE_FLOORL = @REPLACE_FLOORL@ -REPLACE_FMA = @REPLACE_FMA@ -REPLACE_FMAF = @REPLACE_FMAF@ -REPLACE_FMAL = @REPLACE_FMAL@ -REPLACE_FMOD = @REPLACE_FMOD@ -REPLACE_FMODF = @REPLACE_FMODF@ -REPLACE_FMODL = @REPLACE_FMODL@ -REPLACE_FOPEN = @REPLACE_FOPEN@ -REPLACE_FPRINTF = @REPLACE_FPRINTF@ -REPLACE_FPURGE = @REPLACE_FPURGE@ -REPLACE_FREOPEN = @REPLACE_FREOPEN@ -REPLACE_FREXP = @REPLACE_FREXP@ -REPLACE_FREXPF = @REPLACE_FREXPF@ -REPLACE_FREXPL = @REPLACE_FREXPL@ -REPLACE_FSEEK = @REPLACE_FSEEK@ -REPLACE_FSEEKO = @REPLACE_FSEEKO@ -REPLACE_FSTAT = @REPLACE_FSTAT@ -REPLACE_FSTATAT = @REPLACE_FSTATAT@ -REPLACE_FTELL = @REPLACE_FTELL@ -REPLACE_FTELLO = @REPLACE_FTELLO@ -REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ -REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ -REPLACE_GETCWD = @REPLACE_GETCWD@ -REPLACE_GETDELIM = @REPLACE_GETDELIM@ -REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ -REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ -REPLACE_GETLINE = @REPLACE_GETLINE@ -REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ -REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ -REPLACE_HUGE_VAL = @REPLACE_HUGE_VAL@ -REPLACE_HYPOT = @REPLACE_HYPOT@ -REPLACE_HYPOTF = @REPLACE_HYPOTF@ -REPLACE_HYPOTL = @REPLACE_HYPOTL@ -REPLACE_ILOGB = @REPLACE_ILOGB@ -REPLACE_ILOGBF = @REPLACE_ILOGBF@ -REPLACE_ISATTY = @REPLACE_ISATTY@ -REPLACE_ISFINITE = @REPLACE_ISFINITE@ -REPLACE_ISINF = @REPLACE_ISINF@ -REPLACE_ISNAN = @REPLACE_ISNAN@ -REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ -REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ -REPLACE_ITOLD = @REPLACE_ITOLD@ -REPLACE_LCHOWN = @REPLACE_LCHOWN@ -REPLACE_LDEXPL = @REPLACE_LDEXPL@ -REPLACE_LINK = @REPLACE_LINK@ -REPLACE_LINKAT = @REPLACE_LINKAT@ -REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ -REPLACE_LOG = @REPLACE_LOG@ -REPLACE_LOG10 = @REPLACE_LOG10@ -REPLACE_LOG10F = @REPLACE_LOG10F@ -REPLACE_LOG10L = @REPLACE_LOG10L@ -REPLACE_LOG1P = @REPLACE_LOG1P@ -REPLACE_LOG1PF = @REPLACE_LOG1PF@ -REPLACE_LOG1PL = @REPLACE_LOG1PL@ -REPLACE_LOG2 = @REPLACE_LOG2@ -REPLACE_LOG2F = @REPLACE_LOG2F@ -REPLACE_LOG2L = @REPLACE_LOG2L@ -REPLACE_LOGB = @REPLACE_LOGB@ -REPLACE_LOGBF = @REPLACE_LOGBF@ -REPLACE_LOGBL = @REPLACE_LOGBL@ -REPLACE_LOGF = @REPLACE_LOGF@ -REPLACE_LOGL = @REPLACE_LOGL@ -REPLACE_LSEEK = @REPLACE_LSEEK@ -REPLACE_LSTAT = @REPLACE_LSTAT@ -REPLACE_MALLOC = @REPLACE_MALLOC@ -REPLACE_MBRLEN = @REPLACE_MBRLEN@ -REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ -REPLACE_MBSINIT = @REPLACE_MBSINIT@ -REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ -REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ -REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ -REPLACE_MBTOWC = @REPLACE_MBTOWC@ -REPLACE_MEMCHR = @REPLACE_MEMCHR@ -REPLACE_MEMMEM = @REPLACE_MEMMEM@ -REPLACE_MKDIR = @REPLACE_MKDIR@ -REPLACE_MKFIFO = @REPLACE_MKFIFO@ -REPLACE_MKNOD = @REPLACE_MKNOD@ -REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ -REPLACE_MKTIME = @REPLACE_MKTIME@ -REPLACE_MODF = @REPLACE_MODF@ -REPLACE_MODFF = @REPLACE_MODFF@ -REPLACE_MODFL = @REPLACE_MODFL@ -REPLACE_NAN = @REPLACE_NAN@ -REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ -REPLACE_NULL = @REPLACE_NULL@ -REPLACE_OBSTACK_PRINTF = @REPLACE_OBSTACK_PRINTF@ -REPLACE_OPEN = @REPLACE_OPEN@ -REPLACE_OPENAT = @REPLACE_OPENAT@ -REPLACE_PERROR = @REPLACE_PERROR@ -REPLACE_POPEN = @REPLACE_POPEN@ -REPLACE_POSIX_SPAWN = @REPLACE_POSIX_SPAWN@ -REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE@ -REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2@ -REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN@ -REPLACE_PREAD = @REPLACE_PREAD@ -REPLACE_PRINTF = @REPLACE_PRINTF@ -REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@ -REPLACE_PTSNAME = @REPLACE_PTSNAME@ -REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ -REPLACE_PUTENV = @REPLACE_PUTENV@ -REPLACE_PWRITE = @REPLACE_PWRITE@ -REPLACE_RAISE = @REPLACE_RAISE@ -REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ -REPLACE_READ = @REPLACE_READ@ -REPLACE_READLINK = @REPLACE_READLINK@ -REPLACE_REALLOC = @REPLACE_REALLOC@ -REPLACE_REALPATH = @REPLACE_REALPATH@ -REPLACE_REMAINDER = @REPLACE_REMAINDER@ -REPLACE_REMAINDERF = @REPLACE_REMAINDERF@ -REPLACE_REMAINDERL = @REPLACE_REMAINDERL@ -REPLACE_REMOVE = @REPLACE_REMOVE@ -REPLACE_RENAME = @REPLACE_RENAME@ -REPLACE_RENAMEAT = @REPLACE_RENAMEAT@ -REPLACE_RMDIR = @REPLACE_RMDIR@ -REPLACE_ROUND = @REPLACE_ROUND@ -REPLACE_ROUNDF = @REPLACE_ROUNDF@ -REPLACE_ROUNDL = @REPLACE_ROUNDL@ -REPLACE_SETENV = @REPLACE_SETENV@ -REPLACE_SIGNBIT = @REPLACE_SIGNBIT@ -REPLACE_SIGNBIT_USING_GCC = @REPLACE_SIGNBIT_USING_GCC@ -REPLACE_SLEEP = @REPLACE_SLEEP@ -REPLACE_SNPRINTF = @REPLACE_SNPRINTF@ -REPLACE_SPRINTF = @REPLACE_SPRINTF@ -REPLACE_SQRTL = @REPLACE_SQRTL@ -REPLACE_STAT = @REPLACE_STAT@ -REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@ -REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@ -REPLACE_STPNCPY = @REPLACE_STPNCPY@ -REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ -REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ -REPLACE_STRDUP = @REPLACE_STRDUP@ -REPLACE_STRERROR = @REPLACE_STRERROR@ -REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ -REPLACE_STRNCAT = @REPLACE_STRNCAT@ -REPLACE_STRNDUP = @REPLACE_STRNDUP@ -REPLACE_STRNLEN = @REPLACE_STRNLEN@ -REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ -REPLACE_STRSTR = @REPLACE_STRSTR@ -REPLACE_STRTOD = @REPLACE_STRTOD@ -REPLACE_STRTOIMAX = @REPLACE_STRTOIMAX@ -REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ -REPLACE_SYMLINK = @REPLACE_SYMLINK@ -REPLACE_TIMEGM = @REPLACE_TIMEGM@ -REPLACE_TMPFILE = @REPLACE_TMPFILE@ -REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ -REPLACE_TRUNC = @REPLACE_TRUNC@ -REPLACE_TRUNCF = @REPLACE_TRUNCF@ -REPLACE_TRUNCL = @REPLACE_TRUNCL@ -REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ -REPLACE_UNLINK = @REPLACE_UNLINK@ -REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ -REPLACE_UNSETENV = @REPLACE_UNSETENV@ -REPLACE_USLEEP = @REPLACE_USLEEP@ -REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ -REPLACE_VASPRINTF = @REPLACE_VASPRINTF@ -REPLACE_VDPRINTF = @REPLACE_VDPRINTF@ -REPLACE_VFPRINTF = @REPLACE_VFPRINTF@ -REPLACE_VPRINTF = @REPLACE_VPRINTF@ -REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@ -REPLACE_VSPRINTF = @REPLACE_VSPRINTF@ -REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ -REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ -REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ -REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ -REPLACE_WCTOB = @REPLACE_WCTOB@ -REPLACE_WCTOMB = @REPLACE_WCTOMB@ -REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ -REPLACE_WRITE = @REPLACE_WRITE@ -SCHED_H = @SCHED_H@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ -SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ -STDBOOL_H = @STDBOOL_H@ -STDDEF_H = @STDDEF_H@ -STDINT_H = @STDINT_H@ -STRIP = @STRIP@ -SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ -TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ -UINT32_MAX_LT_UINTMAX_MAX = @UINT32_MAX_LT_UINTMAX_MAX@ -UINT64_MAX_EQ_ULONG_MAX = @UINT64_MAX_EQ_ULONG_MAX@ -UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ -UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ -UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ -USE_NLS = @USE_NLS@ -VALGRIND = @VALGRIND@ -VALGRIND_PREBISON = @VALGRIND_PREBISON@ -VERSION = @VERSION@ -WARN_CFLAGS = @WARN_CFLAGS@ -WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@ -WARN_CXXFLAGS = @WARN_CXXFLAGS@ -WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@ -WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ -WERROR_CFLAGS = @WERROR_CFLAGS@ -WERROR_CXXFLAGS = @WERROR_CXXFLAGS@ -WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ -WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ -WINT_T_SUFFIX = @WINT_T_SUFFIX@ -XGETTEXT = @XGETTEXT@ -XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ -XSLTPROC = @XSLTPROC@ -YACC = @YACC@ -YACC_LIBRARY = @YACC_LIBRARY@ -YACC_SCRIPT = @YACC_SCRIPT@ -YFLAGS = @YFLAGS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -aclocaldir = @aclocaldir@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -gl_LIBOBJS = @gl_LIBOBJS@ -gl_LTLIBOBJS = @gl_LTLIBOBJS@ -gltests_LIBOBJS = @gltests_LIBOBJS@ -gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ -gltests_WITNESS = @gltests_WITNESS@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -lispdir = @lispdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -dist_pkgdata_DATA = README bison.m4 \ - c-like.m4 \ - c-skel.m4 c.m4 yacc.c glr.c \ - c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \ - java-skel.m4 java.m4 lalr1.java - -m4sugardir = $(pkgdatadir)/m4sugar -dist_m4sugar_DATA = m4sugar/m4sugar.m4 m4sugar/foreach.m4 -xsltdir = $(pkgdatadir)/xslt -dist_xslt_DATA = \ - xslt/bison.xsl \ - xslt/xml2dot.xsl \ - xslt/xml2text.xsl \ - xslt/xml2xhtml.xsl - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits data/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnits data/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-dist_m4sugarDATA: $(dist_m4sugar_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_m4sugar_DATA)'; test -n "$(m4sugardir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(m4sugardir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(m4sugardir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4sugardir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(m4sugardir)" || exit $$?; \ - done - -uninstall-dist_m4sugarDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_m4sugar_DATA)'; test -n "$(m4sugardir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(m4sugardir)'; $(am__uninstall_files_from_dir) -install-dist_pkgdataDATA: $(dist_pkgdata_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgdatadir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ - done - -uninstall-dist_pkgdataDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgdatadir)'; $(am__uninstall_files_from_dir) -install-dist_xsltDATA: $(dist_xslt_DATA) - @$(NORMAL_INSTALL) - @list='$(dist_xslt_DATA)'; test -n "$(xsltdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(xsltdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(xsltdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xsltdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(xsltdir)" || exit $$?; \ - done - -uninstall-dist_xsltDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_xslt_DATA)'; test -n "$(xsltdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(xsltdir)'; $(am__uninstall_files_from_dir) -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - -cscope cscopelist: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(DATA) -installdirs: - for dir in "$(DESTDIR)$(m4sugardir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(xsltdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-dist_m4sugarDATA install-dist_pkgdataDATA \ - install-dist_xsltDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-dist_m4sugarDATA uninstall-dist_pkgdataDATA \ - uninstall-dist_xsltDATA - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic distclean \ - distclean-generic distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am \ - install-dist_m4sugarDATA install-dist_pkgdataDATA \ - install-dist_xsltDATA install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am uninstall uninstall-am \ - uninstall-dist_m4sugarDATA uninstall-dist_pkgdataDATA \ - uninstall-dist_xsltDATA - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tools/data/README b/tools/data/README deleted file mode 100644 index d88e5aa9..00000000 --- a/tools/data/README +++ /dev/null @@ -1,70 +0,0 @@ --*- outline -*- - -This directory contains data needed by Bison. - -* Skeletons -Bison skeletons: the general shapes of the different parser kinds, -that are specialized for specific grammars by the bison program. - -Currently, the supported skeletons are: - -- yacc.c - It used to be named bison.simple: it corresponds to C Yacc - compatible LALR(1) parsers. - -- lalr1.cc - Produces a C++ parser class. - -- lalr1.java - Produces a Java parser class. - -- glr.c - A Generalized LR C parser based on Bison's LALR(1) tables. - -- glr.cc - A Generalized LR C++ parser. Actually a C++ wrapper around glr.c. - -These skeletons are the only ones supported by the Bison team. -Because the interface between skeletons and the bison program is not -finished, *we are not bound to it*. In particular, Bison is not -mature enough for us to consider that ``foreign skeletons'' are -supported. - -* m4sugar -This directory contains M4sugar, sort of an extended library for M4, -which is used by Bison to instantiate the skeletons. - -* xslt -This directory contains XSLT programs that transform Bison's XML output -into various formats. - -- bison.xsl - A library of routines used by the other XSLT programs. - -- xml2dot.xsl - Conversion into GraphViz's dot format. - -- xml2text.xsl - Conversion into text. - -- xml2xhtml.xsl - Conversion into XHTML. - ------ - -Copyright (C) 2002, 2008-2012 Free Software Foundation, Inc. - -This file is part of GNU Bison. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . diff --git a/tools/data/bison.m4 b/tools/data/bison.m4 deleted file mode 100644 index 102d5fbd..00000000 --- a/tools/data/bison.m4 +++ /dev/null @@ -1,610 +0,0 @@ - -*- Autoconf -*- - -# Language-independent M4 Macros for Bison. - -# Copyright (C) 2002, 2004-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -## ---------------- ## -## Identification. ## -## ---------------- ## - -# b4_copyright(TITLE, YEARS) -# -------------------------- -m4_define([b4_copyright], -[b4_comment([A Bison parser, made by GNU Bison b4_version.]) - -b4_comment([$1 - -m4_text_wrap([Copyright (C) $2 Free Software Foundation, Inc.], [ ]) - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see .]) - -b4_comment([As a special exception, you may create a larger work that contains -part or all of the Bison parser skeleton and distribute that work -under terms of your choice, so long as that work isn't itself a -parser generator using the skeleton or a modified version thereof -as a parser skeleton. Alternatively, if you modify or redistribute -the parser skeleton itself, you may (at your option) remove this -special exception, which will cause the skeleton and the resulting -Bison output files to be licensed under the GNU General Public -License without this special exception. - -This special exception was added by the Free Software Foundation in -version 2.2 of Bison.])]) - - -## -------- ## -## Output. ## -## -------- ## - -# b4_output_begin(FILE) -# --------------------- -# Enable output, i.e., send to diversion 0, expand after "#", and -# generate the tag to output into FILE. Must be followed by EOL. -m4_define([b4_output_begin], -[m4_changecom() -m4_divert_push(0)dnl -@output(m4_unquote([$1])@)@dnl -]) - - -# b4_output_end() -# --------------- -# Output nothing, restore # as comment character (no expansions after #). -m4_define([b4_output_end], -[m4_divert_pop(0) -m4_changecom([#]) -]) - - -## ---------------- ## -## Error handling. ## -## ---------------- ## - -# The following error handling macros print error directives that should not -# become arguments of other macro invocations since they would likely then be -# mangled. Thus, they print to stdout directly. - -# b4_cat(TEXT) -# ------------ -# Write TEXT to stdout. Precede the final newline with an @ so that it's -# escaped. For example: -# -# b4_cat([[@complain(invalid input@)]]) -m4_define([b4_cat], -[m4_syscmd([cat <<'_m4eof' -]m4_bpatsubst(m4_dquote($1), [_m4eof], [_m4@`eof])[@ -_m4eof -])dnl -m4_if(m4_sysval, [0], [], [m4_fatal([$0: cannot write to stdout])])]) - -# b4_error(KIND, FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------------- -# Write @KIND(FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_error([[warn]], [[invalid value for '%s': %s]], [[foo]], [[3]]) -m4_define([b4_error], -[b4_cat([[@]$1[(]$2[]]dnl -[m4_if([$#], [2], [], - [m4_foreach([b4_arg], - m4_dquote(m4_shift(m4_shift($@))), - [[@,]b4_arg])])[@)]])]) - -# b4_error_at(KIND, START, END, FORMAT, [ARG1], [ARG2], ...) -# ---------------------------------------------------------- -# Write @KIND_at(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_error_at([[complain]], [[input.y:2.3]], [[input.y:5.4]], -# [[invalid %s]], [[foo]]) -m4_define([b4_error_at], -[b4_cat([[@]$1[_at(]$2[@,]$3[@,]$4[]]dnl -[m4_if([$#], [4], [], - [m4_foreach([b4_arg], - m4_dquote(m4_shift(m4_shift(m4_shift(m4_shift($@))))), - [[@,]b4_arg])])[@)]])]) - -# b4_warn(FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------ -# Write @warn(FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_warn([[invalid value for '%s': %s]], [[foo]], [[3]]) -# -# As a simple test suite, this: -# -# m4_divert(-1) -# m4_define([asdf], [ASDF]) -# m4_define([fsa], [FSA]) -# m4_define([fdsa], [FDSA]) -# b4_warn([[[asdf), asdf]]], [[[fsa), fsa]]], [[[fdsa), fdsa]]]) -# b4_warn([[asdf), asdf]], [[fsa), fsa]], [[fdsa), fdsa]]) -# b4_warn() -# b4_warn(1) -# b4_warn(1, 2) -# -# Should produce this without newlines: -# -# @warn([asdf), asdf]@,[fsa), fsa]@,[fdsa), fdsa]@) -# @warn(asdf), asdf@,fsa), fsa@,fdsa), fdsa@) -# @warn(@) -# @warn(1@) -# @warn(1@,2@) -m4_define([b4_warn], -[b4_error([[warn]], $@)]) - -# b4_warn_at(START, END, FORMAT, [ARG1], [ARG2], ...) -# --------------------------------------------------- -# Write @warn(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# For example: -# -# b4_warn_at([[input.y:2.3]], [[input.y:5.4]], [[invalid %s]], [[foo]]) -m4_define([b4_warn_at], -[b4_error_at([[warn]], $@)]) - -# b4_complain(FORMAT, [ARG1], [ARG2], ...) -# ---------------------------------------- -# Write @complain(FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# See b4_warn example. -m4_define([b4_complain], -[b4_error([[complain]], $@)]) - -# b4_complain_at(START, END, FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------------------------- -# Write @complain(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout. -# -# See b4_warn_at example. -m4_define([b4_complain_at], -[b4_error_at([[complain]], $@)]) - -# b4_fatal(FORMAT, [ARG1], [ARG2], ...) -# ------------------------------------- -# Write @fatal(FORMAT@,ARG1@,ARG2@,...@) to stdout and exit. -# -# See b4_warn example. -m4_define([b4_fatal], -[b4_error([[fatal]], $@)dnl -m4_exit(1)]) - -# b4_fatal_at(START, END, FORMAT, [ARG1], [ARG2], ...) -# ---------------------------------------------------- -# Write @fatal(START@,END@,FORMAT@,ARG1@,ARG2@,...@) to stdout and exit. -# -# See b4_warn_at example. -m4_define([b4_fatal_at], -[b4_error_at([[fatal]], $@)dnl -m4_exit(1)]) - - -## ------------ ## -## Data Types. ## -## ------------ ## - -# b4_ints_in(INT1, INT2, LOW, HIGH) -# --------------------------------- -# Return 1 iff both INT1 and INT2 are in [LOW, HIGH], 0 otherwise. -m4_define([b4_ints_in], -[m4_eval([$3 <= $1 && $1 <= $4 && $3 <= $2 && $2 <= $4])]) - - - -## ------------------ ## -## Decoding options. ## -## ------------------ ## - -# b4_flag_if(FLAG, IF-TRUE, IF-FALSE) -# ----------------------------------- -# Run IF-TRUE if b4_FLAG_flag is 1, IF-FALSE if FLAG is 0, otherwise fail. -m4_define([b4_flag_if], -[m4_case(b4_$1_flag, - [0], [$3], - [1], [$2], - [m4_fatal([invalid $1 value: ]$1)])]) - - -# b4_define_flag_if(FLAG) -# ----------------------- -# Define "b4_FLAG_if(IF-TRUE, IF-FALSE)" that depends on the -# value of the Boolean FLAG. -m4_define([b4_define_flag_if], -[_b4_define_flag_if($[1], $[2], [$1])]) - -# _b4_define_flag_if($1, $2, FLAG) -# -------------------------------- -# Work around the impossibility to define macros inside macros, -# because issuing `[$1]' is not possible in M4. GNU M4 should provide -# $$1 a la M5/TeX. -m4_define([_b4_define_flag_if], -[m4_if([$1$2], $[1]$[2], [], - [m4_fatal([$0: Invalid arguments: $@])])dnl -m4_define([b4_$3_if], - [b4_flag_if([$3], [$1], [$2])])]) - - -# b4_FLAG_if(IF-TRUE, IF-FALSE) -# ----------------------------- -# Expand IF-TRUE, if FLAG is true, IF-FALSE otherwise. -b4_define_flag_if([defines]) # Whether headers are requested. -b4_define_flag_if([error_verbose]) # Whether error are verbose. -b4_define_flag_if([glr]) # Whether a GLR parser is requested. -b4_define_flag_if([locations]) # Whether locations are tracked. -b4_define_flag_if([nondeterministic]) # Whether conflicts should be handled. -b4_define_flag_if([token_table]) # Whether yytoken_table is demanded. -b4_define_flag_if([yacc]) # Whether POSIX Yacc is emulated. - -# yytoken_table is needed to support verbose errors. -b4_error_verbose_if([m4_define([b4_token_table_flag], [1])]) - - - -## ----------- ## -## Synclines. ## -## ----------- ## - -# b4_basename(NAME) -# ----------------- -# Similar to POSIX basename; the differences don't matter here. -# Beware that NAME is not evaluated. -m4_define([b4_basename], -[m4_bpatsubst([$1], [^.*/\([^/]+\)/*$], [\1])]) - - -# b4_syncline(LINE, FILE) -# ----------------------- -m4_define([b4_syncline], -[b4_flag_if([synclines], -[b4_sync_end([__line__], [b4_basename(m4_quote(__file__))]) -b4_sync_start([$1], [$2])])]) - -m4_define([b4_sync_end], [b4_comment([Line $1 of $2])]) -m4_define([b4_sync_start], [b4_comment([Line $1 of $2])]) - -# b4_user_code(USER-CODE) -# ----------------------- -# Emit code from the user, ending it with synclines. -m4_define([b4_user_code], -[$1 -b4_syncline([@oline@], [@ofile@])]) - - -# b4_define_user_code(MACRO) -# -------------------------- -# From b4_MACRO, build b4_user_MACRO that includes the synclines. -m4_define([b4_define_user_code], -[m4_define([b4_user_$1], -[b4_user_code([b4_$1])])]) - - -# b4_user_actions -# b4_user_initial_action -# b4_user_post_prologue -# b4_user_pre_prologue -# b4_user_stype -# ---------------------- -# Macros that issue user code, ending with synclines. -b4_define_user_code([actions]) -b4_define_user_code([initial_action]) -b4_define_user_code([post_prologue]) -b4_define_user_code([pre_prologue]) -b4_define_user_code([stype]) - - -# b4_check_user_names(WHAT, USER-LIST, BISON-NAMESPACE) -# ----------------------------------------------------- -# Complain if any name of type WHAT is used by the user (as recorded in -# USER-LIST) but is not used by Bison (as recorded by macros in the -# namespace BISON-NAMESPACE). -# -# USER-LIST must expand to a list specifying all user occurrences of all names -# of type WHAT. Each item in the list must be a triplet specifying one -# occurrence: name, start boundary, and end boundary. Empty string names are -# fine. An empty list is fine. -# -# For example, to define b4_foo_user_names to be used for USER-LIST with three -# name occurrences and with correct quoting: -# -# m4_define([b4_foo_user_names], -# [[[[[[bar]], [[parser.y:1.7]], [[parser.y:1.16]]]], -# [[[[bar]], [[parser.y:5.7]], [[parser.y:5.16]]]], -# [[[[baz]], [[parser.y:8.7]], [[parser.y:8.16]]]]]]) -# -# The macro BISON-NAMESPACE(bar) must be defined iff the name bar of type WHAT -# is used by Bison (in the front-end or in the skeleton). Empty string names -# are fine, but it would be ugly for Bison to actually use one. -# -# For example, to use b4_foo_bison_names for BISON-NAMESPACE and define that -# the names bar and baz are used by Bison: -# -# m4_define([b4_foo_bison_names(bar)]) -# m4_define([b4_foo_bison_names(baz)]) -# -# To invoke b4_check_user_names with TYPE foo, with USER-LIST -# b4_foo_user_names, with BISON-NAMESPACE b4_foo_bison_names, and with correct -# quoting: -# -# b4_check_user_names([[foo]], [b4_foo_user_names], -# [[b4_foo_bison_names]]) -m4_define([b4_check_user_names], -[m4_foreach([b4_occurrence], $2, -[m4_pushdef([b4_occurrence], b4_occurrence)dnl -m4_pushdef([b4_user_name], m4_car(b4_occurrence))dnl -m4_pushdef([b4_start], m4_car(m4_shift(b4_occurrence)))dnl -m4_pushdef([b4_end], m4_shift(m4_shift(b4_occurrence)))dnl -m4_ifndef($3[(]m4_quote(b4_user_name)[)], - [b4_complain_at([b4_start], [b4_end], - [[%s '%s' is not used]], - [$1], [b4_user_name])])[]dnl -m4_popdef([b4_occurrence])dnl -m4_popdef([b4_user_name])dnl -m4_popdef([b4_start])dnl -m4_popdef([b4_end])dnl -])]) - - - - -## --------------------- ## -## b4_percent_define_*. ## -## --------------------- ## - - -# b4_percent_define_use(VARIABLE) -# ------------------------------- -# Declare that VARIABLE was used. -m4_define([b4_percent_define_use], -[m4_define([b4_percent_define_bison_variables(]$1[)])dnl -]) - -# b4_percent_define_get(VARIABLE, [DEFAULT]) -# ------------------------------------------ -# Mimic muscle_percent_define_get in ../src/muscle-tab.h. That is, if -# the %define variable VARIABLE is defined, emit its value. Contrary -# to its C counterpart, return DEFAULT otherwise. Also, record -# Bison's usage of VARIABLE by defining -# b4_percent_define_bison_variables(VARIABLE). -# -# For example: -# -# b4_percent_define_get([[foo]]) -m4_define([b4_percent_define_get], -[b4_percent_define_use([$1])dnl -m4_ifdef([b4_percent_define(]$1[)], - [m4_indir([b4_percent_define(]$1[)])], - [$2])]) - - -# b4_percent_define_get_loc(VARIABLE) -# ----------------------------------- -# Mimic muscle_percent_define_get_loc in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is undefined, complain fatally since that's -# a Bison or skeleton error. Otherwise, return its definition location in a -# form approriate for the first two arguments of b4_warn_at, b4_complain_at, or -# b4_fatal_at. Don't record this as a Bison usage of VARIABLE as there's no -# reason to suspect that the user-supplied value has yet influenced the output. -# -# For example: -# -# b4_complain_at(b4_percent_define_get_loc([[foo]]), [[invalid foo]]) -m4_define([b4_percent_define_get_loc], -[m4_ifdef([b4_percent_define_loc(]$1[)], - [m4_pushdef([b4_loc], m4_indir([b4_percent_define_loc(]$1[)]))dnl -b4_loc[]dnl -m4_popdef([b4_loc])], - [b4_fatal([[b4_percent_define_get_loc: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_define_get_syncline(VARIABLE) -# ---------------------------------------- -# Mimic muscle_percent_define_get_syncline in ../src/muscle-tab.h exactly. -# That is, if the %define variable VARIABLE is undefined, complain fatally -# since that's a Bison or skeleton error. Otherwise, return its definition -# location as a b4_syncline invocation. Don't record this as a Bison usage of -# VARIABLE as there's no reason to suspect that the user-supplied value has yet -# influenced the output. -# -# For example: -# -# b4_percent_define_get_syncline([[foo]]) -m4_define([b4_percent_define_get_syncline], -[m4_ifdef([b4_percent_define_syncline(]$1[)], - [m4_indir([b4_percent_define_syncline(]$1[)])], - [b4_fatal([[b4_percent_define_get_syncline: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_define_ifdef(VARIABLE, IF-TRUE, [IF-FALSE]) -# ------------------------------------------------------ -# Mimic muscle_percent_define_ifdef in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is defined, expand IF-TRUE, else expand -# IF-FALSE. Also, record Bison's usage of VARIABLE by defining -# b4_percent_define_bison_variables(VARIABLE). -# -# For example: -# -# b4_percent_define_ifdef([[foo]], [[it's defined]], [[it's undefined]]) -m4_define([b4_percent_define_ifdef], -[m4_ifdef([b4_percent_define(]$1[)], - [m4_define([b4_percent_define_bison_variables(]$1[)])$2], - [$3])]) - -# b4_percent_define_flag_if(VARIABLE, IF-TRUE, [IF-FALSE]) -# -------------------------------------------------------- -# Mimic muscle_percent_define_flag_if in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is defined to "" or "true", expand IF-TRUE. -# If it is defined to "false", expand IF-FALSE. Complain if it is undefined -# (a Bison or skeleton error since the default value should have been set -# already) or defined to any other value (possibly a user error). Also, record -# Bison's usage of VARIABLE by defining -# b4_percent_define_bison_variables(VARIABLE). -# -# For example: -# -# b4_percent_define_flag_if([[foo]], [[it's true]], [[it's false]]) -m4_define([b4_percent_define_flag_if], -[b4_percent_define_ifdef([$1], - [m4_case(b4_percent_define_get([$1]), - [], [$2], [true], [$2], [false], [$3], - [m4_expand_once([b4_complain_at(b4_percent_define_get_loc([$1]), - [[invalid value for %%define Boolean variable '%s']], - [$1])], - [[b4_percent_define_flag_if($1)]])])], - [b4_fatal([[b4_percent_define_flag_if: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_define_default(VARIABLE, DEFAULT) -# -------------------------------------------- -# Mimic muscle_percent_define_default in ../src/muscle-tab.h exactly. That is, -# if the %define variable VARIABLE is undefined, set its value to DEFAULT. -# Don't record this as a Bison usage of VARIABLE as there's no reason to -# suspect that the value has yet influenced the output. -# -# For example: -# -# b4_percent_define_default([[foo]], [[default value]]) -m4_define([b4_percent_define_default], -[m4_ifndef([b4_percent_define(]$1[)], - [m4_define([b4_percent_define(]$1[)], [$2])dnl - m4_define([b4_percent_define_loc(]$1[)], - [[[[:-1.-1]], - [[:-1.-1]]]])dnl - m4_define([b4_percent_define_syncline(]$1[)], [[]])])]) - -# b4_percent_define_check_values(VALUES) -# -------------------------------------- -# Mimic muscle_percent_define_check_values in ../src/muscle-tab.h exactly -# except that the VALUES structure is more appropriate for M4. That is, VALUES -# is a list of sublists of strings. For each sublist, the first string is the -# name of a %define variable, and all remaining strings in that sublist are the -# valid values for that variable. Complain if such a variable is undefined (a -# Bison error since the default value should have been set already) or defined -# to any other value (possibly a user error). Don't record this as a Bison -# usage of the variable as there's no reason to suspect that the value has yet -# influenced the output. -# -# For example: -# -# b4_percent_define_check_values([[[[foo]], [[foo-value1]], [[foo-value2]]]], -# [[[[bar]], [[bar-value1]]]]) -m4_define([b4_percent_define_check_values], -[m4_foreach([b4_sublist], m4_quote($@), - [_b4_percent_define_check_values(b4_sublist)])]) - -m4_define([_b4_percent_define_check_values], -[m4_ifdef([b4_percent_define(]$1[)], - [m4_pushdef([b4_good_value], [0])dnl - m4_if($#, 1, [], - [m4_foreach([b4_value], m4_dquote(m4_shift($@)), - [m4_if(m4_indir([b4_percent_define(]$1[)]), b4_value, - [m4_define([b4_good_value], [1])])])])dnl - m4_if(b4_good_value, [0], - [b4_complain_at(b4_percent_define_get_loc([$1]), - [[invalid value for %%define variable '%s': '%s']], - [$1], - m4_dquote(m4_indir([b4_percent_define(]$1[)]))) - m4_foreach([b4_value], m4_dquote(m4_shift($@)), - [b4_complain_at(b4_percent_define_get_loc([$1]), - [[accepted value: '%s']], - m4_dquote(b4_value))])])dnl - m4_popdef([b4_good_value])], - [b4_fatal([[b4_percent_define_check_values: undefined %%define variable '%s']], [$1])])]) - -# b4_percent_code_get([QUALIFIER]) -# -------------------------------- -# If any %code blocks for QUALIFIER are defined, emit them beginning with a -# comment and ending with synclines and a newline. If QUALIFIER is not -# specified or empty, do this for the unqualified %code blocks. Also, record -# Bison's usage of QUALIFIER (if specified) by defining -# b4_percent_code_bison_qualifiers(QUALIFIER). -# -# For example, to emit any unqualified %code blocks followed by any %code -# blocks for the qualifier foo: -# -# b4_percent_code_get -# b4_percent_code_get([[foo]]) -m4_define([b4_percent_code_get], -[m4_pushdef([b4_macro_name], [[b4_percent_code(]$1[)]])dnl -m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])dnl -m4_ifdef(b4_macro_name, -[b4_comment([m4_if([$#], [0], [[Unqualified %code]], - [["%code ]$1["]])[ blocks.]]) -b4_user_code([m4_indir(b4_macro_name)]) -])dnl -m4_popdef([b4_macro_name])]) - -# b4_percent_code_ifdef(QUALIFIER, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------- -# If any %code blocks for QUALIFIER (or unqualified %code blocks if -# QUALIFIER is empty) are defined, expand IF-TRUE, else expand IF-FALSE. -# Also, record Bison's usage of QUALIFIER (if specified) by defining -# b4_percent_code_bison_qualifiers(QUALIFIER). -m4_define([b4_percent_code_ifdef], -[m4_ifdef([b4_percent_code(]$1[)], - [m4_ifval([$1], [m4_define([b4_percent_code_bison_qualifiers(]$1[)])])$2], - [$3])]) - - -## ----------------------------------------------------------- ## -## After processing the skeletons, check that all the user's ## -## %define variables and %code qualifiers were used by Bison. ## -## ----------------------------------------------------------- ## - -m4_define([b4_check_user_names_wrap], -[m4_ifdef([b4_percent_]$1[_user_]$2[s], - [b4_check_user_names([[%]$1 $2], - [b4_percent_]$1[_user_]$2[s], - [[b4_percent_]$1[_bison_]$2[s]])])]) - -m4_wrap_lifo([ -b4_check_user_names_wrap([[define]], [[variable]]) -b4_check_user_names_wrap([[code]], [[qualifier]]) -]) - - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# m4_define_default([b4_lex_param], []) dnl breaks other skeletons -m4_define_default([b4_pre_prologue], []) -m4_define_default([b4_post_prologue], []) -m4_define_default([b4_epilogue], []) -m4_define_default([b4_parse_param], []) - -# The initial column and line. -m4_define_default([b4_location_initial_column], [1]) -m4_define_default([b4_location_initial_line], [1]) - -# Sanity checks. -b4_percent_define_ifdef([api.prefix], -[m4_ifdef([b4_prefix], -[b4_complain_at(b4_percent_define_get_loc([api.prefix]), - [['%s' and '%s' cannot be used together]], - [%name-prefix], - [%define api.prefix])])]) diff --git a/tools/data/c++-skel.m4 b/tools/data/c++-skel.m4 deleted file mode 100644 index 149e4300..00000000 --- a/tools/data/c++-skel.m4 +++ /dev/null @@ -1,26 +0,0 @@ - -*- Autoconf -*- - -# C++ skeleton dispatching for Bison. - -# Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])]) -b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.cc]])]) - -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.cc]]) -m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) - -m4_include(b4_used_skeleton) diff --git a/tools/data/c++.m4 b/tools/data/c++.m4 deleted file mode 100644 index eac88a78..00000000 --- a/tools/data/c++.m4 +++ /dev/null @@ -1,205 +0,0 @@ - -*- Autoconf -*- - -# C++ skeleton for Bison - -# Copyright (C) 2002-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c.m4]) - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# Default parser class name. -b4_percent_define_default([[parser_class_name]], [[parser]]) - -# Don't do that so that we remember whether we're using a user -# request, or the default value. -# -# b4_percent_define_default([[api.location.type]], [[location]]) - -b4_percent_define_default([[filename_type]], [[std::string]]) -b4_percent_define_default([[namespace]], m4_defn([b4_prefix])) -b4_percent_define_default([[global_tokens_and_yystype]], [[false]]) -b4_percent_define_default([[define_location_comparison]], - [m4_if(b4_percent_define_get([[filename_type]]), - [std::string], [[true]], [[false]])]) - - -## ----------- ## -## Namespace. ## -## ----------- ## - -m4_define([b4_namespace_ref], [b4_percent_define_get([[namespace]])]) - -# Don't permit an empty b4_namespace_ref. Any `::parser::foo' appended to it -# would compile as an absolute reference with `parser' in the global namespace. -# b4_namespace_open would open an anonymous namespace and thus establish -# internal linkage. This would compile. However, it's cryptic, and internal -# linkage for the parser would be specified in all translation units that -# include the header, which is always generated. If we ever need to permit -# internal linkage somehow, surely we can find a cleaner approach. -m4_if(m4_bregexp(b4_namespace_ref, [^[ ]*$]), [-1], [], -[b4_complain_at(b4_percent_define_get_loc([[namespace]]), - [[namespace reference is empty]])]) - -# Instead of assuming the C++ compiler will do it, Bison should reject any -# invalid b4_namepsace_ref that would be converted to a valid -# b4_namespace_open. The problem is that Bison doesn't always output -# b4_namespace_ref to uncommented code but should reserve the ability to do so -# in future releases without risking breaking any existing user grammars. -# Specifically, don't allow empty names as b4_namespace_open would just convert -# those into anonymous namespaces, and that might tempt some users. -m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*::]), [-1], [], -[b4_complain_at(b4_percent_define_get_loc([[namespace]]), - [[namespace reference has consecutive "::"]])]) -m4_if(m4_bregexp(b4_namespace_ref, [::[ ]*$]), [-1], [], -[b4_complain_at(b4_percent_define_get_loc([[namespace]]), - [[namespace reference has a trailing "::"]])]) - -m4_define([b4_namespace_open], -[b4_user_code([b4_percent_define_get_syncline([[namespace]]) -[namespace ]m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref), - [^\(.\)[ ]*::], [\1])), - [::], [ { namespace ])[ {]])]) - -m4_define([b4_namespace_close], -[b4_user_code([b4_percent_define_get_syncline([[namespace]]) -m4_bpatsubst(m4_dquote(m4_bpatsubst(m4_dquote(b4_namespace_ref[ ]), - [^\(.\)[ ]*\(::\)?\([^][:]\|:[^:]\)*], - [\1])), - [::\([^][:]\|:[^:]\)*], [} ])[} // ]b4_namespace_ref])]) - - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- -# Output the definition of the tokens as enums. -m4_define([b4_token_enums], -[/* Tokens. */ - enum yytokentype { -m4_map_sep([ b4_token_enum], [, -], - [$@]) - }; -]) - - - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], -[(yyval[]m4_ifval([$1], [.$1]))]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -m4_define([b4_rhs_value], -[(yysemantic_stack_@{($1) - ($2)@}m4_ifval([$3], [.$3]))]) - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(yyloc)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[(yylocation_stack_@{($1) - ($2)@})]) - - -# b4_parse_param_decl -# ------------------- -# Extra formal arguments of the constructor. -# Change the parameter names from "foo" into "foo_yyarg", so that -# there is no collision bw the user chosen attribute name, and the -# argument name in the constructor. -m4_define([b4_parse_param_decl], -[m4_ifset([b4_parse_param], - [m4_map_sep([b4_parse_param_decl_1], [, ], [b4_parse_param])])]) - -m4_define([b4_parse_param_decl_1], -[$1_yyarg]) - - - -# b4_parse_param_cons -# ------------------- -# Extra initialisations of the constructor. -m4_define([b4_parse_param_cons], - [m4_ifset([b4_parse_param], - [ - b4_cc_constructor_calls(b4_parse_param)])]) -m4_define([b4_cc_constructor_calls], - [m4_map_sep([b4_cc_constructor_call], [, - ], [$@])]) -m4_define([b4_cc_constructor_call], - [$2 ($2_yyarg)]) - -# b4_parse_param_vars -# ------------------- -# Extra instance variables. -m4_define([b4_parse_param_vars], - [m4_ifset([b4_parse_param], - [ - /* User arguments. */ -b4_cc_var_decls(b4_parse_param)])]) -m4_define([b4_cc_var_decls], - [m4_map_sep([b4_cc_var_decl], [ -], [$@])]) -m4_define([b4_cc_var_decl], - [ $1;]) - - -## ---------## -## Values. ## -## ---------## - -# b4_yylloc_default_define -# ------------------------ -# Define YYLLOC_DEFAULT. -m4_define([b4_yylloc_default_define], -[[/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -# ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (N) \ - { \ - (Current).begin = YYRHSLOC (Rhs, 1).begin; \ - (Current).end = YYRHSLOC (Rhs, N).end; \ - } \ - else \ - { \ - (Current).begin = (Current).end = YYRHSLOC (Rhs, 0).end; \ - } \ - while (/*CONSTCOND*/ false) -# endif -]]) diff --git a/tools/data/c-like.m4 b/tools/data/c-like.m4 deleted file mode 100644 index 5b96fbaf..00000000 --- a/tools/data/c-like.m4 +++ /dev/null @@ -1,44 +0,0 @@ - -*- Autoconf -*- - -# Common code for C-like languages (C, C++, Java, etc.) - -# Copyright (C) 2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# b4_dollar_dollar_(VALUE, FIELD, DEFAULT-FIELD) -# ---------------------------------------------- -# If FIELD (or DEFAULT-FIELD) is non-null, return "VALUE.FIELD", -# otherwise just VALUE. Be sure to pass "(VALUE)" is VALUE is a -# pointer. -m4_define([b4_dollar_dollar_], -[m4_if([$2], [[]], - [m4_ifval([$3], [($1.$3)], - [$1])], - [($1.$2)])]) - -# b4_dollar_pushdef(VALUE-POINTER, DEFAULT-FIELD, LOCATION) -# b4_dollar_popdef -# --------------------------------------------------------- -# Define b4_dollar_dollar for VALUE and DEFAULT-FIELD, -# and b4_at_dollar for LOCATION. -m4_define([b4_dollar_pushdef], -[m4_pushdef([b4_dollar_dollar], - [b4_dollar_dollar_([$1], m4_dquote($][1), [$2])])dnl -m4_pushdef([b4_at_dollar], [$3])dnl -]) -m4_define([b4_dollar_popdef], -[m4_popdef([b4_at_dollar])dnl -m4_popdef([b4_dollar_dollar])dnl -]) diff --git a/tools/data/c-skel.m4 b/tools/data/c-skel.m4 deleted file mode 100644 index ccd4ae16..00000000 --- a/tools/data/c-skel.m4 +++ /dev/null @@ -1,26 +0,0 @@ - -*- Autoconf -*- - -# C skeleton dispatching for Bison. - -# Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -b4_glr_if( [m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])]) -b4_nondeterministic_if([m4_define([b4_used_skeleton], [b4_pkgdatadir/[glr.c]])]) - -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[yacc.c]]) -m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) - -m4_include(b4_used_skeleton) diff --git a/tools/data/c.m4 b/tools/data/c.m4 deleted file mode 100644 index b6646062..00000000 --- a/tools/data/c.m4 +++ /dev/null @@ -1,722 +0,0 @@ - -*- Autoconf -*- - -# C M4 Macros for Bison. - -# Copyright (C) 2002, 2004-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c-like.m4]) - -# b4_tocpp(STRING) -# ---------------- -# Convert STRING into a valid C macro name. -m4_define([b4_tocpp], -[m4_toupper(m4_bpatsubst(m4_quote($1), [[^a-zA-Z0-9]+], [_]))]) - - -# b4_cpp_guard(FILE) -# ------------------ -# A valid C macro name to use as a CPP header guard for FILE. -m4_define([b4_cpp_guard], -[[YY_]b4_tocpp(m4_defn([b4_prefix])/[$1])[_INCLUDED]]) - - -# b4_cpp_guard_open(FILE) -# b4_cpp_guard_close(FILE) -# ------------------------ -# If FILE does not expand to nothing, open/close CPP inclusion guards for FILE. -m4_define([b4_cpp_guard_open], -[m4_ifval(m4_quote($1), -[#ifndef b4_cpp_guard([$1]) -# define b4_cpp_guard([$1])])]) - -m4_define([b4_cpp_guard_close], -[m4_ifval(m4_quote($1), -[#endif b4_comment([!b4_cpp_guard([$1])])])]) - - -## ---------------- ## -## Identification. ## -## ---------------- ## - -# b4_comment(TEXT) -# ---------------- -m4_define([b4_comment], [/* m4_bpatsubst([$1], [ -], [ - ]) */]) - -# b4_identification -# ----------------- -# Depends on individual skeletons to define b4_pure_flag, b4_push_flag, or -# b4_pull_flag if they use the values of the %define variables api.pure or -# api.push-pull. -m4_define([b4_identification], -[[/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "]b4_version[" - -/* Skeleton name. */ -#define YYSKELETON_NAME ]b4_skeleton[]m4_ifdef([b4_pure_flag], [[ - -/* Pure parsers. */ -#define YYPURE ]b4_pure_flag])[]m4_ifdef([b4_push_flag], [[ - -/* Push parsers. */ -#define YYPUSH ]b4_push_flag])[]m4_ifdef([b4_pull_flag], [[ - -/* Pull parsers. */ -#define YYPULL ]b4_pull_flag])[ -]]) - - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# b4_api_prefix, b4_api_PREFIX -# ---------------------------- -# Corresponds to %define api.prefix -b4_percent_define_default([[api.prefix]], [[yy]]) -m4_define([b4_api_prefix], -[b4_percent_define_get([[api.prefix]])]) -m4_define([b4_api_PREFIX], -[m4_toupper(b4_api_prefix)]) - - -# b4_prefix -# --------- -# If the %name-prefix is not given, it is api.prefix. -m4_define_default([b4_prefix], [b4_api_prefix]) - -# If the %union is not named, its name is YYSTYPE. -m4_define_default([b4_union_name], [b4_api_PREFIX[]STYPE]) - - -## ------------------------ ## -## Pure/impure interfaces. ## -## ------------------------ ## - -# b4_user_args -# ------------ -m4_define([b4_user_args], -[m4_ifset([b4_parse_param], [, b4_c_args(b4_parse_param)])]) - - -# b4_parse_param -# -------------- -# If defined, b4_parse_param arrives double quoted, but below we prefer -# it to be single quoted. -m4_define([b4_parse_param], -b4_parse_param) - - -# b4_parse_param_for(DECL, FORMAL, BODY) -# --------------------------------------- -# Iterate over the user parameters, binding the declaration to DECL, -# the formal name to FORMAL, and evaluating the BODY. -m4_define([b4_parse_param_for], -[m4_foreach([$1_$2], m4_defn([b4_parse_param]), -[m4_pushdef([$1], m4_unquote(m4_car($1_$2)))dnl -m4_pushdef([$2], m4_shift($1_$2))dnl -$3[]dnl -m4_popdef([$2])dnl -m4_popdef([$1])dnl -])]) - -# b4_parse_param_use -# ------------------ -# `YYUSE' all the parse-params. -m4_define([b4_parse_param_use], -[b4_parse_param_for([Decl], [Formal], [ YYUSE (Formal); -])dnl -]) - - -## ------------ ## -## Data Types. ## -## ------------ ## - -# b4_int_type(MIN, MAX) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# MIN to MAX (included). -m4_define([b4_int_type], -[m4_if(b4_ints_in($@, [0], [255]), [1], [unsigned char], - b4_ints_in($@, [-128], [127]), [1], [signed char], - - b4_ints_in($@, [0], [65535]), [1], [unsigned short int], - b4_ints_in($@, [-32768], [32767]), [1], [short int], - - m4_eval([0 <= $1]), [1], [unsigned int], - - [int])]) - - -# b4_int_type_for(NAME) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# `NAME_min' to `NAME_max' (included). -m4_define([b4_int_type_for], -[b4_int_type($1_min, $1_max)]) - - -# b4_table_value_equals(TABLE, VALUE, LITERAL) -# -------------------------------------------- -# Without inducing a comparison warning from the compiler, check if the -# literal value LITERAL equals VALUE from table TABLE, which must have -# TABLE_min and TABLE_max defined. YYID must be defined as an identity -# function that suppresses warnings about constant conditions. -m4_define([b4_table_value_equals], -[m4_if(m4_eval($3 < m4_indir([b4_]$1[_min]) - || m4_indir([b4_]$1[_max]) < $3), [1], - [[YYID (0)]], - [(!!(($2) == ($3)))])]) - - -## ---------## -## Values. ## -## ---------## - - -# b4_null_define -# -------------- -# Portability issues: define a YY_NULL appropriate for the current -# language (C, C++98, or C++11). -m4_define([b4_null_define], -[# ifndef YY_NULL -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr -# else -# define YY_NULL 0 -# endif -# endif[]dnl -]) - - -# b4_null -# ------- -# Return a null pointer constant. -m4_define([b4_null], [YY_NULL]) - - - -## ------------------------- ## -## Assigning token numbers. ## -## ------------------------- ## - -# b4_token_define(TOKEN-NAME, TOKEN-NUMBER) -# ----------------------------------------- -# Output the definition of this token as #define. -m4_define([b4_token_define], -[#define $1 $2 -]) - - -# b4_token_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ------------------------------------------------------- -# Output the definition of the tokens (if there are) as #defines. -m4_define([b4_token_defines], -[m4_if([$#$1], [1], [], -[/* Tokens. */ -m4_map([b4_token_define], [$@])]) -]) - - -# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER) -# --------------------------------------- -# Output the definition of this token as an enum. -m4_define([b4_token_enum], -[$1 = $2]) - - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- -# Output the definition of the tokens (if there are) as enums. -m4_define([b4_token_enums], -[m4_if([$#$1], [1], [], -[[/* Tokens. */ -#ifndef ]b4_api_PREFIX[TOKENTYPE -# define ]b4_api_PREFIX[TOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum ]b4_api_prefix[tokentype { -]m4_map_sep([ b4_token_enum], [, -], - [$@])[ - }; -#endif -]])]) - - -# b4_token_enums_defines(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ------------------------------------------------------------- -# Output the definition of the tokens (if there are any) as enums and, if POSIX -# Yacc is enabled, as #defines. -m4_define([b4_token_enums_defines], -[b4_token_enums($@)b4_yacc_if([b4_token_defines($@)], []) -]) - - - -## --------------------------------------------- ## -## Defining C functions in both K&R and ANSI-C. ## -## --------------------------------------------- ## - - -# b4_modern_c -# ----------- -# A predicate useful in #if to determine whether C is ancient or modern. -# -# If __STDC__ is defined, the compiler is modern. IBM xlc 7.0 when run -# as 'cc' doesn't define __STDC__ (or __STDC_VERSION__) for pedantic -# reasons, but it defines __C99__FUNC__ so check that as well. -# Microsoft C normally doesn't define these macros, but it defines _MSC_VER. -# Consider a C++ compiler to be modern if it defines __cplusplus. -# -m4_define([b4_c_modern], - [[(defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER)]]) - -# b4_c_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ---------------------------------------------------------- -# Declare the function NAME. -m4_define([b4_c_function_def], -[#if b4_c_modern -b4_c_ansi_function_def($@) -#else -$2 -$1 (b4_c_knr_formal_names(m4_shift2($@))) -b4_c_knr_formal_decls(m4_shift2($@)) -#endif[]dnl -]) - - -# b4_c_ansi_function_def(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# --------------------------------------------------------------- -# Declare the function NAME in ANSI. -m4_define([b4_c_ansi_function_def], -[$2 -$1 (b4_c_ansi_formals(m4_shift2($@)))[]dnl -]) - - -# b4_c_ansi_formals([DECL1, NAME1], ...) -# -------------------------------------- -# Output the arguments ANSI-C definition. -m4_define([b4_c_ansi_formals], -[m4_if([$#], [0], [void], - [$#$1], [1], [void], - [m4_map_sep([b4_c_ansi_formal], [, ], [$@])])]) - -m4_define([b4_c_ansi_formal], -[$1]) - - -# b4_c_knr_formal_names([DECL1, NAME1], ...) -# ------------------------------------------ -# Output the argument names. -m4_define([b4_c_knr_formal_names], -[m4_map_sep([b4_c_knr_formal_name], [, ], [$@])]) - -m4_define([b4_c_knr_formal_name], -[$2]) - - -# b4_c_knr_formal_decls([DECL1, NAME1], ...) -# ------------------------------------------ -# Output the K&R argument declarations. -m4_define([b4_c_knr_formal_decls], -[m4_map_sep([b4_c_knr_formal_decl], - [ -], - [$@])]) - -m4_define([b4_c_knr_formal_decl], -[ $1;]) - - - -## ------------------------------------------------------------ ## -## Declaring (prototyping) C functions in both K&R and ANSI-C. ## -## ------------------------------------------------------------ ## - - -# b4_c_ansi_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ---------------------------------------------------------------- -# Declare the function NAME ANSI C style. -m4_define([b4_c_ansi_function_decl], -[$2 $1 (b4_c_ansi_formals(m4_shift2($@)));[]dnl -]) - - - -# b4_c_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ----------------------------------------------------------- -# Declare the function NAME in both K&R and ANSI C. -m4_define([b4_c_function_decl], -[#if defined __STDC__ || defined __cplusplus -b4_c_ansi_function_decl($@) -#else -$2 $1 (); -#endif[]dnl -]) - - - -## --------------------- ## -## Calling C functions. ## -## --------------------- ## - - -# b4_c_function_call(NAME, RETURN-VALUE, [DECL1, NAME1], ...) -# ----------------------------------------------------------- -# Call the function NAME with arguments NAME1, NAME2 etc. -m4_define([b4_c_function_call], -[$1 (b4_c_args(m4_shift2($@)))[]dnl -]) - - -# b4_c_args([DECL1, NAME1], ...) -# ------------------------------ -# Output the arguments NAME1, NAME2... -m4_define([b4_c_args], -[m4_map_sep([b4_c_arg], [, ], [$@])]) - -m4_define([b4_c_arg], -[$2]) - - -## ----------- ## -## Synclines. ## -## ----------- ## - -# b4_sync_start(LINE, FILE) -# ----------------------- -m4_define([b4_sync_start], [[#]line $1 $2]) - - -## -------------- ## -## User actions. ## -## -------------- ## - -# b4_case(LABEL, STATEMENTS) -# -------------------------- -m4_define([b4_case], -[ case $1: -$2 - break;]) - -# b4_symbol_actions(FILENAME, LINENO, -# SYMBOL-TAG, SYMBOL-NUM, -# SYMBOL-ACTION, SYMBOL-TYPENAME) -# ------------------------------------------------- -# Issue the code for a symbol action (e.g., %printer). -# -# Define b4_dollar_dollar([TYPE-NAME]), and b4_at_dollar, which are -# invoked where $$ and @$ were specified by the user. -m4_define([b4_symbol_actions], -[b4_dollar_pushdef([(*yyvaluep)], [$6], [(*yylocationp)])dnl - case $4: /* $3 */ -b4_syncline([$2], [$1]) - $5; -b4_syncline([@oline@], [@ofile@]) - break; -b4_dollar_popdef[]dnl -]) - - -# b4_yydestruct_generate(FUNCTION-DECLARATOR) -# ------------------------------------------- -# Generate the "yydestruct" function, which declaration is issued using -# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C -# or "b4_c_function_def" for K&R. -m4_define_default([b4_yydestruct_generate], -[[/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -/*ARGSUSED*/ -]$1([yydestruct], - [static void], - [[const char *yymsg], [yymsg]], - [[int yytype], [yytype]], - [[YYSTYPE *yyvaluep], [yyvaluep]][]dnl -b4_locations_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl -m4_ifset([b4_parse_param], [, b4_parse_param]))[ -{ - YYUSE (yyvaluep); -]b4_locations_if([ YYUSE (yylocationp); -])dnl -b4_parse_param_use[]dnl -[ - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { -]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[ - default: - break; - } -}]dnl -]) - - -# b4_yy_symbol_print_generate(FUNCTION-DECLARATOR) -# ------------------------------------------------ -# Generate the "yy_symbol_print" function, which declaration is issued using -# FUNCTION-DECLARATOR, which may be "b4_c_ansi_function_def" for ISO C -# or "b4_c_function_def" for K&R. -m4_define_default([b4_yy_symbol_print_generate], -[[ -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -/*ARGSUSED*/ -]$1([yy_symbol_value_print], - [static void], - [[FILE *yyoutput], [yyoutput]], - [[int yytype], [yytype]], - [[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl -b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl -m4_ifset([b4_parse_param], [, b4_parse_param]))[ -{ - FILE *yyo = yyoutput; - YYUSE (yyo); - if (!yyvaluep) - return; -]b4_locations_if([ YYUSE (yylocationp); -])dnl -b4_parse_param_use[]dnl -[# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); -# endif - switch (yytype) - { -]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl -[ default: - break; - } -} - - -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ - -]$1([yy_symbol_print], - [static void], - [[FILE *yyoutput], [yyoutput]], - [[int yytype], [yytype]], - [[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl -b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl -m4_ifset([b4_parse_param], [, b4_parse_param]))[ -{ - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); - -]b4_locations_if([ YY_LOCATION_PRINT (yyoutput, *yylocationp); - YYFPRINTF (yyoutput, ": "); -])dnl -[ yy_symbol_value_print (yyoutput, yytype, yyvaluep]dnl -b4_locations_if([, yylocationp])[]b4_user_args[); - YYFPRINTF (yyoutput, ")"); -}]dnl -]) - -## -------------- ## -## Declarations. ## -## -------------- ## - -# b4_declare_yylstype -# ------------------- -# Declarations that might either go into the header (if --defines) or -# in the parser body. Declare YYSTYPE/YYLTYPE, and yylval/yylloc. -m4_define([b4_declare_yylstype], -[[#if ! defined ]b4_api_PREFIX[STYPE && ! defined ]b4_api_PREFIX[STYPE_IS_DECLARED -]m4_ifdef([b4_stype], -[[typedef union ]b4_union_name[ -{ -]b4_user_stype[ -} ]b4_api_PREFIX[STYPE; -# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]], -[m4_if(b4_tag_seen_flag, 0, -[[typedef int ]b4_api_PREFIX[STYPE; -# define ]b4_api_PREFIX[STYPE_IS_TRIVIAL 1]])])[ -# define ]b4_api_prefix[stype ]b4_api_PREFIX[STYPE /* obsolescent; will be withdrawn */ -# define ]b4_api_PREFIX[STYPE_IS_DECLARED 1 -#endif]b4_locations_if([[ - -#if ! defined ]b4_api_PREFIX[LTYPE && ! defined ]b4_api_PREFIX[LTYPE_IS_DECLARED -typedef struct ]b4_api_PREFIX[LTYPE -{ - int first_line; - int first_column; - int last_line; - int last_column; -} ]b4_api_PREFIX[LTYPE; -# define ]b4_api_prefix[ltype ]b4_api_PREFIX[LTYPE /* obsolescent; will be withdrawn */ -# define ]b4_api_PREFIX[LTYPE_IS_DECLARED 1 -# define ]b4_api_PREFIX[LTYPE_IS_TRIVIAL 1 -#endif]]) - -b4_pure_if([], [[extern ]b4_api_PREFIX[STYPE ]b4_prefix[lval; -]b4_locations_if([[extern ]b4_api_PREFIX[LTYPE ]b4_prefix[lloc;]])])[]dnl -]) - -# b4_YYDEBUG_define -# ------------------ -m4_define([b4_YYDEBUG_define], -[[/* Enabling traces. */ -]m4_if(b4_api_prefix, [yy], -[[#ifndef YYDEBUG -# define YYDEBUG ]b4_debug_flag[ -#endif]], -[[#ifndef ]b4_api_PREFIX[DEBUG -# if defined YYDEBUG -# if YYDEBUG -# define ]b4_api_PREFIX[DEBUG 1 -# else -# define ]b4_api_PREFIX[DEBUG 0 -# endif -# else /* ! defined YYDEBUG */ -# define ]b4_api_PREFIX[DEBUG ]b4_debug_flag[ -# endif /* ! defined YYDEBUG */ -#endif /* ! defined ]b4_api_PREFIX[DEBUG */]])[]dnl -]) - -# b4_declare_yydebug -# ------------------ -m4_define([b4_declare_yydebug], -[b4_YYDEBUG_define[ -#if ]b4_api_PREFIX[DEBUG -extern int ]b4_prefix[debug; -#endif][]dnl -]) - -# b4_yylloc_default_define -# ------------------------ -# Define YYLLOC_DEFAULT. -m4_define([b4_yylloc_default_define], -[[/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. - If N is 0, then set CURRENT to the empty location which ends - the previous symbol: RHS[0] (always defined). */ - -#ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ - if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ - while (YYID (0)) -#endif -]]) - -# b4_yy_location_print_define -# --------------------------- -# Define YY_LOCATION_PRINT. -m4_define([b4_yy_location_print_define], -[b4_locations_if([[ -/* YY_LOCATION_PRINT -- Print the location on the stream. - This macro was not mandated originally: define only if we know - we won't break user code: when these are the locations we know. */ - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ -# endif -#endif - -#ifndef YY_LOCATION_PRINT -# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL - -/* Print *YYLOCP on YYO. Private, do not rely on its existence. */ - -__attribute__((__unused__)) -]b4_c_function_def([yy_location_print_], - [static unsigned], - [[FILE *yyo], [yyo]], - [[YYLTYPE const * const yylocp], [yylocp]])[ -{ - unsigned res = 0; - int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; - if (0 <= yylocp->first_line) - { - res += fprintf (yyo, "%d", yylocp->first_line); - if (0 <= yylocp->first_column) - res += fprintf (yyo, ".%d", yylocp->first_column); - } - if (0 <= yylocp->last_line) - { - if (yylocp->first_line < yylocp->last_line) - { - res += fprintf (yyo, "-%d", yylocp->last_line); - if (0 <= end_col) - res += fprintf (yyo, ".%d", end_col); - } - else if (0 <= end_col && yylocp->first_column < end_col) - res += fprintf (yyo, "-%d", end_col); - } - return res; - } - -# define YY_LOCATION_PRINT(File, Loc) \ - yy_location_print_ (File, &(Loc)) - -# else -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif -#endif]], -[[/* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif]]) -]) - -# b4_yyloc_default -# ---------------- -# Expand to a possible default value for yylloc. -m4_define([b4_yyloc_default], -[[ -# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL - = { ]m4_join([, ], - m4_defn([b4_location_initial_line]), - m4_defn([b4_location_initial_column]), - m4_defn([b4_location_initial_line]), - m4_defn([b4_location_initial_column]))[ } -# endif -]]) diff --git a/tools/data/glr.c b/tools/data/glr.c deleted file mode 100644 index 02a76c21..00000000 --- a/tools/data/glr.c +++ /dev/null @@ -1,2589 +0,0 @@ - -*- C -*- - -# GLR skeleton for Bison - -# Copyright (C) 2002-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# If we are loaded by glr.cc, do not override c++.m4 definitions by -# those of c.m4. -m4_if(b4_skeleton, ["glr.c"], - [m4_include(b4_pkgdatadir/[c.m4])]) - -## ---------------- ## -## Default values. ## -## ---------------- ## - -# Stack parameters. -m4_define_default([b4_stack_depth_max], [10000]) -m4_define_default([b4_stack_depth_init], [200]) - - - -## ------------------------ ## -## Pure/impure interfaces. ## -## ------------------------ ## - -b4_define_flag_if([pure]) -# If glr.cc is including this file and thus has already set b4_pure_flag, -# do not change the value of b4_pure_flag, and do not record a use of api.pure. -m4_ifndef([b4_pure_flag], -[b4_percent_define_default([[api.pure]], [[false]]) - m4_define([b4_pure_flag], - [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])]) - -# b4_user_formals -# --------------- -# The possible parse-params formal arguments preceded by a comma. -# -# This is not shared with yacc.c in c.m4 because GLR relies on ISO C -# formal argument declarations. -m4_define([b4_user_formals], -[m4_ifset([b4_parse_param], [, b4_c_ansi_formals(b4_parse_param)])]) - - -# b4_lex_param -# ------------ -# Accumule in b4_lex_param all the yylex arguments. -# Yes, this is quite ugly... -m4_define([b4_lex_param], -m4_dquote(b4_pure_if([[[[YYSTYPE *]], [[&yylval]]][]dnl -b4_locations_if([, [[YYLTYPE *], [&yylloc]]])])dnl -m4_ifdef([b4_lex_param], [, ]b4_lex_param))) - - -# b4_yyerror_args -# --------------- -# Optional effective arguments passed to yyerror: user args plus yylloc, and -# a trailing comma. -m4_define([b4_yyerror_args], -[b4_pure_if([b4_locations_if([yylocp, ])])dnl -m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) - - -# b4_lyyerror_args -# ---------------- -# Same as above, but on the lookahead, hence &yylloc instead of yylocp. -m4_define([b4_lyyerror_args], -[b4_pure_if([b4_locations_if([&yylloc, ])])dnl -m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])]) - - -# b4_pure_args -# ------------ -# Same as b4_yyerror_args, but with a leading comma. -m4_define([b4_pure_args], -[b4_pure_if([b4_locations_if([, yylocp])])[]b4_user_args]) - - -# b4_lpure_args -# ------------- -# Same as above, but on the lookahead, hence &yylloc instead of yylocp. -m4_define([b4_lpure_args], -[b4_pure_if([b4_locations_if([, &yylloc])])[]b4_user_args]) - - - -# b4_pure_formals -# --------------- -# Arguments passed to yyerror: user formals plus yylocp with leading comma. -m4_define([b4_pure_formals], -[b4_pure_if([b4_locations_if([, YYLTYPE *yylocp])])[]b4_user_formals]) - - -# b4_locuser_formals(LOC = yylocp) -# -------------------------------- -m4_define([b4_locuser_formals], -[b4_locations_if([, YYLTYPE *m4_default([$1], [yylocp])])[]b4_user_formals]) - - -# b4_locuser_args(LOC = yylocp) -# ----------------------------- -m4_define([b4_locuser_args], -[b4_locations_if([, m4_default([$1], [yylocp])])[]b4_user_args]) - - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], -[((*yyvalp)[]m4_ifval([$1], [.$1]))]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -m4_define([b4_rhs_value], -[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))]) - - - -## ----------- ## -## Locations. ## -## ----------- ## - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(*yylocp)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[(((yyGLRStackItem const *)yyvsp)@{YYFILL (($2) - ($1))@}.yystate.yyloc)]) - - -## -------------- ## -## Declarations. ## -## -------------- ## - -# b4_shared_declarations -# ---------------------- -# Declaration that might either go into the header (if --defines) -# or open coded in the parser body. -m4_define([b4_shared_declarations], -[b4_declare_yydebug[ -]b4_percent_code_get([[requires]])[ -]b4_token_enums(b4_tokens)[ -]b4_declare_yylstype[ -]b4_c_ansi_function_decl(b4_prefix[parse], [int], b4_parse_param)[ -]b4_percent_code_get([[provides]])[]dnl -]) - - -## -------------- ## -## Output files. ## -## -------------- ## - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Skeleton implementation for Bison GLR parsers in C], - [2002-2012])[ - -/* C GLR parser skeleton written by Paul Hilfinger. */ - -]b4_identification - -b4_percent_code_get([[top]])[ -]m4_if(b4_api_prefix, [yy], [], -[[/* Substitute the type names. */ -#define YYSTYPE ]b4_api_PREFIX[STYPE]b4_locations_if([[ -#define YYLTYPE ]b4_api_PREFIX[LTYPE]])])[ -]m4_if(b4_prefix, [yy], [], -[[/* Substitute the variable and function names. */ -#define yyparse ]b4_prefix[parse -#define yylex ]b4_prefix[lex -#define yyerror ]b4_prefix[error -#define yylval ]b4_prefix[lval -#define yychar ]b4_prefix[char -#define yydebug ]b4_prefix[debug -#define yynerrs ]b4_prefix[nerrs]b4_locations_if([[ -#define yylloc ]b4_prefix[lloc]])])[ - -/* Copy the first part of user declarations. */ -]b4_user_pre_prologue[ - -]b4_null_define[ - -]b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]], - [b4_shared_declarations])[ - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE ]b4_error_verbose_flag[ -#endif - -/* Default (constant) value used for initialization for null - right-hand sides. Unlike the standard yacc.c template, here we set - the default value of $$ to a zeroed-out value. Since the default - value is undefined, this behavior is technically correct. */ -static YYSTYPE yyval_default;]b4_locations_if([[ -static YYLTYPE yyloc_default][]b4_yyloc_default;])[ - -/* Copy the second part of user declarations. */ -]b4_user_post_prologue -b4_percent_code_get[]dnl - -[#include -#include -#include - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) -#else -# define YYUSE(E) /* empty */ -#endif - -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) -#else -]b4_c_function_def([YYID], [static int], [[int i], [i]])[ -{ - return i; -} -#endif - -#ifndef YYFREE -# define YYFREE free -#endif -#ifndef YYMALLOC -# define YYMALLOC malloc -#endif -#ifndef YYREALLOC -# define YYREALLOC realloc -#endif - -#define YYSIZEMAX ((size_t) -1) - -#ifdef __cplusplus - typedef bool yybool; -#else - typedef unsigned char yybool; -#endif -#define yytrue 1 -#define yyfalse 0 - -#ifndef YYSETJMP -# include -# define YYJMP_BUF jmp_buf -# define YYSETJMP(Env) setjmp (Env) -/* Pacify clang. */ -# define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0)) -#endif - -/*-----------------. -| GCC extensions. | -`-----------------*/ - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ -# endif -#endif - -#ifndef YYASSERT -# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) -#endif - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL ]b4_final_state_number[ -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST ]b4_last[ - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS ]b4_tokens_number[ -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS ]b4_nterms_number[ -/* YYNRULES -- Number of rules. */ -#define YYNRULES ]b4_rules_number[ -/* YYNRULES -- Number of states. */ -#define YYNSTATES ]b4_states_number[ -/* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ -#define YYMAXRHS ]b4_r2_max[ -/* YYMAXLEFT -- Maximum number of symbols to the left of a handle - accessed by $0, $-1, etc., in any rule. */ -#define YYMAXLEFT ]b4_max_left_semantic_context[ - -/* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */ -#define YYUNDEFTOK ]b4_undef_token_number[ -#define YYMAXUTOK ]b4_user_token_number_max[ - -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const ]b4_int_type_for([b4_translate])[ yytranslate[] = -{ - ]b4_translate[ -}; - -#if ]b4_api_PREFIX[DEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const ]b4_int_type_for([b4_prhs])[ yyprhs[] = -{ - ]b4_prhs[ -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const ]b4_int_type_for([b4_rhs])[ yyrhs[] = -{ - ]b4_rhs[ -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const ]b4_int_type_for([b4_rline])[ yyrline[] = -{ - ]b4_rline[ -}; -#endif - -#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE || ]b4_token_table_flag[ -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - ]b4_tname[ -}; -#endif - -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const ]b4_int_type_for([b4_r1])[ yyr1[] = -{ - ]b4_r1[ -}; - -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const ]b4_int_type_for([b4_r2])[ yyr2[] = -{ - ]b4_r2[ -}; - -/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ -static const ]b4_int_type_for([b4_dprec])[ yydprec[] = -{ - ]b4_dprec[ -}; - -/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ -static const ]b4_int_type_for([b4_merger])[ yymerger[] = -{ - ]b4_merger[ -}; - -/* YYDEFACT[S] -- default reduction number in state S. Performed when - YYTABLE doesn't specify something else to do. Zero means the default - is an error. */ -static const ]b4_int_type_for([b4_defact])[ yydefact[] = -{ - ]b4_defact[ -}; - -/* YYPDEFGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_defgoto])[ yydefgoto[] = -{ - ]b4_defgoto[ -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF ]b4_pact_ninf[ -static const ]b4_int_type_for([b4_pact])[ yypact[] = -{ - ]b4_pact[ -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const ]b4_int_type_for([b4_pgoto])[ yypgoto[] = -{ - ]b4_pgoto[ -}; - -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF ]b4_table_ninf[ -static const ]b4_int_type_for([b4_table])[ yytable[] = -{ - ]b4_table[ -}; - -/* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of - list of conflicting reductions corresponding to action entry for - state STATE-NUM in yytable. 0 means no conflicts. The list in - yyconfl is terminated by a rule number of 0. */ -static const ]b4_int_type_for([b4_conflict_list_heads])[ yyconflp[] = -{ - ]b4_conflict_list_heads[ -}; - -/* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by - 0, pointed into by YYCONFLP. */ -]dnl Do not use b4_int_type_for here, since there are places where -dnl pointers onto yyconfl are taken, which type is "short int *". -dnl We probably ought to introduce a type for confl. -[static const short int yyconfl[] = -{ - ]b4_conflicting_rules[ -}; - -static const ]b4_int_type_for([b4_check])[ yycheck[] = -{ - ]b4_check[ -}; - -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const ]b4_int_type_for([b4_stos])[ yystos[] = -{ - ]b4_stos[ -}; - -/* Error token number */ -#define YYTERROR 1 - -]b4_locations_if([[ -]b4_yylloc_default_define[ -# define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) -]])[ -]b4_yy_location_print_define[ - -/* YYLEX -- calling `yylex' with the right arguments. */ -#define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[ - -]b4_pure_if( -[ -#undef yynerrs -#define yynerrs (yystackp->yyerrcnt) -#undef yychar -#define yychar (yystackp->yyrawchar) -#undef yylval -#define yylval (yystackp->yyval) -#undef yylloc -#define yylloc (yystackp->yyloc) -m4_if(b4_prefix[], [yy], [], -[#define b4_prefix[]nerrs yynerrs -#define b4_prefix[]char yychar -#define b4_prefix[]lval yylval -#define b4_prefix[]lloc yylloc])], -[YYSTYPE yylval;]b4_locations_if([[ -YYLTYPE yylloc;]])[ - -int yynerrs; -int yychar;])[ - -static const int YYEOF = 0; -static const int YYEMPTY = -2; - -typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; - -#define YYCHK(YYE) \ - do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \ - while (YYID (0)) - -#if ]b4_api_PREFIX[DEBUG - -# ifndef YYFPRINTF -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -]b4_yy_symbol_print_generate([b4_c_ansi_function_def])[ - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, Type, Value]b4_locuser_args([Location])[); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; - -#else /* !]b4_api_PREFIX[DEBUG */ - -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) - -#endif /* !]b4_api_PREFIX[DEBUG */ - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH ]b4_stack_depth_init[ -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH ]b4_stack_depth_max[ -#endif - -/* Minimum number of free items on the stack allowed after an - allocation. This is to allow allocation and initialization - to be completed by functions that call yyexpandGLRStack before the - stack is expanded, thus insuring that all necessary pointers get - properly redirected to new data. */ -#define YYHEADROOM 2 - -#ifndef YYSTACKEXPANDABLE -# if (! defined __cplusplus \ - || (]b4_locations_if([[defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL \ - && ]])[defined ]b4_api_PREFIX[STYPE_IS_TRIVIAL && ]b4_api_PREFIX[STYPE_IS_TRIVIAL)) -# define YYSTACKEXPANDABLE 1 -# else -# define YYSTACKEXPANDABLE 0 -# endif -#endif - -#if YYSTACKEXPANDABLE -# define YY_RESERVE_GLRSTACK(Yystack) \ - do { \ - if (Yystack->yyspaceLeft < YYHEADROOM) \ - yyexpandGLRStack (Yystack); \ - } while (YYID (0)) -#else -# define YY_RESERVE_GLRSTACK(Yystack) \ - do { \ - if (Yystack->yyspaceLeft < YYHEADROOM) \ - yyMemoryExhausted (Yystack); \ - } while (YYID (0)) -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static size_t -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - size_t yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return strlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; -} -# endif - -#endif /* !YYERROR_VERBOSE */ - -/** State numbers, as in LALR(1) machine */ -typedef int yyStateNum; - -/** Rule numbers, as in LALR(1) machine */ -typedef int yyRuleNum; - -/** Grammar symbol */ -typedef short int yySymbol; - -/** Item references, as in LALR(1) machine */ -typedef short int yyItemNum; - -typedef struct yyGLRState yyGLRState; -typedef struct yyGLRStateSet yyGLRStateSet; -typedef struct yySemanticOption yySemanticOption; -typedef union yyGLRStackItem yyGLRStackItem; -typedef struct yyGLRStack yyGLRStack; - -struct yyGLRState { - /** Type tag: always true. */ - yybool yyisState; - /** Type tag for yysemantics. If true, yysval applies, otherwise - * yyfirstVal applies. */ - yybool yyresolved; - /** Number of corresponding LALR(1) machine state. */ - yyStateNum yylrState; - /** Preceding state in this stack */ - yyGLRState* yypred; - /** Source position of the first token produced by my symbol */ - size_t yyposn; - union { - /** First in a chain of alternative reductions producing the - * non-terminal corresponding to this state, threaded through - * yynext. */ - yySemanticOption* yyfirstVal; - /** Semantic value for this state. */ - YYSTYPE yysval; - } yysemantics;]b4_locations_if([[ - /** Source location for this state. */ - YYLTYPE yyloc;]])[ -}; - -struct yyGLRStateSet { - yyGLRState** yystates; - /** During nondeterministic operation, yylookaheadNeeds tracks which - * stacks have actually needed the current lookahead. During deterministic - * operation, yylookaheadNeeds[0] is not maintained since it would merely - * duplicate yychar != YYEMPTY. */ - yybool* yylookaheadNeeds; - size_t yysize, yycapacity; -}; - -struct yySemanticOption { - /** Type tag: always false. */ - yybool yyisState; - /** Rule number for this reduction */ - yyRuleNum yyrule; - /** The last RHS state in the list of states to be reduced. */ - yyGLRState* yystate; - /** The lookahead for this reduction. */ - int yyrawchar; - YYSTYPE yyval;]b4_locations_if([[ - YYLTYPE yyloc;]])[ - /** Next sibling in chain of options. To facilitate merging, - * options are chained in decreasing order by address. */ - yySemanticOption* yynext; -}; - -/** Type of the items in the GLR stack. The yyisState field - * indicates which item of the union is valid. */ -union yyGLRStackItem { - yyGLRState yystate; - yySemanticOption yyoption; -}; - -struct yyGLRStack { - int yyerrState; -]b4_locations_if([[ /* To compute the location of the error token. */ - yyGLRStackItem yyerror_range[3];]])[ -]b4_pure_if( -[ - int yyerrcnt; - int yyrawchar; - YYSTYPE yyval;]b4_locations_if([[ - YYLTYPE yyloc;]])[ -])[ - YYJMP_BUF yyexception_buffer; - yyGLRStackItem* yyitems; - yyGLRStackItem* yynextFree; - size_t yyspaceLeft; - yyGLRState* yysplitPoint; - yyGLRState* yylastDeleted; - yyGLRStateSet yytops; -}; - -#if YYSTACKEXPANDABLE -static void yyexpandGLRStack (yyGLRStack* yystackp); -#endif - -static void yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) - __attribute__ ((__noreturn__)); -static void -yyFail (yyGLRStack* yystackp]b4_pure_formals[, const char* yymsg) -{ - if (yymsg != YY_NULL) - yyerror (]b4_yyerror_args[yymsg); - YYLONGJMP (yystackp->yyexception_buffer, 1); -} - -static void yyMemoryExhausted (yyGLRStack* yystackp) - __attribute__ ((__noreturn__)); -static void -yyMemoryExhausted (yyGLRStack* yystackp) -{ - YYLONGJMP (yystackp->yyexception_buffer, 2); -} - -#if ]b4_api_PREFIX[DEBUG || YYERROR_VERBOSE -/** A printable representation of TOKEN. */ -static inline const char* -yytokenName (yySymbol yytoken) -{ - if (yytoken == YYEMPTY) - return ""; - - return yytname[yytoken]; -} -#endif - -/** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting - * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred - * containing the pointer to the next state in the chain. */ -static void yyfillin (yyGLRStackItem *, int, int) __attribute__ ((__unused__)); -static void -yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) -{ - int i; - yyGLRState *s = yyvsp[yylow0].yystate.yypred; - for (i = yylow0-1; i >= yylow1; i -= 1) - { - YYASSERT (s->yyresolved); - yyvsp[i].yystate.yyresolved = yytrue; - yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;]b4_locations_if([[ - yyvsp[i].yystate.yyloc = s->yyloc;]])[ - s = yyvsp[i].yystate.yypred = s->yypred; - } -} - -/* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in - * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. - * For convenience, always return YYLOW1. */ -static inline int yyfill (yyGLRStackItem *, int *, int, yybool) - __attribute__ ((__unused__)); -static inline int -yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) -{ - if (!yynormal && yylow1 < *yylow) - { - yyfillin (yyvsp, *yylow, yylow1); - *yylow = yylow1; - } - return yylow1; -} - -/** Perform user action for rule number YYN, with RHS length YYRHSLEN, - * and top stack item YYVSP. YYLVALP points to place to put semantic - * value ($$), and yylocp points to place for location information - * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT, - * yyerr for YYERROR, yyabort for YYABORT. */ -/*ARGSUSED*/ static YYRESULTTAG -yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, - yyGLRStack* yystackp, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - yybool yynormal __attribute__ ((__unused__)) = - (yystackp->yysplitPoint == YY_NULL); - int yylow; -]b4_parse_param_use[]dnl -[# undef yyerrok -# define yyerrok (yystackp->yyerrState = 0) -# undef YYACCEPT -# define YYACCEPT return yyaccept -# undef YYABORT -# define YYABORT return yyabort -# undef YYERROR -# define YYERROR return yyerrok, yyerr -# undef YYRECOVERING -# define YYRECOVERING() (yystackp->yyerrState != 0) -# undef yyclearin -# define yyclearin (yychar = YYEMPTY) -# undef YYFILL -# define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) -# undef YYBACKUP -# define YYBACKUP(Token, Value) \ - return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \ - yyerrok, yyerr - - yylow = 1; - if (yyrhslen == 0) - *yyvalp = yyval_default; - else - *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[ - YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen); - yystackp->yyerror_range[1].yystate.yyloc = *yylocp; -]])[ - switch (yyn) - { - ]b4_user_actions[ - default: break; - } - - return yyok; -# undef yyerrok -# undef YYABORT -# undef YYACCEPT -# undef YYERROR -# undef YYBACKUP -# undef yyclearin -# undef YYRECOVERING -} - - -/*ARGSUSED*/ static void -yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) -{ - YYUSE (yy0); - YYUSE (yy1); - - switch (yyn) - { - ]b4_mergers[ - default: break; - } -} - - /* Bison grammar-table manipulation. */ - -]b4_yydestruct_generate([b4_c_ansi_function_def])[ - -/** Number of symbols composing the right hand side of rule #RULE. */ -static inline int -yyrhsLength (yyRuleNum yyrule) -{ - return yyr2[yyrule]; -} - -static void -yydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[) -{ - if (yys->yyresolved) - yydestruct (yymsg, yystos[yys->yylrState], - &yys->yysemantics.yysval]b4_locuser_args([&yys->yyloc])[); - else - { -#if ]b4_api_PREFIX[DEBUG - if (yydebug) - { - if (yys->yysemantics.yyfirstVal) - YYFPRINTF (stderr, "%s unresolved ", yymsg); - else - YYFPRINTF (stderr, "%s incomplete ", yymsg); - yy_symbol_print (stderr, yystos[yys->yylrState], - YY_NULL]b4_locuser_args([&yys->yyloc])[); - YYFPRINTF (stderr, "\n"); - } -#endif - - if (yys->yysemantics.yyfirstVal) - { - yySemanticOption *yyoption = yys->yysemantics.yyfirstVal; - yyGLRState *yyrh; - int yyn; - for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule); - yyn > 0; - yyrh = yyrh->yypred, yyn -= 1) - yydestroyGLRState (yymsg, yyrh]b4_user_args[); - } - } -} - -/** Left-hand-side symbol for rule #RULE. */ -static inline yySymbol -yylhsNonterm (yyRuleNum yyrule) -{ - return yyr1[yyrule]; -} - -#define yypact_value_is_default(Yystate) \ - ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[ - -/** True iff LR state STATE has only a default reduction (regardless - * of token). */ -static inline yybool -yyisDefaultedState (yyStateNum yystate) -{ - return yypact_value_is_default (yypact[yystate]); -} - -/** The default reduction for STATE, assuming it has one. */ -static inline yyRuleNum -yydefaultAction (yyStateNum yystate) -{ - return yydefact[yystate]; -} - -#define yytable_value_is_error(Yytable_value) \ - ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[ - -/** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. - * Result R means - * R < 0: Reduce on rule -R. - * R = 0: Error. - * R > 0: Shift to state R. - * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of - * conflicting reductions. - */ -static inline void -yygetLRActions (yyStateNum yystate, int yytoken, - int* yyaction, const short int** yyconflicts) -{ - int yyindex = yypact[yystate] + yytoken; - if (yypact_value_is_default (yypact[yystate]) - || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken) - { - *yyaction = -yydefact[yystate]; - *yyconflicts = yyconfl; - } - else if (! yytable_value_is_error (yytable[yyindex])) - { - *yyaction = yytable[yyindex]; - *yyconflicts = yyconfl + yyconflp[yyindex]; - } - else - { - *yyaction = 0; - *yyconflicts = yyconfl + yyconflp[yyindex]; - } -} - -static inline yyStateNum -yyLRgotoState (yyStateNum yystate, yySymbol yylhs) -{ - int yyr; - yyr = yypgoto[yylhs - YYNTOKENS] + yystate; - if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate) - return yytable[yyr]; - else - return yydefgoto[yylhs - YYNTOKENS]; -} - -static inline yybool -yyisShiftAction (int yyaction) -{ - return 0 < yyaction; -} - -static inline yybool -yyisErrorAction (int yyaction) -{ - return yyaction == 0; -} - - /* GLRStates */ - -/** Return a fresh GLRStackItem. Callers should call - * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient - * headroom. */ - -static inline yyGLRStackItem* -yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState) -{ - yyGLRStackItem* yynewItem = yystackp->yynextFree; - yystackp->yyspaceLeft -= 1; - yystackp->yynextFree += 1; - yynewItem->yystate.yyisState = yyisState; - return yynewItem; -} - -/** Add a new semantic action that will execute the action for rule - * RULENUM on the semantic values in RHS to the list of - * alternative actions for STATE. Assumes that RHS comes from - * stack #K of *STACKP. */ -static void -yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate, - yyGLRState* rhs, yyRuleNum yyrule) -{ - yySemanticOption* yynewOption = - &yynewGLRStackItem (yystackp, yyfalse)->yyoption; - yynewOption->yystate = rhs; - yynewOption->yyrule = yyrule; - if (yystackp->yytops.yylookaheadNeeds[yyk]) - { - yynewOption->yyrawchar = yychar; - yynewOption->yyval = yylval;]b4_locations_if([ - yynewOption->yyloc = yylloc;])[ - } - else - yynewOption->yyrawchar = YYEMPTY; - yynewOption->yynext = yystate->yysemantics.yyfirstVal; - yystate->yysemantics.yyfirstVal = yynewOption; - - YY_RESERVE_GLRSTACK (yystackp); -} - - /* GLRStacks */ - -/** Initialize SET to a singleton set containing an empty stack. */ -static yybool -yyinitStateSet (yyGLRStateSet* yyset) -{ - yyset->yysize = 1; - yyset->yycapacity = 16; - yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]); - if (! yyset->yystates) - return yyfalse; - yyset->yystates[0] = YY_NULL; - yyset->yylookaheadNeeds = - (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]); - if (! yyset->yylookaheadNeeds) - { - YYFREE (yyset->yystates); - return yyfalse; - } - return yytrue; -} - -static void yyfreeStateSet (yyGLRStateSet* yyset) -{ - YYFREE (yyset->yystates); - YYFREE (yyset->yylookaheadNeeds); -} - -/** Initialize STACK to a single empty stack, with total maximum - * capacity for all stacks of SIZE. */ -static yybool -yyinitGLRStack (yyGLRStack* yystackp, size_t yysize) -{ - yystackp->yyerrState = 0; - yynerrs = 0; - yystackp->yyspaceLeft = yysize; - yystackp->yyitems = - (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]); - if (!yystackp->yyitems) - return yyfalse; - yystackp->yynextFree = yystackp->yyitems; - yystackp->yysplitPoint = YY_NULL; - yystackp->yylastDeleted = YY_NULL; - return yyinitStateSet (&yystackp->yytops); -} - - -#if YYSTACKEXPANDABLE -# define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ - &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE - -/** If STACK is expandable, extend it. WARNING: Pointers into the - stack from outside should be considered invalid after this call. - We always expand when there are 1 or fewer items left AFTER an - allocation, so that we can avoid having external pointers exist - across an allocation. */ -static void -yyexpandGLRStack (yyGLRStack* yystackp) -{ - yyGLRStackItem* yynewItems; - yyGLRStackItem* yyp0, *yyp1; - size_t yynewSize; - size_t yyn; - size_t yysize = yystackp->yynextFree - yystackp->yyitems; - if (YYMAXDEPTH - YYHEADROOM < yysize) - yyMemoryExhausted (yystackp); - yynewSize = 2*yysize; - if (YYMAXDEPTH < yynewSize) - yynewSize = YYMAXDEPTH; - yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]); - if (! yynewItems) - yyMemoryExhausted (yystackp); - for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize; - 0 < yyn; - yyn -= 1, yyp0 += 1, yyp1 += 1) - { - *yyp1 = *yyp0; - if (*(yybool *) yyp0) - { - yyGLRState* yys0 = &yyp0->yystate; - yyGLRState* yys1 = &yyp1->yystate; - if (yys0->yypred != YY_NULL) - yys1->yypred = - YYRELOC (yyp0, yyp1, yys0->yypred, yystate); - if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULL) - yys1->yysemantics.yyfirstVal = - YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption); - } - else - { - yySemanticOption* yyv0 = &yyp0->yyoption; - yySemanticOption* yyv1 = &yyp1->yyoption; - if (yyv0->yystate != YY_NULL) - yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate); - if (yyv0->yynext != YY_NULL) - yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption); - } - } - if (yystackp->yysplitPoint != YY_NULL) - yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems, - yystackp->yysplitPoint, yystate); - - for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1) - if (yystackp->yytops.yystates[yyn] != YY_NULL) - yystackp->yytops.yystates[yyn] = - YYRELOC (yystackp->yyitems, yynewItems, - yystackp->yytops.yystates[yyn], yystate); - YYFREE (yystackp->yyitems); - yystackp->yyitems = yynewItems; - yystackp->yynextFree = yynewItems + yysize; - yystackp->yyspaceLeft = yynewSize - yysize; -} -#endif - -static void -yyfreeGLRStack (yyGLRStack* yystackp) -{ - YYFREE (yystackp->yyitems); - yyfreeStateSet (&yystackp->yytops); -} - -/** Assuming that S is a GLRState somewhere on STACK, update the - * splitpoint of STACK, if needed, so that it is at least as deep as - * S. */ -static inline void -yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys) -{ - if (yystackp->yysplitPoint != YY_NULL && yystackp->yysplitPoint > yys) - yystackp->yysplitPoint = yys; -} - -/** Invalidate stack #K in STACK. */ -static inline void -yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk) -{ - if (yystackp->yytops.yystates[yyk] != YY_NULL) - yystackp->yylastDeleted = yystackp->yytops.yystates[yyk]; - yystackp->yytops.yystates[yyk] = YY_NULL; -} - -/** Undelete the last stack that was marked as deleted. Can only be - done once after a deletion, and only when all other stacks have - been deleted. */ -static void -yyundeleteLastStack (yyGLRStack* yystackp) -{ - if (yystackp->yylastDeleted == YY_NULL || yystackp->yytops.yysize != 0) - return; - yystackp->yytops.yystates[0] = yystackp->yylastDeleted; - yystackp->yytops.yysize = 1; - YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n")); - yystackp->yylastDeleted = YY_NULL; -} - -static inline void -yyremoveDeletes (yyGLRStack* yystackp) -{ - size_t yyi, yyj; - yyi = yyj = 0; - while (yyj < yystackp->yytops.yysize) - { - if (yystackp->yytops.yystates[yyi] == YY_NULL) - { - if (yyi == yyj) - { - YYDPRINTF ((stderr, "Removing dead stacks.\n")); - } - yystackp->yytops.yysize -= 1; - } - else - { - yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi]; - /* In the current implementation, it's unnecessary to copy - yystackp->yytops.yylookaheadNeeds[yyi] since, after - yyremoveDeletes returns, the parser immediately either enters - deterministic operation or shifts a token. However, it doesn't - hurt, and the code might evolve to need it. */ - yystackp->yytops.yylookaheadNeeds[yyj] = - yystackp->yytops.yylookaheadNeeds[yyi]; - if (yyj != yyi) - { - YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n", - (unsigned long int) yyi, (unsigned long int) yyj)); - } - yyj += 1; - } - yyi += 1; - } -} - -/** Shift to a new state on stack #K of STACK, corresponding to LR state - * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ -static inline void -yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, - size_t yyposn, - YYSTYPE* yyvalp]b4_locations_if([, YYLTYPE* yylocp])[) -{ - yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; - - yynewState->yylrState = yylrState; - yynewState->yyposn = yyposn; - yynewState->yyresolved = yytrue; - yynewState->yypred = yystackp->yytops.yystates[yyk]; - yynewState->yysemantics.yysval = *yyvalp;]b4_locations_if([ - yynewState->yyloc = *yylocp;])[ - yystackp->yytops.yystates[yyk] = yynewState; - - YY_RESERVE_GLRSTACK (yystackp); -} - -/** Shift stack #K of YYSTACK, to a new state corresponding to LR - * state YYLRSTATE, at input position YYPOSN, with the (unresolved) - * semantic value of YYRHS under the action for YYRULE. */ -static inline void -yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState, - size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule) -{ - yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate; - - yynewState->yylrState = yylrState; - yynewState->yyposn = yyposn; - yynewState->yyresolved = yyfalse; - yynewState->yypred = yystackp->yytops.yystates[yyk]; - yynewState->yysemantics.yyfirstVal = YY_NULL; - yystackp->yytops.yystates[yyk] = yynewState; - - /* Invokes YY_RESERVE_GLRSTACK. */ - yyaddDeferredAction (yystackp, yyk, yynewState, rhs, yyrule); -} - -/** Pop the symbols consumed by reduction #RULE from the top of stack - * #K of STACK, and perform the appropriate semantic action on their - * semantic values. Assumes that all ambiguities in semantic values - * have been previously resolved. Set *VALP to the resulting value, - * and *LOCP to the computed location (if any). Return value is as - * for userAction. */ -static inline YYRESULTTAG -yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - int yynrhs = yyrhsLength (yyrule); - - if (yystackp->yysplitPoint == YY_NULL) - { - /* Standard special case: single stack. */ - yyGLRStackItem* rhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; - YYASSERT (yyk == 0); - yystackp->yynextFree -= yynrhs; - yystackp->yyspaceLeft += yynrhs; - yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate; - return yyuserAction (yyrule, yynrhs, rhs, yystackp, - yyvalp]b4_locuser_args[); - } - else - { - /* At present, doAction is never called in nondeterministic - * mode, so this branch is never taken. It is here in - * anticipation of a future feature that will allow immediate - * evaluation of selected actions in nondeterministic mode. */ - int yyi; - yyGLRState* yys; - yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; - yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred - = yystackp->yytops.yystates[yyk];]b4_locations_if([[ - if (yynrhs == 0) - /* Set default location. */ - yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yys->yyloc;]])[ - for (yyi = 0; yyi < yynrhs; yyi += 1) - { - yys = yys->yypred; - YYASSERT (yys); - } - yyupdateSplit (yystackp, yys); - yystackp->yytops.yystates[yyk] = yys; - return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, - yystackp, yyvalp]b4_locuser_args[); - } -} - -#if !]b4_api_PREFIX[DEBUG -# define YY_REDUCE_PRINT(Args) -#else -# define YY_REDUCE_PRINT(Args) \ -do { \ - if (yydebug) \ - yy_reduce_print Args; \ -} while (YYID (0)) - -/*----------------------------------------------------------. -| Report that the RULE is going to be reduced on stack #K. | -`----------------------------------------------------------*/ - -/*ARGSUSED*/ static inline void -yy_reduce_print (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - int yynrhs = yyrhsLength (yyrule); - yybool yynormal __attribute__ ((__unused__)) = - (yystackp->yysplitPoint == YY_NULL); - yyGLRStackItem* yyvsp = (yyGLRStackItem*) yystackp->yytops.yystates[yyk]; - int yylow = 1; - int yyi; - YYUSE (yyvalp);]b4_locations_if([ - YYUSE (yylocp);])[ -]b4_parse_param_use[]dnl -[ YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n", - (unsigned long int) yyk, yyrule - 1, - (unsigned long int) yyrline[yyrule]); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &]b4_rhs_value(yynrhs, yyi + 1)[ - ]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl - b4_user_args[); - YYFPRINTF (stderr, "\n"); - } -} -#endif - -/** Pop items off stack #K of STACK according to grammar rule RULE, - * and push back on the resulting nonterminal symbol. Perform the - * semantic action associated with RULE and store its value with the - * newly pushed state, if FORCEEVAL or if STACK is currently - * unambiguous. Otherwise, store the deferred semantic action with - * the new state. If the new state would have an identical input - * position, LR state, and predecessor to an existing state on the stack, - * it is identified with that existing state, eliminating stack #K from - * the STACK. In this case, the (necessarily deferred) semantic value is - * added to the options for the existing state's semantic value. - */ -static inline YYRESULTTAG -yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule, - yybool yyforceEval]b4_user_formals[) -{ - size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn; - - if (yyforceEval || yystackp->yysplitPoint == YY_NULL) - { - YYSTYPE yysval;]b4_locations_if([ - YYLTYPE yyloc;])[ - - YY_REDUCE_PRINT ((yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[)); - YYCHK (yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[)); - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc); - yyglrShift (yystackp, yyk, - yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState, - yylhsNonterm (yyrule)), - yyposn, &yysval]b4_locations_if([, &yyloc])[); - } - else - { - size_t yyi; - int yyn; - yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk]; - yyStateNum yynewLRState; - - for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule); - 0 < yyn; yyn -= 1) - { - yys = yys->yypred; - YYASSERT (yys); - } - yyupdateSplit (yystackp, yys); - yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule)); - YYDPRINTF ((stderr, - "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n", - (unsigned long int) yyk, yyrule - 1, yynewLRState)); - for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) - if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULL) - { - yyGLRState *yysplit = yystackp->yysplitPoint; - yyGLRState *yyp = yystackp->yytops.yystates[yyi]; - while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn) - { - if (yyp->yylrState == yynewLRState && yyp->yypred == yys) - { - yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule); - yymarkStackDeleted (yystackp, yyk); - YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n", - (unsigned long int) yyk, - (unsigned long int) yyi)); - return yyok; - } - yyp = yyp->yypred; - } - } - yystackp->yytops.yystates[yyk] = yys; - yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule); - } - return yyok; -} - -static size_t -yysplitStack (yyGLRStack* yystackp, size_t yyk) -{ - if (yystackp->yysplitPoint == YY_NULL) - { - YYASSERT (yyk == 0); - yystackp->yysplitPoint = yystackp->yytops.yystates[yyk]; - } - if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity) - { - yyGLRState** yynewStates; - yybool* yynewLookaheadNeeds; - - yynewStates = YY_NULL; - - if (yystackp->yytops.yycapacity - > (YYSIZEMAX / (2 * sizeof yynewStates[0]))) - yyMemoryExhausted (yystackp); - yystackp->yytops.yycapacity *= 2; - - yynewStates = - (yyGLRState**) YYREALLOC (yystackp->yytops.yystates, - (yystackp->yytops.yycapacity - * sizeof yynewStates[0])); - if (yynewStates == YY_NULL) - yyMemoryExhausted (yystackp); - yystackp->yytops.yystates = yynewStates; - - yynewLookaheadNeeds = - (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds, - (yystackp->yytops.yycapacity - * sizeof yynewLookaheadNeeds[0])); - if (yynewLookaheadNeeds == YY_NULL) - yyMemoryExhausted (yystackp); - yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds; - } - yystackp->yytops.yystates[yystackp->yytops.yysize] - = yystackp->yytops.yystates[yyk]; - yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize] - = yystackp->yytops.yylookaheadNeeds[yyk]; - yystackp->yytops.yysize += 1; - return yystackp->yytops.yysize-1; -} - -/** True iff Y0 and Y1 represent identical options at the top level. - * That is, they represent the same rule applied to RHS symbols - * that produce the same terminal symbols. */ -static yybool -yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1) -{ - if (yyy0->yyrule == yyy1->yyrule) - { - yyGLRState *yys0, *yys1; - int yyn; - for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, - yyn = yyrhsLength (yyy0->yyrule); - yyn > 0; - yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) - if (yys0->yyposn != yys1->yyposn) - return yyfalse; - return yytrue; - } - else - return yyfalse; -} - -/** Assuming identicalOptions (Y0,Y1), destructively merge the - * alternative semantic values for the RHS-symbols of Y1 and Y0. */ -static void -yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) -{ - yyGLRState *yys0, *yys1; - int yyn; - for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, - yyn = yyrhsLength (yyy0->yyrule); - yyn > 0; - yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) - { - if (yys0 == yys1) - break; - else if (yys0->yyresolved) - { - yys1->yyresolved = yytrue; - yys1->yysemantics.yysval = yys0->yysemantics.yysval; - } - else if (yys1->yyresolved) - { - yys0->yyresolved = yytrue; - yys0->yysemantics.yysval = yys1->yysemantics.yysval; - } - else - { - yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal; - yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal; - while (YYID (yytrue)) - { - if (yyz1 == *yyz0p || yyz1 == YY_NULL) - break; - else if (*yyz0p == YY_NULL) - { - *yyz0p = yyz1; - break; - } - else if (*yyz0p < yyz1) - { - yySemanticOption* yyz = *yyz0p; - *yyz0p = yyz1; - yyz1 = yyz1->yynext; - (*yyz0p)->yynext = yyz; - } - yyz0p = &(*yyz0p)->yynext; - } - yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal; - } - } -} - -/** Y0 and Y1 represent two possible actions to take in a given - * parsing state; return 0 if no combination is possible, - * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ -static int -yypreference (yySemanticOption* y0, yySemanticOption* y1) -{ - yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule; - int p0 = yydprec[r0], p1 = yydprec[r1]; - - if (p0 == p1) - { - if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1]) - return 0; - else - return 1; - } - if (p0 == 0 || p1 == 0) - return 0; - if (p0 < p1) - return 3; - if (p1 < p0) - return 2; - return 0; -} - -static YYRESULTTAG yyresolveValue (yyGLRState* yys, - yyGLRStack* yystackp]b4_user_formals[); - - -/** Resolve the previous N states starting at and including state S. If result - * != yyok, some states may have been left unresolved possibly with empty - * semantic option chains. Regardless of whether result = yyok, each state - * has been left with consistent data so that yydestroyGLRState can be invoked - * if necessary. */ -static YYRESULTTAG -yyresolveStates (yyGLRState* yys, int yyn, - yyGLRStack* yystackp]b4_user_formals[) -{ - if (0 < yyn) - { - YYASSERT (yys->yypred); - YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp]b4_user_args[)); - if (! yys->yyresolved) - YYCHK (yyresolveValue (yys, yystackp]b4_user_args[)); - } - return yyok; -} - -/** Resolve the states for the RHS of OPT, perform its user action, and return - * the semantic value and location. Regardless of whether result = yyok, all - * RHS states have been destroyed (assuming the user action destroys all RHS - * semantic values if invoked). */ -static YYRESULTTAG -yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp, - YYSTYPE* yyvalp]b4_locuser_formals[) -{ - yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; - int yynrhs = yyrhsLength (yyopt->yyrule); - YYRESULTTAG yyflag = - yyresolveStates (yyopt->yystate, yynrhs, yystackp]b4_user_args[); - if (yyflag != yyok) - { - yyGLRState *yys; - for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1) - yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); - return yyflag; - } - - yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;]b4_locations_if([[ - if (yynrhs == 0) - /* Set default location. */ - yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].yystate.yyloc = yyopt->yystate->yyloc;]])[ - { - int yychar_current = yychar; - YYSTYPE yylval_current = yylval;]b4_locations_if([ - YYLTYPE yylloc_current = yylloc;])[ - yychar = yyopt->yyrawchar; - yylval = yyopt->yyval;]b4_locations_if([ - yylloc = yyopt->yyloc;])[ - yyflag = yyuserAction (yyopt->yyrule, yynrhs, - yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, - yystackp, yyvalp]b4_locuser_args[); - yychar = yychar_current; - yylval = yylval_current;]b4_locations_if([ - yylloc = yylloc_current;])[ - } - return yyflag; -} - -#if ]b4_api_PREFIX[DEBUG -static void -yyreportTree (yySemanticOption* yyx, int yyindent) -{ - int yynrhs = yyrhsLength (yyx->yyrule); - int yyi; - yyGLRState* yys; - yyGLRState* yystates[1 + YYMAXRHS]; - yyGLRState yyleftmost_state; - - for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred) - yystates[yyi] = yys; - if (yys == YY_NULL) - { - yyleftmost_state.yyposn = 0; - yystates[0] = &yyleftmost_state; - } - else - yystates[0] = yys; - - if (yyx->yystate->yyposn < yys->yyposn + 1) - YYFPRINTF (stderr, "%*s%s -> \n", - yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), - yyx->yyrule - 1); - else - YYFPRINTF (stderr, "%*s%s -> \n", - yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), - yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1), - (unsigned long int) yyx->yystate->yyposn); - for (yyi = 1; yyi <= yynrhs; yyi += 1) - { - if (yystates[yyi]->yyresolved) - { - if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn) - YYFPRINTF (stderr, "%*s%s \n", yyindent+2, "", - yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1])); - else - YYFPRINTF (stderr, "%*s%s \n", yyindent+2, "", - yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]), - (unsigned long int) (yystates[yyi - 1]->yyposn + 1), - (unsigned long int) yystates[yyi]->yyposn); - } - else - yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2); - } -} -#endif - -/*ARGSUSED*/ static YYRESULTTAG -yyreportAmbiguity (yySemanticOption* yyx0, - yySemanticOption* yyx1]b4_pure_formals[) -{ - YYUSE (yyx0); - YYUSE (yyx1); - -#if ]b4_api_PREFIX[DEBUG - YYFPRINTF (stderr, "Ambiguity detected.\n"); - YYFPRINTF (stderr, "Option 1,\n"); - yyreportTree (yyx0, 2); - YYFPRINTF (stderr, "\nOption 2,\n"); - yyreportTree (yyx1, 2); - YYFPRINTF (stderr, "\n"); -#endif - - yyerror (]b4_yyerror_args[YY_("syntax is ambiguous")); - return yyabort; -}]b4_locations_if([[ - -/** Starting at and including state S1, resolve the location for each of the - * previous N1 states that is unresolved. The first semantic option of a state - * is always chosen. */ -static void -yyresolveLocations (yyGLRState* yys1, int yyn1, - yyGLRStack *yystackp]b4_user_formals[) -{ - if (0 < yyn1) - { - yyresolveLocations (yys1->yypred, yyn1 - 1, yystackp]b4_user_args[); - if (!yys1->yyresolved) - { - yyGLRStackItem yyrhsloc[1 + YYMAXRHS]; - int yynrhs; - yySemanticOption *yyoption = yys1->yysemantics.yyfirstVal; - YYASSERT (yyoption != YY_NULL); - yynrhs = yyrhsLength (yyoption->yyrule); - if (yynrhs > 0) - { - yyGLRState *yys; - int yyn; - yyresolveLocations (yyoption->yystate, yynrhs, - yystackp]b4_user_args[); - for (yys = yyoption->yystate, yyn = yynrhs; - yyn > 0; - yys = yys->yypred, yyn -= 1) - yyrhsloc[yyn].yystate.yyloc = yys->yyloc; - } - else - { - /* Both yyresolveAction and yyresolveLocations traverse the GSS - in reverse rightmost order. It is only necessary to invoke - yyresolveLocations on a subforest for which yyresolveAction - would have been invoked next had an ambiguity not been - detected. Thus the location of the previous state (but not - necessarily the previous state itself) is guaranteed to be - resolved already. */ - yyGLRState *yyprevious = yyoption->yystate; - yyrhsloc[0].yystate.yyloc = yyprevious->yyloc; - } - { - int yychar_current = yychar; - YYSTYPE yylval_current = yylval; - YYLTYPE yylloc_current = yylloc; - yychar = yyoption->yyrawchar; - yylval = yyoption->yyval; - yylloc = yyoption->yyloc; - YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs); - yychar = yychar_current; - yylval = yylval_current; - yylloc = yylloc_current; - } - } - } -}]])[ - -/** Resolve the ambiguity represented in state S, perform the indicated - * actions, and set the semantic value of S. If result != yyok, the chain of - * semantic options in S has been cleared instead or it has been left - * unmodified except that redundant options may have been removed. Regardless - * of whether result = yyok, S has been left with consistent data so that - * yydestroyGLRState can be invoked if necessary. */ -static YYRESULTTAG -yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[) -{ - yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal; - yySemanticOption* yybest = yyoptionList; - yySemanticOption** yypp; - yybool yymerge = yyfalse; - YYSTYPE yysval; - YYRESULTTAG yyflag;]b4_locations_if([ - YYLTYPE *yylocp = &yys->yyloc;])[ - - for (yypp = &yyoptionList->yynext; *yypp != YY_NULL; ) - { - yySemanticOption* yyp = *yypp; - - if (yyidenticalOptions (yybest, yyp)) - { - yymergeOptionSets (yybest, yyp); - *yypp = yyp->yynext; - } - else - { - switch (yypreference (yybest, yyp)) - { - case 0:]b4_locations_if([[ - yyresolveLocations (yys, 1, yystackp]b4_user_args[);]])[ - return yyreportAmbiguity (yybest, yyp]b4_pure_args[); - break; - case 1: - yymerge = yytrue; - break; - case 2: - break; - case 3: - yybest = yyp; - yymerge = yyfalse; - break; - default: - /* This cannot happen so it is not worth a YYASSERT (yyfalse), - but some compilers complain if the default case is - omitted. */ - break; - } - yypp = &yyp->yynext; - } - } - - if (yymerge) - { - yySemanticOption* yyp; - int yyprec = yydprec[yybest->yyrule]; - yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args[); - if (yyflag == yyok) - for (yyp = yybest->yynext; yyp != YY_NULL; yyp = yyp->yynext) - { - if (yyprec == yydprec[yyp->yyrule]) - { - YYSTYPE yysval_other;]b4_locations_if([ - YYLTYPE yydummy;])[ - yyflag = yyresolveAction (yyp, yystackp, &yysval_other]b4_locuser_args([&yydummy])[); - if (yyflag != yyok) - { - yydestruct ("Cleanup: discarding incompletely merged value for", - yystos[yys->yylrState], - &yysval]b4_locuser_args[); - break; - } - yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other); - } - } - } - else - yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args([yylocp])[); - - if (yyflag == yyok) - { - yys->yyresolved = yytrue; - yys->yysemantics.yysval = yysval; - } - else - yys->yysemantics.yyfirstVal = YY_NULL; - return yyflag; -} - -static YYRESULTTAG -yyresolveStack (yyGLRStack* yystackp]b4_user_formals[) -{ - if (yystackp->yysplitPoint != YY_NULL) - { - yyGLRState* yys; - int yyn; - - for (yyn = 0, yys = yystackp->yytops.yystates[0]; - yys != yystackp->yysplitPoint; - yys = yys->yypred, yyn += 1) - continue; - YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp - ]b4_user_args[)); - } - return yyok; -} - -static void -yycompressStack (yyGLRStack* yystackp) -{ - yyGLRState* yyp, *yyq, *yyr; - - if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULL) - return; - - for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULL; - yyp != yystackp->yysplitPoint; - yyr = yyp, yyp = yyq, yyq = yyp->yypred) - yyp->yypred = yyr; - - yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems; - yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1; - yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems; - yystackp->yysplitPoint = YY_NULL; - yystackp->yylastDeleted = YY_NULL; - - while (yyr != YY_NULL) - { - yystackp->yynextFree->yystate = *yyr; - yyr = yyr->yypred; - yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate; - yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate; - yystackp->yynextFree += 1; - yystackp->yyspaceLeft -= 1; - } -} - -static YYRESULTTAG -yyprocessOneStack (yyGLRStack* yystackp, size_t yyk, - size_t yyposn]b4_pure_formals[) -{ - int yyaction; - const short int* yyconflicts; - yyRuleNum yyrule; - - while (yystackp->yytops.yystates[yyk] != YY_NULL) - { - yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState; - YYDPRINTF ((stderr, "Stack %lu Entering state %d\n", - (unsigned long int) yyk, yystate)); - - YYASSERT (yystate != YYFINAL); - - if (yyisDefaultedState (yystate)) - { - yyrule = yydefaultAction (yystate); - if (yyrule == 0) - { - YYDPRINTF ((stderr, "Stack %lu dies.\n", - (unsigned long int) yyk)); - yymarkStackDeleted (yystackp, yyk); - return yyok; - } - YYCHK (yyglrReduce (yystackp, yyk, yyrule, yyfalse]b4_user_args[)); - } - else - { - yySymbol yytoken; - yystackp->yytops.yylookaheadNeeds[yyk] = yytrue; - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); - - while (*yyconflicts != 0) - { - size_t yynewStack = yysplitStack (yystackp, yyk); - YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n", - (unsigned long int) yynewStack, - (unsigned long int) yyk)); - YYCHK (yyglrReduce (yystackp, yynewStack, - *yyconflicts, yyfalse]b4_user_args[)); - YYCHK (yyprocessOneStack (yystackp, yynewStack, - yyposn]b4_pure_args[)); - yyconflicts += 1; - } - - if (yyisShiftAction (yyaction)) - break; - else if (yyisErrorAction (yyaction)) - { - YYDPRINTF ((stderr, "Stack %lu dies.\n", - (unsigned long int) yyk)); - yymarkStackDeleted (yystackp, yyk); - break; - } - else - YYCHK (yyglrReduce (yystackp, yyk, -yyaction, - yyfalse]b4_user_args[)); - } - } - return yyok; -} - -/*ARGSUSED*/ static void -yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[) -{ - if (yystackp->yyerrState != 0) - return; -#if ! YYERROR_VERBOSE - yyerror (]b4_lyyerror_args[YY_("syntax error")); -#else - { - yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - size_t yysize0 = yytnamerr (YY_NULL, yytokenName (yytoken)); - size_t yysize = yysize0; - yybool yysize_overflow = yyfalse; - char* yymsg = YY_NULL; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULL; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[yystackp->yytops.yystates[0]->yylrState]; - yyarg[yycount++] = yytokenName (yytoken); - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for this - state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytokenName (yyx); - { - size_t yysz = yysize + yytnamerr (YY_NULL, yytokenName (yyx)); - yysize_overflow |= yysz < yysize; - yysize = yysz; - } - } - } - } - - switch (yycount) - { -#define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -#undef YYCASE_ - } - - { - size_t yysz = yysize + strlen (yyformat); - yysize_overflow |= yysz < yysize; - yysize = yysz; - } - - if (!yysize_overflow) - yymsg = (char *) YYMALLOC (yysize); - - if (yymsg) - { - char *yyp = yymsg; - int yyi = 0; - while ((*yyp = *yyformat)) - { - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - yyerror (]b4_lyyerror_args[yymsg); - YYFREE (yymsg); - } - else - { - yyerror (]b4_lyyerror_args[YY_("syntax error")); - yyMemoryExhausted (yystackp); - } - } -#endif /* YYERROR_VERBOSE */ - yynerrs += 1; -} - -/* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP, - yylval, and yylloc are the syntactic category, semantic value, and location - of the lookahead. */ -/*ARGSUSED*/ static void -yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[) -{ - size_t yyk; - int yyj; - - if (yystackp->yyerrState == 3) - /* We just shifted the error token and (perhaps) took some - reductions. Skip tokens until we can proceed. */ - while (YYID (yytrue)) - { - yySymbol yytoken; - if (yychar == YYEOF) - yyFail (yystackp][]b4_lpure_args[, YY_NULL); - if (yychar != YYEMPTY) - {]b4_locations_if([[ - /* We throw away the lookahead, but the error range - of the shifted error token must take it into account. */ - yyGLRState *yys = yystackp->yytops.yystates[0]; - yyGLRStackItem yyerror_range[3]; - yyerror_range[1].yystate.yyloc = yys->yyloc; - yyerror_range[2].yystate.yyloc = yylloc; - YYLLOC_DEFAULT ((yys->yyloc), yyerror_range, 2);]])[ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Error: discarding", - yytoken, &yylval]b4_locuser_args([&yylloc])[); - } - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - yyj = yypact[yystackp->yytops.yystates[0]->yylrState]; - if (yypact_value_is_default (yyj)) - return; - yyj += yytoken; - if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken) - { - if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0) - return; - } - else if (! yytable_value_is_error (yytable[yyj])) - return; - } - - /* Reduce to one stack. */ - for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1) - if (yystackp->yytops.yystates[yyk] != YY_NULL) - break; - if (yyk >= yystackp->yytops.yysize) - yyFail (yystackp][]b4_lpure_args[, YY_NULL); - for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1) - yymarkStackDeleted (yystackp, yyk); - yyremoveDeletes (yystackp); - yycompressStack (yystackp); - - /* Now pop stack until we find a state that shifts the error token. */ - yystackp->yyerrState = 3; - while (yystackp->yytops.yystates[0] != YY_NULL) - { - yyGLRState *yys = yystackp->yytops.yystates[0]; - yyj = yypact[yys->yylrState]; - if (! yypact_value_is_default (yyj)) - { - yyj += YYTERROR; - if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR - && yyisShiftAction (yytable[yyj])) - { - /* Shift the error token. */]b4_locations_if([[ - /* First adjust its location.*/ - YYLTYPE yyerrloc; - yystackp->yyerror_range[2].yystate.yyloc = yylloc; - YYLLOC_DEFAULT (yyerrloc, (yystackp->yyerror_range), 2);]])[ - YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]], - &yylval, &yyerrloc); - yyglrShift (yystackp, 0, yytable[yyj], - yys->yyposn, &yylval]b4_locations_if([, &yyerrloc])[); - yys = yystackp->yytops.yystates[0]; - break; - } - }]b4_locations_if([[ - yystackp->yyerror_range[1].yystate.yyloc = yys->yyloc;]])[ - if (yys->yypred != YY_NULL) - yydestroyGLRState ("Error: popping", yys]b4_user_args[); - yystackp->yytops.yystates[0] = yys->yypred; - yystackp->yynextFree -= 1; - yystackp->yyspaceLeft += 1; - } - if (yystackp->yytops.yystates[0] == YY_NULL) - yyFail (yystackp][]b4_lpure_args[, YY_NULL); -} - -#define YYCHK1(YYE) \ - do { \ - switch (YYE) { \ - case yyok: \ - break; \ - case yyabort: \ - goto yyabortlab; \ - case yyaccept: \ - goto yyacceptlab; \ - case yyerr: \ - goto yyuser_error; \ - default: \ - goto yybuglab; \ - } \ - } while (YYID (0)) - - -/*----------. -| yyparse. | -`----------*/ - -]b4_c_ansi_function_def([yyparse], [int], b4_parse_param)[ -{ - int yyresult; - yyGLRStack yystack; - yyGLRStack* const yystackp = &yystack; - size_t yyposn; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yychar = YYEMPTY; - yylval = yyval_default;]b4_locations_if([ - yylloc = yyloc_default;])[ -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([yylval], [], [yylloc])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef])[]dnl -[ - if (! yyinitGLRStack (yystackp, YYINITDEPTH)) - goto yyexhaustedlab; - switch (YYSETJMP (yystack.yyexception_buffer)) - { - case 0: break; - case 1: goto yyabortlab; - case 2: goto yyexhaustedlab; - default: goto yybuglab; - } - yyglrShift (&yystack, 0, 0, 0, &yylval]b4_locations_if([, &yylloc])[); - yyposn = 0; - - while (YYID (yytrue)) - { - /* For efficiency, we have two loops, the first of which is - specialized to deterministic operation (single stack, no - potential ambiguity). */ - /* Standard mode */ - while (YYID (yytrue)) - { - yyRuleNum yyrule; - int yyaction; - const short int* yyconflicts; - - yyStateNum yystate = yystack.yytops.yystates[0]->yylrState; - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) - goto yyacceptlab; - if (yyisDefaultedState (yystate)) - { - yyrule = yydefaultAction (yystate); - if (yyrule == 0) - { -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ - yyreportSyntaxError (&yystack]b4_user_args[); - goto yyuser_error; - } - YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue]b4_user_args[)); - } - else - { - yySymbol yytoken; - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); - if (*yyconflicts != 0) - break; - if (yyisShiftAction (yyaction)) - { - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - yychar = YYEMPTY; - yyposn += 1; - yyglrShift (&yystack, 0, yyaction, yyposn, &yylval]b4_locations_if([, &yylloc])[); - if (0 < yystack.yyerrState) - yystack.yyerrState -= 1; - } - else if (yyisErrorAction (yyaction)) - { -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ - yyreportSyntaxError (&yystack]b4_user_args[); - goto yyuser_error; - } - else - YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue]b4_user_args[)); - } - } - - while (YYID (yytrue)) - { - yySymbol yytoken_to_shift; - size_t yys; - - for (yys = 0; yys < yystack.yytops.yysize; yys += 1) - yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY; - - /* yyprocessOneStack returns one of three things: - - - An error flag. If the caller is yyprocessOneStack, it - immediately returns as well. When the caller is finally - yyparse, it jumps to an error label via YYCHK1. - - - yyok, but yyprocessOneStack has invoked yymarkStackDeleted - (&yystack, yys), which sets the top state of yys to NULL. Thus, - yyparse's following invocation of yyremoveDeletes will remove - the stack. - - - yyok, when ready to shift a token. - - Except in the first case, yyparse will invoke yyremoveDeletes and - then shift the next token onto all remaining stacks. This - synchronization of the shift (that is, after all preceding - reductions on all stacks) helps prevent double destructor calls - on yylval in the event of memory exhaustion. */ - - for (yys = 0; yys < yystack.yytops.yysize; yys += 1) - YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn]b4_lpure_args[)); - yyremoveDeletes (&yystack); - if (yystack.yytops.yysize == 0) - { - yyundeleteLastStack (&yystack); - if (yystack.yytops.yysize == 0) - yyFail (&yystack][]b4_lpure_args[, YY_("syntax error")); - YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yylloc;]])[ - yyreportSyntaxError (&yystack]b4_user_args[); - goto yyuser_error; - } - - /* If any yyglrShift call fails, it will fail after shifting. Thus, - a copy of yylval will already be on stack 0 in the event of a - failure in the following loop. Thus, yychar is set to YYEMPTY - before the loop to make sure the user destructor for yylval isn't - called twice. */ - yytoken_to_shift = YYTRANSLATE (yychar); - yychar = YYEMPTY; - yyposn += 1; - for (yys = 0; yys < yystack.yytops.yysize; yys += 1) - { - int yyaction; - const short int* yyconflicts; - yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState; - yygetLRActions (yystate, yytoken_to_shift, &yyaction, - &yyconflicts); - /* Note that yyconflicts were handled by yyprocessOneStack. */ - YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys)); - YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc); - yyglrShift (&yystack, yys, yyaction, yyposn, - &yylval]b4_locations_if([, &yylloc])[); - YYDPRINTF ((stderr, "Stack %lu now in state #%d\n", - (unsigned long int) yys, - yystack.yytops.yystates[yys]->yylrState)); - } - - if (yystack.yytops.yysize == 1) - { - YYCHK1 (yyresolveStack (&yystack]b4_user_args[)); - YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); - yycompressStack (&yystack); - break; - } - } - continue; - yyuser_error: - yyrecoverSyntaxError (&yystack]b4_user_args[); - yyposn = yystack.yytops.yystates[0]->yyposn; - } - - yyacceptlab: - yyresult = 0; - goto yyreturn; - - yybuglab: - YYASSERT (yyfalse); - goto yyabortlab; - - yyabortlab: - yyresult = 1; - goto yyreturn; - - yyexhaustedlab: - yyerror (]b4_lyyerror_args[YY_("memory exhausted")); - yyresult = 2; - goto yyreturn; - - yyreturn: - if (yychar != YYEMPTY) - yydestruct ("Cleanup: discarding lookahead", - YYTRANSLATE (yychar), &yylval]b4_locuser_args([&yylloc])[); - - /* If the stack is well-formed, pop the stack until it is empty, - destroying its entries as we go. But free the stack regardless - of whether it is well-formed. */ - if (yystack.yyitems) - { - yyGLRState** yystates = yystack.yytops.yystates; - if (yystates) - { - size_t yysize = yystack.yytops.yysize; - size_t yyk; - for (yyk = 0; yyk < yysize; yyk += 1) - if (yystates[yyk]) - { - while (yystates[yyk]) - { - yyGLRState *yys = yystates[yyk]; -]b4_locations_if([[ yystack.yyerror_range[1].yystate.yyloc = yys->yyloc;]] -)[ if (yys->yypred != YY_NULL) - yydestroyGLRState ("Cleanup: popping", yys]b4_user_args[); - yystates[yyk] = yys->yypred; - yystack.yynextFree -= 1; - yystack.yyspaceLeft += 1; - } - break; - } - } - yyfreeGLRStack (&yystack); - } - - /* Make sure YYID is used. */ - return YYID (yyresult); -} - -/* DEBUGGING ONLY */ -#if ]b4_api_PREFIX[DEBUG -static void yypstack (yyGLRStack* yystackp, size_t yyk) - __attribute__ ((__unused__)); -static void yypdumpstack (yyGLRStack* yystackp) __attribute__ ((__unused__)); - -static void -yy_yypstack (yyGLRState* yys) -{ - if (yys->yypred) - { - yy_yypstack (yys->yypred); - YYFPRINTF (stderr, " -> "); - } - YYFPRINTF (stderr, "%d@@%lu", yys->yylrState, - (unsigned long int) yys->yyposn); -} - -static void -yypstates (yyGLRState* yyst) -{ - if (yyst == YY_NULL) - YYFPRINTF (stderr, ""); - else - yy_yypstack (yyst); - YYFPRINTF (stderr, "\n"); -} - -static void -yypstack (yyGLRStack* yystackp, size_t yyk) -{ - yypstates (yystackp->yytops.yystates[yyk]); -} - -#define YYINDEX(YYX) \ - ((YYX) == YY_NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems) - - -static void -yypdumpstack (yyGLRStack* yystackp) -{ - yyGLRStackItem* yyp; - size_t yyi; - for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1) - { - YYFPRINTF (stderr, "%3lu. ", - (unsigned long int) (yyp - yystackp->yyitems)); - if (*(yybool *) yyp) - { - YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld", - yyp->yystate.yyresolved, yyp->yystate.yylrState, - (unsigned long int) yyp->yystate.yyposn, - (long int) YYINDEX (yyp->yystate.yypred)); - if (! yyp->yystate.yyresolved) - YYFPRINTF (stderr, ", firstVal: %ld", - (long int) YYINDEX (yyp->yystate - .yysemantics.yyfirstVal)); - } - else - { - YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld", - yyp->yyoption.yyrule - 1, - (long int) YYINDEX (yyp->yyoption.yystate), - (long int) YYINDEX (yyp->yyoption.yynext)); - } - YYFPRINTF (stderr, "\n"); - } - YYFPRINTF (stderr, "Tops:"); - for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1) - YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi, - (long int) YYINDEX (yystackp->yytops.yystates[yyi])); - YYFPRINTF (stderr, "\n"); -} -#endif -]b4_epilogue[]dnl -b4_output_end() - -# glr.cc produces its own header. -m4_if(b4_skeleton, ["glr.c"], -[b4_defines_if( -[b4_output_begin([b4_spec_defines_file]) -b4_copyright([Skeleton interface for Bison GLR parsers in C], - [2002-2012])[ - -]b4_cpp_guard_open([b4_spec_defines_file])[ -]b4_shared_declarations[ -]b4_cpp_guard_close([b4_spec_defines_file])[ -]b4_output_end() -])]) diff --git a/tools/data/glr.cc b/tools/data/glr.cc deleted file mode 100644 index 378abb39..00000000 --- a/tools/data/glr.cc +++ /dev/null @@ -1,346 +0,0 @@ - -*- C -*- - -# C++ GLR skeleton for Bison - -# Copyright (C) 2002-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# This skeleton produces a C++ class that encapsulates a C glr parser. -# This is in order to reduce the maintenance burden. The glr.c -# skeleton is clean and pure enough so that there are no real -# problems. The C++ interface is the same as that of lalr1.cc. In -# fact, glr.c can replace yacc.c without the user noticing any -# difference, and similarly for glr.cc replacing lalr1.cc. -# -# The passing of parse-params -# -# The additional arguments are stored as members of the parser -# object, yyparser. The C routines need to carry yyparser -# throughout the C parser; that easy: just let yyparser become an -# additional parse-param. But because the C++ skeleton needs to -# know the "real" original parse-param, we save them -# (b4_parse_param_orig). Note that b4_parse_param is overquoted -# (and c.m4 strips one level of quotes). This is a PITA, and -# explains why there are so many levels of quotes. -# -# The locations -# -# We use location.cc just like lalr1.cc, but because glr.c stores -# the locations in a (C++) union, the position and location classes -# must not have a constructor. Therefore, contrary to lalr1.cc, we -# must not define "b4_location_constructors". As a consequence the -# user must initialize the first positions (in particular the -# filename member). - -# We require a pure interface using locations. -m4_define([b4_locations_flag], [1]) -m4_define([b4_pure_flag], [1]) - -# The header is mandatory. -b4_defines_if([], - [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) - -m4_include(b4_pkgdatadir/[c++.m4]) -b4_percent_define_ifdef([[api.location.type]], [], - [m4_include(b4_pkgdatadir/[location.cc])]) - -m4_define([b4_parser_class_name], - [b4_percent_define_get([[parser_class_name]])]) - -# Save the parse parameters. -m4_define([b4_parse_param_orig], m4_defn([b4_parse_param])) - - -# b4_yy_symbol_print_generate -# --------------------------- -# Bypass the default implementation to generate the "yy_symbol_print" -# and "yy_symbol_value_print" functions. -m4_define([b4_yy_symbol_print_generate], -[[ -/*--------------------. -| Print this symbol. | -`--------------------*/ - -]b4_c_ansi_function_def([yy_symbol_print], - [static void], - [[FILE *], []], - [[int yytype], [yytype]], - [[const ]b4_namespace_ref::b4_parser_class_name[::semantic_type *yyvaluep], - [yyvaluep]], - [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], - [yylocationp]], - b4_parse_param)[ -{ -]b4_parse_param_use[]dnl -[ yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_locations_if([, yylocationp])[); -} -]])[ - -# Hijack the initial action to initialize the locations. -]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [], -[m4_define([b4_initial_action], -[yylloc.initialize ();]m4_ifdef([b4_initial_action], [ -m4_defn([b4_initial_action])]))])])[ - -# Hijack the post prologue to insert early definition of YYLLOC_DEFAULT -# and declaration of yyerror. -]m4_append([b4_post_prologue], -[b4_syncline([@oline@], [@ofile@])[ -]b4_yylloc_default_define[ -#define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc) -]b4_c_ansi_function_decl([yyerror], - [static void], - [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], - [yylocationp]], - b4_parse_param, - [[const char* msg], [msg]])]) - - -# Hijack the epilogue to define implementations (yyerror, parser member -# functions etc.). -m4_append([b4_epilogue], -[b4_syncline([@oline@], [@ofile@])[ -/*------------------. -| Report an error. | -`------------------*/ - -]b4_c_ansi_function_def([yyerror], - [static void], - [[const ]b4_namespace_ref::b4_parser_class_name[::location_type *yylocationp], - [yylocationp]], - b4_parse_param, - [[const char* msg], [msg]])[ -{ -]b4_parse_param_use[]dnl -[ yyparser.error (*yylocationp, msg); -} - - -]b4_namespace_open[ -]dnl In this section, the parse param are the original parse_params. -m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl -[ /// Build a parser object. - ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [ - :])[ -#if ]b4_api_PREFIX[DEBUG - ]m4_ifset([b4_parse_param], [ ], [ :])[ - yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[ -#endif]b4_parse_param_cons[ - { - } - - ]b4_parser_class_name::~b4_parser_class_name[ () - { - } - - int - ]b4_parser_class_name[::parse () - { - return ::yyparse (*this]b4_user_args[); - } - -#if ]b4_api_PREFIX[DEBUG - /*--------------------. - | Print this symbol. | - `--------------------*/ - - inline void - ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp) - { - YYUSE (yylocationp); - YYUSE (yyvaluep); - std::ostream& yyoutput = debug_stream (); - std::ostream& yyo = yyoutput; - YYUSE (yyo); - switch (yytype) - { - ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl -[ default: - break; - } - } - - - void - ]b4_parser_class_name[::yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp) - { - *yycdebug_ << (yytype < YYNTOKENS ? "token" : "nterm") - << ' ' << yytname[yytype] << " (" - << *yylocationp << ": "; - yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); - *yycdebug_ << ')'; - } - - std::ostream& - ]b4_parser_class_name[::debug_stream () const - { - return *yycdebug_; - } - - void - ]b4_parser_class_name[::set_debug_stream (std::ostream& o) - { - yycdebug_ = &o; - } - - - ]b4_parser_class_name[::debug_level_type - ]b4_parser_class_name[::debug_level () const - { - return yydebug; - } - - void - ]b4_parser_class_name[::set_debug_level (debug_level_type l) - { - // Actually, it is yydebug which is really used. - yydebug = l; - } - -#endif -]m4_popdef([b4_parse_param])dnl -b4_namespace_close]) - - -# Let glr.c believe that the user arguments include the parser itself. -m4_ifset([b4_parse_param], -[m4_pushdef([b4_parse_param], - [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]],] -m4_defn([b4_parse_param]))], -[m4_pushdef([b4_parse_param], - [[b4_namespace_ref::b4_parser_class_name[& yyparser], [[yyparser]]]]) -]) -m4_include(b4_pkgdatadir/[glr.c]) -m4_popdef([b4_parse_param]) - -b4_output_begin([b4_spec_defines_file]) -b4_copyright([Skeleton interface for Bison GLR parsers in C++], - [2002-2006, 2009-2012])[ - -/* C++ GLR parser skeleton written by Akim Demaille. */ - -]b4_cpp_guard_open([b4_spec_defines_file])[ - -]b4_percent_code_get([[requires]])[ - -# include -# include -]b4_percent_define_ifdef([[api.location.type]], [], - [[# include "location.hh"]])[ - -]b4_YYDEBUG_define[ - -]b4_namespace_open[ - /// A Bison parser. - class ]b4_parser_class_name[ - { - public: - /// Symbol semantic values. -# ifndef ]b4_api_PREFIX[STYPE -]m4_ifdef([b4_stype], -[ union semantic_type - { -b4_user_stype - };], -[m4_if(b4_tag_seen_flag, 0, -[[ typedef int semantic_type;]], -[[ typedef ]b4_api_PREFIX[STYPE semantic_type;]])])[ -# else - typedef ]b4_api_PREFIX[STYPE semantic_type; -# endif - /// Symbol locations. - typedef ]b4_percent_define_get([[api.location.type]], - [[location]])[ location_type; - /// Tokens. - struct token - { - ]b4_token_enums(b4_tokens)[ - }; - /// Token type. - typedef token::yytokentype token_type; - - /// Build a parser object. - ]b4_parser_class_name[ (]b4_parse_param_decl[); - virtual ~]b4_parser_class_name[ (); - - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); - - /// The current debugging stream. - std::ostream& debug_stream () const; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); - - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); - - private: - - public: - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); - private: - -# if ]b4_api_PREFIX[DEBUG - public: - /// \brief Report a symbol value on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); - /// \brief Report a symbol on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); - private: - /* Debugging. */ - std::ostream* yycdebug_; -# endif - -]b4_parse_param_vars[ - }; - -]dnl Redirections for glr.c. -b4_percent_define_flag_if([[global_tokens_and_yystype]], -[b4_token_defines(b4_tokens)]) -[ -#ifndef ]b4_api_PREFIX[STYPE -# define ]b4_api_PREFIX[STYPE ]b4_namespace_ref[::]b4_parser_class_name[::semantic_type -#endif -#ifndef ]b4_api_PREFIX[LTYPE -# define ]b4_api_PREFIX[LTYPE ]b4_namespace_ref[::]b4_parser_class_name[::location_type -#endif - -]b4_namespace_close[ -]b4_percent_code_get([[provides]])[ -]b4_cpp_guard_close([b4_spec_defines_file])[ -]b4_output_end() diff --git a/tools/data/java-skel.m4 b/tools/data/java-skel.m4 deleted file mode 100644 index 171a233b..00000000 --- a/tools/data/java-skel.m4 +++ /dev/null @@ -1,26 +0,0 @@ - -*- Autoconf -*- - -# Java skeleton dispatching for Bison. - -# Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -b4_glr_if( [b4_complain([%%glr-parser not supported for Java])]) -b4_nondeterministic_if([b4_complain([%%nondeterministic-parser not supported for Java])]) - -m4_define_default([b4_used_skeleton], [b4_pkgdatadir/[lalr1.java]]) -m4_define_default([b4_skeleton], ["b4_basename(b4_used_skeleton)"]) - -m4_include(b4_used_skeleton) diff --git a/tools/data/java.m4 b/tools/data/java.m4 deleted file mode 100644 index fe6dd528..00000000 --- a/tools/data/java.m4 +++ /dev/null @@ -1,304 +0,0 @@ - -*- Autoconf -*- - -# Java language support for Bison - -# Copyright (C) 2007-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c-like.m4]) - -# b4_comment(TEXT) -# ---------------- -m4_define([b4_comment], [/* m4_bpatsubst([$1], [ -], [ - ]) */]) - - -# b4_list2(LIST1, LIST2) -# -------------------------- -# Join two lists with a comma if necessary. -m4_define([b4_list2], - [$1[]m4_ifval(m4_quote($1), [m4_ifval(m4_quote($2), [[, ]])])[]$2]) - - -# b4_percent_define_get3(DEF, PRE, POST, NOT) -# ------------------------------------------- -# Expand to the value of DEF surrounded by PRE and POST if it's %define'ed, -# otherwise NOT. -m4_define([b4_percent_define_get3], - [m4_ifval(m4_quote(b4_percent_define_get([$1])), - [$2[]b4_percent_define_get([$1])[]$3], [$4])]) - - - -# b4_flag_value(BOOLEAN-FLAG) -# --------------------------- -m4_define([b4_flag_value], [b4_flag_if([$1], [true], [false])]) - - -# b4_public_if(TRUE, FALSE) -# ------------------------- -b4_percent_define_default([[public]], [[false]]) -m4_define([b4_public_if], -[b4_percent_define_flag_if([public], [$1], [$2])]) - - -# b4_abstract_if(TRUE, FALSE) -# --------------------------- -b4_percent_define_default([[abstract]], [[false]]) -m4_define([b4_abstract_if], -[b4_percent_define_flag_if([abstract], [$1], [$2])]) - - -# b4_final_if(TRUE, FALSE) -# --------------------------- -b4_percent_define_default([[final]], [[false]]) -m4_define([b4_final_if], -[b4_percent_define_flag_if([final], [$1], [$2])]) - - -# b4_strictfp_if(TRUE, FALSE) -# --------------------------- -b4_percent_define_default([[strictfp]], [[false]]) -m4_define([b4_strictfp_if], -[b4_percent_define_flag_if([strictfp], [$1], [$2])]) - - -# b4_lexer_if(TRUE, FALSE) -# ------------------------ -m4_define([b4_lexer_if], -[b4_percent_code_ifdef([[lexer]], [$1], [$2])]) - - -# b4_identification -# ----------------- -m4_define([b4_identification], -[ /** Version number for the Bison executable that generated this parser. */ - public static final String bisonVersion = "b4_version"; - - /** Name of the skeleton that generated this parser. */ - public static final String bisonSkeleton = b4_skeleton; -]) - - -## ------------ ## -## Data types. ## -## ------------ ## - -# b4_int_type(MIN, MAX) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# MIN to MAX (included). -m4_define([b4_int_type], -[m4_if(b4_ints_in($@, [-128], [127]), [1], [byte], - b4_ints_in($@, [-32768], [32767]), [1], [short], - [int])]) - -# b4_int_type_for(NAME) -# --------------------- -# Return the smallest int type able to handle numbers ranging from -# `NAME_min' to `NAME_max' (included). -m4_define([b4_int_type_for], -[b4_int_type($1_min, $1_max)]) - -# b4_null -# ------- -m4_define([b4_null], [null]) - - -## ------------------------- ## -## Assigning token numbers. ## -## ------------------------- ## - -# b4_token_enum(TOKEN-NAME, TOKEN-NUMBER) -# --------------------------------------- -# Output the definition of this token as an enum. -m4_define([b4_token_enum], -[ /** Token number, to be returned by the scanner. */ - public static final int $1 = $2; -]) - - -# b4_token_enums(LIST-OF-PAIRS-TOKEN-NAME-TOKEN-NUMBER) -# ----------------------------------------------------- -# Output the definition of the tokens (if there are) as enums. -m4_define([b4_token_enums], -[m4_if([$#$1], [1], [], -[/* Tokens. */ -m4_map([b4_token_enum], [$@])]) -]) - -# b4-case(ID, CODE) -# ----------------- -# We need to fool Java's stupid unreachable code detection. -m4_define([b4_case], [ case $1: - if (yyn == $1) - $2; - break; - ]) - - -## ---------------- ## -## Default values. ## -## ---------------- ## - -m4_define([b4_yystype], [b4_percent_define_get([[stype]])]) -b4_percent_define_default([[stype]], [[Object]]) - -# %name-prefix -m4_define_default([b4_prefix], [[YY]]) - -b4_percent_define_default([[parser_class_name]], [b4_prefix[]Parser]) -m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])]) - -b4_percent_define_default([[lex_throws]], [[java.io.IOException]]) -m4_define([b4_lex_throws], [b4_percent_define_get([[lex_throws]])]) - -b4_percent_define_default([[throws]], []) -m4_define([b4_throws], [b4_percent_define_get([[throws]])]) - -b4_percent_define_default([[api.location.type]], [Location]) -m4_define([b4_location_type], [b4_percent_define_get([[api.location.type]])]) - -b4_percent_define_default([[api.position.type]], [Position]) -m4_define([b4_position_type], [b4_percent_define_get([[api.position.type]])]) - - -## ----------------- ## -## Semantic Values. ## -## ----------------- ## - - -# b4_lhs_value([TYPE]) -# -------------------- -# Expansion of $$. -m4_define([b4_lhs_value], [yyval]) - - -# b4_rhs_value(RULE-LENGTH, NUM, [TYPE]) -# -------------------------------------- -# Expansion of $NUM, where the current rule has RULE-LENGTH -# symbols on RHS. -# -# In this simple implementation, %token and %type have class names -# between the angle brackets. -m4_define([b4_rhs_value], -[(m4_ifval($3, [($3)])[](yystack.valueAt ($1-($2))))]) - -# b4_lhs_location() -# ----------------- -# Expansion of @$. -m4_define([b4_lhs_location], -[(yyloc)]) - - -# b4_rhs_location(RULE-LENGTH, NUM) -# --------------------------------- -# Expansion of @NUM, where the current rule has RULE-LENGTH symbols -# on RHS. -m4_define([b4_rhs_location], -[yystack.locationAt ($1-($2))]) - - -# b4_lex_param -# b4_parse_param -# -------------- -# If defined, b4_lex_param arrives double quoted, but below we prefer -# it to be single quoted. Same for b4_parse_param. - -# TODO: should be in bison.m4 -m4_define_default([b4_lex_param], [[]]) -m4_define([b4_lex_param], b4_lex_param) -m4_define([b4_parse_param], b4_parse_param) - -# b4_lex_param_decl -# ------------------- -# Extra formal arguments of the constructor. -m4_define([b4_lex_param_decl], -[m4_ifset([b4_lex_param], - [b4_remove_comma([$1], - b4_param_decls(b4_lex_param))], - [$1])]) - -m4_define([b4_param_decls], - [m4_map([b4_param_decl], [$@])]) -m4_define([b4_param_decl], [, $1]) - -m4_define([b4_remove_comma], [m4_ifval(m4_quote($1), [$1, ], [])m4_shift2($@)]) - - - -# b4_parse_param_decl -# ------------------- -# Extra formal arguments of the constructor. -m4_define([b4_parse_param_decl], -[m4_ifset([b4_parse_param], - [b4_remove_comma([$1], - b4_param_decls(b4_parse_param))], - [$1])]) - - - -# b4_lex_param_call -# ------------------- -# Delegating the lexer parameters to the lexer constructor. -m4_define([b4_lex_param_call], - [m4_ifset([b4_lex_param], - [b4_remove_comma([$1], - b4_param_calls(b4_lex_param))], - [$1])]) -m4_define([b4_param_calls], - [m4_map([b4_param_call], [$@])]) -m4_define([b4_param_call], [, $2]) - - - -# b4_parse_param_cons -# ------------------- -# Extra initialisations of the constructor. -m4_define([b4_parse_param_cons], - [m4_ifset([b4_parse_param], - [b4_constructor_calls(b4_parse_param)])]) - -m4_define([b4_constructor_calls], - [m4_map([b4_constructor_call], [$@])]) -m4_define([b4_constructor_call], - [this.$2 = $2; - ]) - - - -# b4_parse_param_vars -# ------------------- -# Extra instance variables. -m4_define([b4_parse_param_vars], - [m4_ifset([b4_parse_param], - [ - /* User arguments. */ -b4_var_decls(b4_parse_param)])]) - -m4_define([b4_var_decls], - [m4_map_sep([b4_var_decl], [ -], [$@])]) -m4_define([b4_var_decl], - [ protected final $1;]) - - - -# b4_maybe_throws(THROWS) -# ----------------------- -# Expand to either an empty string or "throws THROWS". -m4_define([b4_maybe_throws], - [m4_ifval($1, [throws $1])]) diff --git a/tools/data/lalr1.cc b/tools/data/lalr1.cc deleted file mode 100644 index 13170154..00000000 --- a/tools/data/lalr1.cc +++ /dev/null @@ -1,1143 +0,0 @@ -# C++ skeleton for Bison - -# Copyright (C) 2002-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[c++.m4]) - -m4_define([b4_parser_class_name], - [b4_percent_define_get([[parser_class_name]])]) - -# The header is mandatory. -b4_defines_if([], - [b4_fatal([b4_skeleton[: using %%defines is mandatory]])]) - -b4_percent_define_ifdef([[api.location.type]], [], - [# Backward compatibility. - m4_define([b4_location_constructors]) - m4_include(b4_pkgdatadir/[location.cc])]) -m4_include(b4_pkgdatadir/[stack.hh]) - -b4_defines_if( -[b4_output_begin([b4_spec_defines_file]) -b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++], - [2002-2012]) -[ -/** - ** \file ]b4_spec_defines_file[ - ** Define the ]b4_namespace_ref[::parser class. - */ - -/* C++ LALR(1) parser skeleton written by Akim Demaille. */ - -]b4_cpp_guard_open([b4_spec_defines_file])[ - -]b4_percent_code_get([[requires]])[ - -#include -#include -#include "stack.hh" -]b4_percent_define_ifdef([[api.location.type]], [], - [[#include "location.hh"]])[ - -]b4_YYDEBUG_define[ - -]b4_namespace_open[ - - /// A Bison parser. - class ]b4_parser_class_name[ - { - public: - /// Symbol semantic values. -#ifndef ]b4_api_PREFIX[STYPE -]m4_ifdef([b4_stype], -[ union semantic_type - { -b4_user_stype - };], -[m4_if(b4_tag_seen_flag, 0, -[[ typedef int semantic_type;]], -[[ typedef ]b4_api_PREFIX[STYPE semantic_type;]])])[ -#else - typedef ]b4_api_PREFIX[STYPE semantic_type; -#endif - /// Symbol locations. - typedef ]b4_percent_define_get([[api.location.type]], - [[location]])[ location_type; - /// Tokens. - struct token - { - ]b4_token_enums(b4_tokens)[ - }; - /// Token type. - typedef token::yytokentype token_type; - - /// Build a parser object. - ]b4_parser_class_name[ (]b4_parse_param_decl[); - virtual ~]b4_parser_class_name[ (); - - /// Parse. - /// \returns 0 iff parsing succeeded. - virtual int parse (); - -#if ]b4_api_PREFIX[DEBUG - /// The current debugging stream. - std::ostream& debug_stream () const; - /// Set the current debugging stream. - void set_debug_stream (std::ostream &); - - /// Type for debugging levels. - typedef int debug_level_type; - /// The current debugging level. - debug_level_type debug_level () const; - /// Set the current debugging level. - void set_debug_level (debug_level_type l); -#endif - - private: - /// Report a syntax error. - /// \param loc where the syntax error is found. - /// \param msg a description of the syntax error. - virtual void error (const location_type& loc, const std::string& msg); - - /// Generate an error message. - /// \param state the state where the error occurred. - /// \param tok the lookahead token. - virtual std::string yysyntax_error_ (int yystate, int tok); - -#if ]b4_api_PREFIX[DEBUG - /// \brief Report a symbol value on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); - /// \brief Report a symbol on the debug stream. - /// \param yytype The token type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - virtual void yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, - const location_type* yylocationp); -#endif - - - /// State numbers. - typedef int state_type; - /// State stack type. - typedef stack state_stack_type; - /// Semantic value stack type. - typedef stack semantic_stack_type; - /// location stack type. - typedef stack location_stack_type; - - /// The state stack. - state_stack_type yystate_stack_; - /// The semantic value stack. - semantic_stack_type yysemantic_stack_; - /// The location stack. - location_stack_type yylocation_stack_; - - /// Whether the given \c yypact_ value indicates a defaulted state. - /// \param yyvalue the value to check - static bool yy_pact_value_is_default_ (int yyvalue); - - /// Whether the given \c yytable_ value indicates a syntax error. - /// \param yyvalue the value to check - static bool yy_table_value_is_error_ (int yyvalue); - - /// Internal symbol numbers. - typedef ]b4_int_type_for([b4_translate])[ token_number_type; - /* Tables. */ - /// For a state, the index in \a yytable_ of its portion. - static const ]b4_int_type_for([b4_pact])[ yypact_[]; - static const ]b4_int_type(b4_pact_ninf, b4_pact_ninf)[ yypact_ninf_; - - /// For a state, default reduction number. - /// Unless\a yytable_ specifies something else to do. - /// Zero means the default is an error. - static const ]b4_int_type_for([b4_defact])[ yydefact_[]; - - static const ]b4_int_type_for([b4_pgoto])[ yypgoto_[]; - static const ]b4_int_type_for([b4_defgoto])[ yydefgoto_[]; - - /// What to do in a state. - /// \a yytable_[yypact_[s]]: what to do in state \a s. - /// - if positive, shift that token. - /// - if negative, reduce the rule which number is the opposite. - /// - if zero, do what YYDEFACT says. - static const ]b4_int_type_for([b4_table])[ yytable_[]; - static const ]b4_int_type(b4_table_ninf, b4_table_ninf)[ yytable_ninf_; - - static const ]b4_int_type_for([b4_check])[ yycheck_[]; - - /// For a state, its accessing symbol. - static const ]b4_int_type_for([b4_stos])[ yystos_[]; - - /// For a rule, its LHS. - static const ]b4_int_type_for([b4_r1])[ yyr1_[]; - /// For a rule, its RHS length. - static const ]b4_int_type_for([b4_r2])[ yyr2_[]; ]b4_error_verbose_if([ - - /// Convert the symbol name \a n to a form suitable for a diagnostic. - static std::string yytnamerr_ (const char *n);])[ - -]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[ - /// For a symbol, its name in clear. - static const char* const yytname_[]; -]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[ - /// A type to store symbol numbers and -1. - typedef ]b4_int_type_for([b4_rhs])[ rhs_number_type; - /// A `-1'-separated list of the rules' RHS. - static const rhs_number_type yyrhs_[]; - /// For each rule, the index of the first RHS symbol in \a yyrhs_. - static const ]b4_int_type_for([b4_prhs])[ yyprhs_[]; - /// For each rule, its source line number. - static const ]b4_int_type_for([b4_rline])[ yyrline_[]; - /// For each scanner token number, its symbol number. - static const ]b4_int_type_for([b4_toknum])[ yytoken_number_[]; - /// Report on the debug stream that the rule \a r is going to be reduced. - virtual void yy_reduce_print_ (int r); - /// Print the state stack on the debug stream. - virtual void yystack_print_ (); - - /* Debugging. */ - int yydebug_; - std::ostream* yycdebug_; -#endif - - /// Convert a scanner token number \a t to a symbol number. - token_number_type yytranslate_ (int t); - - /// \brief Reclaim the memory associated to a symbol. - /// \param yymsg Why this token is reclaimed. - /// If null, do not display the symbol, just free it. - /// \param yytype The symbol type. - /// \param yyvaluep Its semantic value. - /// \param yylocationp Its location. - inline void yydestruct_ (const char* yymsg, - int yytype, - semantic_type* yyvaluep, - location_type* yylocationp); - - /// Pop \a n symbols the three stacks. - inline void yypop_ (unsigned int n = 1); - - /* Constants. */ - static const int yyeof_; - /* LAST_ -- Last index in TABLE_. */ - static const int yylast_; - static const int yynnts_; - static const int yyempty_; - static const int yyfinal_; - static const int yyterror_; - static const int yyerrcode_; - static const int yyntokens_; - static const unsigned int yyuser_token_number_max_; - static const token_number_type yyundef_token_; -]b4_parse_param_vars[ - }; -]b4_namespace_close[ - -]b4_percent_define_flag_if([[global_tokens_and_yystype]], -[b4_token_defines(b4_tokens) - -#ifndef ]b4_api_PREFIX[STYPE - /* Redirection for backward compatibility. */ -# define ]b4_api_PREFIX[STYPE b4_namespace_ref::b4_parser_class_name::semantic_type -#endif -])[ -]b4_percent_code_get([[provides]])[ -]b4_cpp_guard_close([b4_spec_defines_file]) -b4_output_end() -]) - - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++], - [2002-2012]) -b4_percent_code_get([[top]])[]dnl -m4_if(b4_prefix, [yy], [], -[ -// Take the name prefix into account. -#define yylex b4_prefix[]lex])[ - -/* First part of user declarations. */ -]b4_user_pre_prologue[ - -]b4_defines_if([[ -#include "@basename(]b4_spec_defines_file[@)"]])[ - -/* User implementation prologue. */ -]b4_user_post_prologue[ -]b4_percent_code_get[ - -]b4_null_define[ - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* FIXME: INFRINGES ON USER NAME SPACE */ -# define YY_(msgid) dgettext ("bison-runtime", msgid) -# endif -# endif -# ifndef YY_ -# define YY_(msgid) msgid -# endif -#endif - -#define YYRHSLOC(Rhs, K) ((Rhs)[K]) -]b4_yylloc_default_define[ - -/* Suppress unused-variable warnings by "using" E. */ -#define YYUSE(e) ((void) (e)) - -/* Enable debugging if requested. */ -#if ]b4_api_PREFIX[DEBUG - -/* A pseudo ostream that takes yydebug_ into account. */ -# define YYCDEBUG if (yydebug_) (*yycdebug_) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug_) \ - { \ - *yycdebug_ << Title << ' '; \ - yy_symbol_print_ ((Type), (Value), (Location)); \ - *yycdebug_ << std::endl; \ - } \ -} while (false) - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug_) \ - yy_reduce_print_ (Rule); \ -} while (false) - -# define YY_STACK_PRINT() \ -do { \ - if (yydebug_) \ - yystack_print_ (); \ -} while (false) - -#else /* !]b4_api_PREFIX[DEBUG */ - -# define YYCDEBUG if (false) std::cerr -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type) -# define YY_REDUCE_PRINT(Rule) static_cast(0) -# define YY_STACK_PRINT() static_cast(0) - -#endif /* !]b4_api_PREFIX[DEBUG */ - -#define yyerrok (yyerrstatus_ = 0) -#define yyclearin (yychar = yyempty_) - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab -#define YYRECOVERING() (!!yyerrstatus_) - -]b4_namespace_open[]b4_error_verbose_if([[ - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - std::string - ]b4_parser_class_name[::yytnamerr_ (const char *yystr) - { - if (*yystr == '"') - { - std::string yyr = ""; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - yyr += *yyp; - break; - - case '"': - return yyr; - } - do_not_strip_quotes: ; - } - - return yystr; - } -]])[ - - /// Build a parser object. - ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [ - :])[ -#if ]b4_api_PREFIX[DEBUG - ]m4_ifset([b4_parse_param], [ ], [ :])[yydebug_ (false), - yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[ -#endif]b4_parse_param_cons[ - { - } - - ]b4_parser_class_name::~b4_parser_class_name[ () - { - } - -#if ]b4_api_PREFIX[DEBUG - /*--------------------------------. - | Print this symbol on YYOUTPUT. | - `--------------------------------*/ - - inline void - ]b4_parser_class_name[::yy_symbol_value_print_ (int yytype, - const semantic_type* yyvaluep, const location_type* yylocationp) - { - YYUSE (yylocationp); - YYUSE (yyvaluep); - std::ostream& yyo = debug_stream (); - std::ostream& yyoutput = yyo; - YYUSE (yyoutput); - switch (yytype) - { - ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl -[ default: - break; - } - } - - - void - ]b4_parser_class_name[::yy_symbol_print_ (int yytype, - const semantic_type* yyvaluep, const location_type* yylocationp) - { - *yycdebug_ << (yytype < yyntokens_ ? "token" : "nterm") - << ' ' << yytname_[yytype] << " (" - << *yylocationp << ": "; - yy_symbol_value_print_ (yytype, yyvaluep, yylocationp); - *yycdebug_ << ')'; - } -#endif - - void - ]b4_parser_class_name[::yydestruct_ (const char* yymsg, - int yytype, semantic_type* yyvaluep, location_type* yylocationp) - { - YYUSE (yylocationp); - YYUSE (yymsg); - YYUSE (yyvaluep); - - if (yymsg) - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - switch (yytype) - { - ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[ - default: - break; - } - } - - void - ]b4_parser_class_name[::yypop_ (unsigned int n) - { - yystate_stack_.pop (n); - yysemantic_stack_.pop (n); - yylocation_stack_.pop (n); - } - -#if ]b4_api_PREFIX[DEBUG - std::ostream& - ]b4_parser_class_name[::debug_stream () const - { - return *yycdebug_; - } - - void - ]b4_parser_class_name[::set_debug_stream (std::ostream& o) - { - yycdebug_ = &o; - } - - - ]b4_parser_class_name[::debug_level_type - ]b4_parser_class_name[::debug_level () const - { - return yydebug_; - } - - void - ]b4_parser_class_name[::set_debug_level (debug_level_type l) - { - yydebug_ = l; - } -#endif - - inline bool - ]b4_parser_class_name[::yy_pact_value_is_default_ (int yyvalue) - { - return yyvalue == yypact_ninf_; - } - - inline bool - ]b4_parser_class_name[::yy_table_value_is_error_ (int yyvalue) - { - return yyvalue == yytable_ninf_; - } - - int - ]b4_parser_class_name[::parse () - { - /// Lookahead and lookahead in internal form. - int yychar = yyempty_; - int yytoken = 0; - - // State. - int yyn; - int yylen = 0; - int yystate = 0; - - // Error handling. - int yynerrs_ = 0; - int yyerrstatus_ = 0; - - /// Semantic value of the lookahead. - static semantic_type yyval_default; - semantic_type yylval = yyval_default; - /// Location of the lookahead. - location_type yylloc; - /// The locations where the error started and ended. - location_type yyerror_range[3]; - - /// $$. - semantic_type yyval; - /// @@$. - location_type yyloc; - - int yyresult; - - // FIXME: This shoud be completely indented. It is not yet to - // avoid gratuitous conflicts when merging into the master branch. - try - { - YYCDEBUG << "Starting parse" << std::endl; - -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([yylval], [], [yylloc])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef])[]dnl - - [ /* Initialize the stacks. The initial state will be pushed in - yynewstate, since the latter expects the semantical and the - location values to have been already stored, initialize these - stacks with a primary value. */ - yystate_stack_ = state_stack_type (0); - yysemantic_stack_ = semantic_stack_type (0); - yylocation_stack_ = location_stack_type (0); - yysemantic_stack_.push (yylval); - yylocation_stack_.push (yylloc); - - /* New state. */ - yynewstate: - yystate_stack_.push (yystate); - YYCDEBUG << "Entering state " << yystate << std::endl; - - /* Accept? */ - if (yystate == yyfinal_) - goto yyacceptlab; - - goto yybackup; - - /* Backup. */ - yybackup: - - /* Try to take a decision without lookahead. */ - yyn = yypact_[yystate]; - if (yy_pact_value_is_default_ (yyn)) - goto yydefault; - - /* Read a lookahead token. */ - if (yychar == yyempty_) - { - YYCDEBUG << "Reading a token: "; - yychar = ]b4_c_function_call([yylex], [int], - [b4_api_PREFIX[STYPE*], [&yylval]][]dnl -b4_locations_if([, [[location*], [&yylloc]]])dnl -m4_ifdef([b4_lex_param], [, ]b4_lex_param))[; - } - - /* Convert token to internal form. */ - if (yychar <= yyeof_) - { - yychar = yytoken = yyeof_; - YYCDEBUG << "Now at end of input." << std::endl; - } - else - { - yytoken = yytranslate_ (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) - goto yydefault; - - /* Reduce or error. */ - yyn = yytable_[yyn]; - if (yyn <= 0) - { - if (yy_table_value_is_error_ (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the token being shifted. */ - yychar = yyempty_; - - yysemantic_stack_.push (yylval); - yylocation_stack_.push (yylloc); - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus_) - --yyerrstatus_; - - yystate = yyn; - goto yynewstate; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - yydefault: - yyn = yydefact_[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - yyreduce: - yylen = yyr2_[yyn]; - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. Otherwise, use the top of the stack. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. */ - if (yylen) - yyval = yysemantic_stack_[yylen - 1]; - else - yyval = yysemantic_stack_[0]; - - // Compute the default @@$. - { - slice slice (yylocation_stack_, yylen); - YYLLOC_DEFAULT (yyloc, slice, yylen); - } - - // Perform the reduction. - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - ]b4_user_actions[ - default: - break; - } - - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action - invokes YYABORT, YYACCEPT, or YYERROR immediately after altering - yychar. In the case of YYABORT or YYACCEPT, an incorrect - destructor might then be invoked immediately. In the case of - YYERROR, subsequent parser actions might lead to an incorrect - destructor call or verbose syntax error message before the - lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1_[yyn], &yyval, &yyloc); - - yypop_ (yylen); - yylen = 0; - YY_STACK_PRINT (); - - yysemantic_stack_.push (yyval); - yylocation_stack_.push (yyloc); - - /* Shift the result of the reduction. */ - yyn = yyr1_[yyn]; - yystate = yypgoto_[yyn - yyntokens_] + yystate_stack_[0]; - if (0 <= yystate && yystate <= yylast_ - && yycheck_[yystate] == yystate_stack_[0]) - yystate = yytable_[yystate]; - else - yystate = yydefgoto_[yyn - yyntokens_]; - goto yynewstate; - - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ - yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yytranslate_ (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus_) - { - ++yynerrs_; - if (yychar == yyempty_) - yytoken = yyempty_; - error (yylloc, yysyntax_error_ (yystate, yytoken)); - } - - yyerror_range[1] = yylloc; - if (yyerrstatus_ == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - if (yychar <= yyeof_) - { - /* Return failure if at end of input. */ - if (yychar == yyeof_) - YYABORT; - } - else - { - yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc); - yychar = yyempty_; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - - /*---------------------------------------------------. - | yyerrorlab -- error raised explicitly by YYERROR. | - `---------------------------------------------------*/ - yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (false) - goto yyerrorlab; - - yyerror_range[1] = yylocation_stack_[yylen - 1]; - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - yypop_ (yylen); - yylen = 0; - yystate = yystate_stack_[0]; - goto yyerrlab1; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - yyerrlab1: - yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yystate_stack_.height () == 1) - YYABORT; - - yyerror_range[1] = yylocation_stack_[0]; - yydestruct_ ("Error: popping", - yystos_[yystate], - &yysemantic_stack_[0], &yylocation_stack_[0]); - yypop_ (); - yystate = yystate_stack_[0]; - YY_STACK_PRINT (); - } - - yyerror_range[2] = yylloc; - // Using YYLLOC is tempting, but would change the location of - // the lookahead. YYLOC is available though. - YYLLOC_DEFAULT (yyloc, yyerror_range, 2); - yysemantic_stack_.push (yylval); - yylocation_stack_.push (yyloc); - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos_[yyn], - &yysemantic_stack_[0], &yylocation_stack_[0]); - - yystate = yyn; - goto yynewstate; - - /* Accept. */ - yyacceptlab: - yyresult = 0; - goto yyreturn; - - /* Abort. */ - yyabortlab: - yyresult = 1; - goto yyreturn; - - yyreturn: - if (yychar != yyempty_) - { - /* Make sure we have latest lookahead translation. See comments - at user semantic actions for why this is necessary. */ - yytoken = yytranslate_ (yychar); - yydestruct_ ("Cleanup: discarding lookahead", yytoken, &yylval, - &yylloc); - } - - /* Do not reclaim the symbols of the rule which action triggered - this YYABORT or YYACCEPT. */ - yypop_ (yylen); - while (1 < yystate_stack_.height ()) - { - yydestruct_ ("Cleanup: popping", - yystos_[yystate_stack_[0]], - &yysemantic_stack_[0], - &yylocation_stack_[0]); - yypop_ (); - } - - return yyresult; - } - catch (...) - { - YYCDEBUG << "Exception caught: cleaning lookahead and stack" - << std::endl; - // Do not try to display the values of the reclaimed symbols, - // as their printer might throw an exception. - if (yychar != yyempty_) - { - /* Make sure we have latest lookahead translation. See - comments at user semantic actions for why this is - necessary. */ - yytoken = yytranslate_ (yychar); - yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc); - } - - while (1 < yystate_stack_.height ()) - { - yydestruct_ (YY_NULL, - yystos_[yystate_stack_[0]], - &yysemantic_stack_[0], - &yylocation_stack_[0]); - yypop_ (); - } - throw; - } - } - - // Generate an error message. - std::string - ]b4_parser_class_name[::yysyntax_error_ (]dnl -b4_error_verbose_if([int yystate, int yytoken], - [int, int])[) - {]b4_error_verbose_if([[ - std::string yyres; - // Number of reported tokens (one for the "unexpected", one per - // "expected"). - size_t yycount = 0; - // Its maximum. - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - // Arguments of yyformat. - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yytoken) is - if this state is a consistent state with a default action. - Thus, detecting the absence of a lookahead is sufficient to - determine that there is no unexpected or expected token to - report. In that case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is - a consistent state with a default action. There might have - been a previous inconsistent state, consistent state with a - non-default action, or user semantic action that manipulated - yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state - merging (from LALR or IELR) and default reductions corrupt the - expected token list. However, the list is correct for - canonical LR with one exception: it will still contain any - token that will not be accepted due to an error action in a - later state. - */ - if (yytoken != yyempty_) - { - yyarg[yycount++] = yytname_[yytoken]; - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - for (int yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck_[yyx + yyn] == yyx && yyx != yyterror_ - && !yy_table_value_is_error_ (yytable_[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - break; - } - else - yyarg[yycount++] = yytname_[yyx]; - } - } - } - - char const* yyformat = YY_NULL; - switch (yycount) - { -#define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -#undef YYCASE_ - } - - // Argument number. - size_t yyi = 0; - for (char const* yyp = yyformat; *yyp; ++yyp) - if (yyp[0] == '%' && yyp[1] == 's' && yyi < yycount) - { - yyres += yytnamerr_ (yyarg[yyi++]); - ++yyp; - } - else - yyres += *yyp; - return yyres;]], [[ - return YY_("syntax error");]])[ - } - - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ - const ]b4_int_type(b4_pact_ninf, b4_pact_ninf) b4_parser_class_name::yypact_ninf_ = b4_pact_ninf[; - const ]b4_int_type_for([b4_pact])[ - ]b4_parser_class_name[::yypact_[] = - { - ]b4_pact[ - }; - - /* YYDEFACT[S] -- default reduction number in state S. Performed when - YYTABLE doesn't specify something else to do. Zero means the - default is an error. */ - const ]b4_int_type_for([b4_defact])[ - ]b4_parser_class_name[::yydefact_[] = - { - ]b4_defact[ - }; - - /* YYPGOTO[NTERM-NUM]. */ - const ]b4_int_type_for([b4_pgoto])[ - ]b4_parser_class_name[::yypgoto_[] = - { - ]b4_pgoto[ - }; - - /* YYDEFGOTO[NTERM-NUM]. */ - const ]b4_int_type_for([b4_defgoto])[ - ]b4_parser_class_name[::yydefgoto_[] = - { - ]b4_defgoto[ - }; - - /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF_, syntax error. */ - const ]b4_int_type(b4_table_ninf, b4_table_ninf) b4_parser_class_name::yytable_ninf_ = b4_table_ninf[; - const ]b4_int_type_for([b4_table])[ - ]b4_parser_class_name[::yytable_[] = - { - ]b4_table[ - }; - - /* YYCHECK. */ - const ]b4_int_type_for([b4_check])[ - ]b4_parser_class_name[::yycheck_[] = - { - ]b4_check[ - }; - - /* STOS_[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ - const ]b4_int_type_for([b4_stos])[ - ]b4_parser_class_name[::yystos_[] = - { - ]b4_stos[ - }; - -#if ]b4_api_PREFIX[DEBUG - /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding - to YYLEX-NUM. */ - const ]b4_int_type_for([b4_toknum])[ - ]b4_parser_class_name[::yytoken_number_[] = - { - ]b4_toknum[ - }; -#endif - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ - const ]b4_int_type_for([b4_r1])[ - ]b4_parser_class_name[::yyr1_[] = - { - ]b4_r1[ - }; - - /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ - const ]b4_int_type_for([b4_r2])[ - ]b4_parser_class_name[::yyr2_[] = - { - ]b4_r2[ - }; - -]b4_token_table_if([], [[#if ]b4_api_PREFIX[DEBUG]])[ - /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at \a yyntokens_, nonterminals. */ - const char* - const ]b4_parser_class_name[::yytname_[] = - { - ]b4_tname[ - }; - -]b4_token_table_if([[#if ]b4_api_PREFIX[DEBUG]])[ - /* YYRHS -- A `-1'-separated list of the rules' RHS. */ - const ]b4_parser_class_name[::rhs_number_type - ]b4_parser_class_name[::yyrhs_[] = - { - ]b4_rhs[ - }; - - /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ - const ]b4_int_type_for([b4_prhs])[ - ]b4_parser_class_name[::yyprhs_[] = - { - ]b4_prhs[ - }; - - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ - const ]b4_int_type_for([b4_rline])[ - ]b4_parser_class_name[::yyrline_[] = - { - ]b4_rline[ - }; - - // Print the state stack on the debug stream. - void - ]b4_parser_class_name[::yystack_print_ () - { - *yycdebug_ << "Stack now"; - for (state_stack_type::const_iterator i = yystate_stack_.begin (); - i != yystate_stack_.end (); ++i) - *yycdebug_ << ' ' << *i; - *yycdebug_ << std::endl; - } - - // Report on the debug stream that the rule \a yyrule is going to be reduced. - void - ]b4_parser_class_name[::yy_reduce_print_ (int yyrule) - { - unsigned int yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - /* Print the symbols being reduced, and their result. */ - *yycdebug_ << "Reducing stack by rule " << yyrule - 1 - << " (line " << yylno << "):" << std::endl; - /* The symbols being reduced. */ - for (int yyi = 0; yyi < yynrhs; yyi++) - YY_SYMBOL_PRINT (" $" << yyi + 1 << " =", - yyrhs_[yyprhs_[yyrule] + yyi], - &]b4_rhs_value(yynrhs, yyi + 1)[, - &]b4_rhs_location(yynrhs, yyi + 1)[); - } -#endif // ]b4_api_PREFIX[DEBUG - - /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ - ]b4_parser_class_name[::token_number_type - ]b4_parser_class_name[::yytranslate_ (int t) - { - static - const token_number_type - translate_table[] = - { - ]b4_translate[ - }; - if ((unsigned int) t <= yyuser_token_number_max_) - return translate_table[t]; - else - return yyundef_token_; - } - - const int ]b4_parser_class_name[::yyeof_ = 0; - const int ]b4_parser_class_name[::yylast_ = ]b4_last[; - const int ]b4_parser_class_name[::yynnts_ = ]b4_nterms_number[; - const int ]b4_parser_class_name[::yyempty_ = -2; - const int ]b4_parser_class_name[::yyfinal_ = ]b4_final_state_number[; - const int ]b4_parser_class_name[::yyterror_ = 1; - const int ]b4_parser_class_name[::yyerrcode_ = 256; - const int ]b4_parser_class_name[::yyntokens_ = ]b4_tokens_number[; - - const unsigned int ]b4_parser_class_name[::yyuser_token_number_max_ = ]b4_user_token_number_max[; - const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[; - -]b4_namespace_close[ -]b4_epilogue[]dnl -b4_output_end() diff --git a/tools/data/lalr1.java b/tools/data/lalr1.java deleted file mode 100644 index f8c5c721..00000000 --- a/tools/data/lalr1.java +++ /dev/null @@ -1,927 +0,0 @@ -# Java skeleton for Bison -*- autoconf -*- - -# Copyright (C) 2007-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_include(b4_pkgdatadir/[java.m4]) - -b4_defines_if([b4_fatal([%s: %%defines does not make sense in Java], [b4_skeleton])]) -m4_ifval(m4_defn([b4_symbol_destructors]), - [b4_fatal([%s: %%destructor does not make sense in Java], [b4_skeleton])], - []) - -b4_output_begin([b4_parser_file_name]) -b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java], - [2007-2012]) - -b4_percent_define_ifdef([package], [package b4_percent_define_get([package]); -])[/* First part of user declarations. */ -]b4_pre_prologue -b4_percent_code_get([[imports]]) -[/** - * A Bison parser, automatically generated from ]m4_bpatsubst(b4_file_name, [^"\(.*\)"$], [\1])[. - * - * @@author LALR (1) parser skeleton written by Paolo Bonzini. - */ -]b4_public_if([public ])dnl -b4_abstract_if([abstract ])dnl -b4_final_if([final ])dnl -b4_strictfp_if([strictfp ])dnl -[class ]b4_parser_class_name[]dnl -b4_percent_define_get3([extends], [ extends ])dnl -b4_percent_define_get3([implements], [ implements ])[ -{ - ]b4_identification[ - - /** True if verbose error messages are enabled. */ - public boolean errorVerbose = ]b4_flag_value([error_verbose]); - -b4_locations_if([[ - /** - * A class defining a pair of positions. Positions, defined by the - * ]b4_position_type[ class, denote a point in the input. - * Locations represent a part of the input through the beginning - * and ending positions. */ - public class ]b4_location_type[ { - /** The first, inclusive, position in the range. */ - public ]b4_position_type[ begin; - - /** The first position beyond the range. */ - public ]b4_position_type[ end; - - /** - * Create a ]b4_location_type[ denoting an empty range located at - * a given point. - * @@param loc The position at which the range is anchored. */ - public ]b4_location_type[ (]b4_position_type[ loc) { - this.begin = this.end = loc; - } - - /** - * Create a ]b4_location_type[ from the endpoints of the range. - * @@param begin The first position included in the range. - * @@param end The first position beyond the range. */ - public ]b4_location_type[ (]b4_position_type[ begin, ]b4_position_type[ end) { - this.begin = begin; - this.end = end; - } - - /** - * Print a representation of the location. For this to be correct, - * ]b4_position_type[ should override the equals - * method. */ - public String toString () { - if (begin.equals (end)) - return begin.toString (); - else - return begin.toString () + "-" + end.toString (); - } - } - -]]) - -[ /** Token returned by the scanner to signal the end of its input. */ - public static final int EOF = 0;] - -b4_token_enums(b4_tokens) - - b4_locations_if([[ - private ]b4_location_type[ yylloc (YYStack rhs, int n) - { - if (n > 0) - return new ]b4_location_type[ (rhs.locationAt (n-1).begin, rhs.locationAt (0).end); - else - return new ]b4_location_type[ (rhs.locationAt (0).end); - }]])[ - - /** - * Communication interface between the scanner and the Bison-generated - * parser ]b4_parser_class_name[. - */ - public interface Lexer { - ]b4_locations_if([[/** - * Method to retrieve the beginning position of the last scanned token. - * @@return the position at which the last scanned token starts. */ - ]b4_position_type[ getStartPos (); - - /** - * Method to retrieve the ending position of the last scanned token. - * @@return the first position beyond the last scanned token. */ - ]b4_position_type[ getEndPos ();]])[ - - /** - * Method to retrieve the semantic value of the last scanned token. - * @@return the semantic value of the last scanned token. */ - ]b4_yystype[ getLVal (); - - /** - * Entry point for the scanner. Returns the token identifier corresponding - * to the next token and prepares to return the semantic value - * ]b4_locations_if([and beginning/ending positions ])[of the token. - * @@return the token identifier corresponding to the next token. */ - int yylex () ]b4_maybe_throws([b4_lex_throws])[; - - /** - * Entry point for error reporting. Emits an error - * ]b4_locations_if([referring to the given location ])[in a user-defined way. - * - * ]b4_locations_if([[@@param loc The location of the element to which the - * error message is related]])[ - * @@param s The string for the error message. */ - void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String s);] - } - - b4_lexer_if([[private class YYLexer implements Lexer { -]b4_percent_code_get([[lexer]])[ - } - - ]])[/** The object doing lexical analysis for us. */ - private Lexer yylexer; - ] - b4_parse_param_vars - -b4_lexer_if([[ - /** - * Instantiates the Bison-generated parser. - */ - public ]b4_parser_class_name (b4_parse_param_decl([b4_lex_param_decl])[) { - this.yylexer = new YYLexer(]b4_lex_param_call[); - ]b4_parse_param_cons[ - } -]]) - - /** - * Instantiates the Bison-generated parser. - * @@param yylexer The scanner that will supply tokens to the parser. - */ - b4_lexer_if([[protected]], [[public]]) b4_parser_class_name[ (]b4_parse_param_decl([[Lexer yylexer]])[) { - this.yylexer = yylexer; - ]b4_parse_param_cons[ - } - - private java.io.PrintStream yyDebugStream = System.err; - - /** - * Return the PrintStream on which the debugging output is - * printed. - */ - public final java.io.PrintStream getDebugStream () { return yyDebugStream; } - - /** - * Set the PrintStream on which the debug output is printed. - * @@param s The stream that is used for debugging output. - */ - public final void setDebugStream(java.io.PrintStream s) { yyDebugStream = s; } - - private int yydebug = 0; - - /** - * Answer the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - */ - public final int getDebugLevel() { return yydebug; } - - /** - * Set the verbosity of the debugging output; 0 means that all kinds of - * output from the parser are suppressed. - * @@param level The verbosity level for debugging output. - */ - public final void setDebugLevel(int level) { yydebug = level; } - - private final int yylex () ]b4_maybe_throws([b4_lex_throws]) [{ - return yylexer.yylex (); - } - protected final void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String s) { - yylexer.yyerror (]b4_locations_if([loc, ])[s); - } - - ]b4_locations_if([ - protected final void yyerror (String s) { - yylexer.yyerror ((]b4_location_type[)null, s); - } - protected final void yyerror (]b4_position_type[ loc, String s) { - yylexer.yyerror (new ]b4_location_type[ (loc), s); - }]) - - [protected final void yycdebug (String s) { - if (yydebug > 0) - yyDebugStream.println (s); - } - - private final class YYStack { - private int[] stateStack = new int[16]; - ]b4_locations_if([[private ]b4_location_type[[] locStack = new ]b4_location_type[[16];]])[ - private ]b4_yystype[[] valueStack = new ]b4_yystype[[16]; - - public int size = 16; - public int height = -1; - - public final void push (int state, ]b4_yystype[ value]dnl - b4_locations_if([, ]b4_location_type[ loc])[) { - height++; - if (size == height) - { - int[] newStateStack = new int[size * 2]; - System.arraycopy (stateStack, 0, newStateStack, 0, height); - stateStack = newStateStack; - ]b4_locations_if([[ - ]b4_location_type[[] newLocStack = new ]b4_location_type[[size * 2]; - System.arraycopy (locStack, 0, newLocStack, 0, height); - locStack = newLocStack;]]) - - b4_yystype[[] newValueStack = new ]b4_yystype[[size * 2]; - System.arraycopy (valueStack, 0, newValueStack, 0, height); - valueStack = newValueStack; - - size *= 2; - } - - stateStack[height] = state; - ]b4_locations_if([[locStack[height] = loc;]])[ - valueStack[height] = value; - } - - public final void pop () { - pop (1); - } - - public final void pop (int num) { - // Avoid memory leaks... garbage collection is a white lie! - if (num > 0) { - java.util.Arrays.fill (valueStack, height - num + 1, height + 1, null); - ]b4_locations_if([[java.util.Arrays.fill (locStack, height - num + 1, height + 1, null);]])[ - } - height -= num; - } - - public final int stateAt (int i) { - return stateStack[height - i]; - } - - ]b4_locations_if([[public final ]b4_location_type[ locationAt (int i) { - return locStack[height - i]; - } - - ]])[public final ]b4_yystype[ valueAt (int i) { - return valueStack[height - i]; - } - - // Print the state stack on the debug stream. - public void print (java.io.PrintStream out) - { - out.print ("Stack now"); - - for (int i = 0; i <= height; i++) - { - out.print (' '); - out.print (stateStack[i]); - } - out.println (); - } - } - - /** - * Returned by a Bison action in order to stop the parsing process and - * return success (true). */ - public static final int YYACCEPT = 0; - - /** - * Returned by a Bison action in order to stop the parsing process and - * return failure (false). */ - public static final int YYABORT = 1; - - /** - * Returned by a Bison action in order to start error recovery without - * printing an error message. */ - public static final int YYERROR = 2; - - // Internal return codes that are not supported for user semantic - // actions. - private static final int YYERRLAB = 3; - private static final int YYNEWSTATE = 4; - private static final int YYDEFAULT = 5; - private static final int YYREDUCE = 6; - private static final int YYERRLAB1 = 7; - private static final int YYRETURN = 8; - - private int yyerrstatus_ = 0; - - /** - * Return whether error recovery is being done. In this state, the parser - * reads token until it reaches a known state, and then restarts normal - * operation. */ - public final boolean recovering () - { - return yyerrstatus_ == 0; - } - - private int yyaction (int yyn, YYStack yystack, int yylen) ]b4_maybe_throws([b4_throws])[ - { - ]b4_yystype[ yyval; - ]b4_locations_if([b4_location_type[ yyloc = yylloc (yystack, yylen);]])[ - - /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. Otherwise, use the top of the stack. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. */ - if (yylen > 0) - yyval = yystack.valueAt (yylen - 1); - else - yyval = yystack.valueAt (0); - - yy_reduce_print (yyn, yystack); - - switch (yyn) - { - ]b4_user_actions[ - default: break; - } - - yy_symbol_print ("-> $$ =", yyr1_[yyn], yyval]b4_locations_if([, yyloc])[); - - yystack.pop (yylen); - yylen = 0; - - /* Shift the result of the reduction. */ - yyn = yyr1_[yyn]; - int yystate = yypgoto_[yyn - yyntokens_] + yystack.stateAt (0); - if (0 <= yystate && yystate <= yylast_ - && yycheck_[yystate] == yystack.stateAt (0)) - yystate = yytable_[yystate]; - else - yystate = yydefgoto_[yyn - yyntokens_]; - - yystack.push (yystate, yyval]b4_locations_if([, yyloc])[); - return YYNEWSTATE; - } - - /* Return YYSTR after stripping away unnecessary quotes and - backslashes, so that it's suitable for yyerror. The heuristic is - that double-quoting is unnecessary unless the string contains an - apostrophe, a comma, or backslash (other than backslash-backslash). - YYSTR is taken from yytname. */ - private final String yytnamerr_ (String yystr) - { - if (yystr.charAt (0) == '"') - { - StringBuffer yyr = new StringBuffer (); - strip_quotes: for (int i = 1; i < yystr.length (); i++) - switch (yystr.charAt (i)) - { - case '\'': - case ',': - break strip_quotes; - - case '\\': - if (yystr.charAt(++i) != '\\') - break strip_quotes; - /* Fall through. */ - default: - yyr.append (yystr.charAt (i)); - break; - - case '"': - return yyr.toString (); - } - } - else if (yystr.equals ("$end")) - return "end of input"; - - return yystr; - } - - /*--------------------------------. - | Print this symbol on YYOUTPUT. | - `--------------------------------*/ - - private void yy_symbol_print (String s, int yytype, - ]b4_yystype[ yyvaluep]dnl - b4_locations_if([, Object yylocationp])[) - { - if (yydebug > 0) - yycdebug (s + (yytype < yyntokens_ ? " token " : " nterm ") - + yytname_[yytype] + " ("]b4_locations_if([ - + yylocationp + ": "])[ - + (yyvaluep == null ? "(null)" : yyvaluep.toString ()) + ")"); - } - - /** - * Parse input from the scanner that was specified at object construction - * time. Return whether the end of the input was reached successfully. - * - * @@return true if the parsing succeeds. Note that this does not - * imply that there were no syntax errors. - */ - public boolean parse () ]b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])[ - { - /// Lookahead and lookahead in internal form. - int yychar = yyempty_; - int yytoken = 0; - - /* State. */ - int yyn = 0; - int yylen = 0; - int yystate = 0; - - YYStack yystack = new YYStack (); - - /* Error handling. */ - int yynerrs_ = 0; - ]b4_locations_if([/// The location where the error started. - ]b4_location_type[ yyerrloc = null; - - /// ]b4_location_type[ of the lookahead. - ]b4_location_type[ yylloc = new ]b4_location_type[ (null, null); - - /// @@$. - ]b4_location_type[ yyloc;]) - - /// Semantic value of the lookahead. - b4_yystype[ yylval = null; - - yycdebug ("Starting parse\n"); - yyerrstatus_ = 0; - -]m4_ifdef([b4_initial_action], [ -b4_dollar_pushdef([yylval], [], [yylloc])dnl -/* User initialization code. */ -b4_user_initial_action -b4_dollar_popdef])[]dnl - - [ /* Initialize the stack. */ - yystack.push (yystate, yylval]b4_locations_if([, yylloc])[); - - int label = YYNEWSTATE; - for (;;) - switch (label) - { - /* New state. Unlike in the C/C++ skeletons, the state is already - pushed when we come here. */ - case YYNEWSTATE: - yycdebug ("Entering state " + yystate + "\n"); - if (yydebug > 0) - yystack.print (yyDebugStream); - - /* Accept? */ - if (yystate == yyfinal_) - return true; - - /* Take a decision. First try without lookahead. */ - yyn = yypact_[yystate]; - if (yy_pact_value_is_default_ (yyn)) - { - label = YYDEFAULT; - break; - } - - /* Read a lookahead token. */ - if (yychar == yyempty_) - { - yycdebug ("Reading a token: "); - yychar = yylex ();] - b4_locations_if([[ - yylloc = new ]b4_location_type[(yylexer.getStartPos (), - yylexer.getEndPos ());]]) - yylval = yylexer.getLVal ();[ - } - - /* Convert token to internal form. */ - if (yychar <= EOF) - { - yychar = yytoken = EOF; - yycdebug ("Now at end of input.\n"); - } - else - { - yytoken = yytranslate_ (yychar); - yy_symbol_print ("Next token is", yytoken, - yylval]b4_locations_if([, yylloc])[); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || yylast_ < yyn || yycheck_[yyn] != yytoken) - label = YYDEFAULT; - - /* <= 0 means reduce or error. */ - else if ((yyn = yytable_[yyn]) <= 0) - { - if (yy_table_value_is_error_ (yyn)) - label = YYERRLAB; - else - { - yyn = -yyn; - label = YYREDUCE; - } - } - - else - { - /* Shift the lookahead token. */ - yy_symbol_print ("Shifting", yytoken, - yylval]b4_locations_if([, yylloc])[); - - /* Discard the token being shifted. */ - yychar = yyempty_; - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus_ > 0) - --yyerrstatus_; - - yystate = yyn; - yystack.push (yystate, yylval]b4_locations_if([, yylloc])[); - label = YYNEWSTATE; - } - break; - - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ - case YYDEFAULT: - yyn = yydefact_[yystate]; - if (yyn == 0) - label = YYERRLAB; - else - label = YYREDUCE; - break; - - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ - case YYREDUCE: - yylen = yyr2_[yyn]; - label = yyaction (yyn, yystack, yylen); - yystate = yystack.stateAt (0); - break; - - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ - case YYERRLAB: - /* If not already recovering from an error, report this error. */ - if (yyerrstatus_ == 0) - { - ++yynerrs_; - if (yychar == yyempty_) - yytoken = yyempty_; - yyerror (]b4_locations_if([yylloc, ])[yysyntax_error (yystate, yytoken)); - } - - ]b4_locations_if([yyerrloc = yylloc;])[ - if (yyerrstatus_ == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= EOF) - { - /* Return failure if at end of input. */ - if (yychar == EOF) - return false; - } - else - yychar = yyempty_; - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - label = YYERRLAB1; - break; - - /*---------------------------------------------------. - | errorlab -- error raised explicitly by YYERROR. | - `---------------------------------------------------*/ - case YYERROR: - - ]b4_locations_if([yyerrloc = yystack.locationAt (yylen - 1);])[ - /* Do not reclaim the symbols of the rule which action triggered - this YYERROR. */ - yystack.pop (yylen); - yylen = 0; - yystate = yystack.stateAt (0); - label = YYERRLAB1; - break; - - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ - case YYERRLAB1: - yyerrstatus_ = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - yyn += yyterror_; - if (0 <= yyn && yyn <= yylast_ && yycheck_[yyn] == yyterror_) - { - yyn = yytable_[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yystack.height == 0) - return false; - - ]b4_locations_if([yyerrloc = yystack.locationAt (0);])[ - yystack.pop (); - yystate = yystack.stateAt (0); - if (yydebug > 0) - yystack.print (yyDebugStream); - } - - ]b4_locations_if([ - /* Muck with the stack to setup for yylloc. */ - yystack.push (0, null, yylloc); - yystack.push (0, null, yyerrloc); - yyloc = yylloc (yystack, 2); - yystack.pop (2);])[ - - /* Shift the error token. */ - yy_symbol_print ("Shifting", yystos_[yyn], - yylval]b4_locations_if([, yyloc])[); - - yystate = yyn; - yystack.push (yyn, yylval]b4_locations_if([, yyloc])[); - label = YYNEWSTATE; - break; - - /* Accept. */ - case YYACCEPT: - return true; - - /* Abort. */ - case YYABORT: - return false; - } - } - - // Generate an error message. - private String yysyntax_error (int yystate, int tok) - { - if (errorVerbose) - { - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. - See - - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, - then the only way this function was invoked is if the - default action is an error action. In that case, don't - check for expected tokens because there are none. - - The only way there can be no lookahead present (in tok) is - if this state is a consistent state with a default action. - Thus, detecting the absence of a lookahead is sufficient to - determine that there is no unexpected or expected token to - report. In that case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this - state is a consistent state with a default action. There - might have been a previous inconsistent state, consistent - state with a non-default action, or user semantic action - that manipulated yychar. (However, yychar is currently out - of scope during semantic actions.) - - Of course, the expected token list depends on states to - have correct lookahead information, and it depends on the - parser not to perform extra reductions after fetching a - lookahead from the scanner and before detecting a syntax - error. Thus, state merging (from LALR or IELR) and default - reductions corrupt the expected token list. However, the - list is correct for canonical LR with one exception: it - will still contain any token that will not be accepted due - to an error action in a later state. - */ - if (tok != yyempty_) - { - // FIXME: This method of building the message is not compatible - // with internationalization. - StringBuffer res = - new StringBuffer ("syntax error, unexpected "); - res.append (yytnamerr_ (yytname_[tok])); - int yyn = yypact_[yystate]; - if (!yy_pact_value_is_default_ (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative - indexes in YYCHECK. In other words, skip the first - -YYN actions for this state because they are default - actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = yylast_ - yyn + 1; - int yyxend = yychecklim < yyntokens_ ? yychecklim : yyntokens_; - int count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ - && !yy_table_value_is_error_ (yytable_[x + yyn])) - ++count; - if (count < 5) - { - count = 0; - for (int x = yyxbegin; x < yyxend; ++x) - if (yycheck_[x + yyn] == x && x != yyterror_ - && !yy_table_value_is_error_ (yytable_[x + yyn])) - { - res.append (count++ == 0 ? ", expecting " : " or "); - res.append (yytnamerr_ (yytname_[x])); - } - } - } - return res.toString (); - } - } - - return "syntax error"; - } - - /** - * Whether the given yypact_ value indicates a defaulted state. - * @@param yyvalue the value to check - */ - private static boolean yy_pact_value_is_default_ (int yyvalue) - { - return yyvalue == yypact_ninf_; - } - - /** - * Whether the given yytable_ value indicates a syntax error. - * @@param yyvalue the value to check - */ - private static boolean yy_table_value_is_error_ (int yyvalue) - { - return yyvalue == yytable_ninf_; - } - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ - private static final ]b4_int_type_for([b4_pact])[ yypact_ninf_ = ]b4_pact_ninf[; - private static final ]b4_int_type_for([b4_pact])[ yypact_[] = - { - ]b4_pact[ - }; - - /* YYDEFACT[S] -- default reduction number in state S. Performed when - YYTABLE doesn't specify something else to do. Zero means the - default is an error. */ - private static final ]b4_int_type_for([b4_defact])[ yydefact_[] = - { - ]b4_defact[ - }; - - /* YYPGOTO[NTERM-NUM]. */ - private static final ]b4_int_type_for([b4_pgoto])[ yypgoto_[] = - { - ]b4_pgoto[ - }; - - /* YYDEFGOTO[NTERM-NUM]. */ - private static final ]b4_int_type_for([b4_defgoto])[ - yydefgoto_[] = - { - ]b4_defgoto[ - }; - - /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF_, syntax error. */ - private static final ]b4_int_type_for([b4_table])[ yytable_ninf_ = ]b4_table_ninf[; - private static final ]b4_int_type_for([b4_table])[ - yytable_[] = - { - ]b4_table[ - }; - - /* YYCHECK. */ - private static final ]b4_int_type_for([b4_check])[ - yycheck_[] = - { - ]b4_check[ - }; - - /* STOS_[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ - private static final ]b4_int_type_for([b4_stos])[ - yystos_[] = - { - ]b4_stos[ - }; - - /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding - to YYLEX-NUM. */ - private static final ]b4_int_type_for([b4_toknum])[ - yytoken_number_[] = - { - ]b4_toknum[ - }; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ - private static final ]b4_int_type_for([b4_r1])[ - yyr1_[] = - { - ]b4_r1[ - }; - - /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ - private static final ]b4_int_type_for([b4_r2])[ - yyr2_[] = - { - ]b4_r2[ - }; - - /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at \a yyntokens_, nonterminals. */ - private static final String yytname_[] = - { - ]b4_tname[ - }; - - /* YYRHS -- A `-1'-separated list of the rules' RHS. */ - private static final ]b4_int_type_for([b4_rhs])[ yyrhs_[] = - { - ]b4_rhs[ - }; - - /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ - private static final ]b4_int_type_for([b4_prhs])[ yyprhs_[] = - { - ]b4_prhs[ - }; - - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ - private static final ]b4_int_type_for([b4_rline])[ yyrline_[] = - { - ]b4_rline[ - }; - - // Report on the debug stream that the rule yyrule is going to be reduced. - private void yy_reduce_print (int yyrule, YYStack yystack) - { - if (yydebug == 0) - return; - - int yylno = yyrline_[yyrule]; - int yynrhs = yyr2_[yyrule]; - /* Print the symbols being reduced, and their result. */ - yycdebug ("Reducing stack by rule " + (yyrule - 1) - + " (line " + yylno + "), "); - - /* The symbols being reduced. */ - for (int yyi = 0; yyi < yynrhs; yyi++) - yy_symbol_print (" $" + (yyi + 1) + " =", - yyrhs_[yyprhs_[yyrule] + yyi], - ]b4_rhs_value(yynrhs, yyi + 1)b4_locations_if([, - b4_rhs_location(yynrhs, yyi + 1)])[); - } - - /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ - private static final ]b4_int_type_for([b4_translate])[ yytranslate_table_[] = - { - ]b4_translate[ - }; - - private static final ]b4_int_type_for([b4_translate])[ yytranslate_ (int t) - { - if (t >= 0 && t <= yyuser_token_number_max_) - return yytranslate_table_[t]; - else - return yyundef_token_; - } - - private static final int yylast_ = ]b4_last[; - private static final int yynnts_ = ]b4_nterms_number[; - private static final int yyempty_ = -2; - private static final int yyfinal_ = ]b4_final_state_number[; - private static final int yyterror_ = 1; - private static final int yyerrcode_ = 256; - private static final int yyntokens_ = ]b4_tokens_number[; - - private static final int yyuser_token_number_max_ = ]b4_user_token_number_max[; - private static final int yyundef_token_ = ]b4_undef_token_number[; - -]/* User implementation code. */ -b4_percent_code_get[]dnl - -} - -b4_epilogue -b4_output_end() diff --git a/tools/data/location.cc b/tools/data/location.cc deleted file mode 100644 index 8e831241..00000000 --- a/tools/data/location.cc +++ /dev/null @@ -1,299 +0,0 @@ -# C++ skeleton for Bison - -# Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -b4_output_begin([b4_dir_prefix[]position.hh]) -b4_copyright([Positions for Bison parsers in C++], - [2002-2007, 2009-2012])[ - -/** - ** \file ]b4_dir_prefix[position.hh - ** Define the ]b4_namespace_ref[::position class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]position.hh])[ - -# include // std::max -# include -# include - -]b4_null_define[ - -]b4_namespace_open[ - /// Abstract a position. - class position - { - public: -]m4_ifdef([b4_location_constructors], [[ - /// Construct a position. - explicit position (]b4_percent_define_get([[filename_type]])[* f = YY_NULL, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - : filename (f) - , line (l) - , column (c) - { - } - -]])[ - /// Initialization. - void initialize (]b4_percent_define_get([[filename_type]])[* fn = YY_NULL, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - { - filename = fn; - line = l; - column = c; - } - - /** \name Line and Column related manipulators - ** \{ */ - /// (line related) Advance to the COUNT next lines. - void lines (int count = 1) - { - column = ]b4_location_initial_column[u; - line += count; - } - - /// (column related) Advance to the COUNT next columns. - void columns (int count = 1) - { - column = std::max (]b4_location_initial_column[u, column + count); - } - /** \} */ - - /// File name to which this position refers. - ]b4_percent_define_get([[filename_type]])[* filename; - /// Current line number. - unsigned int line; - /// Current column number. - unsigned int column; - }; - - /// Add and assign a position. - inline position& - operator+= (position& res, const int width) - { - res.columns (width); - return res; - } - - /// Add two position objects. - inline const position - operator+ (const position& begin, const int width) - { - position res = begin; - return res += width; - } - - /// Add and assign a position. - inline position& - operator-= (position& res, const int width) - { - return res += -width; - } - - /// Add two position objects. - inline const position - operator- (const position& begin, const int width) - { - return begin + -width; - } -]b4_percent_define_flag_if([[define_location_comparison]], [[ - /// Compare two position objects. - inline bool - operator== (const position& pos1, const position& pos2) - { - return (pos1.line == pos2.line - && pos1.column == pos2.column - && (pos1.filename == pos2.filename - || (pos1.filename && pos2.filename - && *pos1.filename == *pos2.filename))); - } - - /// Compare two position objects. - inline bool - operator!= (const position& pos1, const position& pos2) - { - return !(pos1 == pos2); - } -]])[ - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param pos a reference to the position to redirect - */ - template - inline std::basic_ostream& - operator<< (std::basic_ostream& ostr, const position& pos) - { - if (pos.filename) - ostr << *pos.filename << ':'; - return ostr << pos.line << '.' << pos.column; - } - -]b4_namespace_close[ -]b4_cpp_guard_close([b4_dir_prefix[]position.hh]) -b4_output_end() - - -b4_output_begin([b4_dir_prefix[]location.hh]) -b4_copyright([Locations for Bison parsers in C++], - [2002-2007, 2009-2012])[ - -/** - ** \file ]b4_dir_prefix[location.hh - ** Define the ]b4_namespace_ref[::location class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]location.hh])[ - -# include "position.hh" - -]b4_namespace_open[ - - /// Abstract a location. - class location - { - public: -]m4_ifdef([b4_location_constructors], [ - /// Construct a location from \a b to \a e. - location (const position& b, const position& e) - : begin (b) - , end (e) - { - } - - /// Construct a 0-width location in \a p. - explicit location (const position& p = position ()) - : begin (p) - , end (p) - { - } - - /// Construct a 0-width location in \a f, \a l, \a c. - explicit location (]b4_percent_define_get([[filename_type]])[* f, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - : begin (f, l, c) - , end (f, l, c) - { - } - -])[ - /// Initialization. - void initialize (]b4_percent_define_get([[filename_type]])[* f = YY_NULL, - unsigned int l = ]b4_location_initial_line[u, - unsigned int c = ]b4_location_initial_column[u) - { - begin.initialize (f, l, c); - end = begin; - } - - /** \name Line and Column related manipulators - ** \{ */ - public: - /// Reset initial location to final location. - void step () - { - begin = end; - } - - /// Extend the current location to the COUNT next columns. - void columns (unsigned int count = 1) - { - end += count; - } - - /// Extend the current location to the COUNT next lines. - void lines (unsigned int count = 1) - { - end.lines (count); - } - /** \} */ - - - public: - /// Beginning of the located region. - position begin; - /// End of the located region. - position end; - }; - - /// Join two location objects to create a location. - inline const location operator+ (const location& begin, const location& end) - { - location res = begin; - res.end = end.end; - return res; - } - - /// Add two location objects. - inline const location operator+ (const location& begin, unsigned int width) - { - location res = begin; - res.columns (width); - return res; - } - - /// Add and assign a location. - inline location& operator+= (location& res, unsigned int width) - { - res.columns (width); - return res; - } -]b4_percent_define_flag_if([[define_location_comparison]], [[ - /// Compare two location objects. - inline bool - operator== (const location& loc1, const location& loc2) - { - return loc1.begin == loc2.begin && loc1.end == loc2.end; - } - - /// Compare two location objects. - inline bool - operator!= (const location& loc1, const location& loc2) - { - return !(loc1 == loc2); - } -]])[ - /** \brief Intercept output stream redirection. - ** \param ostr the destination output stream - ** \param loc a reference to the location to redirect - ** - ** Avoid duplicate information. - */ - template - inline std::basic_ostream& - operator<< (std::basic_ostream& ostr, const location& loc) - { - position last = loc.end - 1; - ostr << loc.begin; - if (last.filename - && (!loc.begin.filename - || *loc.begin.filename != *last.filename)) - ostr << '-' << last; - else if (loc.begin.line != last.line) - ostr << '-' << last.line << '.' << last.column; - else if (loc.begin.column != last.column) - ostr << '-' << last.column; - return ostr; - } - -]b4_namespace_close[ - -]b4_cpp_guard_close([b4_dir_prefix[]location.hh]) -b4_output_end() diff --git a/tools/data/m4sugar/foreach.m4 b/tools/data/m4sugar/foreach.m4 deleted file mode 100644 index c20c00ae..00000000 --- a/tools/data/m4sugar/foreach.m4 +++ /dev/null @@ -1,362 +0,0 @@ -# -*- Autoconf -*- -# This file is part of Autoconf. -# foreach-based replacements for recursive functions. -# Speeds up GNU M4 1.4.x by avoiding quadratic $@ recursion, but penalizes -# GNU M4 1.6 by requiring more memory and macro expansions. -# -# Copyright (C) 2008-2012 Free Software Foundation, Inc. - -# This file is part of Autoconf. This program is free -# software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the Autoconf Configure Script Exception, -# version 3.0, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License -# and a copy of the Autoconf Configure Script Exception along with -# this program; see the files COPYINGv3 and COPYING.EXCEPTION -# respectively. If not, see . - -# Written by Eric Blake. - -# In M4 1.4.x, every byte of $@ is rescanned. This means that an -# algorithm on n arguments that recurses with one less argument each -# iteration will scan n * (n + 1) / 2 arguments, for O(n^2) time. In -# M4 1.6, this was fixed so that $@ is only scanned once, then -# back-references are made to information stored about the scan. -# Thus, n iterations need only scan n arguments, for O(n) time. -# Additionally, in M4 1.4.x, recursive algorithms did not clean up -# memory very well, requiring O(n^2) memory rather than O(n) for n -# iterations. -# -# This file is designed to overcome the quadratic nature of $@ -# recursion by writing a variant of m4_foreach that uses m4_for rather -# than $@ recursion to operate on the list. This involves more macro -# expansions, but avoids the need to rescan a quadratic number of -# arguments, making these replacements very attractive for M4 1.4.x. -# On the other hand, in any version of M4, expanding additional macros -# costs additional time; therefore, in M4 1.6, where $@ recursion uses -# fewer macros, these replacements actually pessimize performance. -# Additionally, the use of $10 to mean the tenth argument violates -# POSIX; although all versions of m4 1.4.x support this meaning, a -# future m4 version may switch to take it as the first argument -# concatenated with a literal 0, so the implementations in this file -# are not future-proof. Thus, this file is conditionally included as -# part of m4_init(), only when it is detected that M4 probably has -# quadratic behavior (ie. it lacks the macro __m4_version__). -# -# Please keep this file in sync with m4sugar.m4. - -# _m4_foreach(PRE, POST, IGNORED, ARG...) -# --------------------------------------- -# Form the common basis of the m4_foreach and m4_map macros. For each -# ARG, expand PRE[ARG]POST[]. The IGNORED argument makes recursion -# easier, and must be supplied rather than implicit. -# -# This version minimizes the number of times that $@ is evaluated by -# using m4_for to generate a boilerplate into _m4_f then passing $@ to -# that temporary macro. Thus, the recursion is done in m4_for without -# reparsing any user input, and is not quadratic. For an idea of how -# this works, note that m4_foreach(i,[1,2],[i]) calls -# _m4_foreach([m4_define([i],],[)i],[],[1],[2]) -# which defines _m4_f: -# $1[$4]$2[]$1[$5]$2[]_m4_popdef([_m4_f]) -# then calls _m4_f([m4_define([i],],[)i],[],[1],[2]) for a net result: -# m4_define([i],[1])i[]m4_define([i],[2])i[]_m4_popdef([_m4_f]). -m4_define([_m4_foreach], -[m4_if([$#], [3], [], - [m4_pushdef([_m4_f], _m4_for([4], [$#], [1], - [$0_([1], [2],], [)])[_m4_popdef([_m4_f])])_m4_f($@)])]) - -m4_define([_m4_foreach_], -[[$$1[$$3]$$2[]]]) - -# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT) -# ----------------------------------------------------------- -# Find the first VAL that SWITCH matches, and expand the corresponding -# IF-VAL. If there are no matches, expand DEFAULT. -# -# Use m4_for to create a temporary macro in terms of a boilerplate -# m4_if with final cleanup. If $# is even, we have DEFAULT; if it is -# odd, then rounding the last $# up in the temporary macro is -# harmless. For example, both m4_case(1,2,3,4,5) and -# m4_case(1,2,3,4,5,6) result in the intermediate _m4_case being -# m4_if([$1],[$2],[$3],[$1],[$4],[$5],_m4_popdef([_m4_case])[$6]) -m4_define([m4_case], -[m4_if(m4_eval([$# <= 2]), [1], [$2], -[m4_pushdef([_$0], [m4_if(]_m4_for([2], m4_eval([($# - 1) / 2 * 2]), [2], - [_$0_(], [)])[_m4_popdef( - [_$0])]m4_dquote($m4_eval([($# + 1) & ~1]))[)])_$0($@)])]) - -m4_define([_m4_case_], -[$0_([1], [$1], m4_incr([$1]))]) - -m4_define([_m4_case__], -[[[$$1],[$$2],[$$3],]]) - -# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT) -# ----------------------------------------------------- -# m4 equivalent of -# -# if (SWITCH =~ RE1) -# VAL1; -# elif (SWITCH =~ RE2) -# VAL2; -# elif ... -# ... -# else -# DEFAULT -# -# We build the temporary macro _m4_b: -# m4_define([_m4_b], _m4_defn([_m4_bmatch]))_m4_b([$1], [$2], [$3])... -# _m4_b([$1], [$m-1], [$m])_m4_b([], [], [$m+1]_m4_popdef([_m4_b])) -# then invoke m4_unquote(_m4_b($@)), for concatenation with later text. -m4_define([m4_bmatch], -[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], - [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], - [$#], 2, [$2], - [m4_pushdef([_m4_b], [m4_define([_m4_b], - _m4_defn([_$0]))]_m4_for([3], m4_eval([($# + 1) / 2 * 2 - 1]), - [2], [_$0_(], [)])[_m4_b([], [],]m4_dquote([$]m4_eval( - [($# + 1) / 2 * 2]))[_m4_popdef([_m4_b]))])m4_unquote(_m4_b($@))])]) - -m4_define([_m4_bmatch], -[m4_if(m4_bregexp([$1], [$2]), [-1], [], [[$3]m4_define([$0])])]) - -m4_define([_m4_bmatch_], -[$0_([1], m4_decr([$1]), [$1])]) - -m4_define([_m4_bmatch__], -[[_m4_b([$$1], [$$2], [$$3])]]) - - -# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT]) -# ------------------------------------------------------------------- -# Similar to m4_if, except that each TEST is expanded when encountered. -# If the expansion of TESTn matches the string VALn, the result is IF-VALn. -# The result is DEFAULT if no tests passed. This macro allows -# short-circuiting of expensive tests, where it pays to arrange quick -# filter tests to run first. -# -# m4_cond already guarantees either 3*n or 3*n + 1 arguments, 1 <= n. -# We only have to speed up _m4_cond, by building the temporary _m4_c: -# m4_define([_m4_c], _m4_defn([m4_unquote]))_m4_c([m4_if(($1), [($2)], -# [[$3]m4_define([_m4_c])])])_m4_c([m4_if(($4), [($5)], -# [[$6]m4_define([_m4_c])])])..._m4_c([m4_if(($m-2), [($m-1)], -# [[$m]m4_define([_m4_c])])])_m4_c([[$m+1]]_m4_popdef([_m4_c])) -# We invoke m4_unquote(_m4_c($@)), for concatenation with later text. -m4_define([_m4_cond], -[m4_pushdef([_m4_c], [m4_define([_m4_c], - _m4_defn([m4_unquote]))]_m4_for([2], m4_eval([$# / 3 * 3 - 1]), [3], - [$0_(], [)])[_m4_c(]m4_dquote(m4_dquote( - [$]m4_eval([$# / 3 * 3 + 1])))[_m4_popdef([_m4_c]))])m4_unquote(_m4_c($@))]) - -m4_define([_m4_cond_], -[$0_(m4_decr([$1]), [$1], m4_incr([$1]))]) - -m4_define([_m4_cond__], -[[_m4_c([m4_if(($$1), [($$2)], [[$$3]m4_define([_m4_c])])])]]) - -# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...) -# ---------------------------------------------------- -# m4 equivalent of -# -# $_ = STRING; -# s/RE1/SUBST1/g; -# s/RE2/SUBST2/g; -# ... -# -# m4_bpatsubsts already validated an odd number of arguments; we only -# need to speed up _m4_bpatsubsts. To avoid nesting, we build the -# temporary _m4_p: -# m4_define([_m4_p], [$1])m4_define([_m4_p], -# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$2], [$3]))m4_define([_m4_p], -# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$4], [$5]))m4_define([_m4_p],... -# m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$m-1], [$m]))m4_unquote( -# _m4_defn([_m4_p])_m4_popdef([_m4_p])) -m4_define([_m4_bpatsubsts], -[m4_pushdef([_m4_p], [m4_define([_m4_p], - ]m4_dquote([$]1)[)]_m4_for([3], [$#], [2], [$0_(], - [)])[m4_unquote(_m4_defn([_m4_p])_m4_popdef([_m4_p]))])_m4_p($@)]) - -m4_define([_m4_bpatsubsts_], -[$0_(m4_decr([$1]), [$1])]) - -m4_define([_m4_bpatsubsts__], -[[m4_define([_m4_p], -m4_bpatsubst(m4_dquote(_m4_defn([_m4_p])), [$$1], [$$2]))]]) - -# m4_shiftn(N, ...) -# ----------------- -# Returns ... shifted N times. Useful for recursive "varargs" constructs. -# -# m4_shiftn already validated arguments; we only need to speed up -# _m4_shiftn. If N is 3, then we build the temporary _m4_s, defined as -# ,[$5],[$6],...,[$m]_m4_popdef([_m4_s]) -# before calling m4_shift(_m4_s($@)). -m4_define([_m4_shiftn], -[m4_if(m4_incr([$1]), [$#], [], [m4_pushdef([_m4_s], - _m4_for(m4_eval([$1 + 2]), [$#], [1], - [[,]m4_dquote($], [)])[_m4_popdef([_m4_s])])m4_shift(_m4_s($@))])]) - -# m4_do(STRING, ...) -# ------------------ -# This macro invokes all its arguments (in sequence, of course). It is -# useful for making your macros more structured and readable by dropping -# unnecessary dnl's and have the macros indented properly. -# -# Here, we use the temporary macro _m4_do, defined as -# $1[]$2[]...[]$n[]_m4_popdef([_m4_do]) -m4_define([m4_do], -[m4_if([$#], [0], [], - [m4_pushdef([_$0], _m4_for([1], [$#], [1], - [$], [[[]]])[_m4_popdef([_$0])])_$0($@)])]) - -# m4_dquote_elt(ARGS) -# ------------------- -# Return ARGS as an unquoted list of double-quoted arguments. -# -# _m4_foreach to the rescue. -m4_define([m4_dquote_elt], -[m4_if([$#], [0], [], [[[$1]]_m4_foreach([,m4_dquote(], [)], $@)])]) - -# m4_reverse(ARGS) -# ---------------- -# Output ARGS in reverse order. -# -# Invoke _m4_r($@) with the temporary _m4_r built as -# [$m], [$m-1], ..., [$2], [$1]_m4_popdef([_m4_r]) -m4_define([m4_reverse], -[m4_if([$#], [0], [], [$#], [1], [[$1]], -[m4_pushdef([_m4_r], [[$$#]]_m4_for(m4_decr([$#]), [1], [-1], - [[, ]m4_dquote($], [)])[_m4_popdef([_m4_r])])_m4_r($@)])]) - - -# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...) -# ------------------------------------------------------------- -# Perform a pairwise grouping of consecutive ARGs, by expanding -# EXPRESSION([ARG1], [ARG2]). If there are an odd number of ARGs, the -# final argument is expanded with END-EXPR([ARGn]). -# -# Build the temporary macro _m4_map_args_pair, with the $2([$m+1]) -# only output if $# is odd: -# $1([$3], [$4])[]$1([$5], [$6])[]...$1([$m-1], -# [$m])[]m4_default([$2], [$1])([$m+1])[]_m4_popdef([_m4_map_args_pair]) -m4_define([m4_map_args_pair], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])], - [$#], [2], [], - [$#], [3], [m4_default([$2], [$1])([$3])[]], - [m4_pushdef([_$0], _m4_for([3], - m4_eval([$# / 2 * 2 - 1]), [2], [_$0_(], [)])_$0_end( - [1], [2], [$#])[_m4_popdef([_$0])])_$0($@)])]) - -m4_define([_m4_map_args_pair_], -[$0_([1], [$1], m4_incr([$1]))]) - -m4_define([_m4_map_args_pair__], -[[$$1([$$2], [$$3])[]]]) - -m4_define([_m4_map_args_pair_end], -[m4_if(m4_eval([$3 & 1]), [1], [[m4_default([$$2], [$$1])([$$3])[]]])]) - -# m4_join(SEP, ARG1, ARG2...) -# --------------------------- -# Produce ARG1SEPARG2...SEPARGn. Avoid back-to-back SEP when a given ARG -# is the empty string. No expansion is performed on SEP or ARGs. -# -# Use a self-modifying separator, since we don't know how many -# arguments might be skipped before a separator is first printed, but -# be careful if the separator contains $. _m4_foreach to the rescue. -m4_define([m4_join], -[m4_pushdef([_m4_sep], [m4_define([_m4_sep], _m4_defn([m4_echo]))])]dnl -[_m4_foreach([_$0([$1],], [)], $@)_m4_popdef([_m4_sep])]) - -m4_define([_m4_join], -[m4_if([$2], [], [], [_m4_sep([$1])[$2]])]) - -# m4_joinall(SEP, ARG1, ARG2...) -# ------------------------------ -# Produce ARG1SEPARG2...SEPARGn. An empty ARG results in back-to-back SEP. -# No expansion is performed on SEP or ARGs. -# -# A bit easier than m4_join. _m4_foreach to the rescue. -m4_define([m4_joinall], -[[$2]m4_if(m4_eval([$# <= 2]), [1], [], - [_m4_foreach([$1], [], m4_shift($@))])]) - -# m4_list_cmp(A, B) -# ----------------- -# Compare the two lists of integer expressions A and B. -# -# m4_list_cmp takes care of any side effects; we only override -# _m4_list_cmp_raw, where we can safely expand lists multiple times. -# First, insert padding so that both lists are the same length; the -# trailing +0 is necessary to handle a missing list. Next, create a -# temporary macro to perform pairwise comparisons until an inequality -# is found. For example, m4_list_cmp([1], [1,2]) creates _m4_cmp as -# m4_if(m4_eval([($1) != ($3)]), [1], [m4_cmp([$1], [$3])], -# m4_eval([($2) != ($4)]), [1], [m4_cmp([$2], [$4])], -# [0]_m4_popdef([_m4_cmp])) -# then calls _m4_cmp([1+0], [0*2], [1], [2+0]) -m4_define([_m4_list_cmp_raw], -[m4_if([$1], [$2], 0, - [_m4_list_cmp($1+0_m4_list_pad(m4_count($1), m4_count($2)), - $2+0_m4_list_pad(m4_count($2), m4_count($1)))])]) - -m4_define([_m4_list_pad], -[m4_if(m4_eval($1 < $2), [1], - [_m4_for(m4_incr([$1]), [$2], [1], [,0*])])]) - -m4_define([_m4_list_cmp], -[m4_pushdef([_m4_cmp], [m4_if(]_m4_for( - [1], m4_eval([$# >> 1]), [1], [$0_(], [,]m4_eval([$# >> 1])[)])[ - [0]_m4_popdef([_m4_cmp]))])_m4_cmp($@)]) - -m4_define([_m4_list_cmp_], -[$0_([$1], m4_eval([$1 + $2]))]) - -m4_define([_m4_list_cmp__], -[[m4_eval([($$1) != ($$2)]), [1], [m4_cmp([$$1], [$$2])], -]]) - -# m4_max(EXPR, ...) -# m4_min(EXPR, ...) -# ----------------- -# Return the decimal value of the maximum (or minimum) in a series of -# integer expressions. -# -# _m4_foreach to the rescue; we only need to replace _m4_minmax. Here, -# we need a temporary macro to track the best answer so far, so that -# the foreach expression is tractable. -m4_define([_m4_minmax], -[m4_pushdef([_m4_best], m4_eval([$2]))_m4_foreach( - [m4_define([_m4_best], $1(_m4_best,], [))], m4_shift($@))]dnl -[_m4_best[]_m4_popdef([_m4_best])]) - -# m4_set_add_all(SET, VALUE...) -# ----------------------------- -# Add each VALUE into SET. This is O(n) in the number of VALUEs, and -# can be faster than calling m4_set_add for each VALUE. -# -# _m4_foreach to the rescue. If no deletions have occurred, then -# avoid the speed penalty of m4_set_add. -m4_define([m4_set_add_all], -[m4_if([$#], [0], [], [$#], [1], [], - [m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1]) - + m4_len(_m4_foreach(m4_ifdef([_m4_set_cleanup($1)], - [[m4_set_add]], [[_$0]])[([$1],], [)], $@))))])]) - -m4_define([_m4_set_add_all], -[m4_ifdef([_m4_set([$1],$2)], [], - [m4_define([_m4_set([$1],$2)], - [1])m4_pushdef([_m4_set([$1])], [$2])-])]) diff --git a/tools/data/m4sugar/m4sugar.m4 b/tools/data/m4sugar/m4sugar.m4 deleted file mode 100644 index 3573537d..00000000 --- a/tools/data/m4sugar/m4sugar.m4 +++ /dev/null @@ -1,3301 +0,0 @@ -divert(-1)# -*- Autoconf -*- -# This file is part of Autoconf. -# Base M4 layer. -# Requires GNU M4. -# -# Copyright (C) 1999-2012 Free Software Foundation, Inc. - -# This file is part of Autoconf. This program is free -# software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the -# Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# Under Section 7 of GPL version 3, you are granted additional -# permissions described in the Autoconf Configure Script Exception, -# version 3.0, as published by the Free Software Foundation. -# -# You should have received a copy of the GNU General Public License -# and a copy of the Autoconf Configure Script Exception along with -# this program; see the files COPYINGv3 and COPYING.EXCEPTION -# respectively. If not, see . - -# Written by Akim Demaille. - -# Set the quotes, whatever the current quoting system. -changequote() -changequote([, ]) - -# Some old m4's don't support m4exit. But they provide -# equivalent functionality by core dumping because of the -# long macros we define. -ifdef([__gnu__], , -[errprint(M4sugar requires GNU M4. Install it before installing M4sugar or -set the M4 environment variable to its absolute file name.) -m4exit(2)]) - - -## ------------------------------- ## -## 1. Simulate --prefix-builtins. ## -## ------------------------------- ## - -# m4_define -# m4_defn -# m4_undefine -define([m4_define], defn([define])) -define([m4_defn], defn([defn])) -define([m4_undefine], defn([undefine])) - -m4_undefine([define]) -m4_undefine([defn]) -m4_undefine([undefine]) - - -# m4_copy(SRC, DST) -# ----------------- -# Define DST as the definition of SRC. -# What's the difference between: -# 1. m4_copy([from], [to]) -# 2. m4_define([to], [from($@)]) -# Well, obviously 1 is more expensive in space. Maybe 2 is more expensive -# in time, but because of the space cost of 1, it's not that obvious. -# Nevertheless, one huge difference is the handling of `$0'. If `from' -# uses `$0', then with 1, `to''s `$0' is `to', while it is `from' in 2. -# The user would certainly prefer to see `to'. -# -# This definition is in effect during m4sugar initialization, when -# there are no pushdef stacks; later on, we redefine it to something -# more powerful for all other clients to use. -m4_define([m4_copy], -[m4_define([$2], m4_defn([$1]))]) - - -# m4_rename(SRC, DST) -# ------------------- -# Rename the macro SRC to DST. -m4_define([m4_rename], -[m4_copy([$1], [$2])m4_undefine([$1])]) - - -# m4_rename_m4(MACRO-NAME) -# ------------------------ -# Rename MACRO-NAME to m4_MACRO-NAME. -m4_define([m4_rename_m4], -[m4_rename([$1], [m4_$1])]) - - -# m4_copy_unm4(m4_MACRO-NAME) -# --------------------------- -# Copy m4_MACRO-NAME to MACRO-NAME. -m4_define([m4_copy_unm4], -[m4_copy([$1], m4_bpatsubst([$1], [^m4_\(.*\)], [[\1]]))]) - - -# Some m4 internals have names colliding with tokens we might use. -# Rename them a` la `m4 --prefix-builtins'. Conditionals first, since -# some subsequent renames are conditional. -m4_rename_m4([ifdef]) -m4_rename([ifelse], [m4_if]) - -m4_rename_m4([builtin]) -m4_rename_m4([changecom]) -m4_rename_m4([changequote]) -m4_ifdef([changeword],dnl conditionally available in 1.4.x -[m4_undefine([changeword])]) -m4_rename_m4([debugfile]) -m4_rename_m4([debugmode]) -m4_rename_m4([decr]) -m4_rename_m4([divnum]) -m4_rename_m4([dumpdef]) -m4_rename_m4([errprint]) -m4_rename_m4([esyscmd]) -m4_rename_m4([eval]) -m4_rename_m4([format]) -m4_undefine([include]) -m4_rename_m4([incr]) -m4_rename_m4([index]) -m4_rename_m4([indir]) -m4_rename_m4([len]) -m4_rename([m4exit], [m4_exit]) -m4_undefine([m4wrap]) -m4_ifdef([mkstemp],dnl added in M4 1.4.8 -[m4_rename_m4([mkstemp]) -m4_copy([m4_mkstemp], [m4_maketemp]) -m4_undefine([maketemp])], -[m4_rename_m4([maketemp]) -m4_copy([m4_maketemp], [m4_mkstemp])]) -m4_rename([patsubst], [m4_bpatsubst]) -m4_rename_m4([popdef]) -m4_rename_m4([pushdef]) -m4_rename([regexp], [m4_bregexp]) -m4_rename_m4([shift]) -m4_undefine([sinclude]) -m4_rename_m4([substr]) -m4_ifdef([symbols],dnl present only in alpha-quality 1.4o -[m4_rename_m4([symbols])]) -m4_rename_m4([syscmd]) -m4_rename_m4([sysval]) -m4_rename_m4([traceoff]) -m4_rename_m4([traceon]) -m4_rename_m4([translit]) - -# _m4_defn(ARG) -# ------------- -# _m4_defn is for internal use only - it bypasses the wrapper, so it -# must only be used on one argument at a time, and only on macros -# known to be defined. Make sure this still works if the user renames -# m4_defn but not _m4_defn. -m4_copy([m4_defn], [_m4_defn]) - -# _m4_divert_raw(NUM) -# ------------------- -# _m4_divert_raw is for internal use only. Use this instead of -# m4_builtin([divert], NUM), so that tracing diversion flow is easier. -m4_rename([divert], [_m4_divert_raw]) - -# _m4_popdef(ARG...) -# ------------------ -# _m4_popdef is for internal use only - it bypasses the wrapper, so it -# must only be used on macros known to be defined. Make sure this -# still works if the user renames m4_popdef but not _m4_popdef. -m4_copy([m4_popdef], [_m4_popdef]) - -# _m4_undefine(ARG...) -# -------------------- -# _m4_undefine is for internal use only - it bypasses the wrapper, so -# it must only be used on macros known to be defined. Make sure this -# still works if the user renames m4_undefine but not _m4_undefine. -m4_copy([m4_undefine], [_m4_undefine]) - -# _m4_undivert(NUM...) -# -------------------- -# _m4_undivert is for internal use only, and should always be given -# arguments. Use this instead of m4_builtin([undivert], NUM...), so -# that tracing diversion flow is easier. -m4_rename([undivert], [_m4_undivert]) - - -## ------------------- ## -## 2. Error messages. ## -## ------------------- ## - - -# m4_location -# ----------- -# Output the current file, colon, and the current line number. -m4_define([m4_location], -[__file__:__line__]) - - -# m4_errprintn(MSG) -# ----------------- -# Same as `errprint', but with the missing end of line. -m4_define([m4_errprintn], -[m4_errprint([$1 -])]) - - -# m4_warning(MSG) -# --------------- -# Warn the user. -m4_define([m4_warning], -[m4_errprintn(m4_location[: warning: $1])]) - - -# m4_fatal(MSG, [EXIT-STATUS]) -# ---------------------------- -# Fatal the user. :) -m4_define([m4_fatal], -[m4_errprintn(m4_location[: error: $1] -m4_expansion_stack)m4_exit(m4_if([$2],, 1, [$2]))]) - - -# m4_assert(EXPRESSION, [EXIT-STATUS = 1]) -# ---------------------------------------- -# This macro ensures that EXPRESSION evaluates to true, and exits if -# EXPRESSION evaluates to false. -m4_define([m4_assert], -[m4_if(m4_eval([$1]), 0, - [m4_fatal([assert failed: $1], [$2])])]) - - - -## ------------- ## -## 3. Warnings. ## -## ------------- ## - - -# _m4_warn(CATEGORY, MESSAGE, [STACK-TRACE]) -# ------------------------------------------ -# Report a MESSAGE to the user if the CATEGORY of warnings is enabled. -# This is for traces only. -# If present, STACK-TRACE is a \n-separated list of "LOCATION: MESSAGE", -# where the last line (and no other) ends with "the top level". -# -# Within m4, the macro is a no-op. This macro really matters -# when autom4te post-processes the trace output. -m4_define([_m4_warn], []) - - -# m4_warn(CATEGORY, MESSAGE) -# -------------------------- -# Report a MESSAGE to the user if the CATEGORY of warnings is enabled. -m4_define([m4_warn], -[_m4_warn([$1], [$2], -m4_ifdef([_m4_expansion_stack], [m4_expansion_stack]))]) - - - -## ------------------- ## -## 4. File inclusion. ## -## ------------------- ## - - -# We also want to neutralize include (and sinclude for symmetry), -# but we want to extend them slightly: warn when a file is included -# several times. This is, in general, a dangerous operation, because -# too many people forget to quote the first argument of m4_define. -# -# For instance in the following case: -# m4_define(foo, [bar]) -# then a second reading will turn into -# m4_define(bar, [bar]) -# which is certainly not what was meant. - -# m4_include_unique(FILE) -# ----------------------- -# Declare that the FILE was loading; and warn if it has already -# been included. -m4_define([m4_include_unique], -[m4_ifdef([m4_include($1)], - [m4_warn([syntax], [file `$1' included several times])])dnl -m4_define([m4_include($1)])]) - - -# m4_include(FILE) -# ---------------- -# Like the builtin include, but warns against multiple inclusions. -m4_define([m4_include], -[m4_include_unique([$1])dnl -m4_builtin([include], [$1])]) - - -# m4_sinclude(FILE) -# ----------------- -# Like the builtin sinclude, but warns against multiple inclusions. -m4_define([m4_sinclude], -[m4_include_unique([$1])dnl -m4_builtin([sinclude], [$1])]) - - - -## ------------------------------------ ## -## 5. Additional branching constructs. ## -## ------------------------------------ ## - -# Both `m4_ifval' and `m4_ifset' tests against the empty string. The -# difference is that `m4_ifset' is specialized on macros. -# -# In case of arguments of macros, eg. $1, it makes little difference. -# In the case of a macro `FOO', you don't want to check `m4_ifval(FOO, -# TRUE)', because if `FOO' expands with commas, there is a shifting of -# the arguments. So you want to run `m4_ifval([FOO])', but then you just -# compare the *string* `FOO' against `', which, of course fails. -# -# So you want the variation `m4_ifset' that expects a macro name as $1. -# If this macro is both defined and defined to a non empty value, then -# it runs TRUE, etc. - - -# m4_ifblank(COND, [IF-BLANK], [IF-TEXT]) -# m4_ifnblank(COND, [IF-TEXT], [IF-BLANK]) -# ---------------------------------------- -# If COND is empty, or consists only of blanks (space, tab, newline), -# then expand IF-BLANK, otherwise expand IF-TEXT. This differs from -# m4_ifval only if COND has just whitespace, but it helps optimize in -# spite of users who mistakenly leave trailing space after what they -# thought was an empty argument: -# macro( -# [] -# ) -# -# Writing one macro in terms of the other causes extra overhead, so -# we inline both definitions. -m4_define([m4_ifblank], -[m4_if(m4_translit([[$1]], [ ][ ][ -]), [], [$2], [$3])]) - -m4_define([m4_ifnblank], -[m4_if(m4_translit([[$1]], [ ][ ][ -]), [], [$3], [$2])]) - - -# m4_ifval(COND, [IF-TRUE], [IF-FALSE]) -# ------------------------------------- -# If COND is not the empty string, expand IF-TRUE, otherwise IF-FALSE. -# Comparable to m4_ifdef. -m4_define([m4_ifval], -[m4_if([$1], [], [$3], [$2])]) - - -# m4_n(TEXT) -# ---------- -# If TEXT is not empty, return TEXT and a new line, otherwise nothing. -m4_define([m4_n], -[m4_if([$1], - [], [], - [$1 -])]) - - -# m4_ifvaln(COND, [IF-TRUE], [IF-FALSE]) -# -------------------------------------- -# Same as `m4_ifval', but add an extra newline to IF-TRUE or IF-FALSE -# unless that argument is empty. -m4_define([m4_ifvaln], -[m4_if([$1], - [], [m4_n([$3])], - [m4_n([$2])])]) - - -# m4_ifset(MACRO, [IF-TRUE], [IF-FALSE]) -# -------------------------------------- -# If MACRO has no definition, or of its definition is the empty string, -# expand IF-FALSE, otherwise IF-TRUE. -m4_define([m4_ifset], -[m4_ifdef([$1], - [m4_ifval(_m4_defn([$1]), [$2], [$3])], - [$3])]) - - -# m4_ifndef(NAME, [IF-NOT-DEFINED], [IF-DEFINED]) -# ----------------------------------------------- -m4_define([m4_ifndef], -[m4_ifdef([$1], [$3], [$2])]) - - -# m4_case(SWITCH, VAL1, IF-VAL1, VAL2, IF-VAL2, ..., DEFAULT) -# ----------------------------------------------------------- -# m4 equivalent of -# switch (SWITCH) -# { -# case VAL1: -# IF-VAL1; -# break; -# case VAL2: -# IF-VAL2; -# break; -# ... -# default: -# DEFAULT; -# break; -# }. -# All the values are optional, and the macro is robust to active -# symbols properly quoted. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_case], -[m4_if([$#], 0, [], - [$#], 1, [], - [$#], 2, [$2], - [$1], [$2], [$3], - [$0([$1], m4_shift3($@))])]) - - -# m4_bmatch(SWITCH, RE1, VAL1, RE2, VAL2, ..., DEFAULT) -# ----------------------------------------------------- -# m4 equivalent of -# -# if (SWITCH =~ RE1) -# VAL1; -# elif (SWITCH =~ RE2) -# VAL2; -# elif ... -# ... -# else -# DEFAULT -# -# All the values are optional, and the macro is robust to active symbols -# properly quoted. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_bmatch], -[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], - [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], - [$#], 2, [$2], - [m4_if(m4_bregexp([$1], [$2]), -1, [$0([$1], m4_shift3($@))], - [$3])])]) - -# m4_argn(N, ARGS...) -# ------------------- -# Extract argument N (greater than 0) from ARGS. Example: -# m4_define([b], [B]) -# m4_argn([2], [a], [b], [c]) => b -# -# Rather than using m4_car(m4_shiftn([$1], $@)), we exploit the fact that -# GNU m4 can directly reference any argument, through an indirect macro. -m4_define([m4_argn], -[m4_assert([0 < $1])]dnl -[m4_pushdef([_$0], [_m4_popdef([_$0])]m4_dquote([$]m4_incr([$1])))_$0($@)]) - - -# m4_car(ARGS...) -# m4_cdr(ARGS...) -# --------------- -# Manipulate m4 lists. m4_car returns the first argument. m4_cdr -# bundles all but the first argument into a quoted list. These two -# macros are generally used with list arguments, with quoting removed -# to break the list into multiple m4 ARGS. -m4_define([m4_car], [[$1]]) -m4_define([m4_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) - -# _m4_cdr(ARGS...) -# ---------------- -# Like m4_cdr, except include a leading comma unless only one argument -# remains. Why? Because comparing a large list against [] is more -# expensive in expansion time than comparing the number of arguments; so -# _m4_cdr can be used to reduce the number of arguments when it is time -# to end recursion. -m4_define([_m4_cdr], -[m4_if([$#], 1, [], - [, m4_dquote(m4_shift($@))])]) - - - -# m4_cond(TEST1, VAL1, IF-VAL1, TEST2, VAL2, IF-VAL2, ..., [DEFAULT]) -# ------------------------------------------------------------------- -# Similar to m4_if, except that each TEST is expanded when encountered. -# If the expansion of TESTn matches the string VALn, the result is IF-VALn. -# The result is DEFAULT if no tests passed. This macro allows -# short-circuiting of expensive tests, where it pays to arrange quick -# filter tests to run first. -# -# For an example, consider a previous implementation of _AS_QUOTE_IFELSE: -# -# m4_if(m4_index([$1], [\]), [-1], [$2], -# m4_eval(m4_index([$1], [\\]) >= 0), [1], [$2], -# m4_eval(m4_index([$1], [\$]) >= 0), [1], [$2], -# m4_eval(m4_index([$1], [\`]) >= 0), [1], [$3], -# m4_eval(m4_index([$1], [\"]) >= 0), [1], [$3], -# [$2]) -# -# Here, m4_index is computed 5 times, and m4_eval 4, even if $1 contains -# no backslash. It is more efficient to do: -# -# m4_cond([m4_index([$1], [\])], [-1], [$2], -# [m4_eval(m4_index([$1], [\\]) >= 0)], [1], [$2], -# [m4_eval(m4_index([$1], [\$]) >= 0)], [1], [$2], -# [m4_eval(m4_index([$1], [\`]) >= 0)], [1], [$3], -# [m4_eval(m4_index([$1], [\"]) >= 0)], [1], [$3], -# [$2]) -# -# In the common case of $1 with no backslash, only one m4_index expansion -# occurs, and m4_eval is avoided altogether. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_cond], -[m4_if([$#], [0], [m4_fatal([$0: cannot be called without arguments])], - [$#], [1], [$1], - m4_eval([$# % 3]), [2], [m4_fatal([$0: missing an argument])], - [_$0($@)])]) - -m4_define([_m4_cond], -[m4_if(($1), [($2)], [$3], - [$#], [3], [], - [$#], [4], [$4], - [$0(m4_shift3($@))])]) - - -## ---------------------------------------- ## -## 6. Enhanced version of some primitives. ## -## ---------------------------------------- ## - -# m4_bpatsubsts(STRING, RE1, SUBST1, RE2, SUBST2, ...) -# ---------------------------------------------------- -# m4 equivalent of -# -# $_ = STRING; -# s/RE1/SUBST1/g; -# s/RE2/SUBST2/g; -# ... -# -# All the values are optional, and the macro is robust to active symbols -# properly quoted. -# -# I would have liked to name this macro `m4_bpatsubst', unfortunately, -# due to quotation problems, I need to double quote $1 below, therefore -# the anchors are broken :( I can't let users be trapped by that. -# -# Recall that m4_shift3 always results in an argument. Hence, we need -# to distinguish between a final deletion vs. ending recursion. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_bpatsubsts], -[m4_if([$#], 0, [m4_fatal([$0: too few arguments: $#])], - [$#], 1, [m4_fatal([$0: too few arguments: $#: $1])], - [$#], 2, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2]))], - [$#], 3, [m4_unquote(m4_builtin([patsubst], [[$1]], [$2], [$3]))], - [_$0($@m4_if(m4_eval($# & 1), 0, [,]))])]) -m4_define([_m4_bpatsubsts], -[m4_if([$#], 2, [$1], - [$0(m4_builtin([patsubst], [[$1]], [$2], [$3]), - m4_shift3($@))])]) - - -# m4_copy(SRC, DST) -# ----------------- -# Define the pushdef stack DST as a copy of the pushdef stack SRC; -# give an error if DST is already defined. This is particularly nice -# for copying self-modifying pushdef stacks, where the top definition -# includes one-shot initialization that is later popped to the normal -# definition. This version intentionally does nothing if SRC is -# undefined. -# -# Some macros simply can't be renamed with this method: namely, anything -# involved in the implementation of m4_stack_foreach_sep. -m4_define([m4_copy], -[m4_ifdef([$2], [m4_fatal([$0: won't overwrite defined macro: $2])], - [m4_stack_foreach_sep([$1], [m4_pushdef([$2],], [)])])]dnl -[m4_ifdef([m4_location($1)], [m4_define([m4_location($2)], m4_location)])]) - - -# m4_copy_force(SRC, DST) -# m4_rename_force(SRC, DST) -# ------------------------- -# Like m4_copy/m4_rename, except blindly overwrite any existing DST. -# Note that m4_copy_force tolerates undefined SRC, while m4_rename_force -# does not. -m4_define([m4_copy_force], -[m4_ifdef([$2], [_m4_undefine([$2])])m4_copy($@)]) - -m4_define([m4_rename_force], -[m4_ifdef([$2], [_m4_undefine([$2])])m4_rename($@)]) - - -# m4_define_default(MACRO, VALUE) -# ------------------------------- -# If MACRO is undefined, set it to VALUE. -m4_define([m4_define_default], -[m4_ifndef([$1], [m4_define($@)])]) - - -# m4_default(EXP1, EXP2) -# m4_default_nblank(EXP1, EXP2) -# ----------------------------- -# Returns EXP1 if not empty/blank, otherwise EXP2. Expand the result. -# -# m4_default is called on hot paths, so inline the contents of m4_ifval, -# for one less round of expansion. -m4_define([m4_default], -[m4_if([$1], [], [$2], [$1])]) - -m4_define([m4_default_nblank], -[m4_ifblank([$1], [$2], [$1])]) - - -# m4_default_quoted(EXP1, EXP2) -# m4_default_nblank_quoted(EXP1, EXP2) -# ------------------------------------ -# Returns EXP1 if non empty/blank, otherwise EXP2. Leave the result quoted. -# -# For comparison: -# m4_define([active], [ACTIVE]) -# m4_default([active], [default]) => ACTIVE -# m4_default([], [active]) => ACTIVE -# -m4_default([ ], [active])- => - - -# -m4_default_nblank([ ], [active])- => -ACTIVE- -# m4_default_quoted([active], [default]) => active -# m4_default_quoted([], [active]) => active -# -m4_default_quoted([ ], [active])- => - - -# -m4_default_nblank_quoted([ ], [active])- => -active- -# -# m4_default macro is called on hot paths, so inline the contents of m4_ifval, -# for one less round of expansion. -m4_define([m4_default_quoted], -[m4_if([$1], [], [[$2]], [[$1]])]) - -m4_define([m4_default_nblank_quoted], -[m4_ifblank([$1], [[$2]], [[$1]])]) - - -# m4_defn(NAME) -# ------------- -# Like the original, except guarantee a warning when using something which is -# undefined (unlike M4 1.4.x). This replacement is not a full-featured -# replacement: if any of the defined macros contain unbalanced quoting, but -# when pasted together result in a well-quoted string, then only native m4 -# support is able to get it correct. But that's where quadrigraphs come in -# handy, if you really need unbalanced quotes inside your macros. -# -# This macro is called frequently, so minimize the amount of additional -# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us (see m4_init). -m4_define([m4_defn], -[m4_if([$#], [0], [[$0]], - [$#], [1], [m4_ifdef([$1], [_m4_defn([$1])], - [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - - -# m4_dumpdef(NAME...) -# ------------------- -# In m4 1.4.x, dumpdef writes to the current debugfile, rather than -# stderr. This in turn royally confuses autom4te; so we follow the -# lead of newer m4 and always dump to stderr. Unlike the original, -# this version requires an argument, since there is no convenient way -# in m4 1.4.x to grab the names of all defined macros. Newer m4 -# always dumps to stderr, regardless of the current debugfile; it also -# provides m4symbols as a way to grab all current macro names. But -# dumpdefs is not frequently called, so we don't need to worry about -# conditionally using these newer features. Also, this version -# doesn't sort multiple arguments. -# -# If we detect m4 1.6 or newer, then provide an alternate definition, -# installed during m4_init, that allows builtins through. -# Unfortunately, there is no nice way in m4 1.4.x to dump builtins. -m4_define([m4_dumpdef], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [m4_ifdef([$1], [m4_errprintn( - [$1: ]m4_dquote(_m4_defn([$1])))], [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - -m4_define([_m4_dumpdef], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [m4_builtin([dumpdef], [$1])], - [m4_map_args_sep([m4_builtin([dumpdef],], [)], [], $@)])]) - - -# m4_dumpdefs(NAME...) -# -------------------- -# Similar to `m4_dumpdef(NAME)', but if NAME was m4_pushdef'ed, display its -# value stack (most recent displayed first). Also, this version silently -# ignores undefined macros, rather than erroring out. -# -# This macro cheats, because it relies on the current definition of NAME -# while the second argument of m4_stack_foreach_lifo is evaluated (which -# would be undefined according to the API). -m4_define([m4_dumpdefs], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [m4_stack_foreach_lifo([$1], [m4_dumpdef([$1])m4_ignore])], - [m4_map_args([$0], $@)])]) - -# m4_esyscmd_s(COMMAND) -# --------------------- -# Like m4_esyscmd, except strip any trailing newlines, thus behaving -# more like shell command substitution. -m4_define([m4_esyscmd_s], -[m4_chomp_all(m4_esyscmd([$1]))]) - - -# m4_popdef(NAME) -# --------------- -# Like the original, except guarantee a warning when using something which is -# undefined (unlike M4 1.4.x). -# -# This macro is called frequently, so minimize the amount of additional -# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us (see m4_init). -m4_define([m4_popdef], -[m4_if([$#], [0], [[$0]], - [$#], [1], [m4_ifdef([$1], [_m4_popdef([$1])], - [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - - -# m4_shiftn(N, ...) -# ----------------- -# Returns ... shifted N times. Useful for recursive "varargs" constructs. -# -# Autoconf does not use this macro, because it is inherently slower than -# calling the common cases of m4_shift2 or m4_shift3 directly. But it -# might as well be fast for other clients, such as Libtool. One way to -# do this is to expand $@ only once in _m4_shiftn (otherwise, for long -# lists, the expansion of m4_if takes twice as much memory as what the -# list itself occupies, only to throw away the unused branch). The end -# result is strictly equivalent to -# m4_if([$1], 1, [m4_shift(,m4_shift(m4_shift($@)))], -# [_m4_shiftn(m4_decr([$1]), m4_shift(m4_shift($@)))]) -# but with the final `m4_shift(m4_shift($@)))' shared between the two -# paths. The first leg uses a no-op m4_shift(,$@) to balance out the (). -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_shiftn], -[m4_assert(0 < $1 && $1 < $#)_$0($@)]) - -m4_define([_m4_shiftn], -[m4_if([$1], 1, [m4_shift(], - [$0(m4_decr([$1])]), m4_shift(m4_shift($@)))]) - -# m4_shift2(...) -# m4_shift3(...) -# -------------- -# Returns ... shifted twice, and three times. Faster than m4_shiftn. -m4_define([m4_shift2], [m4_shift(m4_shift($@))]) -m4_define([m4_shift3], [m4_shift(m4_shift(m4_shift($@)))]) - -# _m4_shift2(...) -# _m4_shift3(...) -# --------------- -# Like m4_shift2 or m4_shift3, except include a leading comma unless shifting -# consumes all arguments. Why? Because in recursion, it is nice to -# distinguish between 1 element left and 0 elements left, based on how many -# arguments this shift expands to. -m4_define([_m4_shift2], -[m4_if([$#], [2], [], - [, m4_shift(m4_shift($@))])]) -m4_define([_m4_shift3], -[m4_if([$#], [3], [], - [, m4_shift(m4_shift(m4_shift($@)))])]) - - -# m4_undefine(NAME) -# ----------------- -# Like the original, except guarantee a warning when using something which is -# undefined (unlike M4 1.4.x). -# -# This macro is called frequently, so minimize the amount of additional -# expansions by skipping m4_ifndef. Better yet, if __m4_version__ exists, -# (added in M4 1.6), then let m4 do the job for us (see m4_init). -m4_define([m4_undefine], -[m4_if([$#], [0], [[$0]], - [$#], [1], [m4_ifdef([$1], [_m4_undefine([$1])], - [m4_fatal([$0: undefined macro: $1])])], - [m4_map_args([$0], $@)])]) - -# _m4_wrap(PRE, POST) -# ------------------- -# Helper macro for m4_wrap and m4_wrap_lifo. Allows nested calls to -# m4_wrap within wrapped text. Use _m4_defn and _m4_popdef for speed. -m4_define([_m4_wrap], -[m4_ifdef([$0_text], - [m4_define([$0_text], [$1]_m4_defn([$0_text])[$2])], - [m4_builtin([m4wrap], [m4_unquote( - _m4_defn([$0_text])_m4_popdef([$0_text]))])m4_define([$0_text], [$1$2])])]) - -# m4_wrap(TEXT) -# ------------- -# Append TEXT to the list of hooks to be executed at the end of input. -# Whereas the order of the original may be LIFO in the underlying m4, -# this version is always FIFO. -m4_define([m4_wrap], -[_m4_wrap([], [$1[]])]) - -# m4_wrap_lifo(TEXT) -# ------------------ -# Prepend TEXT to the list of hooks to be executed at the end of input. -# Whereas the order of m4_wrap may be FIFO in the underlying m4, this -# version is always LIFO. -m4_define([m4_wrap_lifo], -[_m4_wrap([$1[]])]) - -## ------------------------- ## -## 7. Quoting manipulation. ## -## ------------------------- ## - - -# m4_apply(MACRO, LIST) -# --------------------- -# Invoke MACRO, with arguments provided from the quoted list of -# comma-separated quoted arguments. If LIST is empty, invoke MACRO -# without arguments. The expansion will not be concatenated with -# subsequent text. -m4_define([m4_apply], -[m4_if([$2], [], [$1], [$1($2)])[]]) - -# _m4_apply(MACRO, LIST) -# ---------------------- -# Like m4_apply, except do nothing if LIST is empty. -m4_define([_m4_apply], -[m4_if([$2], [], [], [$1($2)[]])]) - - -# m4_count(ARGS) -# -------------- -# Return a count of how many ARGS are present. -m4_define([m4_count], [$#]) - - -# m4_curry(MACRO, ARG...) -# ----------------------- -# Perform argument currying. The expansion of this macro is another -# macro that takes exactly one argument, appends it to the end of the -# original ARG list, then invokes MACRO. For example: -# m4_curry([m4_curry], [m4_reverse], [1])([2])([3]) => 3, 2, 1 -# Not quite as practical as m4_incr, but you could also do: -# m4_define([add], [m4_eval(([$1]) + ([$2]))]) -# m4_define([add_one], [m4_curry([add], [1])]) -# add_one()([2]) => 3 -m4_define([m4_curry], [$1(m4_shift($@,)_$0]) -m4_define([_m4_curry], [[$1])]) - - -# m4_do(STRING, ...) -# ------------------ -# This macro invokes all its arguments (in sequence, of course). It is -# useful for making your macros more structured and readable by dropping -# unnecessary dnl's and have the macros indented properly. No concatenation -# occurs after a STRING; use m4_unquote(m4_join(,STRING)) for that. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_do], -[m4_if([$#], 0, [], - [$#], 1, [$1[]], - [$1[]$0(m4_shift($@))])]) - - -# m4_dquote(ARGS) -# --------------- -# Return ARGS as a quoted list of quoted arguments. -m4_define([m4_dquote], [[$@]]) - - -# m4_dquote_elt(ARGS) -# ------------------- -# Return ARGS as an unquoted list of double-quoted arguments. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_dquote_elt], -[m4_if([$#], [0], [], - [$#], [1], [[[$1]]], - [[[$1]],$0(m4_shift($@))])]) - - -# m4_echo(ARGS) -# ------------- -# Return the ARGS, with the same level of quoting. Whitespace after -# unquoted commas are consumed. -m4_define([m4_echo], [$@]) - - -# m4_expand(ARG) -# _m4_expand(ARG) -# --------------- -# Return the expansion of ARG as a single string. Unlike -# m4_quote($1), this preserves whitespace following single-quoted -# commas that appear within ARG. It also deals with shell case -# statements. -# -# m4_define([active], [ACT, IVE]) -# m4_define([active2], [[ACT, IVE]]) -# m4_quote(active, active2) -# => ACT,IVE,ACT, IVE -# m4_expand([active, active2]) -# => ACT, IVE, ACT, IVE -# -# Unfortunately, due to limitations in m4, ARG must expand to -# something with balanced quotes (use quadrigraphs to get around -# this), and should not contain the unlikely delimiters -=<{( or -# )}>=-. It is possible to have unbalanced quoted `(' or `)', as well -# as unbalanced unquoted `)'. m4_expand can handle unterminated -# comments or dnl on the final line, at the expense of speed; it also -# aids in detecting attempts to incorrectly change the current -# diversion inside ARG. Meanwhile, _m4_expand is faster but must be -# given a terminated expansion, and has no safety checks for -# mis-diverted text. -# -# Exploit that extra unquoted () will group unquoted commas and the -# following whitespace. m4_bpatsubst can't handle newlines inside $1, -# and m4_substr strips quoting. So we (ab)use m4_changequote, using -# temporary quotes to remove the delimiters that conveniently included -# the unquoted () that were added prior to the changequote. -# -# Thanks to shell case statements, too many people are prone to pass -# underquoted `)', so we try to detect that by passing a marker as a -# fourth argument; if the marker is not present, then we assume that -# we encountered an early `)', and re-expand the first argument, but -# this time with one more `(' in the second argument and in the -# open-quote delimiter. We must also ignore the slop from the -# previous try. The final macro is thus half line-noise, half art. -m4_define([m4_expand], -[m4_pushdef([m4_divert], _m4_defn([_m4_divert_unsafe]))]dnl -[m4_pushdef([m4_divert_push], _m4_defn([_m4_divert_unsafe]))]dnl -[m4_chomp(_$0([$1 -]))_m4_popdef([m4_divert], [m4_divert_push])]) - -m4_define([_m4_expand], [$0_([$1], [(], -=<{($1)}>=-, [}>=-])]) - -m4_define([_m4_expand_], -[m4_if([$4], [}>=-], - [m4_changequote([-=<{$2], [)}>=-])$3m4_changequote([, ])], - [$0([$1], [($2], -=<{($2$1)}>=-, [}>=-])m4_ignore$2])]) - - -# m4_ignore(ARGS) -# --------------- -# Expands to nothing. Useful for conditionally ignoring an arbitrary -# number of arguments (see _m4_list_cmp for an example). -m4_define([m4_ignore]) - - -# m4_make_list(ARGS) -# ------------------ -# Similar to m4_dquote, this creates a quoted list of quoted ARGS. This -# version is less efficient than m4_dquote, but separates each argument -# with a comma and newline, rather than just comma, for readability. -# When developing an m4sugar algorithm, you could temporarily use -# m4_pushdef([m4_dquote],m4_defn([m4_make_list])) -# around your code to make debugging easier. -m4_define([m4_make_list], [m4_join([, -], m4_dquote_elt($@))]) - - -# m4_noquote(STRING) -# ------------------ -# Return the result of ignoring all quotes in STRING and invoking the -# macros it contains. Among other things, this is useful for enabling -# macro invocations inside strings with [] blocks (for instance regexps -# and help-strings). On the other hand, since all quotes are disabled, -# any macro expanded during this time that relies on nested [] quoting -# will likely crash and burn. This macro is seldom useful; consider -# m4_unquote or m4_expand instead. -m4_define([m4_noquote], -[m4_changequote([-=<{(],[)}>=-])$1-=<{()}>=-m4_changequote([,])]) - - -# m4_quote(ARGS) -# -------------- -# Return ARGS as a single argument. Any whitespace after unquoted commas -# is stripped. There is always output, even when there were no arguments. -# -# It is important to realize the difference between `m4_quote(exp)' and -# `[exp]': in the first case you obtain the quoted *result* of the -# expansion of EXP, while in the latter you just obtain the string -# `exp'. -m4_define([m4_quote], [[$*]]) - - -# _m4_quote(ARGS) -# --------------- -# Like m4_quote, except that when there are no arguments, there is no -# output. For conditional scenarios (such as passing _m4_quote as the -# macro name in m4_mapall), this feature can be used to distinguish between -# one argument of the empty string vs. no arguments. However, in the -# normal case with arguments present, this is less efficient than m4_quote. -m4_define([_m4_quote], -[m4_if([$#], [0], [], [[$*]])]) - - -# m4_reverse(ARGS) -# ---------------- -# Output ARGS in reverse order. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_reverse], -[m4_if([$#], [0], [], [$#], [1], [[$1]], - [$0(m4_shift($@)), [$1]])]) - - -# m4_unquote(ARGS) -# ---------------- -# Remove one layer of quotes from each ARG, performing one level of -# expansion. For one argument, m4_unquote([arg]) is more efficient than -# m4_do([arg]), but for multiple arguments, the difference is that -# m4_unquote separates arguments with commas while m4_do concatenates. -# Follow this macro with [] if concatenation with subsequent text is -# undesired. -m4_define([m4_unquote], [$*]) - - -## -------------------------- ## -## 8. Implementing m4 loops. ## -## -------------------------- ## - - -# m4_for(VARIABLE, FIRST, LAST, [STEP = +/-1], EXPRESSION) -# -------------------------------------------------------- -# Expand EXPRESSION defining VARIABLE to FROM, FROM + 1, ..., TO with -# increments of STEP. Both limits are included, and bounds are -# checked for consistency. The algorithm is robust to indirect -# VARIABLE names. Changing VARIABLE inside EXPRESSION will not impact -# the number of iterations. -# -# Uses _m4_defn for speed, and avoid dnl in the macro body. Factor -# the _m4_for call so that EXPRESSION is only parsed once. -m4_define([m4_for], -[m4_pushdef([$1], m4_eval([$2]))]dnl -[m4_cond([m4_eval(([$3]) > ([$2]))], 1, - [m4_pushdef([_m4_step], m4_eval(m4_default_quoted([$4], - 1)))m4_assert(_m4_step > 0)_$0(_m4_defn([$1]), - m4_eval((([$3]) - ([$2])) / _m4_step * _m4_step + ([$2])), _m4_step,], - [m4_eval(([$3]) < ([$2]))], 1, - [m4_pushdef([_m4_step], m4_eval(m4_default_quoted([$4], - -1)))m4_assert(_m4_step < 0)_$0(_m4_defn([$1]), - m4_eval((([$2]) - ([$3])) / -(_m4_step) * _m4_step + ([$2])), _m4_step,], - [m4_pushdef([_m4_step])_$0(_m4_defn([$1]), _m4_defn([$1]), 0,])]dnl -[[m4_define([$1],], [)$5])m4_popdef([_m4_step], [$1])]) - -# _m4_for(COUNT, LAST, STEP, PRE, POST) -# ------------------------------------- -# Core of the loop, no consistency checks, all arguments are plain -# numbers. Expand PRE[COUNT]POST, then alter COUNT by STEP and -# iterate if COUNT is not LAST. -m4_define([_m4_for], -[$4[$1]$5[]m4_if([$1], [$2], [], - [$0(m4_eval([$1 + $3]), [$2], [$3], [$4], [$5])])]) - - -# Implementing `foreach' loops in m4 is much more tricky than it may -# seem. For example, the old M4 1.4.4 manual had an incorrect example, -# which looked like this (when translated to m4sugar): -# -# | # foreach(VAR, (LIST), STMT) -# | m4_define([foreach], -# | [m4_pushdef([$1])_foreach([$1], [$2], [$3])m4_popdef([$1])]) -# | m4_define([_arg1], [$1]) -# | m4_define([_foreach], -# | [m4_if([$2], [()], , -# | [m4_define([$1], _arg1$2)$3[]_foreach([$1], (m4_shift$2), [$3])])]) -# -# But then if you run -# -# | m4_define(a, 1) -# | m4_define(b, 2) -# | m4_define(c, 3) -# | foreach([f], [([a], [(b], [c)])], [echo f -# | ]) -# -# it gives -# -# => echo 1 -# => echo (2,3) -# -# which is not what is expected. -# -# Of course the problem is that many quotes are missing. So you add -# plenty of quotes at random places, until you reach the expected -# result. Alternatively, if you are a quoting wizard, you directly -# reach the following implementation (but if you really did, then -# apply to the maintenance of m4sugar!). -# -# | # foreach(VAR, (LIST), STMT) -# | m4_define([foreach], [m4_pushdef([$1])_foreach($@)m4_popdef([$1])]) -# | m4_define([_arg1], [[$1]]) -# | m4_define([_foreach], -# | [m4_if($2, [()], , -# | [m4_define([$1], [_arg1$2])$3[]_foreach([$1], [(m4_shift$2)], [$3])])]) -# -# which this time answers -# -# => echo a -# => echo (b -# => echo c) -# -# Bingo! -# -# Well, not quite. -# -# With a better look, you realize that the parens are more a pain than -# a help: since anyway you need to quote properly the list, you end up -# with always using an outermost pair of parens and an outermost pair -# of quotes. Rejecting the parens both eases the implementation, and -# simplifies the use: -# -# | # foreach(VAR, (LIST), STMT) -# | m4_define([foreach], [m4_pushdef([$1])_foreach($@)m4_popdef([$1])]) -# | m4_define([_arg1], [$1]) -# | m4_define([_foreach], -# | [m4_if($2, [], , -# | [m4_define([$1], [_arg1($2)])$3[]_foreach([$1], [m4_shift($2)], [$3])])]) -# -# -# Now, just replace the `$2' with `m4_quote($2)' in the outer `m4_if' -# to improve robustness, and you come up with a nice implementation -# that doesn't require extra parentheses in the user's LIST. -# -# But wait - now the algorithm is quadratic, because every recursion of -# the algorithm keeps the entire LIST and merely adds another m4_shift to -# the quoted text. If the user has a lot of elements in LIST, you can -# bring the system to its knees with the memory m4 then requires, or trip -# the m4 --nesting-limit recursion factor. The only way to avoid -# quadratic growth is ensure m4_shift is expanded prior to the recursion. -# Hence the design below. -# -# The M4 manual now includes a chapter devoted to this issue, with -# the lessons learned from m4sugar. And still, this design is only -# optimal for M4 1.6; see foreach.m4 for yet more comments on why -# M4 1.4.x uses yet another implementation. - - -# m4_foreach(VARIABLE, LIST, EXPRESSION) -# -------------------------------------- -# -# Expand EXPRESSION assigning each value of the LIST to VARIABLE. -# LIST should have the form `item_1, item_2, ..., item_n', i.e. the -# whole list must *quoted*. Quote members too if you don't want them -# to be expanded. -# -# This macro is robust to active symbols: -# | m4_define(active, [ACT, IVE]) -# | m4_foreach(Var, [active, active], [-Var-]) -# => -ACT--IVE--ACT--IVE- -# -# | m4_foreach(Var, [[active], [active]], [-Var-]) -# => -ACT, IVE--ACT, IVE- -# -# | m4_foreach(Var, [[[active]], [[active]]], [-Var-]) -# => -active--active- -# -# This macro is called frequently, so avoid extra expansions such as -# m4_ifval and dnl. Also, since $2 might be quite large, try to use it -# as little as possible in _m4_foreach; each extra use requires that much -# more memory for expansion. So, rather than directly compare $2 against -# [] and use m4_car/m4_cdr for recursion, we instead unbox the list (which -# requires swapping the argument order in the helper), insert an ignored -# third argument, and use m4_shift3 to detect when recursion is complete, -# at which point this looks very much like m4_map_args. -m4_define([m4_foreach], -[m4_if([$2], [], [], - [m4_pushdef([$1])_$0([m4_define([$1],], [)$3], [], - $2)m4_popdef([$1])])]) - -# _m4_foreach(PRE, POST, IGNORED, ARG...) -# --------------------------------------- -# Form the common basis of the m4_foreach and m4_map macros. For each -# ARG, expand PRE[ARG]POST[]. The IGNORED argument makes recursion -# easier, and must be supplied rather than implicit. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([_m4_foreach], -[m4_if([$#], [3], [], - [$1[$4]$2[]$0([$1], [$2], m4_shift3($@))])]) - - -# m4_foreach_w(VARIABLE, LIST, EXPRESSION) -# ---------------------------------------- -# Like m4_foreach, but the list is whitespace separated. Depending on -# EXPRESSION, it may be more efficient to use m4_map_args_w. -# -# This macro is robust to active symbols: -# m4_foreach_w([Var], [ active -# b act\ -# ive ], [-Var-])end -# => -active--b--active-end -# -# This used to use a slower implementation based on m4_foreach: -# m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3]) -m4_define([m4_foreach_w], -[m4_pushdef([$1])m4_map_args_w([$2], - [m4_define([$1],], [)$3])m4_popdef([$1])]) - - -# m4_map(MACRO, LIST) -# m4_mapall(MACRO, LIST) -# ---------------------- -# Invoke MACRO($1), MACRO($2) etc. where $1, $2... are the elements of -# LIST. $1, $2... must in turn be lists, appropriate for m4_apply. -# If LIST contains an empty sublist, m4_map skips the expansion of -# MACRO, while m4_mapall expands MACRO with no arguments. -# -# Since LIST may be quite large, we want to minimize how often it -# appears in the expansion. Rather than use m4_car/m4_cdr iteration, -# we unbox the list, and use _m4_foreach for iteration. For m4_map, -# an empty list behaves like an empty sublist and gets ignored; for -# m4_mapall, we must special-case the empty list. -m4_define([m4_map], -[_m4_foreach([_m4_apply([$1],], [)], [], $2)]) - -m4_define([m4_mapall], -[m4_if([$2], [], [], - [_m4_foreach([m4_apply([$1],], [)], [], $2)])]) - - -# m4_map_sep(MACRO, [SEPARATOR], LIST) -# m4_mapall_sep(MACRO, [SEPARATOR], LIST) -# --------------------------------------- -# Invoke MACRO($1), SEPARATOR, MACRO($2), ..., MACRO($N) where $1, -# $2... $N are the elements of LIST, and are in turn lists appropriate -# for m4_apply. SEPARATOR is expanded, in order to allow the creation -# of a list of arguments by using a single-quoted comma as the -# separator. For each empty sublist, m4_map_sep skips the expansion -# of MACRO and SEPARATOR, while m4_mapall_sep expands MACRO with no -# arguments. -# -# For m4_mapall_sep, merely expand the first iteration without the -# separator, then include separator as part of subsequent recursion; -# but avoid extra expansion of LIST's side-effects via a helper macro. -# For m4_map_sep, things are trickier - we don't know if the first -# list element is an empty sublist, so we must define a self-modifying -# helper macro and use that as the separator instead. -m4_define([m4_map_sep], -[m4_pushdef([m4_Sep], [m4_define([m4_Sep], _m4_defn([m4_unquote]))])]dnl -[_m4_foreach([_m4_apply([m4_Sep([$2])[]$1],], [)], [], $3)m4_popdef([m4_Sep])]) - -m4_define([m4_mapall_sep], -[m4_if([$3], [], [], [_$0([$1], [$2], $3)])]) - -m4_define([_m4_mapall_sep], -[m4_apply([$1], [$3])_m4_foreach([m4_apply([$2[]$1],], [)], m4_shift2($@))]) - -# m4_map_args(EXPRESSION, ARG...) -# ------------------------------- -# Expand EXPRESSION([ARG]) for each argument. More efficient than -# m4_foreach([var], [ARG...], [EXPRESSION(m4_defn([var]))]) -# Shorthand for m4_map_args_sep([EXPRESSION(], [)], [], ARG...). -m4_define([m4_map_args], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [], - [$#], [2], [$1([$2])[]], - [_m4_foreach([$1(], [)], $@)])]) - - -# m4_map_args_pair(EXPRESSION, [END-EXPR = EXPRESSION], ARG...) -# ------------------------------------------------------------- -# Perform a pairwise grouping of consecutive ARGs, by expanding -# EXPRESSION([ARG1], [ARG2]). If there are an odd number of ARGs, the -# final argument is expanded with END-EXPR([ARGn]). -# -# For example: -# m4_define([show], [($*)m4_newline])dnl -# m4_map_args_pair([show], [], [a], [b], [c], [d], [e])dnl -# => (a,b) -# => (c,d) -# => (e) -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_map_args_pair], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [m4_fatal([$0: too few arguments: $#: $1])], - [$#], [2], [], - [$#], [3], [m4_default([$2], [$1])([$3])[]], - [$#], [4], [$1([$3], [$4])[]], - [$1([$3], [$4])[]$0([$1], [$2], m4_shift(m4_shift3($@)))])]) - - -# m4_map_args_sep([PRE], [POST], [SEP], ARG...) -# --------------------------------------------- -# Expand PRE[ARG]POST for each argument, with SEP between arguments. -m4_define([m4_map_args_sep], -[m4_if([$#], [0], [m4_fatal([$0: too few arguments: $#])], - [$#], [1], [], - [$#], [2], [], - [$#], [3], [], - [$#], [4], [$1[$4]$2[]], - [$1[$4]$2[]_m4_foreach([$3[]$1], [$2], m4_shift3($@))])]) - - -# m4_map_args_w(STRING, [PRE], [POST], [SEP]) -# ------------------------------------------- -# Perform the expansion of PRE[word]POST[] for each word in STRING -# separated by whitespace. More efficient than: -# m4_foreach_w([var], [STRING], [PRE[]m4_defn([var])POST]) -# Additionally, expand SEP between words. -# -# As long as we have to use m4_bpatsubst to split the string, we might -# as well make it also apply PRE and POST; this avoids iteration -# altogether. But we must be careful of any \ in PRE or POST. -# _m4_strip returns a quoted string, but that's okay, since it also -# supplies an empty leading and trailing argument due to our -# intentional whitespace around STRING. We use m4_substr to strip the -# empty elements and remove the extra layer of quoting. -m4_define([m4_map_args_w], -[_$0(_m4_split([ ]m4_flatten([$1])[ ], [[ ]+], - m4_if(m4_index([$2$3$4], [\]), [-1], [[$3[]$4[]$2]], - [m4_bpatsubst([[$3[]$4[]$2]], [\\], [\\\\])])), - m4_len([[]$3[]$4]), m4_len([$4[]$2[]]))]) - -m4_define([_m4_map_args_w], -[m4_substr([$1], [$2], m4_eval(m4_len([$1]) - [$2] - [$3]))]) - - -# m4_stack_foreach(MACRO, FUNC) -# m4_stack_foreach_lifo(MACRO, FUNC) -# ---------------------------------- -# Pass each stacked definition of MACRO to the one-argument macro FUNC. -# m4_stack_foreach proceeds in FIFO order, while m4_stack_foreach_lifo -# processes the topmost definitions first. In addition, FUNC should -# not push or pop definitions of MACRO, and should not expect anything about -# the active definition of MACRO (it will not be the topmost, and may not -# be the one passed to FUNC either). -# -# Some macros simply can't be examined with this method: namely, -# anything involved in the implementation of _m4_stack_reverse. -m4_define([m4_stack_foreach], -[_m4_stack_reverse([$1], [m4_tmp-$1])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1], [$2(_m4_defn([m4_tmp-$1]))])]) - -m4_define([m4_stack_foreach_lifo], -[_m4_stack_reverse([$1], [m4_tmp-$1], [$2(_m4_defn([m4_tmp-$1]))])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1])]) - -# m4_stack_foreach_sep(MACRO, [PRE], [POST], [SEP]) -# m4_stack_foreach_sep_lifo(MACRO, [PRE], [POST], [SEP]) -# ------------------------------------------------------ -# Similar to m4_stack_foreach and m4_stack_foreach_lifo, in that every -# definition of a pushdef stack will be visited. But rather than -# passing the definition as a single argument to a macro, this variant -# expands the concatenation of PRE[]definition[]POST, and expands SEP -# between consecutive expansions. Note that m4_stack_foreach([a], [b]) -# is equivalent to m4_stack_foreach_sep([a], [b(], [)]). -m4_define([m4_stack_foreach_sep], -[_m4_stack_reverse([$1], [m4_tmp-$1])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1], [$2[]_m4_defn([m4_tmp-$1])$3], [$4[]])]) - -m4_define([m4_stack_foreach_sep_lifo], -[_m4_stack_reverse([$1], [m4_tmp-$1], [$2[]_m4_defn([m4_tmp-$1])$3], [$4[]])]dnl -[_m4_stack_reverse([m4_tmp-$1], [$1])]) - - -# _m4_stack_reverse(OLD, NEW, [ACTION], [SEP]) -# -------------------------------------------- -# A recursive worker for pushdef stack manipulation. Destructively -# copy the OLD stack into the NEW, and expanding ACTION for each -# iteration. After the first iteration, SEP is promoted to the front -# of ACTION (note that SEP should include a trailing [] if it is to -# avoid interfering with ACTION). The current definition is examined -# after the NEW has been pushed but before OLD has been popped; this -# order is important, as ACTION is permitted to operate on either -# _m4_defn([OLD]) or _m4_defn([NEW]). Since the operation is -# destructive, this macro is generally used twice, with a temporary -# macro name holding the swapped copy. -m4_define([_m4_stack_reverse], -[m4_ifdef([$1], [m4_pushdef([$2], - _m4_defn([$1]))$3[]_m4_popdef([$1])$0([$1], [$2], [$4$3])])]) - - - -## --------------------------- ## -## 9. More diversion support. ## -## --------------------------- ## - - -# m4_cleardivert(DIVERSION-NAME...) -# --------------------------------- -# Discard any text in DIVERSION-NAME. -# -# This works even inside m4_expand. -m4_define([m4_cleardivert], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [_m4_divert_raw([-1])m4_undivert($@)_m4_divert_raw( - _m4_divert(_m4_defn([_m4_divert_diversion]), [-]))])]) - - -# _m4_divert(DIVERSION-NAME or NUMBER, [NOWARN]) -# ---------------------------------------------- -# If DIVERSION-NAME is the name of a diversion, return its number, -# otherwise if it is a NUMBER return it. Issue a warning about -# the use of a number instead of a name, unless NOWARN is provided. -m4_define([_m4_divert], -[m4_ifdef([_m4_divert($1)], - [m4_indir([_m4_divert($1)])], - [m4_if([$2], [], [m4_warn([syntax], - [prefer named diversions])])$1])]) - -# KILL is only used to suppress output. -m4_define([_m4_divert(KILL)], -1) - -# The empty diversion name is a synonym for 0. -m4_define([_m4_divert()], 0) - - -# m4_divert_stack -# --------------- -# Print the diversion stack, if it's nonempty. The caller is -# responsible for any leading or trailing newline. -m4_define([m4_divert_stack], -[m4_stack_foreach_sep_lifo([_m4_divert_stack], [], [], [ -])]) - - -# m4_divert_stack_push(MACRO-NAME, DIVERSION-NAME) -# ------------------------------------------------ -# Form an entry of the diversion stack from caller MACRO-NAME and -# entering DIVERSION-NAME and push it. -m4_define([m4_divert_stack_push], -[m4_pushdef([_m4_divert_stack], m4_location[: $1: $2])]) - - -# m4_divert(DIVERSION-NAME) -# ------------------------- -# Change the diversion stream to DIVERSION-NAME. -m4_define([m4_divert], -[m4_popdef([_m4_divert_stack])]dnl -[m4_define([_m4_divert_diversion], [$1])]dnl -[m4_divert_stack_push([$0], [$1])]dnl -[_m4_divert_raw(_m4_divert([$1]))]) - - -# m4_divert_push(DIVERSION-NAME, [NOWARN]) -# ---------------------------------------- -# Change the diversion stream to DIVERSION-NAME, while stacking old values. -# For internal use only: if NOWARN is not empty, DIVERSION-NAME can be a -# number instead of a name. -m4_define([m4_divert_push], -[m4_divert_stack_push([$0], [$1])]dnl -[m4_pushdef([_m4_divert_diversion], [$1])]dnl -[_m4_divert_raw(_m4_divert([$1], [$2]))]) - - -# m4_divert_pop([DIVERSION-NAME]) -# ------------------------------- -# Change the diversion stream to its previous value, unstacking it. -# If specified, verify we left DIVERSION-NAME. -# When we pop the last value from the stack, we divert to -1. -m4_define([m4_divert_pop], -[m4_if([$1], [], [], - [$1], _m4_defn([_m4_divert_diversion]), [], - [m4_fatal([$0($1): diversion mismatch: -]m4_divert_stack)])]dnl -[_m4_popdef([_m4_divert_stack], [_m4_divert_diversion])]dnl -[m4_ifdef([_m4_divert_diversion], [], - [m4_fatal([too many m4_divert_pop])])]dnl -[_m4_divert_raw(_m4_divert(_m4_defn([_m4_divert_diversion]), [-]))]) - - -# m4_divert_text(DIVERSION-NAME, CONTENT) -# --------------------------------------- -# Output CONTENT into DIVERSION-NAME (which may be a number actually). -# An end of line is appended for free to CONTENT. -m4_define([m4_divert_text], -[m4_divert_push([$1])$2 -m4_divert_pop([$1])]) - - -# m4_divert_once(DIVERSION-NAME, CONTENT) -# --------------------------------------- -# Output CONTENT into DIVERSION-NAME once, if not already there. -# An end of line is appended for free to CONTENT. -m4_define([m4_divert_once], -[m4_expand_once([m4_divert_text([$1], [$2])])]) - - -# _m4_divert_unsafe(DIVERSION-NAME) -# --------------------------------- -# Issue a warning that the attempt to change the current diversion to -# DIVERSION-NAME is unsafe, because this macro is being expanded -# during argument collection of m4_expand. -m4_define([_m4_divert_unsafe], -[m4_fatal([$0: cannot change diversion to `$1' inside m4_expand])]) - - -# m4_undivert(DIVERSION-NAME...) -# ------------------------------ -# Undivert DIVERSION-NAME. Unlike the M4 version, this requires at -# least one DIVERSION-NAME; also, due to support for named diversions, -# this should not be used to undivert files. -m4_define([m4_undivert], -[m4_if([$#], [0], [m4_fatal([$0: missing argument])], - [$#], [1], [_m4_undivert(_m4_divert([$1]))], - [m4_map_args([$0], $@)])]) - - -## --------------------------------------------- ## -## 10. Defining macros with bells and whistles. ## -## --------------------------------------------- ## - -# `m4_defun' is basically `m4_define' but it equips the macro with the -# needed machinery for `m4_require'. A macro must be m4_defun'd if -# either it is m4_require'd, or it m4_require's. -# -# Two things deserve attention and are detailed below: -# 1. Implementation of m4_require -# 2. Keeping track of the expansion stack -# -# 1. Implementation of m4_require -# =============================== -# -# Of course m4_defun calls m4_provide, so that a macro which has -# been expanded is not expanded again when m4_require'd, but the -# difficult part is the proper expansion of macros when they are -# m4_require'd. -# -# The implementation is based on three ideas, (i) using diversions to -# prepare the expansion of the macro and its dependencies (by Franc,ois -# Pinard), (ii) expand the most recently m4_require'd macros _after_ -# the previous macros (by Axel Thimm), and (iii) track instances of -# provide before require (by Eric Blake). -# -# -# The first idea: why use diversions? -# ----------------------------------- -# -# When a macro requires another, the other macro is expanded in new -# diversion, GROW. When the outer macro is fully expanded, we first -# undivert the most nested diversions (GROW - 1...), and finally -# undivert GROW. To understand why we need several diversions, -# consider the following example: -# -# | m4_defun([TEST1], [Test...m4_require([TEST2])1]) -# | m4_defun([TEST2], [Test...m4_require([TEST3])2]) -# | m4_defun([TEST3], [Test...3]) -# -# Because m4_require is not required to be first in the outer macros, we -# must keep the expansions of the various levels of m4_require separated. -# Right before executing the epilogue of TEST1, we have: -# -# GROW - 2: Test...3 -# GROW - 1: Test...2 -# GROW: Test...1 -# BODY: -# -# Finally the epilogue of TEST1 undiverts GROW - 2, GROW - 1, and -# GROW into the regular flow, BODY. -# -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: Test...3; Test...2; Test...1 -# -# (The semicolons are here for clarification, but of course are not -# emitted.) This is what Autoconf 2.0 (I think) to 2.13 (I'm sure) -# implement. -# -# -# The second idea: first required first out -# ----------------------------------------- -# -# The natural implementation of the idea above is buggy and produces -# very surprising results in some situations. Let's consider the -# following example to explain the bug: -# -# | m4_defun([TEST1], [m4_require([TEST2a])m4_require([TEST2b])]) -# | m4_defun([TEST2a], []) -# | m4_defun([TEST2b], [m4_require([TEST3])]) -# | m4_defun([TEST3], [m4_require([TEST2a])]) -# | -# | AC_INIT -# | TEST1 -# -# The dependencies between the macros are: -# -# 3 --- 2b -# / \ is m4_require'd by -# / \ left -------------------- right -# 2a ------------ 1 -# -# If you strictly apply the rules given in the previous section you get: -# -# GROW - 2: TEST3 -# GROW - 1: TEST2a; TEST2b -# GROW: TEST1 -# BODY: -# -# (TEST2a, although required by TEST3 is not expanded in GROW - 3 -# because is has already been expanded before in GROW - 1, so it has -# been AC_PROVIDE'd, so it is not expanded again) so when you undivert -# the stack of diversions, you get: -# -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: TEST3; TEST2a; TEST2b; TEST1 -# -# i.e., TEST2a is expanded after TEST3 although the latter required the -# former. -# -# Starting from 2.50, we use an implementation provided by Axel Thimm. -# The idea is simple: the order in which macros are emitted must be the -# same as the one in which macros are expanded. (The bug above can -# indeed be described as: a macro has been m4_provide'd before its -# dependent, but it is emitted after: the lack of correlation between -# emission and expansion order is guilty). -# -# How to do that? You keep the stack of diversions to elaborate the -# macros, but each time a macro is fully expanded, emit it immediately. -# -# In the example above, when TEST2a is expanded, but it's epilogue is -# not run yet, you have: -# -# GROW - 2: -# GROW - 1: TEST2a -# GROW: Elaboration of TEST1 -# BODY: -# -# The epilogue of TEST2a emits it immediately: -# -# GROW - 2: -# GROW - 1: -# GROW: Elaboration of TEST1 -# BODY: TEST2a -# -# TEST2b then requires TEST3, so right before the epilogue of TEST3, you -# have: -# -# GROW - 2: TEST3 -# GROW - 1: Elaboration of TEST2b -# GROW: Elaboration of TEST1 -# BODY: TEST2a -# -# The epilogue of TEST3 emits it: -# -# GROW - 2: -# GROW - 1: Elaboration of TEST2b -# GROW: Elaboration of TEST1 -# BODY: TEST2a; TEST3 -# -# TEST2b is now completely expanded, and emitted: -# -# GROW - 2: -# GROW - 1: -# GROW: Elaboration of TEST1 -# BODY: TEST2a; TEST3; TEST2b -# -# and finally, TEST1 is finished and emitted: -# -# GROW - 2: -# GROW - 1: -# GROW: -# BODY: TEST2a; TEST3; TEST2b: TEST1 -# -# The idea is simple, but the implementation is a bit involved. If -# you are like me, you will want to see the actual functioning of this -# implementation to be convinced. The next section gives the full -# details. -# -# -# The Axel Thimm implementation at work -# ------------------------------------- -# -# We consider the macros above, and this configure.ac: -# -# AC_INIT -# TEST1 -# -# You should keep the definitions of _m4_defun_pro, _m4_defun_epi, and -# m4_require at hand to follow the steps. -# -# This implementation tries not to assume that the current diversion is -# BODY, so as soon as a macro (m4_defun'd) is expanded, we first -# record the current diversion under the name _m4_divert_dump (denoted -# DUMP below for short). This introduces an important difference with -# the previous versions of Autoconf: you cannot use m4_require if you -# are not inside an m4_defun'd macro, and especially, you cannot -# m4_require directly from the top level. -# -# We have not tried to simulate the old behavior (better yet, we -# diagnose it), because it is too dangerous: a macro m4_require'd from -# the top level is expanded before the body of `configure', i.e., before -# any other test was run. I let you imagine the result of requiring -# AC_STDC_HEADERS for instance, before AC_PROG_CC was actually run.... -# -# After AC_INIT was run, the current diversion is BODY. -# * AC_INIT was run -# DUMP: undefined -# diversion stack: BODY |- -# -# * TEST1 is expanded -# The prologue of TEST1 sets _m4_divert_dump, which is the diversion -# where the current elaboration will be dumped, to the current -# diversion. It also m4_divert_push to GROW, where the full -# expansion of TEST1 and its dependencies will be elaborated. -# DUMP: BODY -# BODY: empty -# diversions: GROW, BODY |- -# -# * TEST1 requires TEST2a -# _m4_require_call m4_divert_pushes another temporary diversion, -# GROW - 1, and expands TEST2a in there. -# DUMP: BODY -# BODY: empty -# GROW - 1: TEST2a -# diversions: GROW - 1, GROW, BODY |- -# Then the content of the temporary diversion is moved to DUMP and the -# temporary diversion is popped. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW, BODY |- -# -# * TEST1 requires TEST2b -# Again, _m4_require_call pushes GROW - 1 and heads to expand TEST2b. -# DUMP: BODY -# BODY: TEST2a -# diversions: GROW - 1, GROW, BODY |- -# -# * TEST2b requires TEST3 -# _m4_require_call pushes GROW - 2 and expands TEST3 here. -# (TEST3 requires TEST2a, but TEST2a has already been m4_provide'd, so -# nothing happens.) -# DUMP: BODY -# BODY: TEST2a -# GROW - 2: TEST3 -# diversions: GROW - 2, GROW - 1, GROW, BODY |- -# Then the diversion is appended to DUMP, and popped. -# DUMP: BODY -# BODY: TEST2a; TEST3 -# diversions: GROW - 1, GROW, BODY |- -# -# * TEST1 requires TEST2b (contd.) -# The content of TEST2b is expanded... -# DUMP: BODY -# BODY: TEST2a; TEST3 -# GROW - 1: TEST2b, -# diversions: GROW - 1, GROW, BODY |- -# ... and moved to DUMP. -# DUMP: BODY -# BODY: TEST2a; TEST3; TEST2b -# diversions: GROW, BODY |- -# -# * TEST1 is expanded: epilogue -# TEST1's own content is in GROW... -# DUMP: BODY -# BODY: TEST2a; TEST3; TEST2b -# GROW: TEST1 -# diversions: BODY |- -# ... and it's epilogue moves it to DUMP and then undefines DUMP. -# DUMP: undefined -# BODY: TEST2a; TEST3; TEST2b; TEST1 -# diversions: BODY |- -# -# -# The third idea: track macros provided before they were required -# --------------------------------------------------------------- -# -# Using just the first two ideas, Autoconf 2.50 through 2.63 still had -# a subtle bug for more than seven years. Let's consider the -# following example to explain the bug: -# -# | m4_defun([TEST1], [1]) -# | m4_defun([TEST2], [2[]m4_require([TEST1])]) -# | m4_defun([TEST3], [3 TEST1 m4_require([TEST2])]) -# | TEST3 -# -# After the prologue of TEST3, we are collecting text in GROW with the -# intent of dumping it in BODY during the epilogue. Next, we -# encounter the direct invocation of TEST1, which provides the macro -# in place in GROW. From there, we encounter a requirement for TEST2, -# which must be collected in a new diversion. While expanding TEST2, -# we encounter a requirement for TEST1, but since it has already been -# expanded, the Axel Thimm algorithm states that we can treat it as a -# no-op. But that would lead to an end result of `2 3 1', meaning -# that we have once again output a macro (TEST2) prior to its -# requirements (TEST1). -# -# The problem can only occur if a single defun'd macro first provides, -# then later indirectly requires, the same macro. Note that directly -# expanding then requiring a macro is okay: because the dependency was -# met, the require phase can be a no-op. For that matter, the outer -# macro can even require two helpers, where the first helper expands -# the macro, and the second helper indirectly requires the macro. -# Out-of-order expansion is only present if the inner macro is -# required by something that will be hoisted in front of where the -# direct expansion occurred. In other words, we must be careful not -# to warn on: -# -# | m4_defun([TEST4], [4]) -# | m4_defun([TEST5], [5 TEST4 m4_require([TEST4])]) -# | TEST5 => 5 4 -# -# or even the more complex: -# -# | m4_defun([TEST6], [6]) -# | m4_defun([TEST7], [7 TEST6]) -# | m4_defun([TEST8], [8 m4_require([TEST6])]) -# | m4_defun([TEST9], [9 m4_require([TEST8])]) -# | m4_defun([TEST10], [10 m4_require([TEST7]) m4_require([TEST9])]) -# | TEST10 => 7 6 8 9 10 -# -# So, to detect whether a require was direct or indirect, m4_defun and -# m4_require track the name of the macro that caused a diversion to be -# created (using the stack _m4_diverting, coupled with an O(1) lookup -# _m4_diverting([NAME])), and m4_provide stores the name associated -# with the diversion at which a macro was provided. A require call is -# direct if it occurs within the same diversion where the macro was -# provided, or if the diversion associated with the providing context -# has been collected. -# -# The implementation of the warning involves tracking the set of -# macros which have been provided since the start of the outermost -# defun'd macro (the set is named _m4_provide). When starting an -# outermost macro, the set is emptied; when a macro is provided, it is -# added to the set; when require expands the body of a macro, it is -# removed from the set; and when a macro is indirectly required, the -# set is checked. If a macro is in the set, then it has been provided -# before it was required, and we satisfy dependencies by expanding the -# macro as if it had never been provided; in the example given above, -# this means we now output `1 2 3 1'. Meanwhile, a warning is issued -# to inform the user that her macros trigger the bug in older autoconf -# versions, and that her output file now contains redundant contents -# (and possibly new problems, if the repeated macro was not -# idempotent). Meanwhile, macros defined by m4_defun_once instead of -# m4_defun are idempotent, avoiding any warning or duplicate output. -# -# -# 2. Keeping track of the expansion stack -# ======================================= -# -# When M4 expansion goes wrong it is often extremely hard to find the -# path amongst macros that drove to the failure. What is needed is -# the stack of macro `calls'. One could imagine that GNU M4 would -# maintain a stack of macro expansions, unfortunately it doesn't, so -# we do it by hand. This is of course extremely costly, but the help -# this stack provides is worth it. Nevertheless to limit the -# performance penalty this is implemented only for m4_defun'd macros, -# not for define'd macros. -# -# Each time we enter an m4_defun'd macros, we add a definition in -# _m4_expansion_stack, and when we exit the macro, we remove it (thanks -# to pushdef/popdef). m4_stack_foreach is used to print the expansion -# stack in the rare cases when it's needed. -# -# In addition, we want to detect circular m4_require dependencies. -# Each time we expand a macro FOO we define _m4_expanding(FOO); and -# m4_require(BAR) simply checks whether _m4_expanding(BAR) is defined. - - -# m4_expansion_stack -# ------------------ -# Expands to the entire contents of the expansion stack. The caller -# must supply a trailing newline. This macro always prints a -# location; check whether _m4_expansion_stack is defined to filter out -# the case when no defun'd macro is in force. -m4_define([m4_expansion_stack], -[m4_stack_foreach_sep_lifo([_$0], [_$0_entry(], [) -])m4_location[: the top level]]) - -# _m4_expansion_stack_entry(MACRO) -# -------------------------------- -# Format an entry for MACRO found on the expansion stack. -m4_define([_m4_expansion_stack_entry], -[_m4_defn([m4_location($1)])[: $1 is expanded from...]]) - -# m4_expansion_stack_push(MACRO) -# ------------------------------ -# Form an entry of the expansion stack on entry to MACRO and push it. -m4_define([m4_expansion_stack_push], -[m4_pushdef([_m4_expansion_stack], [$1])]) - - -# _m4_divert(GROW) -# ---------------- -# This diversion is used by the m4_defun/m4_require machinery. It is -# important to keep room before GROW because for each nested -# AC_REQUIRE we use an additional diversion (i.e., two m4_require's -# will use GROW - 2. More than 3 levels has never seemed to be -# needed.) -# -# ... -# - GROW - 2 -# m4_require'd code, 2 level deep -# - GROW - 1 -# m4_require'd code, 1 level deep -# - GROW -# m4_defun'd macros are elaborated here. - -m4_define([_m4_divert(GROW)], 10000) - - -# _m4_defun_pro(MACRO-NAME) -# ------------------------- -# The prologue for Autoconf macros. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and m4_defn overhead. -m4_define([_m4_defun_pro], -[m4_ifdef([_m4_expansion_stack], [], [_m4_defun_pro_outer([$1])])]dnl -[m4_expansion_stack_push([$1])m4_pushdef([_m4_expanding($1)])]) - -m4_define([_m4_defun_pro_outer], -[m4_set_delete([_m4_provide])]dnl -[m4_pushdef([_m4_diverting([$1])])m4_pushdef([_m4_diverting], [$1])]dnl -[m4_pushdef([_m4_divert_dump], m4_divnum)m4_divert_push([GROW])]) - -# _m4_defun_epi(MACRO-NAME) -# ------------------------- -# The Epilogue for Autoconf macros. MACRO-NAME only helps tracing -# the PRO/EPI pairs. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and m4_popdef overhead. -m4_define([_m4_defun_epi], -[_m4_popdef([_m4_expanding($1)], [_m4_expansion_stack])]dnl -[m4_ifdef([_m4_expansion_stack], [], [_m4_defun_epi_outer([$1])])]dnl -[m4_provide([$1])]) - -m4_define([_m4_defun_epi_outer], -[_m4_popdef([_m4_divert_dump], [_m4_diverting([$1])], [_m4_diverting])]dnl -[m4_divert_pop([GROW])m4_undivert([GROW])]) - - -# _m4_divert_dump -# --------------- -# If blank, we are outside of any defun'd macro. Otherwise, expands -# to the diversion number (not name) where require'd macros should be -# moved once completed. -m4_define([_m4_divert_dump]) - - -# m4_divert_require(DIVERSION, NAME-TO-CHECK, [BODY-TO-EXPAND]) -# ------------------------------------------------------------- -# Same as m4_require, but BODY-TO-EXPAND goes into the named DIVERSION; -# requirements still go in the current diversion though. -# -m4_define([m4_divert_require], -[m4_ifdef([_m4_expanding($2)], - [m4_fatal([$0: circular dependency of $2])])]dnl -[m4_if(_m4_divert_dump, [], - [m4_fatal([$0($2): cannot be used outside of an m4_defun'd macro])])]dnl -[m4_provide_if([$2], [], - [_m4_require_call([$2], [$3], _m4_divert([$1], [-]))])]) - - -# m4_defun(NAME, EXPANSION, [MACRO = m4_define]) -# ---------------------------------------------- -# Define a macro NAME which automatically provides itself. Add -# machinery so the macro automatically switches expansion to the -# diversion stack if it is not already using it, prior to EXPANSION. -# In this case, once finished, it will bring back all the code -# accumulated in the diversion stack. This, combined with m4_require, -# achieves the topological ordering of macros. We don't use this -# macro to define some frequently called macros that are not involved -# in ordering constraints, to save m4 processing. -# -# MACRO is an undocumented argument; when set to m4_pushdef, and NAME -# is already defined, the new definition is added to the pushdef -# stack, rather than overwriting the current definition. It can thus -# be used to write self-modifying macros, which pop themselves to a -# previously m4_define'd definition so that subsequent use of the -# macro is faster. -m4_define([m4_defun], -[m4_define([m4_location($1)], m4_location)]dnl -[m4_default([$3], [m4_define])([$1], - [_m4_defun_pro(]m4_dquote($[0])[)$2[]_m4_defun_epi(]m4_dquote($[0])[)])]) - - -# m4_defun_init(NAME, INIT, COMMON) -# --------------------------------- -# Like m4_defun, but split EXPANSION into two portions: INIT which is -# done only the first time NAME is invoked, and COMMON which is -# expanded every time. -# -# For now, the COMMON definition is always m4_define'd, giving an even -# lighter-weight definition. m4_defun allows self-providing, but once -# a macro is provided, m4_require no longer cares if it is m4_define'd -# or m4_defun'd. m4_defun also provides location tracking to identify -# dependency bugs, but once the INIT has been expanded, we know there -# are no dependency bugs. However, if a future use needs COMMON to be -# m4_defun'd, we can add a parameter, similar to the third parameter -# to m4_defun. -m4_define([m4_defun_init], -[m4_define([$1], [$3[]])m4_defun([$1], - [$2[]_m4_popdef(]m4_dquote($[0])[)m4_indir(]m4_dquote($[0])dnl -[m4_if(]m4_dquote($[#])[, [0], [], ]m4_dquote([,$]@)[))], [m4_pushdef])]) - - -# m4_defun_once(NAME, EXPANSION) -# ------------------------------ -# Like m4_defun, but guarantee that EXPANSION only happens once -# (thereafter, using NAME is a no-op). -# -# If _m4_divert_dump is empty, we are called at the top level; -# otherwise, we must ensure that we are required in front of the -# current defun'd macro. Use a helper macro so that EXPANSION need -# only occur once in the definition of NAME, since it might be large. -m4_define([m4_defun_once], -[m4_define([m4_location($1)], m4_location)]dnl -[m4_define([$1], [_m4_defun_once([$1], [$2], m4_if(_m4_divert_dump, [], - [[_m4_defun_pro([$1])m4_unquote(], [)_m4_defun_epi([$1])]], -m4_ifdef([_m4_diverting([$1])], [-]), [-], [[m4_unquote(], [)]], - [[_m4_require_call([$1],], [, _m4_divert_dump)]]))])]) - -m4_define([_m4_defun_once], -[m4_pushdef([$1])$3[$2[]m4_provide([$1])]$4]) - - -# m4_pattern_forbid(ERE, [WHY]) -# ----------------------------- -# Declare that no token matching the forbidden extended regular -# expression ERE should be seen in the output unless... -m4_define([m4_pattern_forbid], []) - - -# m4_pattern_allow(ERE) -# --------------------- -# ... that token also matches the allowed extended regular expression ERE. -# Both used via traces. -m4_define([m4_pattern_allow], []) - - -## --------------------------------- ## -## 11. Dependencies between macros. ## -## --------------------------------- ## - - -# m4_before(THIS-MACRO-NAME, CALLED-MACRO-NAME) -# --------------------------------------------- -# Issue a warning if CALLED-MACRO-NAME was called before THIS-MACRO-NAME. -m4_define([m4_before], -[m4_provide_if([$2], - [m4_warn([syntax], [$2 was called before $1])])]) - - -# m4_require(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK]) -# ----------------------------------------------------------- -# If NAME-TO-CHECK has never been expanded (actually, if it is not -# m4_provide'd), expand BODY-TO-EXPAND *before* the current macro -# expansion; follow the expansion with a newline. Once expanded, emit -# it in _m4_divert_dump. Keep track of the m4_require chain in -# _m4_expansion_stack. -# -# The normal cases are: -# -# - NAME-TO-CHECK == BODY-TO-EXPAND -# Which you can use for regular macros with or without arguments, e.g., -# m4_require([AC_PROG_CC], [AC_PROG_CC]) -# m4_require([AC_CHECK_HEADERS(threads.h)], [AC_CHECK_HEADERS(threads.h)]) -# which is just the same as -# m4_require([AC_PROG_CC]) -# m4_require([AC_CHECK_HEADERS(threads.h)]) -# -# - BODY-TO-EXPAND == m4_indir([NAME-TO-CHECK]) -# In the case of macros with irregular names. For instance: -# m4_require([AC_LANG_COMPILER(C)], [indir([AC_LANG_COMPILER(C)])]) -# which means `if the macro named `AC_LANG_COMPILER(C)' (the parens are -# part of the name, it is not an argument) has not been run, then -# call it.' -# Had you used -# m4_require([AC_LANG_COMPILER(C)], [AC_LANG_COMPILER(C)]) -# then m4_require would have tried to expand `AC_LANG_COMPILER(C)', i.e., -# call the macro `AC_LANG_COMPILER' with `C' as argument. -# -# You could argue that `AC_LANG_COMPILER', when it receives an argument -# such as `C' should dispatch the call to `AC_LANG_COMPILER(C)'. But this -# `extension' prevents `AC_LANG_COMPILER' from having actual arguments that -# it passes to `AC_LANG_COMPILER(C)'. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and other overhead on the common path. -m4_define([m4_require], -[m4_ifdef([_m4_expanding($1)], - [m4_fatal([$0: circular dependency of $1])])]dnl -[m4_if(_m4_divert_dump, [], - [m4_fatal([$0($1): cannot be used outside of an ]dnl -m4_if([$0], [m4_require], [[m4_defun]], [[AC_DEFUN]])['d macro])])]dnl -[m4_provide_if([$1], [m4_set_contains([_m4_provide], [$1], - [_m4_require_check([$1], _m4_defn([m4_provide($1)]), [$0])], [m4_ignore])], - [_m4_require_call])([$1], [$2], _m4_divert_dump)]) - - -# _m4_require_call(NAME-TO-CHECK, [BODY-TO-EXPAND = NAME-TO-CHECK], -# DIVERSION-NUMBER) -# ----------------------------------------------------------------- -# If m4_require decides to expand the body, it calls this macro. The -# expansion is placed in DIVERSION-NUMBER. -# -# This is called frequently, so minimize the number of macro invocations -# by avoiding dnl and other overhead on the common path. -m4_define([_m4_require_call], -[m4_pushdef([_m4_divert_grow], m4_decr(_m4_divert_grow))]dnl -[m4_pushdef([_m4_diverting([$1])])m4_pushdef([_m4_diverting], [$1])]dnl -[m4_divert_push(_m4_divert_grow, [-])]dnl -[m4_if([$2], [], [$1], [$2]) -m4_provide_if([$1], [m4_set_remove([_m4_provide], [$1])], - [m4_warn([syntax], [$1 is m4_require'd but not m4_defun'd])])]dnl -[_m4_divert_raw($3)_m4_undivert(_m4_divert_grow)]dnl -[m4_divert_pop(_m4_divert_grow)_m4_popdef([_m4_divert_grow], -[_m4_diverting([$1])], [_m4_diverting])]) - - -# _m4_require_check(NAME-TO-CHECK, OWNER, CALLER) -# ----------------------------------------------- -# NAME-TO-CHECK has been identified as previously expanded in the -# diversion owned by OWNER. If this is a problem, warn on behalf of -# CALLER and return _m4_require_call; otherwise return m4_ignore. -m4_define([_m4_require_check], -[m4_if(_m4_defn([_m4_diverting]), [$2], [m4_ignore], - m4_ifdef([_m4_diverting([$2])], [-]), [-], [m4_warn([syntax], - [$3: `$1' was expanded before it was required -http://www.gnu.org/software/autoconf/manual/autoconf.html#Expanded-Before-Required])_m4_require_call], - [m4_ignore])]) - - -# _m4_divert_grow -# --------------- -# The counter for _m4_require_call. -m4_define([_m4_divert_grow], _m4_divert([GROW])) - - -# m4_expand_once(TEXT, [WITNESS = TEXT]) -# -------------------------------------- -# If TEXT has never been expanded, expand it *here*. Use WITNESS as -# as a memory that TEXT has already been expanded. -m4_define([m4_expand_once], -[m4_provide_if(m4_default_quoted([$2], [$1]), - [], - [m4_provide(m4_default_quoted([$2], [$1]))[]$1])]) - - -# m4_provide(MACRO-NAME) -# ---------------------- -m4_define([m4_provide], -[m4_ifdef([m4_provide($1)], [], -[m4_set_add([_m4_provide], [$1], [m4_define([m4_provide($1)], - m4_ifdef([_m4_diverting], [_m4_defn([_m4_diverting])]))])])]) - - -# m4_provide_if(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ------------------------------------------------------- -# If MACRO-NAME is provided do IF-PROVIDED, else IF-NOT-PROVIDED. -# The purpose of this macro is to provide the user with a means to -# check macros which are provided without letting her know how the -# information is coded. -m4_define([m4_provide_if], -[m4_ifdef([m4_provide($1)], - [$2], [$3])]) - - -## --------------------- ## -## 12. Text processing. ## -## --------------------- ## - - -# m4_cr_letters -# m4_cr_LETTERS -# m4_cr_Letters -# ------------- -m4_define([m4_cr_letters], [abcdefghijklmnopqrstuvwxyz]) -m4_define([m4_cr_LETTERS], [ABCDEFGHIJKLMNOPQRSTUVWXYZ]) -m4_define([m4_cr_Letters], -m4_defn([m4_cr_letters])dnl -m4_defn([m4_cr_LETTERS])dnl -) - - -# m4_cr_digits -# ------------ -m4_define([m4_cr_digits], [0123456789]) - - -# m4_cr_alnum -# ----------- -m4_define([m4_cr_alnum], -m4_defn([m4_cr_Letters])dnl -m4_defn([m4_cr_digits])dnl -) - - -# m4_cr_symbols1 -# m4_cr_symbols2 -# -------------- -m4_define([m4_cr_symbols1], -m4_defn([m4_cr_Letters])dnl -_) - -m4_define([m4_cr_symbols2], -m4_defn([m4_cr_symbols1])dnl -m4_defn([m4_cr_digits])dnl -) - -# m4_cr_all -# --------- -# The character range representing everything, with `-' as the last -# character, since it is special to m4_translit. Use with care, because -# it contains characters special to M4 (fortunately, both ASCII and EBCDIC -# have [] in order, so m4_defn([m4_cr_all]) remains a valid string). It -# also contains characters special to terminals, so it should never be -# displayed in an error message. Also, attempts to map [ and ] to other -# characters via m4_translit must deal with the fact that m4_translit does -# not add quotes to the output. -# -# In EBCDIC, $ is immediately followed by *, which leads to problems -# if m4_cr_all is inlined into a macro definition; so swap them. -# -# It is mainly useful in generating inverted character range maps, for use -# in places where m4_translit is faster than an equivalent m4_bpatsubst; -# the regex `[^a-z]' is equivalent to: -# m4_translit(m4_dquote(m4_defn([m4_cr_all])), [a-z]) -m4_define([m4_cr_all], -m4_translit(m4_dquote(m4_format(m4_dquote(m4_for( - ,1,255,,[[%c]]))m4_for([i],1,255,,[,i]))), [$*-], [*$])-) - - -# _m4_define_cr_not(CATEGORY) -# --------------------------- -# Define m4_cr_not_CATEGORY as the inverse of m4_cr_CATEGORY. -m4_define([_m4_define_cr_not], -[m4_define([m4_cr_not_$1], - m4_translit(m4_dquote(m4_defn([m4_cr_all])), - m4_defn([m4_cr_$1])))]) - - -# m4_cr_not_letters -# m4_cr_not_LETTERS -# m4_cr_not_Letters -# m4_cr_not_digits -# m4_cr_not_alnum -# m4_cr_not_symbols1 -# m4_cr_not_symbols2 -# ------------------ -# Inverse character sets -_m4_define_cr_not([letters]) -_m4_define_cr_not([LETTERS]) -_m4_define_cr_not([Letters]) -_m4_define_cr_not([digits]) -_m4_define_cr_not([alnum]) -_m4_define_cr_not([symbols1]) -_m4_define_cr_not([symbols2]) - - -# m4_newline([STRING]) -# -------------------- -# Expands to a newline, possibly followed by STRING. Exists mostly for -# formatting reasons. -m4_define([m4_newline], [ -$1]) - - -# m4_re_escape(STRING) -# -------------------- -# Escape RE active characters in STRING. -m4_define([m4_re_escape], -[m4_bpatsubst([$1], - [[][*+.?\^$]], [\\\&])]) - - -# m4_re_string -# ------------ -# Regexp for `[a-zA-Z_0-9]*' -# m4_dquote provides literal [] for the character class. -m4_define([m4_re_string], -m4_dquote(m4_defn([m4_cr_symbols2]))dnl -[*]dnl -) - - -# m4_re_word -# ---------- -# Regexp for `[a-zA-Z_][a-zA-Z_0-9]*' -m4_define([m4_re_word], -m4_dquote(m4_defn([m4_cr_symbols1]))dnl -m4_defn([m4_re_string])dnl -) - - -# m4_tolower(STRING) -# m4_toupper(STRING) -# ------------------ -# These macros convert STRING to lowercase or uppercase. -# -# Rather than expand the m4_defn each time, we inline them up front. -m4_define([m4_tolower], -[m4_translit([[$1]], ]m4_dquote(m4_defn([m4_cr_LETTERS]))[, - ]m4_dquote(m4_defn([m4_cr_letters]))[)]) -m4_define([m4_toupper], -[m4_translit([[$1]], ]m4_dquote(m4_defn([m4_cr_letters]))[, - ]m4_dquote(m4_defn([m4_cr_LETTERS]))[)]) - - -# m4_split(STRING, [REGEXP]) -# -------------------------- -# Split STRING into an m4 list of quoted elements. The elements are -# quoted with [ and ]. Beginning spaces and end spaces *are kept*. -# Use m4_strip to remove them. -# -# REGEXP specifies where to split. Default is [\t ]+. -# -# If STRING is empty, the result is an empty list. -# -# Pay attention to the m4_changequotes. When m4 reads the definition of -# m4_split, it still has quotes set to [ and ]. Luckily, these are matched -# in the macro body, so the definition is stored correctly. Use the same -# alternate quotes as m4_noquote; it must be unlikely to appear in $1. -# -# Also, notice that $1 is quoted twice, since we want the result to -# be quoted. Then you should understand that the argument of -# patsubst is -=<{(STRING)}>=- (i.e., with additional -=<{( and )}>=-). -# -# This macro is safe on active symbols, i.e.: -# m4_define(active, ACTIVE) -# m4_split([active active ])end -# => [active], [active], []end -# -# Optimize on regex of ` ' (space), since m4_foreach_w already guarantees -# that the list contains single space separators, and a common case is -# splitting a single-element list. This macro is called frequently, -# so avoid unnecessary dnl inside the definition. -m4_define([m4_split], -[m4_if([$1], [], [], - [$2], [ ], [m4_if(m4_index([$1], [ ]), [-1], [[[$1]]], - [_$0([$1], [$2], [, ])])], - [$2], [], [_$0([$1], [[ ]+], [, ])], - [_$0([$1], [$2], [, ])])]) - -m4_define([_m4_split], -[m4_changequote([-=<{(],[)}>=-])]dnl -[[m4_bpatsubst(-=<{(-=<{($1)}>=-)}>=-, -=<{($2)}>=-, - -=<{(]$3[)}>=-)]m4_changequote([, ])]) - - -# m4_chomp(STRING) -# m4_chomp_all(STRING) -# -------------------- -# Return STRING quoted, but without a trailing newline. m4_chomp -# removes at most one newline, while m4_chomp_all removes all -# consecutive trailing newlines. Embedded newlines are not touched, -# and a trailing backslash-newline leaves just a trailing backslash. -# -# m4_bregexp is slower than m4_index, and we don't always want to -# remove all newlines; hence the two variants. We massage characters -# to give a nicer pattern to match, particularly since m4_bregexp is -# line-oriented. Both versions must guarantee a match, to avoid bugs -# with precision -1 in m4_format in older m4. -m4_define([m4_chomp], -[m4_format([[%.*s]], m4_index(m4_translit([[$1]], [ -/.], [/ ])[./.], [/.]), [$1])]) - -m4_define([m4_chomp_all], -[m4_format([[%.*s]], m4_bregexp(m4_translit([[$1]], [ -/], [/ ]), [/*$]), [$1])]) - - -# m4_flatten(STRING) -# ------------------ -# If STRING contains end of lines, replace them with spaces. If there -# are backslashed end of lines, remove them. This macro is safe with -# active symbols. -# m4_define(active, ACTIVE) -# m4_flatten([active -# act\ -# ive])end -# => active activeend -# -# In m4, m4_bpatsubst is expensive, so first check for a newline. -m4_define([m4_flatten], -[m4_if(m4_index([$1], [ -]), [-1], [[$1]], - [m4_translit(m4_bpatsubst([[[$1]]], [\\ -]), [ -], [ ])])]) - - -# m4_strip(STRING) -# ---------------- -# Expands into STRING with tabs and spaces singled out into a single -# space, and removing leading and trailing spaces. -# -# This macro is robust to active symbols. -# m4_define(active, ACTIVE) -# m4_strip([ active active ])end -# => active activeend -# -# First, notice that we guarantee trailing space. Why? Because regular -# expressions are greedy, and `.* ?' would always group the space into the -# .* portion. The algorithm is simpler by avoiding `?' at the end. The -# algorithm correctly strips everything if STRING is just ` '. -# -# Then notice the second pattern: it is in charge of removing the -# leading/trailing spaces. Why not just `[^ ]'? Because they are -# applied to over-quoted strings, i.e. more or less [STRING], due -# to the limitations of m4_bpatsubsts. So the leading space in STRING -# is the *second* character; equally for the trailing space. -m4_define([m4_strip], -[m4_bpatsubsts([$1 ], - [[ ]+], [ ], - [^. ?\(.*\) .$], [[[\1]]])]) - - -# m4_normalize(STRING) -# -------------------- -# Apply m4_flatten and m4_strip to STRING. -# -# The argument is quoted, so that the macro is robust to active symbols: -# -# m4_define(active, ACTIVE) -# m4_normalize([ act\ -# ive -# active ])end -# => active activeend - -m4_define([m4_normalize], -[m4_strip(m4_flatten([$1]))]) - - - -# m4_join(SEP, ARG1, ARG2...) -# --------------------------- -# Produce ARG1SEPARG2...SEPARGn. Avoid back-to-back SEP when a given ARG -# is the empty string. No expansion is performed on SEP or ARGs. -# -# Since the number of arguments to join can be arbitrarily long, we -# want to avoid having more than one $@ in the macro definition; -# otherwise, the expansion would require twice the memory of the already -# long list. Hence, m4_join merely looks for the first non-empty element, -# and outputs just that element; while _m4_join looks for all non-empty -# elements, and outputs them following a separator. The final trick to -# note is that we decide between recursing with $0 or _$0 based on the -# nested m4_if ending with `_'. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift2($@))])]) -m4_define([_m4_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift2($@))])]) - -# m4_joinall(SEP, ARG1, ARG2...) -# ------------------------------ -# Produce ARG1SEPARG2...SEPARGn. An empty ARG results in back-to-back SEP. -# No expansion is performed on SEP or ARGs. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_joinall], [[$2]_$0([$1], m4_shift($@))]) -m4_define([_m4_joinall], -[m4_if([$#], [2], [], [[$1$3]$0([$1], m4_shift2($@))])]) - -# m4_combine([SEPARATOR], PREFIX-LIST, [INFIX], SUFFIX...) -# -------------------------------------------------------- -# Produce the pairwise combination of every element in the quoted, -# comma-separated PREFIX-LIST with every element from the SUFFIX arguments. -# Each pair is joined with INFIX, and pairs are separated by SEPARATOR. -# No expansion occurs on SEPARATOR, INFIX, or elements of either list. -# -# For example: -# m4_combine([, ], [[a], [b], [c]], [-], [1], [2], [3]) -# => a-1, a-2, a-3, b-1, b-2, b-3, c-1, c-2, c-3 -# -# This definition is a bit hairy; the thing to realize is that we want -# to construct m4_map_args_sep([[prefix$3]], [], [[$1]], m4_shift3($@)) -# as the inner loop, using each prefix generated by the outer loop, -# and without recalculating m4_shift3 every outer iteration. -m4_define([m4_combine], -[m4_if([$2], [], [], m4_eval([$# > 3]), [1], -[m4_map_args_sep([m4_map_args_sep(m4_dquote(], [)[[$3]], [], [[$1]],]]]dnl -[m4_dquote(m4_dquote(m4_shift3($@)))[[)], [[$1]], $2)])]) - - -# m4_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR`'STRING' -# at the end. It is valid to use this macro with MACRO-NAME undefined, -# in which case no SEPARATOR is added. Be aware that the criterion is -# `not being defined', and not `not being empty'. -# -# Note that neither STRING nor SEPARATOR are expanded here; rather, when -# you expand MACRO-NAME, they will be expanded at that point in time. -# -# This macro is robust to active symbols. It can be used to grow -# strings. -# -# | m4_define(active, ACTIVE)dnl -# | m4_append([sentence], [This is an])dnl -# | m4_append([sentence], [ active ])dnl -# | m4_append([sentence], [symbol.])dnl -# | sentence -# | m4_undefine([active])dnl -# | sentence -# => This is an ACTIVE symbol. -# => This is an active symbol. -# -# It can be used to define hooks. -# -# | m4_define(active, ACTIVE)dnl -# | m4_append([hooks], [m4_define([act1], [act2])])dnl -# | m4_append([hooks], [m4_define([act2], [active])])dnl -# | m4_undefine([active])dnl -# | act1 -# | hooks -# | act1 -# => act1 -# => -# => active -# -# It can also be used to create lists, although this particular usage was -# broken prior to autoconf 2.62. -# | m4_append([list], [one], [, ])dnl -# | m4_append([list], [two], [, ])dnl -# | m4_append([list], [three], [, ])dnl -# | list -# | m4_dquote(list) -# => one, two, three -# => [one],[two],[three] -# -# Note that m4_append can benefit from amortized O(n) m4 behavior, if -# the underlying m4 implementation is smart enough to avoid copying existing -# contents when enlarging a macro's definition into any pre-allocated storage -# (m4 1.4.x unfortunately does not implement this optimization). We do -# not implement m4_prepend, since it is inherently O(n^2) (pre-allocated -# storage only occurs at the end of a macro, so the existing contents must -# always be moved). -# -# Use _m4_defn for speed. -m4_define([m4_append], -[m4_define([$1], m4_ifdef([$1], [_m4_defn([$1])[$3]])[$2])]) - - -# m4_append_uniq(MACRO-NAME, STRING, [SEPARATOR], [IF-UNIQ], [IF-DUP]) -# -------------------------------------------------------------------- -# Like `m4_append', but append only if not yet present. Additionally, -# expand IF-UNIQ if STRING was appended, or IF-DUP if STRING was already -# present. Also, warn if SEPARATOR is not empty and occurs within STRING, -# as the algorithm no longer guarantees uniqueness. -# -# Note that while m4_append can be O(n) (depending on the quality of the -# underlying M4 implementation), m4_append_uniq is inherently O(n^2) -# because each append operation searches the entire string. -m4_define([m4_append_uniq], -[m4_ifval([$3], [m4_if(m4_index([$2], [$3]), [-1], [], - [m4_warn([syntax], - [$0: `$2' contains `$3'])])])_$0($@)]) -m4_define([_m4_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]_m4_defn([$1])[$3], [$3$2$3]), [-1], - [m4_append([$1], [$2], [$3])$4], [$5])], - [m4_define([$1], [$2])$4])]) - -# m4_append_uniq_w(MACRO-NAME, STRINGS) -# ------------------------------------- -# For each of the words in the whitespace separated list STRINGS, append -# only the unique strings to the definition of MACRO-NAME. -# -# Use _m4_defn for speed. -m4_define([m4_append_uniq_w], -[m4_map_args_w([$2], [_m4_append_uniq([$1],], [, [ ])])]) - - -# m4_escape(STRING) -# ----------------- -# Output quoted STRING, but with embedded #, $, [ and ] turned into -# quadrigraphs. -# -# It is faster to check if STRING is already good using m4_translit -# than to blindly perform four m4_bpatsubst. -# -# Because the translit is stripping quotes, it must also neutralize -# anything that might be in a macro name, as well as comments, commas, -# and parentheses. All the problem characters are unified so that a -# single m4_index can scan the result. -# -# Rather than expand m4_defn every time m4_escape is expanded, we -# inline its expansion up front. -m4_define([m4_escape], -[m4_if(m4_index(m4_translit([$1], - [[]#,()]]m4_dquote(m4_defn([m4_cr_symbols2]))[, [$$$]), [$]), - [-1], [m4_echo], [_$0])([$1])]) - -m4_define([_m4_escape], -[m4_changequote([-=<{(],[)}>=-])]dnl -[m4_bpatsubst(m4_bpatsubst(m4_bpatsubst(m4_bpatsubst( - -=<{(-=<{(-=<{(-=<{(-=<{($1)}>=-)}>=-)}>=-)}>=-)}>=-, - -=<{(#)}>=-, -=<{(@%:@)}>=-), - -=<{(\[)}>=-, -=<{(@<:@)}>=-), - -=<{(\])}>=-, -=<{(@:>@)}>=-), - -=<{(\$)}>=-, -=<{(@S|@)}>=-)m4_changequote([,])]) - - -# m4_text_wrap(STRING, [PREFIX], [FIRST-PREFIX], [WIDTH]) -# ------------------------------------------------------- -# Expands into STRING wrapped to hold in WIDTH columns (default = 79). -# If PREFIX is given, each line is prefixed with it. If FIRST-PREFIX is -# specified, then the first line is prefixed with it. As a special case, -# if the length of FIRST-PREFIX is greater than that of PREFIX, then -# FIRST-PREFIX will be left alone on the first line. -# -# No expansion occurs on the contents STRING, PREFIX, or FIRST-PREFIX, -# although quadrigraphs are correctly recognized. More precisely, -# you may redefine m4_qlen to recognize whatever escape sequences that -# you will post-process. -# -# Typical outputs are: -# -# m4_text_wrap([Short string */], [ ], [/* ], 20) -# => /* Short string */ -# -# m4_text_wrap([Much longer string */], [ ], [/* ], 20) -# => /* Much longer -# => string */ -# -# m4_text_wrap([Short doc.], [ ], [ --short ], 30) -# => --short Short doc. -# -# m4_text_wrap([Short doc.], [ ], [ --too-wide ], 30) -# => --too-wide -# => Short doc. -# -# m4_text_wrap([Super long documentation.], [ ], [ --too-wide ], 30) -# => --too-wide -# => Super long -# => documentation. -# -# FIXME: there is no checking of a longer PREFIX than WIDTH, but do -# we really want to bother with people trying each single corner -# of a software? -# -# This macro does not leave a trailing space behind the last word of a line, -# which complicates it a bit. The algorithm is otherwise stupid and simple: -# all the words are preceded by m4_Separator which is defined to empty for -# the first word, and then ` ' (single space) for all the others. -# -# The algorithm uses a helper that uses $2 through $4 directly, rather than -# using local variables, to avoid m4_defn overhead, or expansion swallowing -# any $. It also bypasses m4_popdef overhead with _m4_popdef since no user -# macro expansion occurs in the meantime. Also, the definition is written -# with m4_do, to avoid time wasted on dnl during expansion (since this is -# already a time-consuming macro). -m4_define([m4_text_wrap], -[_$0(m4_escape([$1]), [$2], m4_default_quoted([$3], [$2]), - m4_default_quoted([$4], [79]))]) - -m4_define([_m4_text_wrap], -m4_do(dnl set up local variables, to avoid repeated calculations -[[m4_pushdef([m4_Indent], m4_qlen([$2]))]], -[[m4_pushdef([m4_Cursor], m4_qlen([$3]))]], -[[m4_pushdef([m4_Separator], [m4_define([m4_Separator], [ ])])]], -dnl expand the first prefix, then check its length vs. regular prefix -dnl same length: nothing special -dnl prefix1 longer: output on line by itself, and reset cursor -dnl prefix1 shorter: pad to length of prefix, and reset cursor -[[[$3]m4_cond([m4_Cursor], m4_Indent, [], - [m4_eval(m4_Cursor > m4_Indent)], [1], [ -[$2]m4_define([m4_Cursor], m4_Indent)], - [m4_format([%*s], m4_max([0], - m4_eval(m4_Indent - m4_Cursor)), [])m4_define([m4_Cursor], m4_Indent)])]], -dnl now, for each word, compute the cursor after the word is output, then -dnl check if the cursor would exceed the wrap column -dnl if so, reset cursor, and insert newline and prefix -dnl if not, insert the separator (usually a space) -dnl either way, insert the word -[[m4_map_args_w([$1], [$0_word(], [, [$2], [$4])])]], -dnl finally, clean up the local variables -[[_m4_popdef([m4_Separator], [m4_Cursor], [m4_Indent])]])) - -m4_define([_m4_text_wrap_word], -[m4_define([m4_Cursor], m4_eval(m4_Cursor + m4_qlen([$1]) + 1))]dnl -[m4_if(m4_eval(m4_Cursor > ([$3])), - [1], [m4_define([m4_Cursor], m4_eval(m4_Indent + m4_qlen([$1]) + 1)) -[$2]], - [m4_Separator[]])[$1]]) - -# m4_text_box(MESSAGE, [FRAME-CHARACTER = `-']) -# --------------------------------------------- -# Turn MESSAGE into: -# ## ------- ## -# ## MESSAGE ## -# ## ------- ## -# using FRAME-CHARACTER in the border. -# -# Quadrigraphs are correctly recognized. More precisely, you may -# redefine m4_qlen to recognize whatever escape sequences that you -# will post-process. -m4_define([m4_text_box], -[m4_pushdef([m4_Border], - m4_translit(m4_format([[[%*s]]], m4_decr(m4_qlen(_m4_expand([$1 -]))), []), [ ], m4_default_quoted([$2], [-])))]dnl -[[##] _m4_defn([m4_Border]) [##] -[##] $1 [##] -[##] _m4_defn([m4_Border]) [##]_m4_popdef([m4_Border])]) - - -# m4_qlen(STRING) -# --------------- -# Expands to the length of STRING after autom4te converts all quadrigraphs. -# -# If you use some other means of post-processing m4 output rather than -# autom4te, then you may redefine this macro to recognize whatever -# escape sequences your post-processor will handle. For that matter, -# m4_define([m4_qlen], m4_defn([m4_len])) is sufficient if you don't -# do any post-processing. -# -# Avoid bpatsubsts for the common case of no quadrigraphs. Cache -# results, as configure scripts tend to ask about lengths of common -# strings like `/*' and `*/' rather frequently. Minimize the number -# of times that $1 occurs in m4_qlen, so there is less text to parse -# on a cache hit. -m4_define([m4_qlen], -[m4_ifdef([$0-$1], [_m4_defn([$0-]], [_$0(])[$1])]) -m4_define([_m4_qlen], -[m4_define([m4_qlen-$1], -m4_if(m4_index([$1], [@]), [-1], [m4_len([$1])], - [m4_len(m4_bpatsubst([[$1]], - [@\(\(<:\|:>\|S|\|%:\|\{:\|:\}\)\(@\)\|&t@\)], - [\3]))]))_m4_defn([m4_qlen-$1])]) - -# m4_copyright_condense(TEXT) -# --------------------------- -# Condense the copyright notice in TEXT to only display the final -# year, wrapping the results to fit in 80 columns. -m4_define([m4_copyright_condense], -[m4_text_wrap(m4_bpatsubst(m4_flatten([[$1]]), -[(C)[- ,0-9]*\([1-9][0-9][0-9][0-9]\)], [(C) \1]))]) - -## ----------------------- ## -## 13. Number processing. ## -## ----------------------- ## - -# m4_cmp(A, B) -# ------------ -# Compare two integer expressions. -# A < B -> -1 -# A = B -> 0 -# A > B -> 1 -m4_define([m4_cmp], -[m4_eval((([$1]) > ([$2])) - (([$1]) < ([$2])))]) - - -# m4_list_cmp(A, B) -# ----------------- -# -# Compare the two lists of integer expressions A and B. For instance: -# m4_list_cmp([1, 0], [1]) -> 0 -# m4_list_cmp([1, 0], [1, 0]) -> 0 -# m4_list_cmp([1, 2], [1, 0]) -> 1 -# m4_list_cmp([1, 2, 3], [1, 2]) -> 1 -# m4_list_cmp([1, 2, -3], [1, 2]) -> -1 -# m4_list_cmp([1, 0], [1, 2]) -> -1 -# m4_list_cmp([1], [1, 2]) -> -1 -# m4_define([xa], [oops])dnl -# m4_list_cmp([[0xa]], [5+5]) -> 0 -# -# Rather than face the overhead of m4_case, we use a helper function whose -# expansion includes the name of the macro to invoke on the tail, either -# m4_ignore or m4_unquote. This is particularly useful when comparing -# long lists, since less text is being expanded for deciding when to end -# recursion. The recursion is between a pair of macros that alternate -# which list is trimmed by one element; this is more efficient than -# calling m4_cdr on both lists from a single macro. Guarantee exactly -# one expansion of both lists' side effects. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_list_cmp], -[_$0_raw(m4_dquote($1), m4_dquote($2))]) - -m4_define([_m4_list_cmp_raw], -[m4_if([$1], [$2], [0], [_m4_list_cmp_1([$1], $2)])]) - -m4_define([_m4_list_cmp], -[m4_if([$1], [], [0m4_ignore], [$2], [0], [m4_unquote], [$2m4_ignore])]) - -m4_define([_m4_list_cmp_1], -[_m4_list_cmp_2([$2], [m4_shift2($@)], $1)]) - -m4_define([_m4_list_cmp_2], -[_m4_list_cmp([$1$3], m4_cmp([$3+0], [$1+0]))( - [_m4_list_cmp_1(m4_dquote(m4_shift3($@)), $2)])]) - -# m4_max(EXPR, ...) -# m4_min(EXPR, ...) -# ----------------- -# Return the decimal value of the maximum (or minimum) in a series of -# integer expressions. -# -# M4 1.4.x doesn't provide ?:. Hence this huge m4_eval. Avoid m4_eval -# if both arguments are identical, but be aware of m4_max(0xa, 10) (hence -# the use of <=, not just <, in the second multiply). -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_max], -[m4_if([$#], [0], [m4_fatal([too few arguments to $0])], - [$#], [1], [m4_eval([$1])], - [$#$1], [2$2], [m4_eval([$1])], - [$#], [2], [_$0($@)], - [_m4_minmax([_$0], $@)])]) - -m4_define([_m4_max], -[m4_eval((([$1]) > ([$2])) * ([$1]) + (([$1]) <= ([$2])) * ([$2]))]) - -m4_define([m4_min], -[m4_if([$#], [0], [m4_fatal([too few arguments to $0])], - [$#], [1], [m4_eval([$1])], - [$#$1], [2$2], [m4_eval([$1])], - [$#], [2], [_$0($@)], - [_m4_minmax([_$0], $@)])]) - -m4_define([_m4_min], -[m4_eval((([$1]) < ([$2])) * ([$1]) + (([$1]) >= ([$2])) * ([$2]))]) - -# _m4_minmax(METHOD, ARG1, ARG2...) -# --------------------------------- -# Common recursion code for m4_max and m4_min. METHOD must be _m4_max -# or _m4_min, and there must be at least two arguments to combine. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([_m4_minmax], -[m4_if([$#], [3], [$1([$2], [$3])], - [$0([$1], $1([$2], [$3]), m4_shift3($@))])]) - - -# m4_sign(A) -# ---------- -# The sign of the integer expression A. -m4_define([m4_sign], -[m4_eval((([$1]) > 0) - (([$1]) < 0))]) - - - -## ------------------------ ## -## 14. Version processing. ## -## ------------------------ ## - - -# m4_version_unletter(VERSION) -# ---------------------------- -# Normalize beta version numbers with letters to numeric expressions, which -# can then be handed to m4_eval for the purpose of comparison. -# -# Nl -> (N+1).-1.(l#) -# -# for example: -# [2.14a] -> [0,2,14+1,-1,[0r36:a]] -> 2.15.-1.10 -# [2.14b] -> [0,2,15+1,-1,[0r36:b]] -> 2.15.-1.11 -# [2.61aa.b] -> [0,2.61,1,-1,[0r36:aa],+1,-1,[0r36:b]] -> 2.62.-1.370.1.-1.11 -# [08] -> [0,[0r10:0]8] -> 8 -# -# This macro expects reasonable version numbers, but can handle double -# letters and does not expand any macros. Original version strings can -# use both `.' and `-' separators. -# -# Inline constant expansions, to avoid m4_defn overhead. -# _m4_version_unletter is the real workhorse used by m4_version_compare, -# but since [0r36:a] and commas are less readable than 10 and dots, we -# provide a wrapper for human use. -m4_define([m4_version_unletter], -[m4_substr(m4_map_args([.m4_eval], m4_unquote(_$0([$1]))), [3])]) -m4_define([_m4_version_unletter], -[m4_bpatsubst(m4_bpatsubst(m4_translit([[[[0,$1]]]], [.-], [,,]),]dnl -m4_dquote(m4_dquote(m4_defn([m4_cr_Letters])))[[+], - [+1,-1,[0r36:\&]]), [,0], [,[0r10:0]])]) - - -# m4_version_compare(VERSION-1, VERSION-2) -# ---------------------------------------- -# Compare the two version numbers and expand into -# -1 if VERSION-1 < VERSION-2 -# 0 if = -# 1 if > -# -# Since _m4_version_unletter does not output side effects, we can -# safely bypass the overhead of m4_version_cmp. -m4_define([m4_version_compare], -[_m4_list_cmp_raw(_m4_version_unletter([$1]), _m4_version_unletter([$2]))]) - - -# m4_PACKAGE_NAME -# m4_PACKAGE_TARNAME -# m4_PACKAGE_VERSION -# m4_PACKAGE_STRING -# m4_PACKAGE_BUGREPORT -# -------------------- -# If m4sugar/version.m4 is present, then define version strings. This -# file is optional, provided by Autoconf but absent in Bison. -m4_sinclude([m4sugar/version.m4]) - - -# m4_version_prereq(VERSION, [IF-OK], [IF-NOT = FAIL]) -# ---------------------------------------------------- -# Check this Autoconf version against VERSION. -m4_define([m4_version_prereq], -m4_ifdef([m4_PACKAGE_VERSION], -[[m4_if(m4_version_compare(]m4_dquote(m4_defn([m4_PACKAGE_VERSION]))[, [$1]), - [-1], - [m4_default([$3], - [m4_fatal([Autoconf version $1 or higher is required], - [63])])], - [$2])]], -[[m4_fatal([m4sugar/version.m4 not found])]])) - - -## ------------------ ## -## 15. Set handling. ## -## ------------------ ## - -# Autoconf likes to create arbitrarily large sets; for example, as of -# this writing, the configure.ac for coreutils tracks a set of more -# than 400 AC_SUBST. How do we track all of these set members, -# without introducing duplicates? We could use m4_append_uniq, with -# the set NAME residing in the contents of the macro NAME. -# Unfortunately, m4_append_uniq is quadratic for set creation, because -# it costs O(n) to search the string for each of O(n) insertions; not -# to mention that with m4 1.4.x, even using m4_append is slow, costing -# O(n) rather than O(1) per insertion. Other set operations, not used -# by Autoconf but still possible by manipulation of the definition -# tracked in macro NAME, include O(n) deletion of one element and O(n) -# computation of set size. Because the set is exposed to the user via -# the definition of a single macro, we cannot cache any data about the -# set without risking the cache being invalidated by the user -# redefining NAME. -# -# Can we do better? Yes, because m4 gives us an O(1) search function -# for free: ifdef. Additionally, even m4 1.4.x gives us an O(1) -# insert operation for free: pushdef. But to use these, we must -# represent the set via a group of macros; to keep the set consistent, -# we must hide the set so that the user can only manipulate it through -# accessor macros. The contents of the set are maintained through two -# access points; _m4_set([name]) is a pushdef stack of values in the -# set, useful for O(n) traversal of the set contents; while the -# existence of _m4_set([name],value) with no particular value is -# useful for O(1) querying of set membership. And since the user -# cannot externally manipulate the set, we are free to add additional -# caching macros for other performance improvements. Deletion can be -# O(1) per element rather than O(n), by reworking the definition of -# _m4_set([name],value) to be 0 or 1 based on current membership, and -# adding _m4_set_cleanup(name) to defer the O(n) cleanup of -# _m4_set([name]) until we have another reason to do an O(n) -# traversal. The existence of _m4_set_cleanup(name) can then be used -# elsewhere to determine if we must dereference _m4_set([name],value), -# or assume that definition implies set membership. Finally, size can -# be tracked in an O(1) fashion with _m4_set_size(name). -# -# The quoting in _m4_set([name],value) is chosen so that there is no -# ambiguity with a set whose name contains a comma, and so that we can -# supply the value via _m4_defn([_m4_set([name])]) without needing any -# quote manipulation. - -# m4_set_add(SET, VALUE, [IF-UNIQ], [IF-DUP]) -# ------------------------------------------- -# Add VALUE as an element of SET. Expand IF-UNIQ on the first -# addition, and IF-DUP if it is already in the set. Addition of one -# element is O(1), such that overall set creation is O(n). -# -# We do not want to add a duplicate for a previously deleted but -# unpruned element, but it is just as easy to check existence directly -# as it is to query _m4_set_cleanup($1). -m4_define([m4_set_add], -[m4_ifdef([_m4_set([$1],$2)], - [m4_if(m4_indir([_m4_set([$1],$2)]), [0], - [m4_define([_m4_set([$1],$2)], - [1])_m4_set_size([$1], [m4_incr])$3], [$4])], - [m4_define([_m4_set([$1],$2)], - [1])m4_pushdef([_m4_set([$1])], - [$2])_m4_set_size([$1], [m4_incr])$3])]) - -# m4_set_add_all(SET, VALUE...) -# ----------------------------- -# Add each VALUE into SET. This is O(n) in the number of VALUEs, and -# can be faster than calling m4_set_add for each VALUE. -# -# Implement two recursion helpers; the check variant is slower but -# handles the case where an element has previously been removed but -# not pruned. The recursion helpers ignore their second argument, so -# that we can use the faster m4_shift2 and 2 arguments, rather than -# _m4_shift2 and one argument, as the signal to end recursion. -# -# Please keep foreach.m4 in sync with any adjustments made here. -m4_define([m4_set_add_all], -[m4_define([_m4_set_size($1)], m4_eval(m4_set_size([$1]) - + m4_len(m4_ifdef([_m4_set_cleanup($1)], [_$0_check], [_$0])([$1], $@))))]) - -m4_define([_m4_set_add_all], -[m4_if([$#], [2], [], - [m4_ifdef([_m4_set([$1],$3)], [], - [m4_define([_m4_set([$1],$3)], [1])m4_pushdef([_m4_set([$1])], - [$3])-])$0([$1], m4_shift2($@))])]) - -m4_define([_m4_set_add_all_check], -[m4_if([$#], [2], [], - [m4_set_add([$1], [$3])$0([$1], m4_shift2($@))])]) - -# m4_set_contains(SET, VALUE, [IF-PRESENT], [IF-ABSENT]) -# ------------------------------------------------------ -# Expand IF-PRESENT if SET contains VALUE, otherwise expand IF-ABSENT. -# This is always O(1). -m4_define([m4_set_contains], -[m4_ifdef([_m4_set_cleanup($1)], - [m4_if(m4_ifdef([_m4_set([$1],$2)], - [m4_indir([_m4_set([$1],$2)])], [0]), [1], [$3], [$4])], - [m4_ifdef([_m4_set([$1],$2)], [$3], [$4])])]) - -# m4_set_contents(SET, [SEP]) -# --------------------------- -# Expand to a single string containing all the elements in SET, -# separated by SEP, without modifying SET. No provision is made for -# disambiguating set elements that contain non-empty SEP as a -# sub-string, or for recognizing a set that contains only the empty -# string. Order of the output is not guaranteed. If any elements -# have been previously removed from the set, this action will prune -# the unused memory. This is O(n) in the size of the set before -# pruning. -# -# Use _m4_popdef for speed. The existence of _m4_set_cleanup($1) -# determines which version of _1 helper we use. -m4_define([m4_set_contents], -[m4_set_map_sep([$1], [], [], [[$2]])]) - -# _m4_set_contents_1(SET) -# _m4_set_contents_1c(SET) -# _m4_set_contents_2(SET, [PRE], [POST], [SEP]) -# --------------------------------------------- -# Expand to a list of quoted elements currently in the set, each -# surrounded by PRE and POST, and moving SEP in front of PRE on -# recursion. To avoid nesting limit restrictions, the algorithm must -# be broken into two parts; _1 destructively copies the stack in -# reverse into _m4_set_($1), producing no output; then _2 -# destructively copies _m4_set_($1) back into the stack in reverse. -# If no elements were deleted, then this visits the set in the order -# that elements were inserted. Behavior is undefined if PRE/POST/SEP -# tries to recursively list or modify SET in any way other than -# calling m4_set_remove on the current element. Use _1 if all entries -# in the stack are guaranteed to be in the set, and _1c to prune -# removed entries. Uses _m4_defn and _m4_popdef for speed. -m4_define([_m4_set_contents_1], -[_m4_stack_reverse([_m4_set([$1])], [_m4_set_($1)])]) - -m4_define([_m4_set_contents_1c], -[m4_ifdef([_m4_set([$1])], - [m4_set_contains([$1], _m4_defn([_m4_set([$1])]), - [m4_pushdef([_m4_set_($1)], _m4_defn([_m4_set([$1])]))], - [_m4_popdef([_m4_set([$1],]_m4_defn( - [_m4_set([$1])])[)])])_m4_popdef([_m4_set([$1])])$0([$1])], - [_m4_popdef([_m4_set_cleanup($1)])])]) - -m4_define([_m4_set_contents_2], -[_m4_stack_reverse([_m4_set_($1)], [_m4_set([$1])], - [$2[]_m4_defn([_m4_set_($1)])$3], [$4[]])]) - -# m4_set_delete(SET) -# ------------------ -# Delete all elements in SET, and reclaim any memory occupied by the -# set. This is O(n) in the set size. -# -# Use _m4_defn and _m4_popdef for speed. -m4_define([m4_set_delete], -[m4_ifdef([_m4_set([$1])], - [_m4_popdef([_m4_set([$1],]_m4_defn([_m4_set([$1])])[)], - [_m4_set([$1])])$0([$1])], - [m4_ifdef([_m4_set_cleanup($1)], - [_m4_popdef([_m4_set_cleanup($1)])])m4_ifdef( - [_m4_set_size($1)], - [_m4_popdef([_m4_set_size($1)])])])]) - -# m4_set_difference(SET1, SET2) -# ----------------------------- -# Produce a LIST of quoted elements that occur in SET1 but not SET2. -# Output a comma prior to any elements, to distinguish the empty -# string from no elements. This can be directly used as a series of -# arguments, such as for m4_join, or wrapped inside quotes for use in -# m4_foreach. Order of the output is not guaranteed. -# -# Short-circuit the idempotence relation. -m4_define([m4_set_difference], -[m4_if([$1], [$2], [], [m4_set_map_sep([$1], [_$0([$2],], [)])])]) - -m4_define([_m4_set_difference], -[m4_set_contains([$1], [$2], [], [,[$2]])]) - -# m4_set_dump(SET, [SEP]) -# ----------------------- -# Expand to a single string containing all the elements in SET, -# separated by SEP, then delete SET. In general, if you only need to -# list the contents once, this is faster than m4_set_contents. No -# provision is made for disambiguating set elements that contain -# non-empty SEP as a sub-string. Order of the output is not -# guaranteed. This is O(n) in the size of the set before pruning. -# -# Use _m4_popdef for speed. Use existence of _m4_set_cleanup($1) to -# decide if more expensive recursion is needed. -m4_define([m4_set_dump], -[m4_ifdef([_m4_set_size($1)], - [_m4_popdef([_m4_set_size($1)])])m4_ifdef([_m4_set_cleanup($1)], - [_$0_check], [_$0])([$1], [], [$2])]) - -# _m4_set_dump(SET, [SEP], [PREP]) -# _m4_set_dump_check(SET, [SEP], [PREP]) -# -------------------------------------- -# Print SEP and the current element, then delete the element and -# recurse with empty SEP changed to PREP. The check variant checks -# whether the element has been previously removed. Use _m4_defn and -# _m4_popdef for speed. -m4_define([_m4_set_dump], -[m4_ifdef([_m4_set([$1])], - [[$2]_m4_defn([_m4_set([$1])])_m4_popdef([_m4_set([$1],]_m4_defn( - [_m4_set([$1])])[)], [_m4_set([$1])])$0([$1], [$2$3])])]) - -m4_define([_m4_set_dump_check], -[m4_ifdef([_m4_set([$1])], - [m4_set_contains([$1], _m4_defn([_m4_set([$1])]), - [[$2]_m4_defn([_m4_set([$1])])])_m4_popdef( - [_m4_set([$1],]_m4_defn([_m4_set([$1])])[)], - [_m4_set([$1])])$0([$1], [$2$3])], - [_m4_popdef([_m4_set_cleanup($1)])])]) - -# m4_set_empty(SET, [IF-EMPTY], [IF-ELEMENTS]) -# -------------------------------------------- -# Expand IF-EMPTY if SET has no elements, otherwise IF-ELEMENTS. -m4_define([m4_set_empty], -[m4_ifdef([_m4_set_size($1)], - [m4_if(m4_indir([_m4_set_size($1)]), [0], [$2], [$3])], [$2])]) - -# m4_set_foreach(SET, VAR, ACTION) -# -------------------------------- -# For each element of SET, define VAR to the element and expand -# ACTION. ACTION should not recursively list SET's contents, add -# elements to SET, nor delete any element from SET except the one -# currently in VAR. The order that the elements are visited in is not -# guaranteed. This is faster than the corresponding m4_foreach([VAR], -# m4_indir([m4_dquote]m4_set_listc([SET])), [ACTION]) -m4_define([m4_set_foreach], -[m4_pushdef([$2])m4_set_map_sep([$1], [m4_define([$2],], [)$3])]) - -# m4_set_intersection(SET1, SET2) -# ------------------------------- -# Produce a LIST of quoted elements that occur in both SET1 or SET2. -# Output a comma prior to any elements, to distinguish the empty -# string from no elements. This can be directly used as a series of -# arguments, such as for m4_join, or wrapped inside quotes for use in -# m4_foreach. Order of the output is not guaranteed. -# -# Iterate over the smaller set, and short-circuit the idempotence -# relation. -m4_define([m4_set_intersection], -[m4_if([$1], [$2], [m4_set_listc([$1])], - m4_eval(m4_set_size([$2]) < m4_set_size([$1])), [1], [$0([$2], [$1])], - [m4_set_map_sep([$1], [_$0([$2],], [)])])]) - -m4_define([_m4_set_intersection], -[m4_set_contains([$1], [$2], [,[$2]])]) - -# m4_set_list(SET) -# m4_set_listc(SET) -# ----------------- -# Produce a LIST of quoted elements of SET. This can be directly used -# as a series of arguments, such as for m4_join or m4_set_add_all, or -# wrapped inside quotes for use in m4_foreach or m4_map. With -# m4_set_list, there is no way to distinguish an empty set from a set -# containing only the empty string; with m4_set_listc, a leading comma -# is output if there are any elements. -m4_define([m4_set_list], -[m4_set_map_sep([$1], [], [], [,])]) - -m4_define([m4_set_listc], -[m4_set_map_sep([$1], [,])]) - -# m4_set_map(SET, ACTION) -# ----------------------- -# For each element of SET, expand ACTION with a single argument of the -# current element. ACTION should not recursively list SET's contents, -# add elements to SET, nor delete any element from SET except the one -# passed as an argument. The order that the elements are visited in -# is not guaranteed. This is faster than either of the corresponding -# m4_map_args([ACTION]m4_set_listc([SET])) -# m4_set_foreach([SET], [VAR], [ACTION(m4_defn([VAR]))]) -m4_define([m4_set_map], -[m4_set_map_sep([$1], [$2(], [)])]) - -# m4_set_map_sep(SET, [PRE], [POST], [SEP]) -# ----------------------------------------- -# For each element of SET, expand PRE[value]POST[], and expand SEP -# between elements. -m4_define([m4_set_map_sep], -[m4_ifdef([_m4_set_cleanup($1)], [_m4_set_contents_1c], - [_m4_set_contents_1])([$1])_m4_set_contents_2($@)]) - -# m4_set_remove(SET, VALUE, [IF-PRESENT], [IF-ABSENT]) -# ---------------------------------------------------- -# If VALUE is an element of SET, delete it and expand IF-PRESENT. -# Otherwise expand IF-ABSENT. Deleting a single value is O(1), -# although it leaves memory occupied until the next O(n) traversal of -# the set which will compact the set. -# -# Optimize if the element being removed is the most recently added, -# since defining _m4_set_cleanup($1) slows down so many other macros. -# In particular, this plays well with m4_set_foreach and m4_set_map. -m4_define([m4_set_remove], -[m4_set_contains([$1], [$2], [_m4_set_size([$1], - [m4_decr])m4_if(_m4_defn([_m4_set([$1])]), [$2], - [_m4_popdef([_m4_set([$1],$2)], [_m4_set([$1])])], - [m4_define([_m4_set_cleanup($1)])m4_define( - [_m4_set([$1],$2)], [0])])$3], [$4])]) - -# m4_set_size(SET) -# ---------------- -# Expand to the number of elements currently in SET. This operation -# is O(1), and thus more efficient than m4_count(m4_set_list([SET])). -m4_define([m4_set_size], -[m4_ifdef([_m4_set_size($1)], [m4_indir([_m4_set_size($1)])], [0])]) - -# _m4_set_size(SET, ACTION) -# ------------------------- -# ACTION must be either m4_incr or m4_decr, and the size of SET is -# changed accordingly. If the set is empty, ACTION must not be -# m4_decr. -m4_define([_m4_set_size], -[m4_define([_m4_set_size($1)], - m4_ifdef([_m4_set_size($1)], [$2(m4_indir([_m4_set_size($1)]))], - [1]))]) - -# m4_set_union(SET1, SET2) -# ------------------------ -# Produce a LIST of double quoted elements that occur in either SET1 -# or SET2, without duplicates. Output a comma prior to any elements, -# to distinguish the empty string from no elements. This can be -# directly used as a series of arguments, such as for m4_join, or -# wrapped inside quotes for use in m4_foreach. Order of the output is -# not guaranteed. -# -# We can rely on the fact that m4_set_listc prunes SET1, so we don't -# need to check _m4_set([$1],element) for 0. Short-circuit the -# idempotence relation. -m4_define([m4_set_union], -[m4_set_listc([$1])m4_if([$1], [$2], [], - [m4_set_map_sep([$2], [_$0([$1],], [)])])]) - -m4_define([_m4_set_union], -[m4_ifdef([_m4_set([$1],$2)], [], [,[$2]])]) - - -## ------------------- ## -## 16. File handling. ## -## ------------------- ## - - -# It is a real pity that M4 comes with no macros to bind a diversion -# to a file. So we have to deal without, which makes us a lot more -# fragile than we should. - - -# m4_file_append(FILE-NAME, CONTENT) -# ---------------------------------- -m4_define([m4_file_append], -[m4_syscmd([cat >>$1 <<_m4eof -$2 -_m4eof -]) -m4_if(m4_sysval, [0], [], - [m4_fatal([$0: cannot write: $1])])]) - - - -## ------------------------ ## -## 17. Setting M4sugar up. ## -## ------------------------ ## - -# _m4_divert_diversion should be defined. -m4_divert_push([KILL]) - -# m4_init -# ------- -# Initialize the m4sugar language. -m4_define([m4_init], -[# All the M4sugar macros start with `m4_', except `dnl' kept as is -# for sake of simplicity. -m4_pattern_forbid([^_?m4_]) -m4_pattern_forbid([^dnl$]) - -# If __m4_version__ is defined, we assume that we are being run by M4 -# 1.6 or newer, thus $@ recursion is linear, and debugmode(+do) -# is available for faster checks of dereferencing undefined macros -# and forcing dumpdef to print to stderr regardless of debugfile. -# But if it is missing, we assume we are being run by M4 1.4.x, that -# $@ recursion is quadratic, and that we need foreach-based -# replacement macros. Also, m4 prior to 1.4.8 loses track of location -# during m4wrap text; __line__ should never be 0. -# -# Use the raw builtin to avoid tripping up include tracing. -# Meanwhile, avoid m4_copy, since it temporarily undefines m4_defn. -m4_ifdef([__m4_version__], -[m4_debugmode([+do]) -m4_define([m4_defn], _m4_defn([_m4_defn])) -m4_define([m4_dumpdef], _m4_defn([_m4_dumpdef])) -m4_define([m4_popdef], _m4_defn([_m4_popdef])) -m4_define([m4_undefine], _m4_defn([_m4_undefine]))], -[m4_builtin([include], [m4sugar/foreach.m4]) -m4_wrap_lifo([m4_if(__line__, [0], [m4_pushdef([m4_location], -]]m4_dquote(m4_dquote(m4_dquote(__file__:__line__)))[[)])])]) - -# Rewrite the first entry of the diversion stack. -m4_divert([KILL]) - -# Check the divert push/pop perfect balance. -# Some users are prone to also use m4_wrap to register last-minute -# m4_divert_text; so after our diversion cleanups, we restore -# KILL as the bottom of the diversion stack. -m4_wrap([m4_popdef([_m4_divert_diversion])m4_ifdef( - [_m4_divert_diversion], [m4_fatal([$0: unbalanced m4_divert_push: -]m4_divert_stack)])_m4_popdef([_m4_divert_stack])m4_divert_push([KILL])]) -]) diff --git a/tools/data/stack.hh b/tools/data/stack.hh deleted file mode 100644 index e4e8df0a..00000000 --- a/tools/data/stack.hh +++ /dev/null @@ -1,121 +0,0 @@ -# C++ skeleton for Bison - -# Copyright (C) 2002-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -m4_pushdef([b4_copyright_years], - [2002-2012]) - -b4_output_begin([b4_dir_prefix[]stack.hh]) -b4_copyright([Stack handling for Bison parsers in C++], - [2002-2012])[ - -/** - ** \file ]b4_dir_prefix[stack.hh - ** Define the ]b4_namespace_ref[::stack class. - */ - -]b4_cpp_guard_open([b4_dir_prefix[]stack.hh])[ - -# include - -]b4_namespace_open[ - template > - class stack - { - public: - // Hide our reversed order. - typedef typename S::reverse_iterator iterator; - typedef typename S::const_reverse_iterator const_iterator; - - stack () : seq_ () - { - } - - stack (unsigned int n) : seq_ (n) - { - } - - inline - T& - operator [] (unsigned int i) - { - return seq_[i]; - } - - inline - const T& - operator [] (unsigned int i) const - { - return seq_[i]; - } - - inline - void - push (const T& t) - { - seq_.push_front (t); - } - - inline - void - pop (unsigned int n = 1) - { - for (; n; --n) - seq_.pop_front (); - } - - inline - unsigned int - height () const - { - return seq_.size (); - } - - inline const_iterator begin () const { return seq_.rbegin (); } - inline const_iterator end () const { return seq_.rend (); } - - private: - S seq_; - }; - - /// Present a slice of the top of a stack. - template > - class slice - { - public: - slice (const S& stack, unsigned int range) - : stack_ (stack) - , range_ (range) - { - } - - inline - const T& - operator [] (unsigned int i) const - { - return stack_[range_ - i]; - } - - private: - const S& stack_; - unsigned int range_; - }; -]b4_namespace_close[ - -]b4_cpp_guard_close([b4_dir_prefix[]stack.hh]) -b4_output_end() - -m4_popdef([b4_copyright_years]) diff --git a/tools/data/xslt/bison.xsl b/tools/data/xslt/bison.xsl deleted file mode 100644 index e661b3f5..00000000 --- a/tools/data/xslt/bison.xsl +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - s - - - r - - - - - - , - - - - - 0 - - - - - - - - - - - diff --git a/tools/data/xslt/xml2dot.xsl b/tools/data/xslt/xml2dot.xsl deleted file mode 100644 index 87d4e07c..00000000 --- a/tools/data/xslt/xml2dot.xsl +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - - - - - - - - - // Generated by GNU Bison - - . - // Report bugs to < - - >. - // Home page: < - - >. - - - - - - - - digraph " - - - - " { - node [fontname = courier, shape = box, colorscheme = paired6] - edge [fontname = courier] - - - - } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - label="[ - - - - - - , - - - ]", - - - - style=solid] - - - - - - - - - 3 - - - 5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - . - - - - - . - - - - - - - - - - - - - [ - - ] - - - - - - , - - - - - - - - - - - -> " - - R - - - d - - " [ - - - - - - - - " - - R - - - d - - " [label=" - - - Acc", fillcolor=1 - - - R - - ", fillcolor= - - - - , shape=diamond, style=filled] - - - - - - - - - - dotted - - - solid - - - dashed - - - - - - - - - - - - - - - - - [label=" - State - - \n - - - - \l"] - - - - - - - - - - -> - - [style= - - - label=" - - - - " - - ] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/data/xslt/xml2text.xsl b/tools/data/xslt/xml2text.xsl deleted file mode 100644 index 5af94613..00000000 --- a/tools/data/xslt/xml2text.xsl +++ /dev/null @@ -1,569 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nonterminals useless in grammar - - - - - - - - - - - - Terminals unused in grammar - - - - - - - - - - - - - - Rules useless in grammar - - - - - - - - - - - Rules useless in parser due to conflicts - - - - - - - - - Grammar - - - - - - - - - - - - - - - - - - - - - - - - - Terminals, with rules where they appear - - - - - - Nonterminals, with rules where they appear - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - on@left: - - - - - - - , - - on@right: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - State - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : - - - - - - - . - - - - - - - - - . - - - - - - - - - - - - - - - - /* empty */ - - - - [ - - ] - - - - - - , - - - - - - - - - - - - - shift, and go to state - - - - go to state - - - - - - - - - - - - - - error - ( - - ) - - - - - - - - - - - - [ - - - - accept - - - reduce using rule - - ( - - ) - - - - ] - - - - - - - - - - - - - Conflict between rule - - and token - - resolved as - - an - - - ( - - ). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tools/data/xslt/xml2xhtml.xsl b/tools/data/xslt/xml2xhtml.xsl deleted file mode 100644 index 22033c61..00000000 --- a/tools/data/xslt/xml2xhtml.xsl +++ /dev/null @@ -1,745 +0,0 @@ - - - - - - - - - - - - - - - <xsl:value-of select="bison-xml-report/filename"/> - <xsl:text> - GNU Bison XML Automaton Report</xsl:text> - - - - - - -