<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[160256] trunk/Source/ThirdParty/ANGLE</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/160256">160256</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2013-12-06 15:14:03 -0800 (Fri, 06 Dec 2013)</dd>
</dl>
<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/159543">r159543</a>.
http://trac.webkit.org/changeset/159543
https://bugs.webkit.org/show_bug.cgi?id=125371
Build fix for mac no longer needed (Requested by rfong on
#webkit).
* ANGLE.xcodeproj/project.pbxproj:
* src/compiler/glslang_tab.cpp:
(yysyntax_error):
(glslang_parse):
* src/compiler/glslang_tab.h:
* src/compiler/preprocessor/ExpressionParser.cpp:
(yy_symbol_print):
(yy_stack_print):
(yy_reduce_print):
(yytnamerr):
(yysyntax_error):
(yydestruct):
(yyparse):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceThirdPartyANGLEANGLExcodeprojprojectpbxproj">trunk/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceThirdPartyANGLEChangeLog">trunk/Source/ThirdParty/ANGLE/ChangeLog</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccompilerglslang_tabcpp">trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccompilerglslang_tabh">trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h</a></li>
<li><a href="#trunkSourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsercpp">trunk/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceThirdPartyANGLEANGLExcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj (160255 => 160256)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj        2013-12-06 23:06:41 UTC (rev 160255)
+++ trunk/Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj        2013-12-06 23:14:03 UTC (rev 160256)
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx">                 72309A55183C27DB00370B93 /* Tokenizer.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Tokenizer.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 72309A57183C27F100370B93 /* ExpressionParser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ExpressionParser.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 72309A59183C284E00370B93 /* glslang_lex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_lex.cpp; sourceTree = "<group>"; };
</span><del>-                72309A5A183C284E00370B93 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = "<group>"; usesTabs = 1; };
</del><ins>+                72309A5A183C284E00370B93 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 72309A5B183C284E00370B93 /* glslang_tab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glslang_tab.h; sourceTree = "<group>"; };
</span><span class="cx">                 72309A5F183C2A6400370B93 /* TranslatorHLSL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorHLSL.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 72309A60183C2A6400370B93 /* TranslatorHLSL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TranslatorHLSL.h; sourceTree = "<group>"; };
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/ChangeLog (160255 => 160256)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/ChangeLog        2013-12-06 23:06:41 UTC (rev 160255)
+++ trunk/Source/ThirdParty/ANGLE/ChangeLog        2013-12-06 23:14:03 UTC (rev 160256)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2013-12-06 Commit Queue <commit-queue@webkit.org>
+
+ Unreviewed, rolling out r159543.
+ http://trac.webkit.org/changeset/159543
+ https://bugs.webkit.org/show_bug.cgi?id=125371
+
+ Build fix for mac no longer needed (Requested by rfong on
+ #webkit).
+
+ * ANGLE.xcodeproj/project.pbxproj:
+ * src/compiler/glslang_tab.cpp:
+ (yysyntax_error):
+ (glslang_parse):
+ * src/compiler/glslang_tab.h:
+ * src/compiler/preprocessor/ExpressionParser.cpp:
+ (yy_symbol_print):
+ (yy_stack_print):
+ (yy_reduce_print):
+ (yytnamerr):
+ (yysyntax_error):
+ (yydestruct):
+ (yyparse):
+
</ins><span class="cx"> 2013-12-05 Roger Fong <roger_fong@apple.com>
</span><span class="cx">
</span><span class="cx"> [WebGL] Make sure we satisfy uniform and varying packing restrictions.
</span></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccompilerglslang_tabcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp (160255 => 160256)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp        2013-12-06 23:06:41 UTC (rev 160255)
+++ trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.cpp        2013-12-06 23:14:03 UTC (rev 160256)
</span><span class="lines">@@ -1,24 +1,23 @@
</span><del>-/* A Bison parser, made by GNU Bison 2.3. */
</del><ins>+/* Apple Note: For the avoidance of doubt, Apple elects to distribute this file under the terms of the BSD license. */
</ins><span class="cx">
</span><del>-/* Skeleton implementation for Bison's Yacc-like parsers in C
</del><ins>+/* A Bison parser, made by GNU Bison 2.7. */
</ins><span class="cx">
</span><del>- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
</del><ins>+/* 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
</ins><span class="cx"> it under the terms of the GNU General Public License as published by
</span><del>- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
</del><ins>+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
</ins><span class="cx"> This program is distributed in the hope that it will be useful,
</span><span class="cx"> but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span class="cx"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span class="cx"> GNU General Public License for more details.
</span><del>-
</del><ins>+
</ins><span class="cx"> You should have received a copy of the GNU General Public License
</span><del>- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
</del><ins>+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
</ins><span class="cx">
</span><span class="cx"> /* As a special exception, you may create a larger work that contains
</span><span class="cx"> part or all of the Bison parser skeleton and distribute that work
</span><span class="lines">@@ -29,7 +28,7 @@
</span><span class="cx"> special exception, which will cause the skeleton and the resulting
</span><span class="cx"> Bison output files to be licensed under the GNU General Public
</span><span class="cx"> License without this special exception.
</span><del>-
</del><ins>+
</ins><span class="cx"> This special exception was added by the Free Software Foundation in
</span><span class="cx"> version 2.2 of Bison. */
</span><span class="cx">
</span><span class="lines">@@ -47,7 +46,7 @@
</span><span class="cx"> #define YYBISON 1
</span><span class="cx">
</span><span class="cx"> /* Bison version. */
</span><del>-#define YYBISON_VERSION "2.3"
</del><ins>+#define YYBISON_VERSION "2.7"
</ins><span class="cx">
</span><span class="cx"> /* Skeleton name. */
</span><span class="cx"> #define YYSKELETON_NAME "yacc.c"
</span><span class="lines">@@ -55,11 +54,85 @@
</span><span class="cx"> /* Pure parsers. */
</span><span class="cx"> #define YYPURE 1
</span><span class="cx">
</span><del>-/* Using locations. */
-#define YYLSP_NEEDED 1
</del><ins>+/* Push parsers. */
+#define YYPUSH 0
</ins><span class="cx">
</span><ins>+/* Pull parsers. */
+#define YYPULL 1
</ins><span class="cx">
</span><span class="cx">
</span><ins>+
+
+/* Copy the first part of user declarations. */
+
+
+//
+// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
+
+// Ignore errors in auto-generated code.
+#if defined(__GNUC__)
+#pragma GCC diagnostic ignored "-Wunused-function"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+#pragma GCC diagnostic ignored "-Wswitch-enum"
+#elif defined(_MSC_VER)
+#pragma warning(disable: 4065)
+#pragma warning(disable: 4189)
+#pragma warning(disable: 4505)
+#pragma warning(disable: 4701)
+#endif
+
+#include "compiler/SymbolTable.h"
+#include "compiler/ParseContext.h"
+#include "GLSLANG/ShaderLang.h"
+
+#define YYENABLE_NLS 0
+
+#define YYLEX_PARAM context->scanner
+
+
+
+# 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.h". */
+#ifndef YY_YY_GLSLANG_TAB_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_H_INCLUDED
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+/* "%code requires" blocks. */
+
+
+#define YYLTYPE TSourceLoc
+#define YYLTYPE_IS_DECLARED 1
+#define SH_MAX_TOKEN_LENGTH 256 // WebGL spec.
+
+
+
+
</ins><span class="cx"> /* Tokens. */
</span><span class="cx"> #ifndef YYTOKENTYPE
</span><span class="cx"> # define YYTOKENTYPE
</span><span class="lines">@@ -160,159 +233,13 @@
</span><span class="cx"> QUESTION = 349
</span><span class="cx"> };
</span><span class="cx"> #endif
</span><del>-/* Tokens. */
-#define INVARIANT 258
-#define HIGH_PRECISION 259
-#define MEDIUM_PRECISION 260
-#define LOW_PRECISION 261
-#define PRECISION 262
-#define ATTRIBUTE 263
-#define CONST_QUAL 264
-#define BOOL_TYPE 265
-#define FLOAT_TYPE 266
-#define INT_TYPE 267
-#define BREAK 268
-#define CONTINUE 269
-#define DO 270
-#define ELSE 271
-#define FOR 272
-#define IF 273
-#define DISCARD 274
-#define RETURN 275
-#define BVEC2 276
-#define BVEC3 277
-#define BVEC4 278
-#define IVEC2 279
-#define IVEC3 280
-#define IVEC4 281
-#define VEC2 282
-#define VEC3 283
-#define VEC4 284
-#define MATRIX2 285
-#define MATRIX3 286
-#define MATRIX4 287
-#define IN_QUAL 288
-#define OUT_QUAL 289
-#define INOUT_QUAL 290
-#define UNIFORM 291
-#define VARYING 292
-#define STRUCT 293
-#define VOID_TYPE 294
-#define WHILE 295
-#define SAMPLER2D 296
-#define SAMPLERCUBE 297
-#define SAMPLER_EXTERNAL_OES 298
-#define SAMPLER2DRECT 299
-#define IDENTIFIER 300
-#define TYPE_NAME 301
-#define FLOATCONSTANT 302
-#define INTCONSTANT 303
-#define BOOLCONSTANT 304
-#define LEFT_OP 305
-#define RIGHT_OP 306
-#define INC_OP 307
-#define DEC_OP 308
-#define LE_OP 309
-#define GE_OP 310
-#define EQ_OP 311
-#define NE_OP 312
-#define AND_OP 313
-#define OR_OP 314
-#define XOR_OP 315
-#define MUL_ASSIGN 316
-#define DIV_ASSIGN 317
-#define ADD_ASSIGN 318
-#define MOD_ASSIGN 319
-#define LEFT_ASSIGN 320
-#define RIGHT_ASSIGN 321
-#define AND_ASSIGN 322
-#define XOR_ASSIGN 323
-#define OR_ASSIGN 324
-#define SUB_ASSIGN 325
-#define LEFT_PAREN 326
-#define RIGHT_PAREN 327
-#define LEFT_BRACKET 328
-#define RIGHT_BRACKET 329
-#define LEFT_BRACE 330
-#define RIGHT_BRACE 331
-#define DOT 332
-#define COMMA 333
-#define COLON 334
-#define EQUAL 335
-#define SEMICOLON 336
-#define BANG 337
-#define DASH 338
-#define TILDE 339
-#define PLUS 340
-#define STAR 341
-#define SLASH 342
-#define PERCENT 343
-#define LEFT_ANGLE 344
-#define RIGHT_ANGLE 345
-#define VERTICAL_BAR 346
-#define CARET 347
-#define AMPERSAND 348
-#define QUESTION 349
</del><span class="cx">
</span><span class="cx">
</span><del>-
-
-/* Copy the first part of user declarations. */
-
-
-//
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// This file is auto-generated by generate_parser.sh. DO NOT EDIT!
-
-// Ignore errors in auto-generated code.
-#if defined(__GNUC__)
-#pragma GCC diagnostic ignored "-Wunused-function"
-#pragma GCC diagnostic ignored "-Wunused-variable"
-#pragma GCC diagnostic ignored "-Wswitch-enum"
-#elif defined(_MSC_VER)
-#pragma warning(disable: 4065)
-#pragma warning(disable: 4189)
-#pragma warning(disable: 4505)
-#pragma warning(disable: 4701)
-#endif
-
-#include "compiler/SymbolTable.h"
-#include "compiler/ParseContext.h"
-#include "GLSLANG/ShaderLang.h"
-
-#define YYENABLE_NLS 0
-
-#define YYLEX_PARAM context->scanner
-
-
-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
</del><span class="cx"> #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
</span><span class="cx"> typedef union YYSTYPE
</span><ins>+{
</ins><span class="cx">
</span><del>-{
-#define YYLTYPE TSourceLoc
-#define YYLTYPE_IS_DECLARED 1
</del><ins>+
</ins><span class="cx"> struct {
</span><span class="cx"> union {
</span><span class="cx"> TString *string;
</span><span class="lines">@@ -340,13 +267,13 @@
</span><span class="cx"> TFieldList* fieldList;
</span><span class="cx"> };
</span><span class="cx"> } interm;
</span><del>-}
-/* Line 193 of yacc.c. */
</del><span class="cx">
</span><del>- YYSTYPE;
</del><ins>+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
</ins><span class="cx"> # define yystype YYSTYPE /* obsolescent; will be withdrawn */
</span><span class="cx"> # define YYSTYPE_IS_DECLARED 1
</span><del>-# define YYSTYPE_IS_TRIVIAL 1
</del><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
</span><span class="lines">@@ -363,11 +290,27 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx">
</span><ins>+#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 (TParseContext* context);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_YY_GLSLANG_TAB_H_INCLUDED */
+
</ins><span class="cx"> /* Copy the second part of user declarations. */
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> extern int yylex(YYSTYPE* yylval, YYLTYPE* yylloc, void* yyscanner);
</span><del>-static void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason);
</del><ins>+extern void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason);
</ins><span class="cx">
</span><span class="cx"> #define YYLLOC_DEFAULT(Current, Rhs, N) \
</span><span class="cx"> do { \
</span><span class="lines">@@ -400,9 +343,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><del>-/* Line 216 of yacc.c. */
</del><span class="cx">
</span><del>-
</del><span class="cx"> #ifdef short
</span><span class="cx"> # undef short
</span><span class="cx"> #endif
</span><span class="lines">@@ -454,36 +395,36 @@
</span><span class="cx"> # if defined YYENABLE_NLS && YYENABLE_NLS
</span><span class="cx"> # if ENABLE_NLS
</span><span class="cx"> # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
</span><del>-# define YY_(msgid) dgettext ("bison-runtime", msgid)
</del><ins>+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
</ins><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YY_
</span><del>-# define YY_(msgid) msgid
</del><ins>+# define YY_(Msgid) Msgid
</ins><span class="cx"> # endif
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> /* Suppress unused-variable warnings by "using" E. */
</span><span class="cx"> #if ! defined lint || defined __GNUC__
</span><del>-# define YYUSE(e) ((void) (e))
</del><ins>+# define YYUSE(E) ((void) (E))
</ins><span class="cx"> #else
</span><del>-# define YYUSE(e) /* empty */
</del><ins>+# define YYUSE(E) /* empty */
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> /* Identity function, used to suppress warnings about constant conditions. */
</span><span class="cx"> #ifndef lint
</span><del>-# define YYID(n) (n)
</del><ins>+# define YYID(N) (N)
</ins><span class="cx"> #else
</span><span class="cx"> #if (defined __STDC__ || defined __C99__FUNC__ \
</span><span class="cx"> || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> static int
</span><del>-YYID (int i)
</del><ins>+YYID (int yyi)
</ins><span class="cx"> #else
</span><span class="cx"> static int
</span><del>-YYID (i)
- int i;
</del><ins>+YYID (yyi)
+ int yyi;
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><del>- return i;
</del><ins>+ return yyi;
</ins><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -504,11 +445,12 @@
</span><span class="cx"> # define alloca _alloca
</span><span class="cx"> # else
</span><span class="cx"> # define YYSTACK_ALLOC alloca
</span><del>-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx"> || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
</span><del>-# ifndef _STDLIB_H
-# define _STDLIB_H 1
</del><ins>+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
</ins><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="lines">@@ -531,24 +473,24 @@
</span><span class="cx"> # ifndef YYSTACK_ALLOC_MAXIMUM
</span><span class="cx"> # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
</span><span class="cx"> # endif
</span><del>-# if (defined __cplusplus && ! defined _STDLIB_H \
</del><ins>+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
</ins><span class="cx"> && ! ((defined YYMALLOC || defined malloc) \
</span><del>- && (defined YYFREE || defined free)))
</del><ins>+         && (defined YYFREE || defined free)))
</ins><span class="cx"> # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
</span><del>-# ifndef _STDLIB_H
-# define _STDLIB_H 1
</del><ins>+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
</ins><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YYMALLOC
</span><span class="cx"> # define YYMALLOC malloc
</span><del>-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx"> || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YYFREE
</span><span class="cx"> # define YYFREE free
</span><del>-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx"> || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> void free (void *); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> # endif
</span><span class="lines">@@ -559,15 +501,15 @@
</span><span class="cx">
</span><span class="cx"> #if (! defined yyoverflow \
</span><span class="cx"> && (! defined __cplusplus \
</span><del>- || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
- && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
</del><ins>+         || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
+         && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
</ins><span class="cx">
</span><span class="cx"> /* A type that is properly aligned for any stack member. */
</span><span class="cx"> union yyalloc
</span><span class="cx"> {
</span><del>- yytype_int16 yyss;
- YYSTYPE yyvs;
- YYLTYPE yyls;
</del><ins>+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+ YYLTYPE yyls_alloc;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> /* The size of the maximum gap between one aligned stack and the next. */
</span><span class="lines">@@ -579,42 +521,46 @@
</span><span class="cx"> ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
</span><span class="cx"> + 2 * YYSTACK_GAP_MAXIMUM)
</span><span class="cx">
</span><del>-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
</del><ins>+# define YYCOPY_NEEDED 1
</ins><span class="cx">
</span><span class="cx"> /* Relocate STACK from its old location to the new one. The
</span><span class="cx"> local variables YYSIZE and YYSTACKSIZE give the old and new number of
</span><span class="cx"> elements in the stack, and YYPTR gives the new location of the
</span><span class="cx"> stack. Advance YYPTR to a properly aligned location for the next
</span><span class="cx"> stack. */
</span><del>-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
</del><ins>+# 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);                                \
+ }                                                                        \
</ins><span class="cx"> while (YYID (0))
</span><span class="cx">
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#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 */
+
</ins><span class="cx"> /* YYFINAL -- State number of the termination state. */
</span><span class="cx"> #define YYFINAL 74
</span><span class="cx"> /* YYLAST -- Last index in YYTABLE. */
</span><span class="lines">@@ -633,7 +579,7 @@
</span><span class="cx"> #define YYUNDEFTOK 2
</span><span class="cx"> #define YYMAXUTOK 349
</span><span class="cx">
</span><del>-#define YYTRANSLATE(YYX) \
</del><ins>+#define YYTRANSLATE(YYX)                                                \
</ins><span class="cx"> ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
</span><span class="cx">
</span><span class="cx"> /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
</span><span class="lines">@@ -770,31 +716,31 @@
</span><span class="cx"> /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
</span><span class="cx"> static const yytype_uint16 yyrline[] =
</span><span class="cx"> {
</span><del>- 0, 176, 176, 177, 180, 223, 226, 239, 244, 249,
- 255, 258, 261, 264, 359, 369, 382, 390, 490, 493,
- 501, 504, 510, 514, 521, 527, 536, 544, 599, 609,
- 612, 622, 632, 653, 654, 655, 660, 661, 669, 680,
- 681, 689, 700, 704, 705, 715, 725, 735, 748, 749,
- 759, 772, 776, 780, 784, 785, 798, 799, 812, 813,
- 826, 827, 844, 845, 858, 859, 860, 861, 862, 866,
- 869, 880, 888, 915, 920, 934, 989, 992, 999, 1007,
- 1028, 1049, 1059, 1087, 1092, 1102, 1107, 1117, 1120, 1123,
- 1126, 1132, 1139, 1142, 1164, 1182, 1206, 1229, 1233, 1251,
- 1259, 1291, 1311, 1332, 1341, 1364, 1367, 1373, 1381, 1389,
- 1397, 1407, 1414, 1417, 1420, 1426, 1429, 1444, 1448, 1452,
- 1456, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495, 1500,
- 1505, 1510, 1515, 1520, 1524, 1528, 1536, 1544, 1548, 1561,
- 1561, 1575, 1575, 1584, 1587, 1603, 1636, 1640, 1646, 1653,
- 1668, 1672, 1676, 1677, 1683, 1684, 1685, 1686, 1687, 1691,
- 1692, 1692, 1692, 1702, 1703, 1707, 1707, 1708, 1708, 1713,
- 1716, 1726, 1729, 1735, 1736, 1740, 1748, 1752, 1762, 1767,
- 1784, 1784, 1789, 1789, 1796, 1796, 1804, 1807, 1813, 1816,
- 1822, 1826, 1833, 1840, 1847, 1854, 1865, 1874, 1878, 1885,
- 1888, 1894, 1894
</del><ins>+ 0, 180, 180, 181, 184, 227, 230, 243, 248, 253,
+ 259, 262, 265, 268, 363, 373, 386, 394, 494, 497,
+ 505, 508, 514, 518, 525, 531, 540, 548, 603, 613,
+ 616, 626, 636, 657, 658, 659, 664, 665, 673, 684,
+ 685, 693, 704, 708, 709, 719, 729, 739, 752, 753,
+ 763, 776, 780, 784, 788, 789, 802, 803, 816, 817,
+ 830, 831, 848, 849, 862, 863, 864, 865, 866, 870,
+ 873, 884, 892, 919, 924, 938, 993, 996, 1003, 1011,
+ 1032, 1053, 1063, 1091, 1096, 1106, 1111, 1121, 1124, 1127,
+ 1130, 1136, 1143, 1146, 1168, 1186, 1210, 1233, 1237, 1255,
+ 1263, 1295, 1315, 1336, 1345, 1368, 1371, 1377, 1385, 1393,
+ 1401, 1411, 1418, 1421, 1424, 1430, 1433, 1448, 1452, 1456,
+ 1460, 1464, 1469, 1474, 1479, 1484, 1489, 1494, 1499, 1504,
+ 1509, 1514, 1519, 1524, 1528, 1532, 1540, 1548, 1552, 1565,
+ 1565, 1579, 1579, 1588, 1591, 1607, 1640, 1644, 1650, 1657,
+ 1672, 1676, 1680, 1681, 1687, 1688, 1689, 1690, 1691, 1695,
+ 1696, 1696, 1696, 1706, 1707, 1711, 1711, 1712, 1712, 1717,
+ 1720, 1730, 1733, 1739, 1740, 1744, 1752, 1756, 1766, 1771,
+ 1788, 1788, 1793, 1793, 1800, 1800, 1808, 1811, 1817, 1820,
+ 1826, 1830, 1837, 1844, 1851, 1858, 1869, 1878, 1882, 1889,
+ 1892, 1898, 1898
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
</del><ins>+#if YYDEBUG || YYERROR_VERBOSE || 0
</ins><span class="cx"> /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
</span><span class="cx"> First, the terminals, then, starting at YYNTOKENS, nonterminals. */
</span><span class="cx"> static const char *const yytname[] =
</span><span class="lines">@@ -834,16 +780,16 @@
</span><span class="cx"> "init_declarator_list", "single_declaration", "fully_specified_type",
</span><span class="cx"> "type_qualifier", "type_specifier", "precision_qualifier",
</span><span class="cx"> "type_specifier_no_prec", "type_specifier_nonarray", "struct_specifier",
</span><del>- "@1", "@2", "struct_declaration_list", "struct_declaration",
</del><ins>+ "$@1", "$@2", "struct_declaration_list", "struct_declaration",
</ins><span class="cx"> "struct_declarator_list", "struct_declarator", "initializer",
</span><span class="cx"> "declaration_statement", "statement", "simple_statement",
</span><del>- "compound_statement", "@3", "@4", "statement_no_new_scope",
- "statement_with_scope", "@5", "@6", "compound_statement_no_new_scope",
</del><ins>+ "compound_statement", "$@3", "$@4", "statement_no_new_scope",
+ "statement_with_scope", "$@5", "$@6", "compound_statement_no_new_scope",
</ins><span class="cx"> "statement_list", "expression_statement", "selection_statement",
</span><del>- "selection_rest_statement", "condition", "iteration_statement", "@7",
- "@8", "@9", "for_init_statement", "conditionopt", "for_rest_statement",
</del><ins>+ "selection_rest_statement", "condition", "iteration_statement", "$@7",
+ "$@8", "$@9", "for_init_statement", "conditionopt", "for_rest_statement",
</ins><span class="cx"> "jump_statement", "translation_unit", "external_declaration",
</span><del>- "function_definition", "@10", 0
</del><ins>+ "function_definition", "$@10", YY_NULL
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -917,8 +863,8 @@
</span><span class="cx"> 1, 0, 3
</span><span class="cx"> };
</span><span class="cx">
</span><del>-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
</del><ins>+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE doesn't specify something else to do. Zero
</ins><span class="cx"> means the default is an error. */
</span><span class="cx"> static const yytype_uint8 yydefact[] =
</span><span class="cx"> {
</span><span class="lines">@@ -1023,8 +969,7 @@
</span><span class="cx">
</span><span class="cx"> /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
</span><span class="cx"> positive, shift that token. If negative, reduce the rule which
</span><del>- number is the opposite. If zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
</del><ins>+ number is the opposite. If YYTABLE_NINF, syntax error. */
</ins><span class="cx"> #define YYTABLE_NINF -166
</span><span class="cx"> static const yytype_int16 yytable[] =
</span><span class="cx"> {
</span><span class="lines">@@ -1180,6 +1125,12 @@
</span><span class="cx"> 31
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-261)))
+
+#define yytable_value_is_error(Yytable_value) \
+ YYID (0)
+
</ins><span class="cx"> static const yytype_int16 yycheck[] =
</span><span class="cx"> {
</span><span class="cx"> 0, 25, 89, 88, 96, 57, 162, 73, 153, 128,
</span><span class="lines">@@ -1371,82 +1322,128 @@
</span><span class="cx"> 161, 72, 124, 157, 158, 150, 81
</span><span class="cx"> };
</span><span class="cx">
</span><del>-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
</del><ins>+#define yyerrok                (yyerrstatus = 0)
+#define yyclearin        (yychar = YYEMPTY)
+#define YYEMPTY                (-2)
+#define YYEOF                0
</ins><span class="cx">
</span><del>-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
</del><ins>+#define YYACCEPT        goto yyacceptlab
+#define YYABORT                goto yyabortlab
+#define YYERROR                goto yyerrorlab
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> /* Like YYERROR except do call yyerror. This remains here temporarily
</span><span class="cx"> to ease the transition to the new meaning of YYERROR, for GCC.
</span><del>- Once GCC version 2 has supplanted version 1, this can go. */
</del><ins>+ 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. */
</ins><span class="cx">
</span><del>-#define YYFAIL goto yyerrlab
</del><ins>+#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
</ins><span class="cx">
</span><span class="cx"> #define YYRECOVERING() (!!yyerrstatus)
</span><span class="cx">
</span><del>-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
</del><ins>+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
</ins><span class="cx"> yyerror (&yylloc, context, YY_("syntax error: cannot back up")); \
</span><del>- YYERROR; \
- } \
</del><ins>+ YYERROR;                                                        \
+ }                                                                \
</ins><span class="cx"> while (YYID (0))
</span><span class="cx">
</span><ins>+/* Error token number */
+#define YYTERROR        1
+#define YYERRCODE        256
</ins><span class="cx">
</span><del>-#define YYTERROR 1
-#define YYERRCODE 256
</del><span class="cx">
</span><del>-
</del><span class="cx"> /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
</span><span class="cx"> If N is 0, then set CURRENT to the empty location which ends
</span><span class="cx"> the previous symbol: RHS[0] (always defined). */
</span><span class="cx">
</span><del>-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
</del><span class="cx"> #ifndef YYLLOC_DEFAULT
</span><del>-# 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; \
- } \
</del><ins>+# 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; \
+ } \
</ins><span class="cx"> while (YYID (0))
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
</ins><span class="cx">
</span><ins>+
</ins><span class="cx"> /* YY_LOCATION_PRINT -- Print the location on the stream.
</span><span class="cx"> This macro was not mandated originally: define only if we know
</span><span class="cx"> we won't break user code: when these are the locations we know. */
</span><span class="cx">
</span><span class="cx"> #ifndef YY_LOCATION_PRINT
</span><span class="cx"> # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
</span><del>-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
</del><ins>+
+/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
+
+__attribute__((__unused__))
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static unsigned
+yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
+#else
+static unsigned
+yy_location_print_ (yyo, yylocp)
+ FILE *yyo;
+ YYLTYPE const * const yylocp;
+#endif
+{
+ 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))
+
</ins><span class="cx"> # else
</span><span class="cx"> # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
</span><span class="cx"> # endif
</span><span class="lines">@@ -1454,7 +1451,6 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> /* YYLEX -- calling `yylex' with the right arguments. */
</span><del>-
</del><span class="cx"> #ifdef YYLEX_PARAM
</span><span class="cx"> # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
</span><span class="cx"> #else
</span><span class="lines">@@ -1469,21 +1465,21 @@
</span><span class="cx"> # define YYFPRINTF fprintf
</span><span class="cx"> # endif
</span><span class="cx">
</span><del>-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
</del><ins>+# define YYDPRINTF(Args)                        \
+do {                                                \
+ if (yydebug)                                        \
+ YYFPRINTF Args;                                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx">
</span><del>-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (yydebug) \
- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value, Location, context); \
- YYFPRINTF (stderr, "\n"); \
- } \
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                         \
+do {                                                                         \
+ if (yydebug)                                                                 \
+ {                                                                         \
+ YYFPRINTF (stderr, "%s ", Title);                                         \
+ yy_symbol_print (stderr,                                                 \
+                 Type, Value, Location, context); \
+ YYFPRINTF (stderr, "\n");                                                 \
+ }                                                                         \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -1506,6 +1502,8 @@
</span><span class="cx"> TParseContext* context;
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><ins>+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
</ins><span class="cx"> if (!yyvaluep)
</span><span class="cx"> return;
</span><span class="cx"> YYUSE (yylocationp);
</span><span class="lines">@@ -1519,7 +1517,7 @@
</span><span class="cx"> switch (yytype)
</span><span class="cx"> {
</span><span class="cx"> default:
</span><del>- break;
</del><ins>+ break;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1561,24 +1559,27 @@
</span><span class="cx"> #if (defined __STDC__ || defined __C99__FUNC__ \
</span><span class="cx"> || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> static void
</span><del>-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
</del><ins>+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
</ins><span class="cx"> #else
</span><span class="cx"> static void
</span><del>-yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
</del><ins>+yy_stack_print (yybottom, yytop)
+ yytype_int16 *yybottom;
+ yytype_int16 *yytop;
</ins><span class="cx"> #endif
</span><span class="cx"> {
</span><span class="cx"> YYFPRINTF (stderr, "Stack now");
</span><del>- for (; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
</del><ins>+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
</ins><span class="cx"> YYFPRINTF (stderr, "\n");
</span><span class="cx"> }
</span><span class="cx">
</span><del>-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
</del><ins>+# define YY_STACK_PRINT(Bottom, Top)                                \
+do {                                                                \
+ if (yydebug)                                                        \
+ yy_stack_print ((Bottom), (Top));                                \
</ins><span class="cx"> } while (YYID (0))
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -1603,21 +1604,21 @@
</span><span class="cx"> int yyi;
</span><span class="cx"> unsigned long int yylno = yyrline[yyrule];
</span><span class="cx"> YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
</span><del>- yyrule - 1, yylno);
</del><ins>+         yyrule - 1, yylno);
</ins><span class="cx"> /* The symbols being reduced. */
</span><span class="cx"> for (yyi = 0; yyi < yynrhs; yyi++)
</span><span class="cx"> {
</span><del>- fprintf (stderr, " $%d = ", yyi + 1);
</del><ins>+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
</ins><span class="cx"> yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
</span><del>- &(yyvsp[(yyi + 1) - (yynrhs)])
- , &(yylsp[(yyi + 1) - (yynrhs)]) , context);
- fprintf (stderr, "\n");
</del><ins>+                 &(yyvsp[(yyi + 1) - (yynrhs)])
+                 , &(yylsp[(yyi + 1) - (yynrhs)])                 , context);
+ YYFPRINTF (stderr, "\n");
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
</del><ins>+# define YY_REDUCE_PRINT(Rule)                \
+do {                                        \
+ if (yydebug)                                \
</ins><span class="cx"> yy_reduce_print (yyvsp, yylsp, Rule, context); \
</span><span class="cx"> } while (YYID (0))
</span><span class="cx">
</span><span class="lines">@@ -1633,7 +1634,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> /* YYINITDEPTH -- initial size of the parser's stacks. */
</span><del>-#ifndef YYINITDEPTH
</del><ins>+#ifndef        YYINITDEPTH
</ins><span class="cx"> # define YYINITDEPTH 200
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -1648,7 +1649,6 @@
</span><span class="cx"> # define YYMAXDEPTH 10000
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-
</del><span class="cx">
</span><span class="cx"> #if YYERROR_VERBOSE
</span><span class="cx">
</span><span class="lines">@@ -1720,27 +1720,27 @@
</span><span class="cx"> char const *yyp = yystr;
</span><span class="cx">
</span><span class="cx"> for (;;)
</span><del>- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
</del><ins>+        switch (*++yyp)
+         {
+         case '\'':
+         case ',':
+         goto do_not_strip_quotes;
</ins><span class="cx">
</span><del>- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
</del><ins>+         case '\\':
+         if (*++yyp != '\\')
+         goto do_not_strip_quotes;
+         /* Fall through. */
+         default:
+         if (yyres)
+         yyres[yyn] = *yyp;
+         yyn++;
+         break;
</ins><span class="cx">
</span><del>- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
</del><ins>+         case '"':
+         if (yyres)
+         yyres[yyn] = '\0';
+         return yyn;
+         }
</ins><span class="cx"> do_not_strip_quotes: ;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1751,115 +1751,145 @@
</span><span class="cx"> }
</span><span class="cx"> # endif
</span><span class="cx">
</span><del>-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
</del><ins>+/* 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)
</ins><span class="cx"> {
</span><del>- int yyn = yypact[yystate];
</del><ins>+ 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;
</ins><span class="cx">
</span><del>- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
</del><ins>+ /* There are many possibilities here to consider:
+ - Assume YYFAIL is not used. It's too flawed to consider. See
+ <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+ 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)
</ins><span class="cx"> {
</span><del>- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
</del><ins>+ 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;
</ins><span class="cx">
</span><del>-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
</del><ins>+ 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;
+ }
+ }
+ }
+ }
</ins><span class="cx">
</span><del>- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
</del><ins>+ 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_
+ }
</ins><span class="cx">
</span><del>- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
</del><ins>+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
</ins><span class="cx">
</span><del>- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
</del><ins>+ if (*yymsg_alloc < yysize)
+ {
+ *yymsg_alloc = 2 * yysize;
+ if (! (yysize <= *yymsg_alloc
+ && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+ *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+ return 1;
+ }
</ins><span class="cx">
</span><del>- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
-
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
-
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
-
- if (yyresult)
- {
- /* 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 = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
</del><ins>+ /* 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)
</ins><span class="cx"> {
</span><del>- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
</del><span class="cx"> yyp += yytnamerr (yyp, yyarg[yyi++]);
</span><del>- yyf += 2;
</del><ins>+ yyformat += 2;
</ins><span class="cx"> }
</span><del>- else
</del><ins>+ else
</ins><span class="cx"> {
</span><span class="cx"> yyp++;
</span><del>- yyf++;
</del><ins>+ yyformat++;
</ins><span class="cx"> }
</span><del>- }
- }
- return yysize;
- }
</del><ins>+ }
+ return 0;
</ins><span class="cx"> }
</span><span class="cx"> #endif /* YYERROR_VERBOSE */
</span><del>-
</del><span class="cx">
</span><span class="cx"> /*-----------------------------------------------.
</span><span class="cx"> | Release the memory associated to this symbol. |
</span><span class="lines">@@ -1892,32 +1922,13 @@
</span><span class="cx"> {
</span><span class="cx">
</span><span class="cx"> default:
</span><del>- break;
</del><ins>+ break;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><del>-
</del><span class="cx">
</span><del>-/* Prevent warnings from -Wmissing-prototypes. */
</del><span class="cx">
</span><del>-#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 (TParseContext* context);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
</del><span class="cx">
</span><span class="cx">
</span><del>-
-
-
-
</del><span class="cx"> /*----------.
</span><span class="cx"> | yyparse. |
</span><span class="cx"> `----------*/
</span><span class="lines">@@ -1944,90 +1955,113 @@
</span><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> {
</span><del>- /* The look-ahead symbol. */
</del><ins>+/* The lookahead symbol. */
</ins><span class="cx"> int yychar;
</span><span class="cx">
</span><del>-/* The semantic value of the look-ahead symbol. */
-YYSTYPE yylval;
</del><span class="cx">
</span><del>-/* Number of syntax errors so far. */
-int yynerrs;
-/* Location data for the look-ahead symbol. */
-YYLTYPE yylloc;
-
- int yystate;
- int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int yytoken = 0;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
</del><ins>+#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
</ins><span class="cx"> #endif
</span><ins>+static YYLTYPE yyloc_default
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+ = { 1, 1, 1, 1 }
+# 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
</ins><span class="cx">
</span><del>- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
</del><ins>+/* The semantic value of the lookahead symbol. */
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
</ins><span class="cx">
</span><del>- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
</del><ins>+/* Location data for the lookahead symbol. */
+YYLTYPE yylloc = yyloc_default;
</ins><span class="cx">
</span><del>- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
</del><span class="cx">
</span><del>- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- YYSTYPE *yyvsp;
</del><ins>+ /* Number of syntax errors so far. */
+ int yynerrs;
</ins><span class="cx">
</span><del>- /* The location stack. */
- YYLTYPE yylsa[YYINITDEPTH];
- YYLTYPE *yyls = yylsa;
- YYLTYPE *yylsp;
- /* The locations where the error started and ended. */
- YYLTYPE yyerror_range[2];
</del><ins>+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
</ins><span class="cx">
</span><del>-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
</del><ins>+ /* The stacks and their tools:
+ `yyss': related to states.
+ `yyvs': related to semantic values.
+ `yyls': related to locations.
</ins><span class="cx">
</span><del>- YYSIZE_T yystacksize = YYINITDEPTH;
</del><ins>+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
</ins><span class="cx">
</span><ins>+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
+
+ /* 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;
+
+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
</ins><span class="cx"> /* The variables used to return semantic value and location from the
</span><span class="cx"> action routines. */
</span><span class="cx"> YYSTYPE yyval;
</span><span class="cx"> YYLTYPE yyloc;
</span><span class="cx">
</span><ins>+#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), yylsp -= (N))
+
</ins><span class="cx"> /* The number of symbols on the RHS of the reduced rule.
</span><span class="cx"> Keep to zero when no symbol should be popped. */
</span><span class="cx"> int yylen = 0;
</span><span class="cx">
</span><ins>+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
+ yylsp = yyls = yylsa;
+ yystacksize = YYINITDEPTH;
+
</ins><span class="cx"> YYDPRINTF ((stderr, "Starting parse\n"));
</span><span class="cx">
</span><span class="cx"> yystate = 0;
</span><span class="cx"> yyerrstatus = 0;
</span><span class="cx"> yynerrs = 0;
</span><del>- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
- yylsp = yyls;
-#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
- /* Initialize the default location before parsing starts. */
- yylloc.first_line = yylloc.last_line = 1;
- yylloc.first_column = yylloc.last_column = 0;
-#endif
-
</del><ins>+ yychar = YYEMPTY; /* Cause a token to be read. */
+ yylsp[0] = yylloc;
</ins><span class="cx"> goto yysetstate;
</span><span class="cx">
</span><span class="cx"> /*------------------------------------------------------------.
</span><span class="lines">@@ -2048,25 +2082,26 @@
</span><span class="cx">
</span><span class="cx"> #ifdef yyoverflow
</span><span class="cx"> {
</span><del>- /* 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;
- YYLTYPE *yyls1 = yyls;
</del><ins>+        /* 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;
+        YYLTYPE *yyls1 = yyls;
</ins><span class="cx">
</span><del>- /* 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),
- &yyls1, yysize * sizeof (*yylsp),
- &yystacksize);
- yyls = yyls1;
- yyss = yyss1;
- yyvs = yyvs1;
</del><ins>+        /* 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),
+                 &yyls1, yysize * sizeof (*yylsp),
+                 &yystacksize);
+
+        yyls = yyls1;
+        yyss = yyss1;
+        yyvs = yyvs1;
</ins><span class="cx"> }
</span><span class="cx"> #else /* no yyoverflow */
</span><span class="cx"> # ifndef YYSTACK_RELOCATE
</span><span class="lines">@@ -2074,23 +2109,23 @@
</span><span class="cx"> # else
</span><span class="cx"> /* Extend the stack our own way. */
</span><span class="cx"> if (YYMAXDEPTH <= yystacksize)
</span><del>- goto yyexhaustedlab;
</del><ins>+        goto yyexhaustedlab;
</ins><span class="cx"> yystacksize *= 2;
</span><span class="cx"> if (YYMAXDEPTH < yystacksize)
</span><del>- yystacksize = YYMAXDEPTH;
</del><ins>+        yystacksize = YYMAXDEPTH;
</ins><span class="cx">
</span><span class="cx"> {
</span><del>- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
- YYSTACK_RELOCATE (yyls);
</del><ins>+        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);
+        YYSTACK_RELOCATE (yyls_alloc, yyls);
</ins><span class="cx"> # undef YYSTACK_RELOCATE
</span><del>- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
</del><ins>+        if (yyss1 != yyssa)
+         YYSTACK_FREE (yyss1);
</ins><span class="cx"> }
</span><span class="cx"> # endif
</span><span class="cx"> #endif /* no yyoverflow */
</span><span class="lines">@@ -2100,14 +2135,17 @@
</span><span class="cx"> yylsp = yyls + yysize - 1;
</span><span class="cx">
</span><span class="cx"> YYDPRINTF ((stderr, "Stack size increased to %lu\n",
</span><del>- (unsigned long int) yystacksize));
</del><ins>+                 (unsigned long int) yystacksize));
</ins><span class="cx">
</span><span class="cx"> if (yyss + yystacksize - 1 <= yyssp)
</span><del>- YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> YYDPRINTF ((stderr, "Entering state %d\n", yystate));
</span><span class="cx">
</span><ins>+ if (yystate == YYFINAL)
+ YYACCEPT;
+
</ins><span class="cx"> goto yybackup;
</span><span class="cx">
</span><span class="cx"> /*-----------.
</span><span class="lines">@@ -2116,16 +2154,16 @@
</span><span class="cx"> yybackup:
</span><span class="cx">
</span><span class="cx"> /* Do appropriate processing given the current state. Read a
</span><del>- look-ahead token if we need one and don't already have one. */
</del><ins>+ lookahead token if we need one and don't already have one. */
</ins><span class="cx">
</span><del>- /* First try to decide what to do without reference to look-ahead token. */
</del><ins>+ /* First try to decide what to do without reference to lookahead token. */
</ins><span class="cx"> yyn = yypact[yystate];
</span><del>- if (yyn == YYPACT_NINF)
</del><ins>+ if (yypact_value_is_default (yyn))
</ins><span class="cx"> goto yydefault;
</span><span class="cx">
</span><del>- /* Not known => get a look-ahead token if don't already have one. */
</del><ins>+ /* Not known => get a lookahead token if don't already have one. */
</ins><span class="cx">
</span><del>- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
</del><ins>+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
</ins><span class="cx"> if (yychar == YYEMPTY)
</span><span class="cx"> {
</span><span class="cx"> YYDPRINTF ((stderr, "Reading a token: "));
</span><span class="lines">@@ -2151,29 +2189,27 @@
</span><span class="cx"> yyn = yytable[yyn];
</span><span class="cx"> if (yyn <= 0)
</span><span class="cx"> {
</span><del>- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
</del><ins>+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
</ins><span class="cx"> yyn = -yyn;
</span><span class="cx"> goto yyreduce;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (yyn == YYFINAL)
- YYACCEPT;
-
</del><span class="cx"> /* Count tokens shifted since error; after three, turn off error
</span><span class="cx"> status. */
</span><span class="cx"> if (yyerrstatus)
</span><span class="cx"> yyerrstatus--;
</span><span class="cx">
</span><del>- /* Shift the look-ahead token. */
</del><ins>+ /* Shift the lookahead token. */
</ins><span class="cx"> YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
</span><span class="cx">
</span><del>- /* Discard the shifted token unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
</del><ins>+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
</ins><span class="cx">
</span><span class="cx"> yystate = yyn;
</span><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx"> *++yyvsp = yylval;
</span><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> *++yylsp = yylloc;
</span><span class="cx"> goto yynewstate;
</span><span class="cx">
</span><span class="lines">@@ -2251,31 +2287,23 @@
</span><span class="cx"> variable->getName(),
</span><span class="cx"> variable->getType(),
</span><span class="cx"> (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 5:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 6:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- //
- // INT_TYPE is only 16-bit plus sign bit for vertex/fragment shaders,
- // check for overflow for constants
- //
- if (abs((yyvsp[(1) - (1)].lex).i) >= (1 << 16)) {
- context->error((yylsp[(1) - (1)]), " integer constant overflow", "");
- context->recover();
- }
</del><span class="cx"> ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx"> unionArray->setIConst((yyvsp[(1) - (1)].lex).i);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtInt, EbpUndefined, EvqConst), (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 7:
</span><span class="lines">@@ -2284,7 +2312,7 @@
</span><span class="cx"> ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx"> unionArray->setFConst((yyvsp[(1) - (1)].lex).f);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtFloat, EbpUndefined, EvqConst), (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 8:
</span><span class="lines">@@ -2293,35 +2321,35 @@
</span><span class="cx"> ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx"> unionArray->setBConst((yyvsp[(1) - (1)].lex).b);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 9:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(2) - (3)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 10:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 11:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->addIndexExpression((yyvsp[(1) - (4)].interm.intermTypedNode), (yylsp[(2) - (4)]), (yyvsp[(3) - (4)].interm.intermTypedNode));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 12:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 13:
</span><span class="lines">@@ -2420,7 +2448,7 @@
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><span class="cx"> // don't delete $3.string, it's from the pool
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 14:
</span><span class="lines">@@ -2434,7 +2462,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 15:
</span><span class="lines">@@ -2448,7 +2476,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (2)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 16:
</span><span class="lines">@@ -2457,7 +2485,7 @@
</span><span class="cx"> if (context->integerErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode), "[]"))
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 17:
</span><span class="lines">@@ -2558,14 +2586,14 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> delete fnCall;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 18:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm) = (yyvsp[(1) - (1)].interm);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 19:
</span><span class="lines">@@ -2574,21 +2602,21 @@
</span><span class="cx"> context->error((yylsp[(3) - (3)]), "methods are not supported", "");
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm) = (yyvsp[(3) - (3)].interm);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 20:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm) = (yyvsp[(1) - (2)].interm);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 21:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm) = (yyvsp[(1) - (2)].interm);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 22:
</span><span class="lines">@@ -2596,7 +2624,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
</span><span class="cx"> (yyval.interm).intermNode = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 23:
</span><span class="lines">@@ -2604,7 +2632,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm).function = (yyvsp[(1) - (1)].interm.function);
</span><span class="cx"> (yyval.interm).intermNode = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 24:
</span><span class="lines">@@ -2614,7 +2642,7 @@
</span><span class="cx"> (yyvsp[(1) - (2)].interm.function)->addParameter(param);
</span><span class="cx"> (yyval.interm).function = (yyvsp[(1) - (2)].interm.function);
</span><span class="cx"> (yyval.interm).intermNode = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 25:
</span><span class="lines">@@ -2624,14 +2652,14 @@
</span><span class="cx"> (yyvsp[(1) - (3)].interm).function->addParameter(param);
</span><span class="cx"> (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
</span><span class="cx"> (yyval.interm).intermNode = context->intermediate.growAggregate((yyvsp[(1) - (3)].interm).intermNode, (yyvsp[(3) - (3)].interm.intermTypedNode), (yylsp[(2) - (3)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 26:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 27:
</span><span class="lines">@@ -2690,7 +2718,7 @@
</span><span class="cx"> TType type((yyvsp[(1) - (1)].interm.type));
</span><span class="cx"> TFunction *function = new TFunction(&tempString, type, op);
</span><span class="cx"> (yyval.interm.function) = function;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 28:
</span><span class="lines">@@ -2701,14 +2729,14 @@
</span><span class="cx"> TType type(EbtVoid, EbpUndefined);
</span><span class="cx"> TFunction *function = new TFunction((yyvsp[(1) - (1)].lex).string, type);
</span><span class="cx"> (yyval.interm.function) = function;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 29:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 30:
</span><span class="lines">@@ -2722,7 +2750,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 31:
</span><span class="lines">@@ -2736,7 +2764,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 32:
</span><span class="lines">@@ -2757,27 +2785,27 @@
</span><span class="cx"> }
</span><span class="cx"> } else
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(2) - (2)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 33:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpNull; ;}
</del><ins>+ { (yyval.interm).op = EOpNull; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 34:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpNegative; ;}
</del><ins>+ { (yyval.interm).op = EOpNegative; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 35:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpLogicalNot; ;}
</del><ins>+ { (yyval.interm).op = EOpLogicalNot; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 36:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 37:
</span><span class="lines">@@ -2789,7 +2817,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 38:
</span><span class="lines">@@ -2801,12 +2829,12 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 39:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 40:
</span><span class="lines">@@ -2818,7 +2846,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 41:
</span><span class="lines">@@ -2830,17 +2858,17 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 42:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 43:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 44:
</span><span class="lines">@@ -2854,7 +2882,7 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 45:
</span><span class="lines">@@ -2868,7 +2896,7 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 46:
</span><span class="lines">@@ -2882,7 +2910,7 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 47:
</span><span class="lines">@@ -2896,12 +2924,12 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 48:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 49:
</span><span class="lines">@@ -2915,7 +2943,7 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 50:
</span><span class="lines">@@ -2929,27 +2957,27 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 51:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 52:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 53:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 54:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 55:
</span><span class="lines">@@ -2963,12 +2991,12 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 56:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 57:
</span><span class="lines">@@ -2982,12 +3010,12 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 58:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 59:
</span><span class="lines">@@ -3001,12 +3029,12 @@
</span><span class="cx"> unionArray->setBConst(false);
</span><span class="cx"> (yyval.interm.intermTypedNode) = context->intermediate.addConstantUnion(unionArray, TType(EbtBool, EbpUndefined, EvqConst), (yylsp[(2) - (3)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 60:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 61:
</span><span class="lines">@@ -3024,12 +3052,12 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(5) - (5)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 62:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 63:
</span><span class="lines">@@ -3043,39 +3071,39 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 64:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpAssign; ;}
</del><ins>+ { (yyval.interm).op = EOpAssign; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 65:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpMulAssign; ;}
</del><ins>+ { (yyval.interm).op = EOpMulAssign; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 66:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpDivAssign; ;}
</del><ins>+ { (yyval.interm).op = EOpDivAssign; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 67:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpAddAssign; ;}
</del><ins>+ { (yyval.interm).op = EOpAddAssign; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 68:
</span><span class="cx">
</span><del>- { (yyval.interm).op = EOpSubAssign; ;}
</del><ins>+ { (yyval.interm).op = EOpSubAssign; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 69:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 70:
</span><span class="lines">@@ -3087,7 +3115,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(3) - (3)].interm.intermTypedNode);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 71:
</span><span class="lines">@@ -3096,7 +3124,7 @@
</span><span class="cx"> if (context->constErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)))
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 72:
</span><span class="lines">@@ -3127,7 +3155,7 @@
</span><span class="cx"> (yyval.interm.intermNode) = prototype;
</span><span class="cx">
</span><span class="cx"> context->symbolTable.pop();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 73:
</span><span class="lines">@@ -3136,7 +3164,7 @@
</span><span class="cx"> if ((yyvsp[(1) - (2)].interm).intermAggregate)
</span><span class="cx"> (yyvsp[(1) - (2)].interm).intermAggregate->setOp(EOpDeclaration);
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(1) - (2)].interm).intermAggregate;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 74:
</span><span class="lines">@@ -3151,7 +3179,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.intermNode) = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 75:
</span><span class="lines">@@ -3207,21 +3235,21 @@
</span><span class="cx"> // We're at the inner scope level of the function's arguments and body statement.
</span><span class="cx"> // Add the function prototype to the surrounding scope instead.
</span><span class="cx"> context->symbolTable.getOuterLevel()->insert(*(yyval.interm).function);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 76:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 77:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 78:
</span><span class="lines">@@ -3233,7 +3261,7 @@
</span><span class="cx"> (yyvsp[(1) - (2)].interm.function)->addParameter((yyvsp[(2) - (2)].interm).param);
</span><span class="cx"> else
</span><span class="cx"> delete (yyvsp[(2) - (2)].interm).param.type;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 79:
</span><span class="lines">@@ -3255,7 +3283,7 @@
</span><span class="cx"> (yyval.interm.function) = (yyvsp[(1) - (3)].interm.function);
</span><span class="cx"> (yyvsp[(1) - (3)].interm.function)->addParameter((yyvsp[(3) - (3)].interm).param);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 80:
</span><span class="lines">@@ -3276,7 +3304,7 @@
</span><span class="cx"> (yyval.interm.function) = function;
</span><span class="cx">
</span><span class="cx"> context->symbolTable.push();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 81:
</span><span class="lines">@@ -3290,7 +3318,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> TParameter param = {(yyvsp[(2) - (2)].lex).string, new TType((yyvsp[(1) - (2)].interm.type))};
</span><span class="cx"> (yyval.interm).param = param;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 82:
</span><span class="lines">@@ -3311,7 +3339,7 @@
</span><span class="cx"> TType* type = new TType((yyvsp[(1) - (5)].interm.type));
</span><span class="cx"> TParameter param = { (yyvsp[(2) - (5)].lex).string, type };
</span><span class="cx"> (yyval.interm).param = param;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 83:
</span><span class="lines">@@ -3320,7 +3348,7 @@
</span><span class="cx"> (yyval.interm) = (yyvsp[(3) - (3)].interm);
</span><span class="cx"> if (context->paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx"> context->recover();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 84:
</span><span class="lines">@@ -3331,7 +3359,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> if (context->paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx"> context->recover();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 85:
</span><span class="lines">@@ -3340,7 +3368,7 @@
</span><span class="cx"> (yyval.interm) = (yyvsp[(3) - (3)].interm);
</span><span class="cx"> if (context->paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx"> context->recover();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 86:
</span><span class="lines">@@ -3351,35 +3379,35 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> if (context->paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx"> context->recover();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 87:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.qualifier) = EvqIn;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 88:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.qualifier) = EvqIn;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 89:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.qualifier) = EvqOut;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 90:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.qualifier) = EvqInOut;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 91:
</span><span class="lines">@@ -3387,14 +3415,14 @@
</span><span class="cx"> {
</span><span class="cx"> TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
</span><span class="cx"> (yyval.interm).param = param;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 92:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm) = (yyvsp[(1) - (1)].interm);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 93:
</span><span class="lines">@@ -3420,7 +3448,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> if (symbol && variable)
</span><span class="cx"> symbol->setId(variable->getUniqueId());
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 94:
</span><span class="lines">@@ -3442,7 +3470,7 @@
</span><span class="cx"> if (context->arrayErrorCheck((yylsp[(4) - (5)]), *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, variable))
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 95:
</span><span class="lines">@@ -3470,7 +3498,7 @@
</span><span class="cx"> type.setArraySize(size);
</span><span class="cx"> (yyval.interm).intermAggregate = context->intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context->intermediate.addSymbol(variable ? variable->getUniqueId() : 0, *(yyvsp[(3) - (6)].lex).string, type, (yylsp[(3) - (6)])), (yylsp[(3) - (6)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 96:
</span><span class="lines">@@ -3494,7 +3522,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm).intermAggregate = 0;
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 97:
</span><span class="lines">@@ -3502,7 +3530,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
</span><span class="cx"> (yyval.interm).intermAggregate = context->intermediate.makeAggregate(context->intermediate.addSymbol(0, "", TType((yyvsp[(1) - (1)].interm.type)), (yylsp[(1) - (1)])), (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 98:
</span><span class="lines">@@ -3524,7 +3552,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> if (variable && symbol)
</span><span class="cx"> symbol->setId(variable->getUniqueId());
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 99:
</span><span class="lines">@@ -3536,7 +3564,7 @@
</span><span class="cx"> TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (4)].lex).string, TType((yyvsp[(1) - (4)].interm.type)), (yylsp[(2) - (4)]));
</span><span class="cx"> (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yylsp[(2) - (4)]));
</span><span class="cx"> (yyval.interm).type = (yyvsp[(1) - (4)].interm.type);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 100:
</span><span class="lines">@@ -3572,7 +3600,7 @@
</span><span class="cx"> if (variable && symbol)
</span><span class="cx"> symbol->setId(variable->getUniqueId());
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 101:
</span><span class="lines">@@ -3596,7 +3624,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm).intermAggregate = 0;
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 102:
</span><span class="lines">@@ -3618,7 +3646,7 @@
</span><span class="cx"> TIntermSymbol *symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyval.interm).type), (yylsp[(2) - (2)]));
</span><span class="cx"> (yyval.interm).intermAggregate = context->intermediate.makeAggregate(symbol, (yylsp[(2) - (2)]));
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 103:
</span><span class="lines">@@ -3631,7 +3659,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyvsp[(1) - (1)].interm.type).setArray(false);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 104:
</span><span class="lines">@@ -3655,14 +3683,14 @@
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
</span><span class="cx"> (yyval.interm.type).qualifier = (yyvsp[(1) - (2)].interm.type).qualifier;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 105:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqConst, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 106:
</span><span class="lines">@@ -3672,7 +3700,7 @@
</span><span class="cx"> if (context->globalErrorCheck((yylsp[(1) - (1)]), context->symbolTable.atGlobalLevel(), "attribute"))
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqAttribute, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 107:
</span><span class="lines">@@ -3684,7 +3712,7 @@
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqVaryingOut, (yylsp[(1) - (1)]));
</span><span class="cx"> else
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqVaryingIn, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 108:
</span><span class="lines">@@ -3696,7 +3724,7 @@
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingOut, (yylsp[(1) - (2)]));
</span><span class="cx"> else
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqInvariantVaryingIn, (yylsp[(1) - (2)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 109:
</span><span class="lines">@@ -3705,7 +3733,7 @@
</span><span class="cx"> if (context->globalErrorCheck((yylsp[(1) - (1)]), context->symbolTable.atGlobalLevel(), "uniform"))
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, EvqUniform, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 110:
</span><span class="lines">@@ -3719,7 +3747,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 111:
</span><span class="lines">@@ -3727,35 +3755,35 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
</span><span class="cx"> (yyval.interm.type).precision = (yyvsp[(1) - (2)].interm.precision);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 112:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.precision) = EbpHigh;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 113:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.precision) = EbpMedium;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 114:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.precision) = EbpLow;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 115:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 116:
</span><span class="lines">@@ -3771,7 +3799,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.type).setArray(true, size);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 117:
</span><span class="lines">@@ -3779,7 +3807,7 @@
</span><span class="cx"> {
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtVoid, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 118:
</span><span class="lines">@@ -3787,7 +3815,7 @@
</span><span class="cx"> {
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 119:
</span><span class="lines">@@ -3795,7 +3823,7 @@
</span><span class="cx"> {
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 120:
</span><span class="lines">@@ -3803,7 +3831,7 @@
</span><span class="cx"> {
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 121:
</span><span class="lines">@@ -3812,7 +3840,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(2);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 122:
</span><span class="lines">@@ -3821,7 +3849,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(3);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 123:
</span><span class="lines">@@ -3830,7 +3858,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(4);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 124:
</span><span class="lines">@@ -3839,7 +3867,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(2);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 125:
</span><span class="lines">@@ -3848,7 +3876,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(3);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 126:
</span><span class="lines">@@ -3857,7 +3885,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtBool, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(4);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 127:
</span><span class="lines">@@ -3866,7 +3894,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(2);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 128:
</span><span class="lines">@@ -3875,7 +3903,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(3);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 129:
</span><span class="lines">@@ -3884,7 +3912,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtInt, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(4);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 130:
</span><span class="lines">@@ -3893,7 +3921,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(2, true);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 131:
</span><span class="lines">@@ -3902,7 +3930,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(3, true);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 132:
</span><span class="lines">@@ -3911,7 +3939,7 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtFloat, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).setAggregate(4, true);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 133:
</span><span class="lines">@@ -3919,7 +3947,7 @@
</span><span class="cx"> {
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtSampler2D, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 134:
</span><span class="lines">@@ -3927,7 +3955,7 @@
</span><span class="cx"> {
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtSamplerCube, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 135:
</span><span class="lines">@@ -3939,7 +3967,7 @@
</span><span class="cx"> }
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtSamplerExternalOES, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 136:
</span><span class="lines">@@ -3951,7 +3979,7 @@
</span><span class="cx"> }
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtSampler2DRect, qual, (yylsp[(1) - (1)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 137:
</span><span class="lines">@@ -3959,7 +3987,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
</span><span class="cx"> (yyval.interm.type).qualifier = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 138:
</span><span class="lines">@@ -3973,12 +4001,12 @@
</span><span class="cx"> TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
</span><span class="cx"> (yyval.interm.type).setBasic(EbtStruct, qual, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyval.interm.type).userDef = &structure;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 139:
</span><span class="cx">
</span><del>- { if (context->enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context->recover(); ;}
</del><ins>+ { if (context->enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context->recover(); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 140:
</span><span class="lines">@@ -3996,12 +4024,12 @@
</span><span class="cx"> (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yylsp[(1) - (6)]));
</span><span class="cx"> (yyval.interm.type).userDef = structure;
</span><span class="cx"> context->exitStructDeclaration();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 141:
</span><span class="cx">
</span><del>- { if (context->enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context->recover(); ;}
</del><ins>+ { if (context->enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context->recover(); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 142:
</span><span class="lines">@@ -4011,14 +4039,14 @@
</span><span class="cx"> (yyval.interm.type).setBasic(EbtStruct, EvqTemporary, (yylsp[(1) - (5)]));
</span><span class="cx"> (yyval.interm.type).userDef = structure;
</span><span class="cx"> context->exitStructDeclaration();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 143:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.fieldList) = (yyvsp[(1) - (1)].interm.fieldList);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 144:
</span><span class="lines">@@ -4035,7 +4063,7 @@
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.fieldList)->push_back(field);
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 145:
</span><span class="lines">@@ -4069,7 +4097,7 @@
</span><span class="cx"> if (context->structNestingErrorCheck((yylsp[(1) - (3)]), *(*(yyval.interm.fieldList))[i]))
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 146:
</span><span class="lines">@@ -4077,14 +4105,14 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.fieldList) = NewPoolTFieldList();
</span><span class="cx"> (yyval.interm.fieldList)->push_back((yyvsp[(1) - (1)].interm.field));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 147:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.fieldList)->push_back((yyvsp[(3) - (3)].interm.field));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 148:
</span><span class="lines">@@ -4095,7 +4123,7 @@
</span><span class="cx">
</span><span class="cx"> TType* type = new TType(EbtVoid, EbpUndefined);
</span><span class="cx"> (yyval.interm.field) = new TField(type, (yyvsp[(1) - (1)].lex).string);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 149:
</span><span class="lines">@@ -4111,67 +4139,67 @@
</span><span class="cx"> type->setArraySize(size);
</span><span class="cx">
</span><span class="cx"> (yyval.interm.field) = new TField(type, (yyvsp[(1) - (4)].lex).string);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 150:
</span><span class="cx">
</span><del>- { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); ;}
</del><ins>+ { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 151:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 152:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 153:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 154:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 155:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 156:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 157:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 158:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 159:
</span><span class="cx">
</span><del>- { (yyval.interm.intermAggregate) = 0; ;}
</del><ins>+ { (yyval.interm.intermAggregate) = 0; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 160:
</span><span class="cx">
</span><del>- { context->symbolTable.push(); ;}
</del><ins>+ { context->symbolTable.push(); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 161:
</span><span class="cx">
</span><del>- { context->symbolTable.pop(); ;}
</del><ins>+ { context->symbolTable.pop(); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 162:
</span><span class="lines">@@ -4182,44 +4210,44 @@
</span><span class="cx"> (yyvsp[(3) - (5)].interm.intermAggregate)->setLine((yyloc));
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.intermAggregate) = (yyvsp[(3) - (5)].interm.intermAggregate);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 163:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 164:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); ;}
</del><ins>+ { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 165:
</span><span class="cx">
</span><del>- { context->symbolTable.push(); ;}
</del><ins>+ { context->symbolTable.push(); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 166:
</span><span class="cx">
</span><del>- { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;}
</del><ins>+ { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 167:
</span><span class="cx">
</span><del>- { context->symbolTable.push(); ;}
</del><ins>+ { context->symbolTable.push(); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 168:
</span><span class="cx">
</span><del>- { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;}
</del><ins>+ { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 169:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 170:
</span><span class="lines">@@ -4230,31 +4258,31 @@
</span><span class="cx"> (yyvsp[(2) - (3)].interm.intermAggregate)->setLine((yyloc));
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(2) - (3)].interm.intermAggregate);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 171:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), (yyloc));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 172:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), (yyloc));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 173:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = 0; ;}
</del><ins>+ { (yyval.interm.intermNode) = 0; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 174:
</span><span class="cx">
</span><del>- { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); ;}
</del><ins>+ { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 175:
</span><span class="lines">@@ -4263,7 +4291,7 @@
</span><span class="cx"> if (context->boolErrorCheck((yylsp[(1) - (5)]), (yyvsp[(3) - (5)].interm.intermTypedNode)))
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addSelection((yyvsp[(3) - (5)].interm.intermTypedNode), (yyvsp[(5) - (5)].interm.nodePair), (yylsp[(1) - (5)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 176:
</span><span class="lines">@@ -4271,7 +4299,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
</span><span class="cx"> (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 177:
</span><span class="lines">@@ -4279,7 +4307,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
</span><span class="cx"> (yyval.interm.nodePair).node2 = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 178:
</span><span class="lines">@@ -4288,7 +4316,7 @@
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><span class="cx"> if (context->boolErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)->getLine(), (yyvsp[(1) - (1)].interm.intermTypedNode)))
</span><span class="cx"> context->recover();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 179:
</span><span class="lines">@@ -4306,12 +4334,12 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> (yyval.interm.intermTypedNode) = 0;
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 180:
</span><span class="cx">
</span><del>- { context->symbolTable.push(); ++context->loopNestingLevel; ;}
</del><ins>+ { context->symbolTable.push(); ++context->loopNestingLevel; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 181:
</span><span class="lines">@@ -4320,12 +4348,12 @@
</span><span class="cx"> context->symbolTable.pop();
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopWhile, 0, (yyvsp[(4) - (6)].interm.intermTypedNode), 0, (yyvsp[(6) - (6)].interm.intermNode), (yylsp[(1) - (6)]));
</span><span class="cx"> --context->loopNestingLevel;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 182:
</span><span class="cx">
</span><del>- { ++context->loopNestingLevel; ;}
</del><ins>+ { ++context->loopNestingLevel; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 183:
</span><span class="lines">@@ -4336,12 +4364,12 @@
</span><span class="cx">
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopDoWhile, 0, (yyvsp[(6) - (8)].interm.intermTypedNode), 0, (yyvsp[(3) - (8)].interm.intermNode), (yylsp[(4) - (8)]));
</span><span class="cx"> --context->loopNestingLevel;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 184:
</span><span class="cx">
</span><del>- { context->symbolTable.push(); ++context->loopNestingLevel; ;}
</del><ins>+ { context->symbolTable.push(); ++context->loopNestingLevel; }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 185:
</span><span class="lines">@@ -4350,35 +4378,35 @@
</span><span class="cx"> context->symbolTable.pop();
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast<TIntermTyped*>((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yylsp[(1) - (7)]));
</span><span class="cx"> --context->loopNestingLevel;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 186:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 187:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 188:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 189:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermTypedNode) = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 190:
</span><span class="lines">@@ -4386,7 +4414,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
</span><span class="cx"> (yyval.interm.nodePair).node2 = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 191:
</span><span class="lines">@@ -4394,7 +4422,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
</span><span class="cx"> (yyval.interm.nodePair).node2 = (yyvsp[(3) - (3)].interm.intermTypedNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 192:
</span><span class="lines">@@ -4405,7 +4433,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addBranch(EOpContinue, (yylsp[(1) - (2)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 193:
</span><span class="lines">@@ -4416,7 +4444,7 @@
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addBranch(EOpBreak, (yylsp[(1) - (2)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 194:
</span><span class="lines">@@ -4427,7 +4455,7 @@
</span><span class="cx"> context->error((yylsp[(1) - (2)]), "non-void function must return a value", "return");
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 195:
</span><span class="lines">@@ -4442,7 +4470,7 @@
</span><span class="cx"> context->error((yylsp[(1) - (3)]), "function return is not matching type:", "return");
</span><span class="cx"> context->recover();
</span><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 196:
</span><span class="lines">@@ -4450,7 +4478,7 @@
</span><span class="cx"> {
</span><span class="cx"> FRAG_ONLY("discard", (yylsp[(1) - (2)]));
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.addBranch(EOpKill, (yylsp[(1) - (2)]));
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 197:
</span><span class="lines">@@ -4458,7 +4486,7 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><span class="cx"> context->treeRoot = (yyval.interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 198:
</span><span class="lines">@@ -4466,21 +4494,21 @@
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), (yyloc));
</span><span class="cx"> context->treeRoot = (yyval.interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 199:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 200:
</span><span class="cx">
</span><span class="cx"> {
</span><span class="cx"> (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 201:
</span><span class="lines">@@ -4570,7 +4598,7 @@
</span><span class="cx"> context->intermediate.setAggregateOperator(paramNodes, EOpParameters, (yylsp[(1) - (1)]));
</span><span class="cx"> (yyvsp[(1) - (1)].interm).intermAggregate = paramNodes;
</span><span class="cx"> context->loopNestingLevel = 0;
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 202:
</span><span class="lines">@@ -4594,14 +4622,24 @@
</span><span class="cx"> (yyval.interm.intermNode)->getAsAggregate()->setDebug(context->pragma().debug);
</span><span class="cx">
</span><span class="cx"> context->symbolTable.pop();
</span><del>- ;}
</del><ins>+ }
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx">
</span><del>-/* Line 1267 of yacc.c. */
</del><span class="cx">
</span><span class="cx"> default: break;
</span><span class="cx"> }
</span><ins>+ /* 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. */
</ins><span class="cx"> YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
</span><span class="cx">
</span><span class="cx"> YYPOPSTACK (yylen);
</span><span class="lines">@@ -4630,6 +4668,10 @@
</span><span class="cx"> | yyerrlab -- here on detecting error |
</span><span class="cx"> `------------------------------------*/
</span><span class="cx"> yyerrlab:
</span><ins>+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
</ins><span class="cx"> /* If not already recovering from an error, report this error. */
</span><span class="cx"> if (!yyerrstatus)
</span><span class="cx"> {
</span><span class="lines">@@ -4637,62 +4679,61 @@
</span><span class="cx"> #if ! YYERROR_VERBOSE
</span><span class="cx"> yyerror (&yylloc, context, YY_("syntax error"));
</span><span class="cx"> #else
</span><ins>+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
</ins><span class="cx"> {
</span><del>- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
</del><ins>+ 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)
</ins><span class="cx"> {
</span><del>- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
</del><ins>+ 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;
+ }
</ins><span class="cx"> }
</span><del>- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (&yylloc, context, yymsg);
- }
- else
- {
- yyerror (&yylloc, context, YY_("syntax error"));
- if (yysize != 0)
</del><ins>+ yyerror (&yylloc, context, yymsgp);
+ if (yysyntax_error_status == 2)
</ins><span class="cx"> goto yyexhaustedlab;
</span><span class="cx"> }
</span><del>- }
</del><ins>+# undef YYSYNTAX_ERROR
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span><del>- yyerror_range[0] = yylloc;
</del><ins>+ yyerror_range[1] = yylloc;
</ins><span class="cx">
</span><span class="cx"> if (yyerrstatus == 3)
</span><span class="cx"> {
</span><del>- /* If just tried and failed to reuse look-ahead token after an
- error, discard it. */
</del><ins>+ /* If just tried and failed to reuse lookahead token after an
+         error, discard it. */
</ins><span class="cx">
</span><span class="cx"> if (yychar <= YYEOF)
</span><del>- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
</del><ins>+        {
+         /* Return failure if at end of input. */
+         if (yychar == YYEOF)
+         YYABORT;
+        }
</ins><span class="cx"> else
</span><del>- {
- yydestruct ("Error: discarding",
- yytoken, &yylval, &yylloc, context);
- yychar = YYEMPTY;
</del><ins>+        {
+         yydestruct ("Error: discarding",
+                 yytoken, &yylval, &yylloc, context);
+         yychar = YYEMPTY;
+        }
</ins><span class="cx"> }
</span><del>- }
</del><span class="cx">
</span><del>- /* Else will try to reuse look-ahead token after shifting the error
</del><ins>+ /* Else will try to reuse lookahead token after shifting the error
</ins><span class="cx"> token. */
</span><span class="cx"> goto yyerrlab1;
</span><span class="cx">
</span><span class="lines">@@ -4708,7 +4749,7 @@
</span><span class="cx"> if (/*CONSTCOND*/ 0)
</span><span class="cx"> goto yyerrorlab;
</span><span class="cx">
</span><del>- yyerror_range[0] = yylsp[1-yylen];
</del><ins>+ yyerror_range[1] = yylsp[1-yylen];
</ins><span class="cx"> /* Do not reclaim the symbols of the rule which action triggered
</span><span class="cx"> this YYERROR. */
</span><span class="cx"> YYPOPSTACK (yylen);
</span><span class="lines">@@ -4722,43 +4763,42 @@
</span><span class="cx"> | yyerrlab1 -- common code for both syntax error and YYERROR. |
</span><span class="cx"> `-------------------------------------------------------------*/
</span><span class="cx"> yyerrlab1:
</span><del>- yyerrstatus = 3; /* Each real token shifted decrements this. */
</del><ins>+ yyerrstatus = 3;        /* Each real token shifted decrements this. */
</ins><span class="cx">
</span><span class="cx"> for (;;)
</span><span class="cx"> {
</span><span class="cx"> yyn = yypact[yystate];
</span><del>- if (yyn != YYPACT_NINF)
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
- {
- yyn = yytable[yyn];
- if (0 < yyn)
- break;
- }
- }
</del><ins>+ if (!yypact_value_is_default (yyn))
+        {
+         yyn += YYTERROR;
+         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+         {
+         yyn = yytable[yyn];
+         if (0 < yyn)
+                break;
+         }
+        }
</ins><span class="cx">
</span><span class="cx"> /* Pop the current state because it cannot handle the error token. */
</span><span class="cx"> if (yyssp == yyss)
</span><del>- YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx">
</span><del>- yyerror_range[0] = *yylsp;
</del><ins>+ yyerror_range[1] = *yylsp;
</ins><span class="cx"> yydestruct ("Error: popping",
</span><del>- yystos[yystate], yyvsp, yylsp, context);
</del><ins>+                 yystos[yystate], yyvsp, yylsp, context);
</ins><span class="cx"> YYPOPSTACK (1);
</span><span class="cx"> yystate = *yyssp;
</span><span class="cx"> YY_STACK_PRINT (yyss, yyssp);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (yyn == YYFINAL)
- YYACCEPT;
-
</del><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx"> *++yyvsp = yylval;
</span><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx">
</span><del>- yyerror_range[1] = yylloc;
</del><ins>+ yyerror_range[2] = yylloc;
</ins><span class="cx"> /* Using YYLLOC is tempting, but would change the location of
</span><del>- the look-ahead. YYLOC is available though. */
- YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
</del><ins>+ the lookahead. YYLOC is available though. */
+ YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
</ins><span class="cx"> *++yylsp = yyloc;
</span><span class="cx">
</span><span class="cx"> /* Shift the error token. */
</span><span class="lines">@@ -4782,7 +4822,7 @@
</span><span class="cx"> yyresult = 1;
</span><span class="cx"> goto yyreturn;
</span><span class="cx">
</span><del>-#ifndef yyoverflow
</del><ins>+#if !defined yyoverflow || YYERROR_VERBOSE
</ins><span class="cx"> /*-------------------------------------------------.
</span><span class="cx"> | yyexhaustedlab -- memory exhaustion comes here. |
</span><span class="cx"> `-------------------------------------------------*/
</span><span class="lines">@@ -4793,9 +4833,14 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> yyreturn:
</span><del>- if (yychar != YYEOF && yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval, &yylloc, context);
</del><ins>+ 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, context);
+ }
</ins><span class="cx"> /* Do not reclaim the symbols of the rule which action triggered
</span><span class="cx"> this YYABORT or YYACCEPT. */
</span><span class="cx"> YYPOPSTACK (yylen);
</span><span class="lines">@@ -4803,7 +4848,7 @@
</span><span class="cx"> while (yyssp != yyss)
</span><span class="cx"> {
</span><span class="cx"> yydestruct ("Cleanup: popping",
</span><del>- yystos[*yyssp], yyvsp, yylsp, context);
</del><ins>+                 yystos[*yyssp], yyvsp, yylsp, context);
</ins><span class="cx"> YYPOPSTACK (1);
</span><span class="cx"> }
</span><span class="cx"> #ifndef yyoverflow
</span><span class="lines">@@ -4822,12 +4867,6 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-void yyerror(YYLTYPE* yylloc, TParseContext* context, const char* reason) {
- context->error(*yylloc, reason, "");
- context->recover();
-}
-
</del><span class="cx"> int glslang_parse(TParseContext* context) {
</span><span class="cx"> return yyparse(context);
</span><span class="cx"> }
</span><del>-
</del></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccompilerglslang_tabh"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h (160255 => 160256)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h        2013-12-06 23:06:41 UTC (rev 160255)
+++ trunk/Source/ThirdParty/ANGLE/src/compiler/glslang_tab.h        2013-12-06 23:14:03 UTC (rev 160256)
</span><span class="lines">@@ -1,24 +1,23 @@
</span><del>-/* A Bison parser, made by GNU Bison 2.3. */
</del><ins>+/* Apple Note: For the avoidance of doubt, Apple elects to distribute this file under the terms of the BSD license. */
</ins><span class="cx">
</span><del>-/* Skeleton interface for Bison's Yacc-like parsers in C
</del><ins>+/* A Bison parser, made by GNU Bison 2.7. */
</ins><span class="cx">
</span><del>- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
</del><ins>+/* 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
</ins><span class="cx"> it under the terms of the GNU General Public License as published by
</span><del>- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
</del><ins>+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
</ins><span class="cx"> This program is distributed in the hope that it will be useful,
</span><span class="cx"> but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span class="cx"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
</span><span class="cx"> GNU General Public License for more details.
</span><del>-
</del><ins>+
</ins><span class="cx"> You should have received a copy of the GNU General Public License
</span><del>- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
</del><ins>+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
</ins><span class="cx">
</span><span class="cx"> /* As a special exception, you may create a larger work that contains
</span><span class="cx"> part or all of the Bison parser skeleton and distribute that work
</span><span class="lines">@@ -29,14 +28,29 @@
</span><span class="cx"> special exception, which will cause the skeleton and the resulting
</span><span class="cx"> Bison output files to be licensed under the GNU General Public
</span><span class="cx"> License without this special exception.
</span><del>-
</del><ins>+
</ins><span class="cx"> This special exception was added by the Free Software Foundation in
</span><span class="cx"> version 2.2 of Bison. */
</span><span class="cx">
</span><ins>+#ifndef YY_YY_GLSLANG_TAB_H_INCLUDED
+# define YY_YY_GLSLANG_TAB_H_INCLUDED
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
+/* "%code requires" blocks. */
+
+
</ins><span class="cx"> #define YYLTYPE TSourceLoc
</span><span class="cx"> #define YYLTYPE_IS_DECLARED 1
</span><span class="cx"> #define SH_MAX_TOKEN_LENGTH 256 // WebGL spec.
</span><span class="cx">
</span><ins>+
+
+
</ins><span class="cx"> /* Tokens. */
</span><span class="cx"> #ifndef YYTOKENTYPE
</span><span class="cx"> # define YYTOKENTYPE
</span><span class="lines">@@ -137,109 +151,13 @@
</span><span class="cx"> QUESTION = 349
</span><span class="cx"> };
</span><span class="cx"> #endif
</span><del>-/* Tokens. */
-#define INVARIANT 258
-#define HIGH_PRECISION 259
-#define MEDIUM_PRECISION 260
-#define LOW_PRECISION 261
-#define PRECISION 262
-#define ATTRIBUTE 263
-#define CONST_QUAL 264
-#define BOOL_TYPE 265
-#define FLOAT_TYPE 266
-#define INT_TYPE 267
-#define BREAK 268
-#define CONTINUE 269
-#define DO 270
-#define ELSE 271
-#define FOR 272
-#define IF 273
-#define DISCARD 274
-#define RETURN 275
-#define BVEC2 276
-#define BVEC3 277
-#define BVEC4 278
-#define IVEC2 279
-#define IVEC3 280
-#define IVEC4 281
-#define VEC2 282
-#define VEC3 283
-#define VEC4 284
-#define MATRIX2 285
-#define MATRIX3 286
-#define MATRIX4 287
-#define IN_QUAL 288
-#define OUT_QUAL 289
-#define INOUT_QUAL 290
-#define UNIFORM 291
-#define VARYING 292
-#define STRUCT 293
-#define VOID_TYPE 294
-#define WHILE 295
-#define SAMPLER2D 296
-#define SAMPLERCUBE 297
-#define SAMPLER_EXTERNAL_OES 298
-#define SAMPLER2DRECT 299
-#define IDENTIFIER 300
-#define TYPE_NAME 301
-#define FLOATCONSTANT 302
-#define INTCONSTANT 303
-#define BOOLCONSTANT 304
-#define LEFT_OP 305
-#define RIGHT_OP 306
-#define INC_OP 307
-#define DEC_OP 308
-#define LE_OP 309
-#define GE_OP 310
-#define EQ_OP 311
-#define NE_OP 312
-#define AND_OP 313
-#define OR_OP 314
-#define XOR_OP 315
-#define MUL_ASSIGN 316
-#define DIV_ASSIGN 317
-#define ADD_ASSIGN 318
-#define MOD_ASSIGN 319
-#define LEFT_ASSIGN 320
-#define RIGHT_ASSIGN 321
-#define AND_ASSIGN 322
-#define XOR_ASSIGN 323
-#define OR_ASSIGN 324
-#define SUB_ASSIGN 325
-#define LEFT_PAREN 326
-#define RIGHT_PAREN 327
-#define LEFT_BRACKET 328
-#define RIGHT_BRACKET 329
-#define LEFT_BRACE 330
-#define RIGHT_BRACE 331
-#define DOT 332
-#define COMMA 333
-#define COLON 334
-#define EQUAL 335
-#define SEMICOLON 336
-#define BANG 337
-#define DASH 338
-#define TILDE 339
-#define PLUS 340
-#define STAR 341
-#define SLASH 342
-#define PERCENT 343
-#define LEFT_ANGLE 344
-#define RIGHT_ANGLE 345
-#define VERTICAL_BAR 346
-#define CARET 347
-#define AMPERSAND 348
-#define QUESTION 349
</del><span class="cx">
</span><span class="cx">
</span><del>-
-
</del><span class="cx"> #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
</span><span class="cx"> typedef union YYSTYPE
</span><del>-
</del><span class="cx"> {
</span><del>-#define YYLTYPE TSourceLoc
-#define YYLTYPE_IS_DECLARED 1
</del><ins>+
+
</ins><span class="cx"> struct {
</span><span class="cx"> union {
</span><span class="cx"> TString *string;
</span><span class="lines">@@ -267,18 +185,15 @@
</span><span class="cx"> TFieldList* fieldList;
</span><span class="cx"> };
</span><span class="cx"> } interm;
</span><del>-}
-/* Line 1529 of yacc.c. */
</del><span class="cx">
</span><del>- YYSTYPE;
</del><ins>+
+
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
</ins><span class="cx"> # define yystype YYSTYPE /* obsolescent; will be withdrawn */
</span><span class="cx"> # define YYSTYPE_IS_DECLARED 1
</span><del>-# define YYSTYPE_IS_TRIVIAL 1
-
</del><span class="cx"> #endif
</span><span class="cx">
</span><del>-
-
</del><span class="cx"> #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
</span><span class="cx"> typedef struct YYLTYPE
</span><span class="cx"> {
</span><span class="lines">@@ -293,3 +208,18 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx">
</span><ins>+#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 (TParseContext* context);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !YY_YY_GLSLANG_TAB_H_INCLUDED */
</ins></span></pre></div>
<a id="trunkSourceThirdPartyANGLEsrccompilerpreprocessorExpressionParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp (160255 => 160256)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp        2013-12-06 23:06:41 UTC (rev 160255)
+++ trunk/Source/ThirdParty/ANGLE/src/compiler/preprocessor/ExpressionParser.cpp        2013-12-06 23:14:03 UTC (rev 160256)
</span><span class="lines">@@ -1,14 +1,15 @@
</span><del>-/* A Bison parser, made by GNU Bison 2.3. */
</del><ins>+/* Apple Note: For the avoidance of doubt, Apple elects to distribute this file under the terms of the BSD license. */
</ins><span class="cx">
</span><del>-/* Skeleton implementation for Bison's Yacc-like parsers in C
</del><ins>+/* A Bison parser, made by GNU Bison 3.0.1. */
</ins><span class="cx">
</span><del>- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
</del><ins>+/* Bison implementation for Yacc-like parsers in C
</ins><span class="cx">
</span><del>- This program is free software; you can redistribute it and/or modify
</del><ins>+ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
</ins><span class="cx"> it under the terms of the GNU General Public License as published by
</span><del>- the Free Software Foundation; either version 2, or (at your option)
- any later version.
</del><ins>+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
</ins><span class="cx">
</span><span class="cx"> This program is distributed in the hope that it will be useful,
</span><span class="cx"> but WITHOUT ANY WARRANTY; without even the implied warranty of
</span><span class="lines">@@ -16,9 +17,7 @@
</span><span class="cx"> GNU General Public License for more details.
</span><span class="cx">
</span><span class="cx"> You should have received a copy of the GNU General Public License
</span><del>- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
</del><ins>+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
</ins><span class="cx">
</span><span class="cx"> /* As a special exception, you may create a larger work that contains
</span><span class="cx"> part or all of the Bison parser skeleton and distribute that work
</span><span class="lines">@@ -47,7 +46,7 @@
</span><span class="cx"> #define YYBISON 1
</span><span class="cx">
</span><span class="cx"> /* Bison version. */
</span><del>-#define YYBISON_VERSION "2.3"
</del><ins>+#define YYBISON_VERSION "3.0.1"
</ins><span class="cx">
</span><span class="cx"> /* Skeleton name. */
</span><span class="cx"> #define YYSKELETON_NAME "yacc.c"
</span><span class="lines">@@ -55,52 +54,21 @@
</span><span class="cx"> /* Pure parsers. */
</span><span class="cx"> #define YYPURE 1
</span><span class="cx">
</span><del>-/* Using locations. */
-#define YYLSP_NEEDED 0
</del><ins>+/* Push parsers. */
+#define YYPUSH 0
</ins><span class="cx">
</span><del>-/* Substitute the variable and function names. */
-#define yyparse ppparse
-#define yylex pplex
-#define yyerror pperror
-#define yylval pplval
-#define yychar ppchar
-#define yydebug ppdebug
-#define yynerrs ppnerrs
</del><ins>+/* Pull parsers. */
+#define YYPULL 1
</ins><span class="cx">
</span><span class="cx">
</span><del>-/* Tokens. */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum yytokentype {
- TOK_CONST_INT = 258,
- TOK_OP_OR = 259,
- TOK_OP_AND = 260,
- TOK_OP_NE = 261,
- TOK_OP_EQ = 262,
- TOK_OP_GE = 263,
- TOK_OP_LE = 264,
- TOK_OP_RIGHT = 265,
- TOK_OP_LEFT = 266,
- TOK_UNARY = 267
- };
-#endif
-/* Tokens. */
-#define TOK_CONST_INT 258
-#define TOK_OP_OR 259
-#define TOK_OP_AND 260
-#define TOK_OP_NE 261
-#define TOK_OP_EQ 262
-#define TOK_OP_GE 263
-#define TOK_OP_LE 264
-#define TOK_OP_RIGHT 265
-#define TOK_OP_LEFT 266
-#define TOK_UNARY 267
</del><ins>+/* Substitute the variable and function names. */
+#define yyparse ppparse
+#define yylex pplex
+#define yyerror pperror
+#define yydebug ppdebug
+#define yynerrs ppnerrs
</ins><span class="cx">
</span><span class="cx">
</span><del>-
-
</del><span class="cx"> /* Copy the first part of user declarations. */
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -125,6 +93,12 @@
</span><span class="cx">
</span><span class="cx"> #include "ExpressionParser.h"
</span><span class="cx">
</span><ins>+#if defined(_MSC_VER)
+#include <malloc.h>
+#else
+#include <stdlib.h>
+#endif
+
</ins><span class="cx"> #include <cassert>
</span><span class="cx"> #include <sstream>
</span><span class="cx">
</span><span class="lines">@@ -158,11 +132,15 @@
</span><span class="cx"> static void yyerror(Context* context, const char* reason);
</span><span class="cx">
</span><span class="cx">
</span><del>-/* Enabling traces. */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
</del><span class="cx">
</span><ins>+# ifndef YY_NULLPTR
+# if defined __cplusplus && 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
+# endif
+
</ins><span class="cx"> /* Enabling verbose error messages. */
</span><span class="cx"> #ifdef YYERROR_VERBOSE
</span><span class="cx"> # undef YYERROR_VERBOSE
</span><span class="lines">@@ -171,26 +149,50 @@
</span><span class="cx"> # define YYERROR_VERBOSE 0
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-/* Enabling the token table. */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
</del><ins>+
+/* Debug traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
</ins><span class="cx"> #endif
</span><ins>+#if YYDEBUG
+extern int ppdebug;
+#endif
</ins><span class="cx">
</span><ins>+/* Token type. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ enum yytokentype
+ {
+ TOK_CONST_INT = 258,
+ TOK_OP_OR = 259,
+ TOK_OP_AND = 260,
+ TOK_OP_EQ = 261,
+ TOK_OP_NE = 262,
+ TOK_OP_LE = 263,
+ TOK_OP_GE = 264,
+ TOK_OP_LEFT = 265,
+ TOK_OP_RIGHT = 266,
+ TOK_UNARY = 267
+ };
+#endif
+
+/* Value type. */
</ins><span class="cx"> #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
</span><span class="cx"> typedef int YYSTYPE;
</span><del>-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
</del><span class="cx"> # define YYSTYPE_IS_TRIVIAL 1
</span><ins>+# define YYSTYPE_IS_DECLARED 1
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-/* Copy the second part of user declarations. */
</del><ins>+int ppparse (Context *context);
</ins><span class="cx">
</span><span class="cx">
</span><del>-/* Line 216 of yacc.c. */
</del><span class="cx">
</span><ins>+/* Copy the second part of user declarations. */
</ins><span class="cx">
</span><ins>+
+
</ins><span class="cx"> #ifdef short
</span><span class="cx"> # undef short
</span><span class="cx"> #endif
</span><span class="lines">@@ -203,11 +205,8 @@
</span><span class="cx">
</span><span class="cx"> #ifdef YYTYPE_INT8
</span><span class="cx"> typedef YYTYPE_INT8 yytype_int8;
</span><del>-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
</del><span class="cx"> #else
</span><del>-typedef short int yytype_int8;
</del><ins>+typedef signed char yytype_int8;
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> #ifdef YYTYPE_UINT16
</span><span class="lines">@@ -227,8 +226,7 @@
</span><span class="cx"> # define YYSIZE_T __SIZE_TYPE__
</span><span class="cx"> # elif defined size_t
</span><span class="cx"> # define YYSIZE_T size_t
</span><del>-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><ins>+# elif ! defined YYSIZE_T
</ins><span class="cx"> # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> # define YYSIZE_T size_t
</span><span class="cx"> # else
</span><span class="lines">@@ -242,39 +240,68 @@
</span><span class="cx"> # if defined YYENABLE_NLS && YYENABLE_NLS
</span><span class="cx"> # if ENABLE_NLS
</span><span class="cx"> # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
</span><del>-# define YY_(msgid) dgettext ("bison-runtime", msgid)
</del><ins>+# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
</ins><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YY_
</span><del>-# define YY_(msgid) msgid
</del><ins>+# define YY_(Msgid) Msgid
</ins><span class="cx"> # endif
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__ \
+ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+# define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+# define _Noreturn __declspec (noreturn)
+# else
+# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
</ins><span class="cx"> /* Suppress unused-variable warnings by "using" E. */
</span><span class="cx"> #if ! defined lint || defined __GNUC__
</span><del>-# define YYUSE(e) ((void) (e))
</del><ins>+# define YYUSE(E) ((void) (E))
</ins><span class="cx"> #else
</span><del>-# define YYUSE(e) /* empty */
</del><ins>+# define YYUSE(E) /* empty */
</ins><span class="cx"> #endif
</span><span class="cx">
</span><del>-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define YYID(n) (n)
</del><ins>+#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")
</ins><span class="cx"> #else
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int i)
-#else
-static int
-YYID (i)
- int i;
</del><ins>+# define YY_INITIAL_VALUE(Value) Value
</ins><span class="cx"> #endif
</span><del>-{
- return i;
-}
</del><ins>+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> #endif
</span><ins>+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
</ins><span class="cx">
</span><ins>+
</ins><span class="cx"> #if ! defined yyoverflow || YYERROR_VERBOSE
</span><span class="cx">
</span><span class="cx"> /* The parser invokes alloca or malloc; define the necessary symbols. */
</span><span class="lines">@@ -292,11 +319,11 @@
</span><span class="cx"> # define alloca _alloca
</span><span class="cx"> # else
</span><span class="cx"> # define YYSTACK_ALLOC alloca
</span><del>-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><ins>+# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
</ins><span class="cx"> # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
</span><del>-# ifndef _STDLIB_H
-# define _STDLIB_H 1
</del><ins>+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
</ins><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="lines">@@ -304,8 +331,8 @@
</span><span class="cx"> # endif
</span><span class="cx">
</span><span class="cx"> # ifdef YYSTACK_ALLOC
</span><del>- /* Pacify GCC's `empty if-body' warning. */
-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
</del><ins>+ /* Pacify GCC's 'empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
</ins><span class="cx"> # ifndef YYSTACK_ALLOC_MAXIMUM
</span><span class="cx"> /* The OS might guarantee only one guard page at the bottom of the stack,
</span><span class="cx"> and a page size can be as small as 4096 bytes. So we cannot safely
</span><span class="lines">@@ -319,25 +346,23 @@
</span><span class="cx"> # ifndef YYSTACK_ALLOC_MAXIMUM
</span><span class="cx"> # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
</span><span class="cx"> # endif
</span><del>-# if (defined __cplusplus && ! defined _STDLIB_H \
</del><ins>+# if (defined __cplusplus && ! defined EXIT_SUCCESS \
</ins><span class="cx"> && ! ((defined YYMALLOC || defined malloc) \
</span><del>- && (defined YYFREE || defined free)))
</del><ins>+ && (defined YYFREE || defined free)))
</ins><span class="cx"> # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
</span><del>-# ifndef _STDLIB_H
-# define _STDLIB_H 1
</del><ins>+# ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS 0
</ins><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YYMALLOC
</span><span class="cx"> # define YYMALLOC malloc
</span><del>-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><ins>+# if ! defined malloc && ! defined EXIT_SUCCESS
</ins><span class="cx"> void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="cx"> # ifndef YYFREE
</span><span class="cx"> # define YYFREE free
</span><del>-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><ins>+# if ! defined free && ! defined EXIT_SUCCESS
</ins><span class="cx"> void free (void *); /* INFRINGES ON USER NAME SPACE */
</span><span class="cx"> # endif
</span><span class="cx"> # endif
</span><span class="lines">@@ -347,14 +372,14 @@
</span><span class="cx">
</span><span class="cx"> #if (! defined yyoverflow \
</span><span class="cx"> && (! defined __cplusplus \
</span><del>- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
</del><ins>+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
</ins><span class="cx">
</span><span class="cx"> /* A type that is properly aligned for any stack member. */
</span><span class="cx"> union yyalloc
</span><span class="cx"> {
</span><del>- yytype_int16 yyss;
- YYSTYPE yyvs;
- };
</del><ins>+ yytype_int16 yyss_alloc;
+ YYSTYPE yyvs_alloc;
+};
</ins><span class="cx">
</span><span class="cx"> /* The size of the maximum gap between one aligned stack and the next. */
</span><span class="cx"> # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
</span><span class="lines">@@ -365,42 +390,46 @@
</span><span class="cx"> ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
</span><span class="cx"> + YYSTACK_GAP_MAXIMUM)
</span><span class="cx">
</span><del>-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define YYCOPY(To, From, Count) \
- do \
- { \
- YYSIZE_T yyi; \
- for (yyi = 0; yyi < (Count); yyi++) \
- (To)[yyi] = (From)[yyi]; \
- } \
- while (YYID (0))
-# endif
-# endif
</del><ins>+# define YYCOPY_NEEDED 1
</ins><span class="cx">
</span><span class="cx"> /* Relocate STACK from its old location to the new one. The
</span><span class="cx"> local variables YYSIZE and YYSTACKSIZE give the old and new number of
</span><span class="cx"> elements in the stack, and YYPTR gives the new location of the
</span><span class="cx"> stack. Advance YYPTR to a properly aligned location for the next
</span><span class="cx"> stack. */
</span><del>-# define YYSTACK_RELOCATE(Stack) \
- do \
- { \
- YYSIZE_T yynewbytes; \
- YYCOPY (&yyptr->Stack, Stack, yysize); \
- Stack = &yyptr->Stack; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
- } \
- while (YYID (0))
</del><ins>+# 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 (0)
</ins><span class="cx">
</span><span class="cx"> #endif
</span><span class="cx">
</span><ins>+#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 (0)
+# endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
</ins><span class="cx"> /* YYFINAL -- State number of the termination state. */
</span><span class="cx"> #define YYFINAL 14
</span><span class="cx"> /* YYLAST -- Last index in YYTABLE. */
</span><span class="lines">@@ -412,17 +441,19 @@
</span><span class="cx"> #define YYNNTS 3
</span><span class="cx"> /* YYNRULES -- Number of rules. */
</span><span class="cx"> #define YYNRULES 26
</span><del>-/* YYNRULES -- Number of states. */
</del><ins>+/* YYNSTATES -- Number of states. */
</ins><span class="cx"> #define YYNSTATES 52
</span><span class="cx">
</span><del>-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
</del><ins>+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+ by yylex, with out-of-bounds checking. */
</ins><span class="cx"> #define YYUNDEFTOK 2
</span><span class="cx"> #define YYMAXUTOK 267
</span><span class="cx">
</span><del>-#define YYTRANSLATE(YYX) \
</del><ins>+#define YYTRANSLATE(YYX) \
</ins><span class="cx"> ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
</span><span class="cx">
</span><del>-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
</del><ins>+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, without out-of-bounds checking. */
</ins><span class="cx"> static const yytype_uint8 yytranslate[] =
</span><span class="cx"> {
</span><span class="cx"> 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
</span><span class="lines">@@ -455,55 +486,31 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> #if YYDEBUG
</span><del>-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
-static const yytype_uint8 yyprhs[] =
-{
- 0, 0, 3, 5, 7, 11, 15, 19, 23, 27,
- 31, 35, 39, 43, 47, 51, 55, 59, 63, 67,
- 71, 75, 79, 82, 85, 88, 91
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const yytype_int8 yyrhs[] =
-{
- 28, 0, -1, 29, -1, 3, -1, 29, 4, 29,
- -1, 29, 5, 29, -1, 29, 6, 29, -1, 29,
- 7, 29, -1, 29, 8, 29, -1, 29, 9, 29,
- -1, 29, 10, 29, -1, 29, 13, 29, -1, 29,
- 14, 29, -1, 29, 12, 29, -1, 29, 11, 29,
- -1, 29, 15, 29, -1, 29, 16, 29, -1, 29,
- 18, 29, -1, 29, 17, 29, -1, 29, 21, 29,
- -1, 29, 20, 29, -1, 29, 19, 29, -1, 23,
- 29, -1, 24, 29, -1, 18, 29, -1, 17, 29,
- -1, 25, 29, 26, -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
</del><ins>+ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
</ins><span class="cx"> static const yytype_uint8 yyrline[] =
</span><span class="cx"> {
</span><del>- 0, 91, 91, 98, 99, 102, 105, 108, 111, 114,
- 117, 120, 123, 126, 129, 132, 135, 138, 141, 144,
- 157, 170, 173, 176, 179, 182, 185
</del><ins>+ 0, 97, 97, 104, 105, 108, 111, 114, 117, 120,
+ 123, 126, 129, 132, 135, 138, 141, 144, 147, 150,
+ 163, 176, 179, 182, 185, 188, 191
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
</del><ins>+#if YYDEBUG || YYERROR_VERBOSE || 0
</ins><span class="cx"> /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
</span><span class="cx"> First, the terminals, then, starting at YYNTOKENS, nonterminals. */
</span><span class="cx"> static const char *const yytname[] =
</span><span class="cx"> {
</span><span class="cx"> "$end", "error", "$undefined", "TOK_CONST_INT", "TOK_OP_OR",
</span><del>- "TOK_OP_AND", "'|'", "'^'", "'&'", "TOK_OP_NE", "TOK_OP_EQ", "'<'",
- "'>'", "TOK_OP_GE", "TOK_OP_LE", "TOK_OP_RIGHT", "TOK_OP_LEFT", "'+'",
</del><ins>+ "TOK_OP_AND", "'|'", "'^'", "'&'", "TOK_OP_EQ", "TOK_OP_NE", "'<'",
+ "'>'", "TOK_OP_LE", "TOK_OP_GE", "TOK_OP_LEFT", "TOK_OP_RIGHT", "'+'",
</ins><span class="cx"> "'-'", "'*'", "'/'", "'%'", "TOK_UNARY", "'!'", "'~'", "'('", "')'",
</span><del>- "$accept", "input", "expression", 0
</del><ins>+ "$accept", "input", "expression", YY_NULLPTR
</ins><span class="cx"> };
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> # ifdef YYPRINT
</span><del>-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
- token YYLEX-NUM. */
</del><ins>+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+ (internal) symbol number NUM (which must be that of a token). */
</ins><span class="cx"> static const yytype_uint16 yytoknum[] =
</span><span class="cx"> {
</span><span class="cx"> 0, 256, 257, 258, 259, 260, 124, 94, 38, 261,
</span><span class="lines">@@ -512,44 +519,18 @@
</span><span class="cx"> };
</span><span class="cx"> # endif
</span><span class="cx">
</span><del>-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
-{
- 0, 27, 28, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
- 29, 29, 29, 29, 29, 29, 29
-};
</del><ins>+#define YYPACT_NINF -11
</ins><span class="cx">
</span><del>-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
-{
- 0, 2, 1, 1, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 2, 2, 2, 2, 3
-};
</del><ins>+#define yypact_value_is_default(Yystate) \
+ (!!((Yystate) == (-11)))
</ins><span class="cx">
</span><del>-/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const yytype_uint8 yydefact[] =
-{
- 0, 3, 0, 0, 0, 0, 0, 0, 2, 25,
- 24, 22, 23, 0, 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 26, 4, 5, 6, 7, 8, 9,
- 10, 14, 13, 11, 12, 15, 16, 18, 17, 21,
- 20, 19
-};
</del><ins>+#define YYTABLE_NINF -1
</ins><span class="cx">
</span><del>-/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int8 yydefgoto[] =
-{
- -1, 7, 8
-};
</del><ins>+#define yytable_value_is_error(Yytable_value) \
+ 0
</ins><span class="cx">
</span><del>-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
-#define YYPACT_NINF -11
</del><ins>+ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
</ins><span class="cx"> static const yytype_int16 yypact[] =
</span><span class="cx"> {
</span><span class="cx"> 46, -11, 46, 46, 46, 46, 46, 12, 68, -11,
</span><span class="lines">@@ -560,17 +541,34 @@
</span><span class="cx"> -11, -11
</span><span class="cx"> };
</span><span class="cx">
</span><del>-/* YYPGOTO[NTERM-NUM]. */
</del><ins>+ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+ Performed when YYTABLE does not specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 0, 3, 0, 0, 0, 0, 0, 0, 2, 25,
+ 24, 22, 23, 0, 1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 26, 4, 5, 6, 7, 8, 10,
+ 9, 14, 13, 12, 11, 16, 15, 18, 17, 21,
+ 20, 19
+};
+
+ /* YYPGOTO[NTERM-NUM]. */
</ins><span class="cx"> static const yytype_int8 yypgoto[] =
</span><span class="cx"> {
</span><span class="cx"> -11, -11, -2
</span><span class="cx"> };
</span><span class="cx">
</span><del>-/* 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 zero, do what YYDEFACT says.
- If YYTABLE_NINF, syntax error. */
-#define YYTABLE_NINF -1
</del><ins>+ /* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int8 yydefgoto[] =
+{
+ -1, 7, 8
+};
+
+ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule whose
+ number is the opposite. If YYTABLE_NINF, syntax error. */
</ins><span class="cx"> static const yytype_uint8 yytable[] =
</span><span class="cx"> {
</span><span class="cx"> 9, 10, 11, 12, 13, 26, 27, 28, 29, 30,
</span><span class="lines">@@ -615,8 +613,8 @@
</span><span class="cx"> 16, 17, 18, 19, 20, 21
</span><span class="cx"> };
</span><span class="cx">
</span><del>-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
</del><ins>+ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
</ins><span class="cx"> static const yytype_uint8 yystos[] =
</span><span class="cx"> {
</span><span class="cx"> 0, 3, 17, 18, 23, 24, 25, 28, 29, 29,
</span><span class="lines">@@ -627,96 +625,58 @@
</span><span class="cx"> 29, 29
</span><span class="cx"> };
</span><span class="cx">
</span><del>-#define yyerrok (yyerrstatus = 0)
-#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
</del><ins>+ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 27, 28, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
+ 29, 29, 29, 29, 29, 29, 29
+};
</ins><span class="cx">
</span><del>-#define YYACCEPT goto yyacceptlab
-#define YYABORT goto yyabortlab
-#define YYERROR goto yyerrorlab
</del><ins>+ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 1, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 2, 2, 2, 2, 3
+};
</ins><span class="cx">
</span><span class="cx">
</span><del>-/* 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. */
</del><ins>+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
</ins><span class="cx">
</span><del>-#define YYFAIL goto yyerrlab
</del><ins>+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
</ins><span class="cx">
</span><ins>+
</ins><span class="cx"> #define YYRECOVERING() (!!yyerrstatus)
</span><span class="cx">
</span><del>-#define YYBACKUP(Token, Value) \
-do \
- if (yychar == YYEMPTY && yylen == 1) \
- { \
- yychar = (Token); \
- yylval = (Value); \
- yytoken = YYTRANSLATE (yychar); \
- YYPOPSTACK (1); \
- goto yybackup; \
- } \
- else \
- { \
</del><ins>+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ YYPOPSTACK (yylen); \
+ yystate = *yyssp; \
+ goto yybackup; \
+ } \
+ else \
+ { \
</ins><span class="cx"> yyerror (context, YY_("syntax error: cannot back up")); \
</span><del>- YYERROR; \
- } \
-while (YYID (0))
</del><ins>+ YYERROR; \
+ } \
+while (0)
</ins><span class="cx">
</span><ins>+/* Error token number */
+#define YYTERROR 1
+#define YYERRCODE 256
</ins><span class="cx">
</span><del>-#define YYTERROR 1
-#define YYERRCODE 256
</del><span class="cx">
</span><span class="cx">
</span><del>-/* 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). */
-
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
-#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
-
-
-/* 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 YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
-# define YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments. */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (&yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&yylval, context)
-#endif
-
</del><span class="cx"> /* Enable debugging if requested. */
</span><span class="cx"> #if YYDEBUG
</span><span class="cx">
</span><span class="lines">@@ -725,56 +685,47 @@
</span><span class="cx"> # define YYFPRINTF fprintf
</span><span class="cx"> # endif
</span><span class="cx">
</span><del>-# define YYDPRINTF(Args) \
-do { \
- if (yydebug) \
- YYFPRINTF Args; \
-} while (YYID (0))
-
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
</del><ins>+# define YYDPRINTF(Args) \
+do { \
</ins><span class="cx"> if (yydebug) \
</span><del>- { \
- YYFPRINTF (stderr, "%s ", Title); \
- yy_symbol_print (stderr, \
- Type, Value, context); \
- YYFPRINTF (stderr, "\n"); \
- } \
-} while (YYID (0))
</del><ins>+ YYFPRINTF Args; \
+} while (0)
</ins><span class="cx">
</span><ins>+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
</ins><span class="cx">
</span><del>-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
</del><span class="cx">
</span><del>-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value, context); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT. |
+`----------------------------------------*/
+
</ins><span class="cx"> static void
</span><span class="cx"> yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Context *context)
</span><del>-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep, context)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
- Context *context;
-#endif
</del><span class="cx"> {
</span><ins>+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
+ YYUSE (context);
</ins><span class="cx"> if (!yyvaluep)
</span><span class="cx"> return;
</span><del>- YYUSE (context);
</del><span class="cx"> # ifdef YYPRINT
</span><span class="cx"> if (yytype < YYNTOKENS)
</span><span class="cx"> YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
</span><del>-# else
- YYUSE (yyoutput);
</del><span class="cx"> # endif
</span><del>- switch (yytype)
- {
- default:
- break;
- }
</del><ins>+ YYUSE (yytype);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><span class="lines">@@ -782,23 +733,11 @@
</span><span class="cx"> | Print this symbol on YYOUTPUT. |
</span><span class="cx"> `--------------------------------*/
</span><span class="cx">
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><span class="cx"> yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, Context *context)
</span><del>-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep, context)
- FILE *yyoutput;
- int yytype;
- YYSTYPE const * const yyvaluep;
- Context *context;
-#endif
</del><span class="cx"> {
</span><del>- if (yytype < YYNTOKENS)
- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
- else
- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
</del><ins>+ YYFPRINTF (yyoutput, "%s %s (",
+ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
</ins><span class="cx">
</span><span class="cx"> yy_symbol_value_print (yyoutput, yytype, yyvaluep, context);
</span><span class="cx"> YYFPRINTF (yyoutput, ")");
</span><span class="lines">@@ -809,67 +748,54 @@
</span><span class="cx"> | TOP (included). |
</span><span class="cx"> `------------------------------------------------------------------*/
</span><span class="cx">
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><del>-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
-#else
-static void
-yy_stack_print (bottom, top)
- yytype_int16 *bottom;
- yytype_int16 *top;
-#endif
</del><ins>+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
</ins><span class="cx"> {
</span><span class="cx"> YYFPRINTF (stderr, "Stack now");
</span><del>- for (; bottom <= top; ++bottom)
- YYFPRINTF (stderr, " %d", *bottom);
</del><ins>+ for (; yybottom <= yytop; yybottom++)
+ {
+ int yybot = *yybottom;
+ YYFPRINTF (stderr, " %d", yybot);
+ }
</ins><span class="cx"> YYFPRINTF (stderr, "\n");
</span><span class="cx"> }
</span><span class="cx">
</span><del>-# define YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (yydebug) \
- yy_stack_print ((Bottom), (Top)); \
-} while (YYID (0))
</del><ins>+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (0)
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> /*------------------------------------------------.
</span><span class="cx"> | Report that the YYRULE is going to be reduced. |
</span><span class="cx"> `------------------------------------------------*/
</span><span class="cx">
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><del>-yy_reduce_print (YYSTYPE *yyvsp, int yyrule, Context *context)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule, context)
- YYSTYPE *yyvsp;
- int yyrule;
- Context *context;
-#endif
</del><ins>+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, Context *context)
</ins><span class="cx"> {
</span><ins>+ unsigned long int yylno = yyrline[yyrule];
</ins><span class="cx"> int yynrhs = yyr2[yyrule];
</span><span class="cx"> int yyi;
</span><del>- unsigned long int yylno = yyrline[yyrule];
</del><span class="cx"> YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
</span><del>- yyrule - 1, yylno);
</del><ins>+ yyrule - 1, yylno);
</ins><span class="cx"> /* The symbols being reduced. */
</span><span class="cx"> for (yyi = 0; yyi < yynrhs; yyi++)
</span><span class="cx"> {
</span><del>- fprintf (stderr, " $%d = ", yyi + 1);
- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- , context);
- fprintf (stderr, "\n");
</del><ins>+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr,
+ yystos[yyssp[yyi + 1 - yynrhs]],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , context);
+ YYFPRINTF (stderr, "\n");
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-# define YY_REDUCE_PRINT(Rule) \
-do { \
- if (yydebug) \
- yy_reduce_print (yyvsp, Rule, context); \
-} while (YYID (0))
</del><ins>+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyssp, yyvsp, Rule, context); \
+} while (0)
</ins><span class="cx">
</span><span class="cx"> /* Nonzero means print parse trace. It is left uninitialized so that
</span><span class="cx"> multiple parsers can coexist. */
</span><span class="lines">@@ -883,7 +809,7 @@
</span><span class="cx">
</span><span class="cx">
</span><span class="cx"> /* YYINITDEPTH -- initial size of the parser's stacks. */
</span><del>-#ifndef YYINITDEPTH
</del><ins>+#ifndef YYINITDEPTH
</ins><span class="cx"> # define YYINITDEPTH 200
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="lines">@@ -898,7 +824,6 @@
</span><span class="cx"> # define YYMAXDEPTH 10000
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-
</del><span class="cx">
</span><span class="cx"> #if YYERROR_VERBOSE
</span><span class="cx">
</span><span class="lines">@@ -907,15 +832,8 @@
</span><span class="cx"> # define yystrlen strlen
</span><span class="cx"> # else
</span><span class="cx"> /* Return the length of YYSTR. */
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static YYSIZE_T
</span><span class="cx"> yystrlen (const char *yystr)
</span><del>-#else
-static YYSIZE_T
-yystrlen (yystr)
- const char *yystr;
-#endif
</del><span class="cx"> {
</span><span class="cx"> YYSIZE_T yylen;
</span><span class="cx"> for (yylen = 0; yystr[yylen]; yylen++)
</span><span class="lines">@@ -931,16 +849,8 @@
</span><span class="cx"> # else
</span><span class="cx"> /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
</span><span class="cx"> YYDEST. */
</span><del>-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static char *
</span><span class="cx"> yystpcpy (char *yydest, const char *yysrc)
</span><del>-#else
-static char *
-yystpcpy (yydest, yysrc)
- char *yydest;
- const char *yysrc;
-#endif
</del><span class="cx"> {
</span><span class="cx"> char *yyd = yydest;
</span><span class="cx"> const char *yys = yysrc;
</span><span class="lines">@@ -970,27 +880,27 @@
</span><span class="cx"> char const *yyp = yystr;
</span><span class="cx">
</span><span class="cx"> for (;;)
</span><del>- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
</del><ins>+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
</ins><span class="cx">
</span><del>- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
</del><ins>+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
</ins><span class="cx">
</span><del>- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
</del><ins>+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
</ins><span class="cx"> do_not_strip_quotes: ;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1001,268 +911,237 @@
</span><span class="cx"> }
</span><span class="cx"> # endif
</span><span class="cx">
</span><del>-/* Copy into YYRESULT an error message about the unexpected token
- YYCHAR while in state YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static YYSIZE_T
-yysyntax_error (char *yyresult, int yystate, int yychar)
</del><ins>+/* 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)
</ins><span class="cx"> {
</span><del>- int yyn = yypact[yystate];
</del><ins>+ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULLPTR;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+ "expected"). */
+ int yycount = 0;
</ins><span class="cx">
</span><del>- if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
- return 0;
- else
</del><ins>+ /* 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)
</ins><span class="cx"> {
</span><del>- int yytype = YYTRANSLATE (yychar);
- YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
- YYSIZE_T yysize = yysize0;
- YYSIZE_T yysize1;
- int yysize_overflow = 0;
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- int yyx;
</del><ins>+ 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;
</ins><span class="cx">
</span><del>-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- YY_("syntax error, unexpected %s");
- YY_("syntax error, unexpected %s, expecting %s");
- YY_("syntax error, unexpected %s, expecting %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *yyfmt;
- char const *yyf;
- static char const yyunexpected[] = "syntax error, unexpected %s";
- static char const yyexpecting[] = ", expecting %s";
- static char const yyor[] = " or %s";
- char yyformat[sizeof yyunexpected
- + sizeof yyexpecting - 1
- + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof yyor - 1))];
- char const *yyprefix = yyexpecting;
</del><ins>+ 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_NULLPTR, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
+ }
+ }
+ }
</ins><span class="cx">
</span><del>- /* Start YYX at -YYN if negative to avoid negative indexes in
- YYCHECK. */
- int yyxbegin = yyn < 0 ? -yyn : 0;
</del><ins>+ 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_
+ }
</ins><span class="cx">
</span><del>- /* Stay within bounds of both yycheck and yytname. */
- int yychecklim = YYLAST - yyn + 1;
- int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
- int yycount = 1;
</del><ins>+ {
+ YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+ yysize = yysize1;
+ }
</ins><span class="cx">
</span><del>- yyarg[0] = yytname[yytype];
- yyfmt = yystpcpy (yyformat, yyunexpected);
-
- for (yyx = yyxbegin; yyx < yyxend; ++yyx)
- if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
- {
- if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- yycount = 1;
- yysize = yysize0;
- yyformat[sizeof yyunexpected - 1] = '\0';
- break;
- }
- yyarg[yycount++] = yytname[yyx];
- yysize1 = yysize + yytnamerr (0, yytname[yyx]);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
- yyfmt = yystpcpy (yyfmt, yyprefix);
- yyprefix = yyor;
- }
-
- yyf = YY_(yyformat);
- yysize1 = yysize + yystrlen (yyf);
- yysize_overflow |= (yysize1 < yysize);
- yysize = yysize1;
-
- if (yysize_overflow)
- return YYSIZE_MAXIMUM;
-
- if (yyresult)
</del><ins>+ if (*yymsg_alloc < yysize)
</ins><span class="cx"> {
</span><del>- /* 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 = yyresult;
- int yyi = 0;
- while ((*yyp = *yyf) != '\0')
</del><ins>+ *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)
</ins><span class="cx"> {
</span><del>- if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
- {
</del><span class="cx"> yyp += yytnamerr (yyp, yyarg[yyi++]);
</span><del>- yyf += 2;
</del><ins>+ yyformat += 2;
</ins><span class="cx"> }
</span><del>- else
</del><ins>+ else
</ins><span class="cx"> {
</span><span class="cx"> yyp++;
</span><del>- yyf++;
</del><ins>+ yyformat++;
</ins><span class="cx"> }
</span><del>- }
- }
- return yysize;
- }
</del><ins>+ }
+ return 0;
</ins><span class="cx"> }
</span><span class="cx"> #endif /* YYERROR_VERBOSE */
</span><del>-
</del><span class="cx">
</span><span class="cx"> /*-----------------------------------------------.
</span><span class="cx"> | Release the memory associated to this symbol. |
</span><span class="cx"> `-----------------------------------------------*/
</span><span class="cx">
</span><del>-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> static void
</span><span class="cx"> yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, Context *context)
</span><del>-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep, context)
- const char *yymsg;
- int yytype;
- YYSTYPE *yyvaluep;
- Context *context;
-#endif
</del><span class="cx"> {
</span><span class="cx"> YYUSE (yyvaluep);
</span><span class="cx"> YYUSE (context);
</span><del>-
</del><span class="cx"> if (!yymsg)
</span><span class="cx"> yymsg = "Deleting";
</span><span class="cx"> YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
</span><span class="cx">
</span><del>- switch (yytype)
- {
-
- default:
- break;
- }
</del><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx"> }
</span><del>-
</del><span class="cx">
</span><del>-/* Prevent warnings from -Wmissing-prototypes. */
</del><span class="cx">
</span><del>-#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 (Context *context);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
</del><span class="cx">
</span><span class="cx">
</span><del>-
-
-
-
</del><span class="cx"> /*----------.
</span><span class="cx"> | yyparse. |
</span><span class="cx"> `----------*/
</span><span class="cx">
</span><del>-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
</del><span class="cx"> int
</span><del>-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
</del><span class="cx"> yyparse (Context *context)
</span><del>-#else
-int
-yyparse (context)
- Context *context;
-#endif
-#endif
</del><span class="cx"> {
</span><del>- /* The look-ahead symbol. */
</del><ins>+/* The lookahead symbol. */
</ins><span class="cx"> int yychar;
</span><span class="cx">
</span><del>-/* The semantic value of the look-ahead symbol. */
-YYSTYPE yylval;
</del><span class="cx">
</span><del>-/* Number of syntax errors so far. */
-int yynerrs;
</del><ins>+/* The semantic value of the lookahead symbol. */
+/* Default value used for initialization, for pacifying older GCCs
+ or non-GCC compilers. */
+YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
+YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
</ins><span class="cx">
</span><del>- int yystate;
- int yyn;
- int yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int yytoken = 0;
-#if YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
</del><ins>+ /* Number of syntax errors so far. */
+ int yynerrs;
</ins><span class="cx">
</span><del>- /* Three stacks and their tools:
- `yyss': related to states,
- `yyvs': related to semantic values,
- `yyls': related to locations.
</del><ins>+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
</ins><span class="cx">
</span><del>- Refer to the stacks thru separate pointers, to allow yyoverflow
- to reallocate them elsewhere. */
</del><ins>+ /* The stacks and their tools:
+ 'yyss': related to states.
+ 'yyvs': related to semantic values.
</ins><span class="cx">
</span><del>- /* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss = yyssa;
- yytype_int16 *yyssp;
</del><ins>+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
</ins><span class="cx">
</span><del>- /* The semantic value stack. */
- YYSTYPE yyvsa[YYINITDEPTH];
- YYSTYPE *yyvs = yyvsa;
- YYSTYPE *yyvsp;
</del><ins>+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss;
+ yytype_int16 *yyssp;
</ins><span class="cx">
</span><ins>+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs;
+ YYSTYPE *yyvsp;
</ins><span class="cx">
</span><ins>+ YYSIZE_T yystacksize;
</ins><span class="cx">
</span><del>-#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
-
- YYSIZE_T yystacksize = YYINITDEPTH;
-
</del><ins>+ int yyn;
+ int yyresult;
+ /* Lookahead token as an internal (translated) token number. */
+ int yytoken = 0;
</ins><span class="cx"> /* The variables used to return semantic value and location from the
</span><span class="cx"> action routines. */
</span><span class="cx"> YYSTYPE yyval;
</span><span class="cx">
</span><ins>+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
</ins><span class="cx">
</span><ins>+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
</ins><span class="cx"> /* The number of symbols on the RHS of the reduced rule.
</span><span class="cx"> Keep to zero when no symbol should be popped. */
</span><span class="cx"> int yylen = 0;
</span><span class="cx">
</span><ins>+ yyssp = yyss = yyssa;
+ yyvsp = yyvs = yyvsa;
+ yystacksize = YYINITDEPTH;
+
</ins><span class="cx"> YYDPRINTF ((stderr, "Starting parse\n"));
</span><span class="cx">
</span><span class="cx"> yystate = 0;
</span><span class="cx"> yyerrstatus = 0;
</span><span class="cx"> yynerrs = 0;
</span><del>- yychar = YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- yyssp = yyss;
- yyvsp = yyvs;
-
</del><ins>+ yychar = YYEMPTY; /* Cause a token to be read. */
</ins><span class="cx"> goto yysetstate;
</span><span class="cx">
</span><span class="cx"> /*------------------------------------------------------------.
</span><span class="lines">@@ -1283,25 +1162,23 @@
</span><span class="cx">
</span><span class="cx"> #ifdef yyoverflow
</span><span class="cx"> {
</span><del>- /* 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;
</del><ins>+ /* 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;
</ins><span class="cx">
</span><ins>+ /* 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);
</ins><span class="cx">
</span><del>- /* 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;
</del><ins>+ yyss = yyss1;
+ yyvs = yyvs1;
</ins><span class="cx"> }
</span><span class="cx"> #else /* no yyoverflow */
</span><span class="cx"> # ifndef YYSTACK_RELOCATE
</span><span class="lines">@@ -1309,23 +1186,22 @@
</span><span class="cx"> # else
</span><span class="cx"> /* Extend the stack our own way. */
</span><span class="cx"> if (YYMAXDEPTH <= yystacksize)
</span><del>- goto yyexhaustedlab;
</del><ins>+ goto yyexhaustedlab;
</ins><span class="cx"> yystacksize *= 2;
</span><span class="cx"> if (YYMAXDEPTH < yystacksize)
</span><del>- yystacksize = YYMAXDEPTH;
</del><ins>+ yystacksize = YYMAXDEPTH;
</ins><span class="cx">
</span><span class="cx"> {
</span><del>- yytype_int16 *yyss1 = yyss;
- union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
- if (! yyptr)
- goto yyexhaustedlab;
- YYSTACK_RELOCATE (yyss);
- YYSTACK_RELOCATE (yyvs);
-
</del><ins>+ 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);
</ins><span class="cx"> # undef YYSTACK_RELOCATE
</span><del>- if (yyss1 != yyssa)
- YYSTACK_FREE (yyss1);
</del><ins>+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
</ins><span class="cx"> }
</span><span class="cx"> # endif
</span><span class="cx"> #endif /* no yyoverflow */
</span><span class="lines">@@ -1333,16 +1209,18 @@
</span><span class="cx"> yyssp = yyss + yysize - 1;
</span><span class="cx"> yyvsp = yyvs + yysize - 1;
</span><span class="cx">
</span><del>-
</del><span class="cx"> YYDPRINTF ((stderr, "Stack size increased to %lu\n",
</span><del>- (unsigned long int) yystacksize));
</del><ins>+ (unsigned long int) yystacksize));
</ins><span class="cx">
</span><span class="cx"> if (yyss + yystacksize - 1 <= yyssp)
</span><del>- YYABORT;
</del><ins>+ YYABORT;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> YYDPRINTF ((stderr, "Entering state %d\n", yystate));
</span><span class="cx">
</span><ins>+ if (yystate == YYFINAL)
+ YYACCEPT;
+
</ins><span class="cx"> goto yybackup;
</span><span class="cx">
</span><span class="cx"> /*-----------.
</span><span class="lines">@@ -1351,20 +1229,20 @@
</span><span class="cx"> yybackup:
</span><span class="cx">
</span><span class="cx"> /* Do appropriate processing given the current state. Read a
</span><del>- look-ahead token if we need one and don't already have one. */
</del><ins>+ lookahead token if we need one and don't already have one. */
</ins><span class="cx">
</span><del>- /* First try to decide what to do without reference to look-ahead token. */
</del><ins>+ /* First try to decide what to do without reference to lookahead token. */
</ins><span class="cx"> yyn = yypact[yystate];
</span><del>- if (yyn == YYPACT_NINF)
</del><ins>+ if (yypact_value_is_default (yyn))
</ins><span class="cx"> goto yydefault;
</span><span class="cx">
</span><del>- /* Not known => get a look-ahead token if don't already have one. */
</del><ins>+ /* Not known => get a lookahead token if don't already have one. */
</ins><span class="cx">
</span><del>- /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
</del><ins>+ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
</ins><span class="cx"> if (yychar == YYEMPTY)
</span><span class="cx"> {
</span><span class="cx"> YYDPRINTF ((stderr, "Reading a token: "));
</span><del>- yychar = YYLEX;
</del><ins>+ yychar = yylex (&yylval, context);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (yychar <= YYEOF)
</span><span class="lines">@@ -1386,29 +1264,27 @@
</span><span class="cx"> yyn = yytable[yyn];
</span><span class="cx"> if (yyn <= 0)
</span><span class="cx"> {
</span><del>- if (yyn == 0 || yyn == YYTABLE_NINF)
- goto yyerrlab;
</del><ins>+ if (yytable_value_is_error (yyn))
+ goto yyerrlab;
</ins><span class="cx"> yyn = -yyn;
</span><span class="cx"> goto yyreduce;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (yyn == YYFINAL)
- YYACCEPT;
-
</del><span class="cx"> /* Count tokens shifted since error; after three, turn off error
</span><span class="cx"> status. */
</span><span class="cx"> if (yyerrstatus)
</span><span class="cx"> yyerrstatus--;
</span><span class="cx">
</span><del>- /* Shift the look-ahead token. */
</del><ins>+ /* Shift the lookahead token. */
</ins><span class="cx"> YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
</span><span class="cx">
</span><del>- /* Discard the shifted token unless it is eof. */
- if (yychar != YYEOF)
- yychar = YYEMPTY;
</del><ins>+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
</ins><span class="cx">
</span><span class="cx"> yystate = yyn;
</span><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx"> *++yyvsp = yylval;
</span><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx">
</span><span class="cx"> goto yynewstate;
</span><span class="cx">
</span><span class="lines">@@ -1431,7 +1307,7 @@
</span><span class="cx"> yylen = yyr2[yyn];
</span><span class="cx">
</span><span class="cx"> /* If YYLEN is nonzero, implement the default value of the action:
</span><del>- `$$ = $1'.
</del><ins>+ '$$ = $1'.
</ins><span class="cx">
</span><span class="cx"> Otherwise, the following line sets YYVAL to garbage.
</span><span class="cx"> This behavior is undocumented and Bison
</span><span class="lines">@@ -1447,197 +1323,231 @@
</span><span class="cx"> case 2:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- *(context->result) = static_cast<int>((yyvsp[(1) - (1)]));
</del><ins>+ *(context->result) = static_cast<int>((yyvsp[0]));
</ins><span class="cx"> YYACCEPT;
</span><del>- ;}
</del><ins>+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 4:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) || (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) || (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 5:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) && (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) && (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 6:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) | (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) | (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 7:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) ^ (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) ^ (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 8:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) & (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) & (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 9:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) != (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) != (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 10:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) == (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) == (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 11:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) >= (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) >= (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 12:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) <= (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) <= (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 13:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) > (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) > (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 14:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) < (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) < (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 15:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) >> (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) >> (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 16:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) << (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) << (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 17:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) - (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) - (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 18:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) + (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) + (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 19:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- if ((yyvsp[(3) - (3)]) == 0) {
</del><ins>+ if ((yyvsp[0]) == 0) {
</ins><span class="cx"> std::ostringstream stream;
</span><del>- stream << (yyvsp[(1) - (3)]) << " % " << (yyvsp[(3) - (3)]);
</del><ins>+ stream << (yyvsp[-2]) << " % " << (yyvsp[0]);
</ins><span class="cx"> std::string text = stream.str();
</span><span class="cx"> context->diagnostics->report(pp::Diagnostics::DIVISION_BY_ZERO,
</span><span class="cx"> context->token->location,
</span><span class="cx"> text.c_str());
</span><span class="cx"> YYABORT;
</span><span class="cx"> } else {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) % (yyvsp[(3) - (3)]);
</del><ins>+ (yyval) = (yyvsp[-2]) % (yyvsp[0]);
</ins><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 20:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- if ((yyvsp[(3) - (3)]) == 0) {
</del><ins>+ if ((yyvsp[0]) == 0) {
</ins><span class="cx"> std::ostringstream stream;
</span><del>- stream << (yyvsp[(1) - (3)]) << " / " << (yyvsp[(3) - (3)]);
</del><ins>+ stream << (yyvsp[-2]) << " / " << (yyvsp[0]);
</ins><span class="cx"> std::string text = stream.str();
</span><span class="cx"> context->diagnostics->report(pp::Diagnostics::DIVISION_BY_ZERO,
</span><span class="cx"> context->token->location,
</span><span class="cx"> text.c_str());
</span><span class="cx"> YYABORT;
</span><span class="cx"> } else {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) / (yyvsp[(3) - (3)]);
</del><ins>+ (yyval) = (yyvsp[-2]) / (yyvsp[0]);
</ins><span class="cx"> }
</span><del>- ;}
</del><ins>+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 21:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(1) - (3)]) * (yyvsp[(3) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-2]) * (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 22:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = ! (yyvsp[(2) - (2)]);
- ;}
</del><ins>+ (yyval) = ! (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 23:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = ~ (yyvsp[(2) - (2)]);
- ;}
</del><ins>+ (yyval) = ~ (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 24:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = - (yyvsp[(2) - (2)]);
- ;}
</del><ins>+ (yyval) = - (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 25:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = + (yyvsp[(2) - (2)]);
- ;}
</del><ins>+ (yyval) = + (yyvsp[0]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case 26:
</span><span class="cx">
</span><span class="cx"> {
</span><del>- (yyval) = (yyvsp[(2) - (3)]);
- ;}
</del><ins>+ (yyval) = (yyvsp[-1]);
+ }
+
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx">
</span><del>-/* Line 1267 of yacc.c. */
</del><span class="cx">
</span><span class="cx"> default: break;
</span><span class="cx"> }
</span><ins>+ /* 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. */
</ins><span class="cx"> YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
</span><span class="cx">
</span><span class="cx"> YYPOPSTACK (yylen);
</span><span class="lines">@@ -1646,8 +1556,7 @@
</span><span class="cx">
</span><span class="cx"> *++yyvsp = yyval;
</span><span class="cx">
</span><del>-
- /* Now `shift' the result of the reduction. Determine what state
</del><ins>+ /* Now 'shift' the result of the reduction. Determine what state
</ins><span class="cx"> that goes to, based on the state we popped back to and the rule
</span><span class="cx"> number reduced by. */
</span><span class="cx">
</span><span class="lines">@@ -1662,10 +1571,14 @@
</span><span class="cx"> goto yynewstate;
</span><span class="cx">
</span><span class="cx">
</span><del>-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
</del><ins>+/*--------------------------------------.
+| yyerrlab -- here on detecting error. |
+`--------------------------------------*/
</ins><span class="cx"> yyerrlab:
</span><ins>+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
</ins><span class="cx"> /* If not already recovering from an error, report this error. */
</span><span class="cx"> if (!yyerrstatus)
</span><span class="cx"> {
</span><span class="lines">@@ -1673,37 +1586,36 @@
</span><span class="cx"> #if ! YYERROR_VERBOSE
</span><span class="cx"> yyerror (context, YY_("syntax error"));
</span><span class="cx"> #else
</span><ins>+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+ yyssp, yytoken)
</ins><span class="cx"> {
</span><del>- YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
- if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
- {
- YYSIZE_T yyalloc = 2 * yysize;
- if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
- yyalloc = YYSTACK_ALLOC_MAXIMUM;
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yyalloc);
- if (yymsg)
- yymsg_alloc = yyalloc;
- else
</del><ins>+ 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)
</ins><span class="cx"> {
</span><del>- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
</del><ins>+ 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;
+ }
</ins><span class="cx"> }
</span><del>- }
-
- if (0 < yysize && yysize <= yymsg_alloc)
- {
- (void) yysyntax_error (yymsg, yystate, yychar);
- yyerror (context, yymsg);
- }
- else
- {
- yyerror (context, YY_("syntax error"));
- if (yysize != 0)
</del><ins>+ yyerror (context, yymsgp);
+ if (yysyntax_error_status == 2)
</ins><span class="cx"> goto yyexhaustedlab;
</span><span class="cx"> }
</span><del>- }
</del><ins>+# undef YYSYNTAX_ERROR
</ins><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1711,24 +1623,24 @@
</span><span class="cx">
</span><span class="cx"> if (yyerrstatus == 3)
</span><span class="cx"> {
</span><del>- /* If just tried and failed to reuse look-ahead token after an
- error, discard it. */
</del><ins>+ /* If just tried and failed to reuse lookahead token after an
+ error, discard it. */
</ins><span class="cx">
</span><span class="cx"> if (yychar <= YYEOF)
</span><del>- {
- /* Return failure if at end of input. */
- if (yychar == YYEOF)
- YYABORT;
- }
</del><ins>+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
</ins><span class="cx"> else
</span><del>- {
- yydestruct ("Error: discarding",
- yytoken, &yylval, context);
- yychar = YYEMPTY;
</del><ins>+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, context);
+ yychar = YYEMPTY;
+ }
</ins><span class="cx"> }
</span><del>- }
</del><span class="cx">
</span><del>- /* Else will try to reuse look-ahead token after shifting the error
</del><ins>+ /* Else will try to reuse lookahead token after shifting the error
</ins><span class="cx"> token. */
</span><span class="cx"> goto yyerrlab1;
</span><span class="cx">
</span><span class="lines">@@ -1744,7 +1656,7 @@
</span><span class="cx"> if (/*CONSTCOND*/ 0)
</span><span class="cx"> goto yyerrorlab;
</span><span class="cx">
</span><del>- /* Do not reclaim the symbols of the rule which action triggered
</del><ins>+ /* Do not reclaim the symbols of the rule whose action triggered
</ins><span class="cx"> this YYERROR. */
</span><span class="cx"> YYPOPSTACK (yylen);
</span><span class="cx"> yylen = 0;
</span><span class="lines">@@ -1757,38 +1669,37 @@
</span><span class="cx"> | yyerrlab1 -- common code for both syntax error and YYERROR. |
</span><span class="cx"> `-------------------------------------------------------------*/
</span><span class="cx"> yyerrlab1:
</span><del>- yyerrstatus = 3; /* Each real token shifted decrements this. */
</del><ins>+ yyerrstatus = 3; /* Each real token shifted decrements this. */
</ins><span class="cx">
</span><span class="cx"> for (;;)
</span><span class="cx"> {
</span><span class="cx"> yyn = yypact[yystate];
</span><del>- if (yyn != YYPACT_NINF)
- {
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
</del><ins>+ if (!yypact_value_is_default (yyn))
</ins><span class="cx"> {
</span><del>- yyn = yytable[yyn];
- if (0 < yyn)
- break;
</del><ins>+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
</ins><span class="cx"> }
</span><del>- }
</del><span class="cx">
</span><span class="cx"> /* Pop the current state because it cannot handle the error token. */
</span><span class="cx"> if (yyssp == yyss)
</span><del>- YYABORT;
</del><ins>+ YYABORT;
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> yydestruct ("Error: popping",
</span><del>- yystos[yystate], yyvsp, context);
</del><ins>+ yystos[yystate], yyvsp, context);
</ins><span class="cx"> YYPOPSTACK (1);
</span><span class="cx"> yystate = *yyssp;
</span><span class="cx"> YY_STACK_PRINT (yyss, yyssp);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (yyn == YYFINAL)
- YYACCEPT;
-
</del><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
</ins><span class="cx"> *++yyvsp = yylval;
</span><ins>+ YY_IGNORE_MAYBE_UNINITIALIZED_END
</ins><span class="cx">
</span><span class="cx">
</span><span class="cx"> /* Shift the error token. */
</span><span class="lines">@@ -1812,7 +1723,7 @@
</span><span class="cx"> yyresult = 1;
</span><span class="cx"> goto yyreturn;
</span><span class="cx">
</span><del>-#ifndef yyoverflow
</del><ins>+#if !defined yyoverflow || YYERROR_VERBOSE
</ins><span class="cx"> /*-------------------------------------------------.
</span><span class="cx"> | yyexhaustedlab -- memory exhaustion comes here. |
</span><span class="cx"> `-------------------------------------------------*/
</span><span class="lines">@@ -1823,17 +1734,22 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> yyreturn:
</span><del>- if (yychar != YYEOF && yychar != YYEMPTY)
- yydestruct ("Cleanup: discarding lookahead",
- yytoken, &yylval, context);
- /* Do not reclaim the symbols of the rule which action triggered
</del><ins>+ 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, context);
+ }
+ /* Do not reclaim the symbols of the rule whose action triggered
</ins><span class="cx"> this YYABORT or YYACCEPT. */
</span><span class="cx"> YYPOPSTACK (yylen);
</span><span class="cx"> YY_STACK_PRINT (yyss, yyssp);
</span><span class="cx"> while (yyssp != yyss)
</span><span class="cx"> {
</span><span class="cx"> yydestruct ("Cleanup: popping",
</span><del>- yystos[*yyssp], yyvsp, context);
</del><ins>+ yystos[*yyssp], yyvsp, context);
</ins><span class="cx"> YYPOPSTACK (1);
</span><span class="cx"> }
</span><span class="cx"> #ifndef yyoverflow
</span><span class="lines">@@ -1844,14 +1760,11 @@
</span><span class="cx"> if (yymsg != yymsgbuf)
</span><span class="cx"> YYSTACK_FREE (yymsg);
</span><span class="cx"> #endif
</span><del>- /* Make sure YYID is used. */
- return YYID (yyresult);
</del><ins>+ return yyresult;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><span class="cx">
</span><del>-
-
</del><span class="cx"> int yylex(YYSTYPE* lvalp, Context* context)
</span><span class="cx"> {
</span><span class="cx"> int type = 0;
</span><span class="lines">@@ -1946,4 +1859,3 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace pp
</span><del>-
</del></span></pre>
</div>
</div>
</body>
</html>