<!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 = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A57183C27F100370B93 /* ExpressionParser.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ExpressionParser.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A59183C284E00370B93 /* glslang_lex.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_lex.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                72309A5A183C284E00370B93 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = &quot;&lt;group&gt;&quot;; usesTabs = 1; };
</del><ins>+                72309A5A183C284E00370B93 /* glslang_tab.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = glslang_tab.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 72309A5B183C284E00370B93 /* glslang_tab.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = glslang_tab.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A5F183C2A6400370B93 /* TranslatorHLSL.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = TranslatorHLSL.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 72309A60183C2A6400370B93 /* TranslatorHLSL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TranslatorHLSL.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</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  &lt;commit-queue@webkit.org&gt;
+
+        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  &lt;roger_fong@apple.com&gt;
</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 &lt;http://www.gnu.org/licenses/&gt;.  */
</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 &quot;2.3&quot;
</del><ins>+#define YYBISON_VERSION &quot;2.7&quot;
</ins><span class="cx"> 
</span><span class="cx"> /* Skeleton name.  */
</span><span class="cx"> #define YYSKELETON_NAME &quot;yacc.c&quot;
</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 &quot;-Wunused-function&quot;
+#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
+#pragma GCC diagnostic ignored &quot;-Wswitch-enum&quot;
+#elif defined(_MSC_VER)
+#pragma warning(disable: 4065)
+#pragma warning(disable: 4189)
+#pragma warning(disable: 4505)
+#pragma warning(disable: 4701)
+#endif
+
+#include &quot;compiler/SymbolTable.h&quot;
+#include &quot;compiler/ParseContext.h&quot;
+#include &quot;GLSLANG/ShaderLang.h&quot;
+
+#define YYENABLE_NLS 0
+
+#define YYLEX_PARAM context-&gt;scanner
+
+
+
+# ifndef YY_NULL
+#  if defined __cplusplus &amp;&amp; 201103L &lt;= __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 &quot;glslang_tab.h&quot;.  */
+#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
+/* &quot;%code requires&quot; 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 &quot;-Wunused-function&quot;
-#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
-#pragma GCC diagnostic ignored &quot;-Wswitch-enum&quot;
-#elif defined(_MSC_VER)
-#pragma warning(disable: 4065)
-#pragma warning(disable: 4189)
-#pragma warning(disable: 4505)
-#pragma warning(disable: 4701)
-#endif
-
-#include &quot;compiler/SymbolTable.h&quot;
-#include &quot;compiler/ParseContext.h&quot;
-#include &quot;GLSLANG/ShaderLang.h&quot;
-
-#define YYENABLE_NLS 0
-
-#define YYLEX_PARAM context-&gt;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 &amp;&amp; ! 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 &amp;&amp; ! 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 &amp;&amp; YYENABLE_NLS
</span><span class="cx"> #  if ENABLE_NLS
</span><span class="cx"> #   include &lt;libintl.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#   define YY_(msgid) dgettext (&quot;bison-runtime&quot;, msgid)
</del><ins>+#   define YY_(Msgid) dgettext (&quot;bison-runtime&quot;, 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 &quot;using&quot; 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 &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+#    if ! defined _ALLOCA_H &amp;&amp; ! defined EXIT_SUCCESS &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</ins><span class="cx">      || defined __cplusplus || defined _MSC_VER)
</span><span class="cx"> #     include &lt;stdlib.h&gt; /* 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 &amp;&amp; ! defined _STDLIB_H \
</del><ins>+#  if (defined __cplusplus &amp;&amp; ! defined EXIT_SUCCESS \
</ins><span class="cx">        &amp;&amp; ! ((defined YYMALLOC || defined malloc) \
</span><del>-         &amp;&amp; (defined YYFREE || defined free)))
</del><ins>+             &amp;&amp; (defined YYFREE || defined free)))
</ins><span class="cx"> #   include &lt;stdlib.h&gt; /* 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 &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+#   if ! defined malloc &amp;&amp; ! defined EXIT_SUCCESS &amp;&amp; (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 &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
</del><ins>+#   if ! defined free &amp;&amp; ! defined EXIT_SUCCESS &amp;&amp; (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">      &amp;&amp; (! defined __cplusplus \
</span><del>-     || (defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL \
-         &amp;&amp; defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</del><ins>+         || (defined YYLTYPE_IS_TRIVIAL &amp;&amp; YYLTYPE_IS_TRIVIAL \
+             &amp;&amp; defined YYSTYPE_IS_TRIVIAL &amp;&amp; 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__ &amp;&amp; 1 &lt; __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 &lt; (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 (&amp;yyptr-&gt;Stack, Stack, yysize);                \
-    Stack = &amp;yyptr-&gt;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 (&amp;yyptr-&gt;Stack_alloc, Stack, yysize);                        \
+        Stack = &amp;yyptr-&gt;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 &amp;&amp; YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ &amp;&amp; 1 &lt; __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 &lt; (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) &lt;= 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">   &quot;init_declarator_list&quot;, &quot;single_declaration&quot;, &quot;fully_specified_type&quot;,
</span><span class="cx">   &quot;type_qualifier&quot;, &quot;type_specifier&quot;, &quot;precision_qualifier&quot;,
</span><span class="cx">   &quot;type_specifier_no_prec&quot;, &quot;type_specifier_nonarray&quot;, &quot;struct_specifier&quot;,
</span><del>-  &quot;@1&quot;, &quot;@2&quot;, &quot;struct_declaration_list&quot;, &quot;struct_declaration&quot;,
</del><ins>+  &quot;$@1&quot;, &quot;$@2&quot;, &quot;struct_declaration_list&quot;, &quot;struct_declaration&quot;,
</ins><span class="cx">   &quot;struct_declarator_list&quot;, &quot;struct_declarator&quot;, &quot;initializer&quot;,
</span><span class="cx">   &quot;declaration_statement&quot;, &quot;statement&quot;, &quot;simple_statement&quot;,
</span><del>-  &quot;compound_statement&quot;, &quot;@3&quot;, &quot;@4&quot;, &quot;statement_no_new_scope&quot;,
-  &quot;statement_with_scope&quot;, &quot;@5&quot;, &quot;@6&quot;, &quot;compound_statement_no_new_scope&quot;,
</del><ins>+  &quot;compound_statement&quot;, &quot;$@3&quot;, &quot;$@4&quot;, &quot;statement_no_new_scope&quot;,
+  &quot;statement_with_scope&quot;, &quot;$@5&quot;, &quot;$@6&quot;, &quot;compound_statement_no_new_scope&quot;,
</ins><span class="cx">   &quot;statement_list&quot;, &quot;expression_statement&quot;, &quot;selection_statement&quot;,
</span><del>-  &quot;selection_rest_statement&quot;, &quot;condition&quot;, &quot;iteration_statement&quot;, &quot;@7&quot;,
-  &quot;@8&quot;, &quot;@9&quot;, &quot;for_init_statement&quot;, &quot;conditionopt&quot;, &quot;for_rest_statement&quot;,
</del><ins>+  &quot;selection_rest_statement&quot;, &quot;condition&quot;, &quot;iteration_statement&quot;, &quot;$@7&quot;,
+  &quot;$@8&quot;, &quot;$@9&quot;, &quot;for_init_statement&quot;, &quot;conditionopt&quot;, &quot;for_rest_statement&quot;,
</ins><span class="cx">   &quot;jump_statement&quot;, &quot;translation_unit&quot;, &quot;external_declaration&quot;,
</span><del>-  &quot;function_definition&quot;, &quot;@10&quot;, 0
</del><ins>+  &quot;function_definition&quot;, &quot;$@10&quot;, 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 &amp;&amp; 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 (&amp;yylloc, context, YY_(&quot;syntax error: cannot back up&quot;)); \
</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 &amp;&amp; YYLTYPE_IS_TRIVIAL
</span><del>-#  define YY_LOCATION_PRINT(File, Loc)            \
-     fprintf (File, &quot;%d.%d-%d.%d&quot;,            \
-          (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-&gt;last_column ? yylocp-&gt;last_column - 1 : 0;
+  if (0 &lt;= yylocp-&gt;first_line)
+    {
+      res += fprintf (yyo, &quot;%d&quot;, yylocp-&gt;first_line);
+      if (0 &lt;= yylocp-&gt;first_column)
+        res += fprintf (yyo, &quot;.%d&quot;, yylocp-&gt;first_column);
+    }
+  if (0 &lt;= yylocp-&gt;last_line)
+    {
+      if (yylocp-&gt;first_line &lt; yylocp-&gt;last_line)
+        {
+          res += fprintf (yyo, &quot;-%d&quot;, yylocp-&gt;last_line);
+          if (0 &lt;= end_col)
+            res += fprintf (yyo, &quot;.%d&quot;, end_col);
+        }
+      else if (0 &lt;= end_col &amp;&amp; yylocp-&gt;first_column &lt; end_col)
+        res += fprintf (yyo, &quot;-%d&quot;, end_col);
+    }
+  return res;
+ }
+
+#  define YY_LOCATION_PRINT(File, Loc)          \
+  yy_location_print_ (File, &amp;(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 (&amp;yylval, &amp;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, &quot;%s &quot;, Title);                      \
-      yy_symbol_print (stderr,                          \
-          Type, Value, Location, context); \
-      YYFPRINTF (stderr, &quot;\n&quot;);                          \
-    }                                      \
</del><ins>+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                          \
+do {                                                                          \
+  if (yydebug)                                                                  \
+    {                                                                          \
+      YYFPRINTF (stderr, &quot;%s &quot;, Title);                                          \
+      yy_symbol_print (stderr,                                                  \
+                  Type, Value, Location, context); \
+      YYFPRINTF (stderr, &quot;\n&quot;);                                                  \
+    }                                                                          \
</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, &quot;Stack now&quot;);
</span><del>-  for (; bottom &lt;= top; ++bottom)
-    YYFPRINTF (stderr, &quot; %d&quot;, *bottom);
</del><ins>+  for (; yybottom &lt;= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, &quot; %d&quot;, yybot);
+    }
</ins><span class="cx">   YYFPRINTF (stderr, &quot;\n&quot;);
</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, &quot;Reducing stack by rule %d (line %lu):\n&quot;,
</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 &lt; yynrhs; yyi++)
</span><span class="cx">     {
</span><del>-      fprintf (stderr, &quot;   $%d = &quot;, yyi + 1);
</del><ins>+      YYFPRINTF (stderr, &quot;   $%d = &quot;, yyi + 1);
</ins><span class="cx">       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
</span><del>-               &amp;(yyvsp[(yyi + 1) - (yynrhs)])
-               , &amp;(yylsp[(yyi + 1) - (yynrhs)])               , context);
-      fprintf (stderr, &quot;\n&quot;);
</del><ins>+                       &amp;(yyvsp[(yyi + 1) - (yynrhs)])
+                       , &amp;(yylsp[(yyi + 1) - (yynrhs)])                       , context);
+      YYFPRINTF (stderr, &quot;\n&quot;);
</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 '&quot;':
-        if (yyres)
-          yyres[yyn] = '\0';
-        return yyn;
-      }
</del><ins>+          case '&quot;':
+            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 &quot;syntax error&quot;
-   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 &quot;unexpected&quot;, one per
+     &quot;expected&quot;). */
+  int yycount = 0;
</ins><span class="cx"> 
</span><del>-  if (! (YYPACT_NINF &lt; yyn &amp;&amp; yyn &lt;= 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
+       &lt;http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html&gt;
+       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 &quot;syntax error&quot;.
+     - 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 &lt; 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim &lt; 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_(&quot;syntax error, unexpected %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;);
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = &quot;syntax error, unexpected %s&quot;;
-      static char const yyexpecting[] = &quot;, expecting %s&quot;;
-      static char const yyor[] = &quot; or %s&quot;;
-      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 &lt; yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR
+                &amp;&amp; !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 &lt;= yysize1
+                         &amp;&amp; yysize1 &lt;= 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 &lt; 0 ? -yyn : 0;
</del><ins>+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_(&quot;syntax error&quot;));
+      YYCASE_(1, YY_(&quot;syntax error, unexpected %s&quot;));
+      YYCASE_(2, YY_(&quot;syntax error, unexpected %s, expecting %s&quot;));
+      YYCASE_(3, YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;));
+      YYCASE_(4, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;));
+      YYCASE_(5, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;));
+# undef YYCASE_
+    }
</ins><span class="cx"> 
</span><del>-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim &lt; YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
</del><ins>+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize &lt;= yysize1 &amp;&amp; yysize1 &lt;= 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 &lt; yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize &lt;= *yymsg_alloc
+             &amp;&amp; *yymsg_alloc &lt;= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
</ins><span class="cx"> 
</span><del>-      for (yyx = yyxbegin; yyx &lt; yyxend; ++yyx)
-    if (yycheck[yyx + yyn] == yyx &amp;&amp; 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 &lt; yysize);
-        yysize = yysize1;
-        yyfmt = yystpcpy (yyfmt, yyprefix);
-        yyprefix = yyor;
-      }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 &lt; 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 &quot;%s&quot;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 &quot;%s&quot;s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' &amp;&amp; yyformat[1] == 's' &amp;&amp; yyi &lt; yycount)
</ins><span class="cx">         {
</span><del>-          if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; 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__ &amp;&amp; 407 &lt;= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma (&quot;GCC diagnostic push&quot;) \
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wuninitialized\&quot;&quot;)\
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wmaybe-uninitialized\&quot;&quot;)
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma (&quot;GCC diagnostic pop&quot;)
+#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 &amp;&amp; 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, &quot;Starting parse\n&quot;));
</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 &amp;&amp; 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 &amp;'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 &amp;'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_(&quot;memory exhausted&quot;),
-            &amp;yyss1, yysize * sizeof (*yyssp),
-            &amp;yyvs1, yysize * sizeof (*yyvsp),
-            &amp;yyls1, yysize * sizeof (*yylsp),
-            &amp;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_(&quot;memory exhausted&quot;),
+                    &amp;yyss1, yysize * sizeof (*yyssp),
+                    &amp;yyvs1, yysize * sizeof (*yyvsp),
+                    &amp;yyls1, yysize * sizeof (*yylsp),
+                    &amp;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 &lt;= yystacksize)
</span><del>-    goto yyexhaustedlab;
</del><ins>+        goto yyexhaustedlab;
</ins><span class="cx">       yystacksize *= 2;
</span><span class="cx">       if (YYMAXDEPTH &lt; 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, &quot;Stack size increased to %lu\n&quot;,
</span><del>-          (unsigned long int) yystacksize));
</del><ins>+                  (unsigned long int) yystacksize));
</ins><span class="cx"> 
</span><span class="cx">       if (yyss + yystacksize - 1 &lt;= yyssp)
</span><del>-    YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   YYDPRINTF ((stderr, &quot;Entering state %d\n&quot;, 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 =&gt; get a look-ahead token if don't already have one.  */
</del><ins>+  /* Not known =&gt; 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, &quot;Reading a token: &quot;));
</span><span class="lines">@@ -2151,29 +2189,27 @@
</span><span class="cx">   yyn = yytable[yyn];
</span><span class="cx">   if (yyn &lt;= 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 (&quot;Shifting&quot;, yytoken, &amp;yylval, &amp;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-&gt;getName(),
</span><span class="cx">                                                  variable-&gt;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) &gt;= (1 &lt;&lt; 16)) {
-            context-&gt;error((yylsp[(1) - (1)]), &quot; integer constant overflow&quot;, &quot;&quot;);
-            context-&gt;recover();
-        }
</del><span class="cx">         ConstantUnion *unionArray = new ConstantUnion[1];
</span><span class="cx">         unionArray-&gt;setIConst((yyvsp[(1) - (1)].lex).i);
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setFConst((yyvsp[(1) - (1)].lex).f);
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst((yyvsp[(1) - (1)].lex).b);
</span><span class="cx">         (yyval.interm.intermTypedNode) = context-&gt;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-&gt;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-&gt;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-&gt;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-&gt;integerErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode), &quot;[]&quot;))
</span><span class="cx">             context-&gt;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-&gt;error((yylsp[(3) - (3)]), &quot;methods are not supported&quot;, &quot;&quot;);
</span><span class="cx">         context-&gt;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)-&gt;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-&gt;addParameter(param);
</span><span class="cx">         (yyval.interm).function = (yyvsp[(1) - (3)].interm).function;
</span><span class="cx">         (yyval.interm).intermNode = context-&gt;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(&amp;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;setBConst(false);
</span><span class="cx">             (yyval.interm.intermTypedNode) = context-&gt;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-&gt;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-&gt;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-&gt;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-&gt;constErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)))
</span><span class="cx">             context-&gt;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-&gt;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-&gt;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-&gt;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-&gt;symbolTable.getOuterLevel()-&gt;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)-&gt;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)-&gt;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-&gt;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-&gt;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-&gt;paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;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-&gt;recover();
</span><span class="cx">         if (context-&gt;paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;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-&gt;paramErrorCheck((yylsp[(3) - (3)]), (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;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-&gt;recover();
</span><span class="cx">         if (context-&gt;paramErrorCheck((yylsp[(2) - (2)]), EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
</span><span class="cx">             context-&gt;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-&gt;recover();
</span><span class="cx">         if (symbol &amp;&amp; variable)
</span><span class="cx">             symbol-&gt;setId(variable-&gt;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-&gt;arrayErrorCheck((yylsp[(4) - (5)]), *(yyvsp[(3) - (5)].lex).string, (yyvsp[(1) - (5)].interm).type, variable))
</span><span class="cx">                 context-&gt;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-&gt;intermediate.growAggregate((yyvsp[(1) - (6)].interm).intermNode, context-&gt;intermediate.addSymbol(variable ? variable-&gt;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-&gt;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-&gt;intermediate.makeAggregate(context-&gt;intermediate.addSymbol(0, &quot;&quot;, 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-&gt;recover();
</span><span class="cx">         if (variable &amp;&amp; symbol)
</span><span class="cx">             symbol-&gt;setId(variable-&gt;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-&gt;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-&gt;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 &amp;&amp; symbol)
</span><span class="cx">                 symbol-&gt;setId(variable-&gt;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-&gt;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-&gt;intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyval.interm).type), (yylsp[(2) - (2)]));
</span><span class="cx">             (yyval.interm).intermAggregate = context-&gt;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-&gt;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-&gt;globalErrorCheck((yylsp[(1) - (1)]), context-&gt;symbolTable.atGlobalLevel(), &quot;attribute&quot;))
</span><span class="cx">             context-&gt;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-&gt;globalErrorCheck((yylsp[(1) - (1)]), context-&gt;symbolTable.atGlobalLevel(), &quot;uniform&quot;))
</span><span class="cx">             context-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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 = &amp;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-&gt;enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context-&gt;recover(); ;}
</del><ins>+    { if (context-&gt;enterStructDeclaration((yylsp[(2) - (3)]), *(yyvsp[(2) - (3)].lex).string)) context-&gt;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-&gt;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-&gt;enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context-&gt;recover(); ;}
</del><ins>+    { if (context-&gt;enterStructDeclaration((yylsp[(2) - (2)]), *(yyvsp[(2) - (2)].lex).string)) context-&gt;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-&gt;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)-&gt;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-&gt;structNestingErrorCheck((yylsp[(1) - (3)]), *(*(yyval.interm.fieldList))[i]))
</span><span class="cx">                 context-&gt;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)-&gt;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)-&gt;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-&gt;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-&gt;symbolTable.push(); ;}
</del><ins>+    { context-&gt;symbolTable.push(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 161:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.pop(); ;}
</del><ins>+    { context-&gt;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)-&gt;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-&gt;symbolTable.push(); ;}
</del><ins>+    { context-&gt;symbolTable.push(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 166:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;}
</del><ins>+    { context-&gt;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-&gt;symbolTable.push(); ;}
</del><ins>+    { context-&gt;symbolTable.push(); }
</ins><span class="cx">     break;
</span><span class="cx"> 
</span><span class="cx">   case 168:
</span><span class="cx"> 
</span><del>-    { context-&gt;symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); ;}
</del><ins>+    { context-&gt;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)-&gt;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-&gt;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-&gt;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&lt;TIntermNode*&gt;((yyvsp[(1) - (2)].interm.intermTypedNode)); ;}
</del><ins>+    { (yyval.interm.intermNode) = static_cast&lt;TIntermNode*&gt;((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-&gt;boolErrorCheck((yylsp[(1) - (5)]), (yyvsp[(3) - (5)].interm.intermTypedNode)))
</span><span class="cx">             context-&gt;recover();
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;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-&gt;boolErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)-&gt;getLine(), (yyvsp[(1) - (1)].interm.intermTypedNode)))
</span><span class="cx">             context-&gt;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-&gt;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-&gt;symbolTable.push(); ++context-&gt;loopNestingLevel; ;}
</del><ins>+    { context-&gt;symbolTable.push(); ++context-&gt;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-&gt;symbolTable.pop();
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addLoop(ELoopWhile, 0, (yyvsp[(4) - (6)].interm.intermTypedNode), 0, (yyvsp[(6) - (6)].interm.intermNode), (yylsp[(1) - (6)]));
</span><span class="cx">         --context-&gt;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-&gt;loopNestingLevel; ;}
</del><ins>+    { ++context-&gt;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-&gt;intermediate.addLoop(ELoopDoWhile, 0, (yyvsp[(6) - (8)].interm.intermTypedNode), 0, (yyvsp[(3) - (8)].interm.intermNode), (yylsp[(4) - (8)]));
</span><span class="cx">         --context-&gt;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-&gt;symbolTable.push(); ++context-&gt;loopNestingLevel; ;}
</del><ins>+    { context-&gt;symbolTable.push(); ++context-&gt;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-&gt;symbolTable.pop();
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;intermediate.addLoop(ELoopFor, (yyvsp[(4) - (7)].interm.intermNode), reinterpret_cast&lt;TIntermTyped*&gt;((yyvsp[(5) - (7)].interm.nodePair).node1), reinterpret_cast&lt;TIntermTyped*&gt;((yyvsp[(5) - (7)].interm.nodePair).node2), (yyvsp[(7) - (7)].interm.intermNode), (yylsp[(1) - (7)]));
</span><span class="cx">         --context-&gt;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-&gt;recover();
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;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-&gt;recover();
</span><span class="cx">         }
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;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-&gt;error((yylsp[(1) - (2)]), &quot;non-void function must return a value&quot;, &quot;return&quot;);
</span><span class="cx">             context-&gt;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-&gt;error((yylsp[(1) - (3)]), &quot;function return is not matching type:&quot;, &quot;return&quot;);
</span><span class="cx">             context-&gt;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(&quot;discard&quot;, (yylsp[(1) - (2)]));
</span><span class="cx">         (yyval.interm.intermNode) = context-&gt;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-&gt;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-&gt;intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), (yyloc));
</span><span class="cx">         context-&gt;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-&gt;intermediate.setAggregateOperator(paramNodes, EOpParameters, (yylsp[(1) - (1)]));
</span><span class="cx">         (yyvsp[(1) - (1)].interm).intermAggregate = paramNodes;
</span><span class="cx">         context-&gt;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)-&gt;getAsAggregate()-&gt;setDebug(context-&gt;pragma().debug);
</span><span class="cx"> 
</span><span class="cx">         context-&gt;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 (&quot;-&gt; $$ =&quot;, yyr1[yyn], &amp;yyval, &amp;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 (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
</span><span class="cx"> #else
</span><ins>+# define YYSYNTAX_ERROR yysyntax_error (&amp;yymsg_alloc, &amp;yymsg, \
+                                        yyssp, yytoken)
</ins><span class="cx">       {
</span><del>-    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-    if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
-      {
-        YYSIZE_T yyalloc = 2 * yysize;
-        if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= 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_(&quot;syntax error&quot;);
+        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 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
-      {
-        (void) yysyntax_error (yymsg, yystate, yychar);
-        yyerror (&amp;yylloc, context, yymsg);
-      }
-    else
-      {
-        yyerror (&amp;yylloc, context, YY_(&quot;syntax error&quot;));
-        if (yysize != 0)
</del><ins>+        yyerror (&amp;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 &lt;= 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 (&quot;Error: discarding&quot;,
-              yytoken, &amp;yylval, &amp;yylloc, context);
-      yychar = YYEMPTY;
</del><ins>+        {
+          yydestruct (&quot;Error: discarding&quot;,
+                      yytoken, &amp;yylval, &amp;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 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
-        {
-          yyn = yytable[yyn];
-          if (0 &lt; yyn)
-        break;
-        }
-    }
</del><ins>+      if (!yypact_value_is_default (yyn))
+        {
+          yyn += YYTERROR;
+          if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 &lt; 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 (&quot;Error: popping&quot;,
</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 &amp;&amp; yychar != YYEMPTY)
-     yydestruct (&quot;Cleanup: discarding lookahead&quot;,
-         yytoken, &amp;yylval, &amp;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 (&quot;Cleanup: discarding lookahead&quot;,
+                  yytoken, &amp;yylval, &amp;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 (&quot;Cleanup: popping&quot;,
</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-&gt;error(*yylloc, reason, &quot;&quot;);
-    context-&gt;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 &lt;http://www.gnu.org/licenses/&gt;.  */
</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
+/* &quot;%code requires&quot; 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 &amp;&amp; ! 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 &amp;&amp; ! 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 &lt;http://www.gnu.org/licenses/&gt;.  */
</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 &quot;2.3&quot;
</del><ins>+#define YYBISON_VERSION &quot;3.0.1&quot;
</ins><span class="cx"> 
</span><span class="cx"> /* Skeleton name.  */
</span><span class="cx"> #define YYSKELETON_NAME &quot;yacc.c&quot;
</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 &quot;ExpressionParser.h&quot;
</span><span class="cx"> 
</span><ins>+#if defined(_MSC_VER)
+#include &lt;malloc.h&gt;
+#else
+#include &lt;stdlib.h&gt;
+#endif
+
</ins><span class="cx"> #include &lt;cassert&gt;
</span><span class="cx"> #include &lt;sstream&gt;
</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 &amp;&amp; 201103L &lt;= __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 &amp;&amp; ! 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 &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+# elif ! defined YYSIZE_T
</ins><span class="cx"> #  include &lt;stddef.h&gt; /* 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 &amp;&amp; YYENABLE_NLS
</span><span class="cx"> #  if ENABLE_NLS
</span><span class="cx"> #   include &lt;libintl.h&gt; /* INFRINGES ON USER NAME SPACE */
</span><del>-#   define YY_(msgid) dgettext (&quot;bison-runtime&quot;, msgid)
</del><ins>+#   define YY_(Msgid) dgettext (&quot;bison-runtime&quot;, 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__                                               \
+      &amp;&amp; (2 &lt; __GNUC__ || (__GNUC__ == 2 &amp;&amp; 96 &lt;= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C &amp;&amp; 0x5110 &lt;= __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 \
+     &amp;&amp; (!defined __STDC_VERSION__ || __STDC_VERSION__ &lt; 201112)
+# if defined _MSC_VER &amp;&amp; 1200 &lt;= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# endif
+#endif
+
</ins><span class="cx"> /* Suppress unused-variable warnings by &quot;using&quot; 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__ &amp;&amp; 407 &lt;= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma (&quot;GCC diagnostic push&quot;) \
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wuninitialized\&quot;&quot;)\
+    _Pragma (&quot;GCC diagnostic ignored \&quot;-Wmaybe-uninitialized\&quot;&quot;)
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma (&quot;GCC diagnostic pop&quot;)
</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 &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+#    if ! defined _ALLOCA_H &amp;&amp; ! defined EXIT_SUCCESS
</ins><span class="cx"> #     include &lt;stdlib.h&gt; /* 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 &amp;&amp; ! defined _STDLIB_H \
</del><ins>+#  if (defined __cplusplus &amp;&amp; ! defined EXIT_SUCCESS \
</ins><span class="cx">        &amp;&amp; ! ((defined YYMALLOC || defined malloc) \
</span><del>-         &amp;&amp; (defined YYFREE || defined free)))
</del><ins>+             &amp;&amp; (defined YYFREE || defined free)))
</ins><span class="cx"> #   include &lt;stdlib.h&gt; /* 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 &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+#   if ! defined malloc &amp;&amp; ! 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 &amp;&amp; ! defined _STDLIB_H &amp;&amp; (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
</del><ins>+#   if ! defined free &amp;&amp; ! 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">      &amp;&amp; (! defined __cplusplus \
</span><del>-     || (defined YYSTYPE_IS_TRIVIAL &amp;&amp; YYSTYPE_IS_TRIVIAL)))
</del><ins>+         || (defined YYSTYPE_IS_TRIVIAL &amp;&amp; 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__ &amp;&amp; 1 &lt; __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 &lt; (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 (&amp;yyptr-&gt;Stack, Stack, yysize);                \
-    Stack = &amp;yyptr-&gt;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 (&amp;yyptr-&gt;Stack_alloc, Stack, yysize);                    \
+        Stack = &amp;yyptr-&gt;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 &amp;&amp; YYCOPY_NEEDED
+/* Copy COUNT objects from SRC to DST.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ &amp;&amp; 1 &lt; __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 &lt; (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) &lt;= 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">   &quot;$end&quot;, &quot;error&quot;, &quot;$undefined&quot;, &quot;TOK_CONST_INT&quot;, &quot;TOK_OP_OR&quot;,
</span><del>-  &quot;TOK_OP_AND&quot;, &quot;'|'&quot;, &quot;'^'&quot;, &quot;'&amp;'&quot;, &quot;TOK_OP_NE&quot;, &quot;TOK_OP_EQ&quot;, &quot;'&lt;'&quot;,
-  &quot;'&gt;'&quot;, &quot;TOK_OP_GE&quot;, &quot;TOK_OP_LE&quot;, &quot;TOK_OP_RIGHT&quot;, &quot;TOK_OP_LEFT&quot;, &quot;'+'&quot;,
</del><ins>+  &quot;TOK_OP_AND&quot;, &quot;'|'&quot;, &quot;'^'&quot;, &quot;'&amp;'&quot;, &quot;TOK_OP_EQ&quot;, &quot;TOK_OP_NE&quot;, &quot;'&lt;'&quot;,
+  &quot;'&gt;'&quot;, &quot;TOK_OP_LE&quot;, &quot;TOK_OP_GE&quot;, &quot;TOK_OP_LEFT&quot;, &quot;TOK_OP_RIGHT&quot;, &quot;'+'&quot;,
</ins><span class="cx">   &quot;'-'&quot;, &quot;'*'&quot;, &quot;'/'&quot;, &quot;'%'&quot;, &quot;TOK_UNARY&quot;, &quot;'!'&quot;, &quot;'~'&quot;, &quot;'('&quot;, &quot;')'&quot;,
</span><del>-  &quot;$accept&quot;, &quot;input&quot;, &quot;expression&quot;, 0
</del><ins>+  &quot;$accept&quot;, &quot;input&quot;, &quot;expression&quot;, 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 &amp;&amp; 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_(&quot;syntax error: cannot back up&quot;)); \
</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 &amp;&amp; YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)            \
-     fprintf (File, &quot;%d.%d-%d.%d&quot;,            \
-          (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 (&amp;yylval, YYLEX_PARAM)
-#else
-# define YYLEX yylex (&amp;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, &quot;%s &quot;, Title);                      \
-      yy_symbol_print (stderr,                          \
-          Type, Value, context); \
-      YYFPRINTF (stderr, &quot;\n&quot;);                          \
-    }                                      \
-} 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, &quot;%s &quot;, Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Type, Value, context); \
+      YYFPRINTF (stderr, &quot;\n&quot;);                                           \
+    }                                                                     \
+} 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 &lt; 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 &lt; YYNTOKENS)
-    YYFPRINTF (yyoutput, &quot;token %s (&quot;, yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, &quot;nterm %s (&quot;, yytname[yytype]);
</del><ins>+  YYFPRINTF (yyoutput, &quot;%s %s (&quot;,
+             yytype &lt; YYNTOKENS ? &quot;token&quot; : &quot;nterm&quot;, yytname[yytype]);
</ins><span class="cx"> 
</span><span class="cx">   yy_symbol_value_print (yyoutput, yytype, yyvaluep, context);
</span><span class="cx">   YYFPRINTF (yyoutput, &quot;)&quot;);
</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, &quot;Stack now&quot;);
</span><del>-  for (; bottom &lt;= top; ++bottom)
-    YYFPRINTF (stderr, &quot; %d&quot;, *bottom);
</del><ins>+  for (; yybottom &lt;= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, &quot; %d&quot;, yybot);
+    }
</ins><span class="cx">   YYFPRINTF (stderr, &quot;\n&quot;);
</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, &quot;Reducing stack by rule %d (line %lu):\n&quot;,
</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 &lt; yynrhs; yyi++)
</span><span class="cx">     {
</span><del>-      fprintf (stderr, &quot;   $%d = &quot;, yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-               &amp;(yyvsp[(yyi + 1) - (yynrhs)])
-                              , context);
-      fprintf (stderr, &quot;\n&quot;);
</del><ins>+      YYFPRINTF (stderr, &quot;   $%d = &quot;, yyi + 1);
+      yy_symbol_print (stderr,
+                       yystos[yyssp[yyi + 1 - yynrhs]],
+                       &amp;(yyvsp[(yyi + 1) - (yynrhs)])
+                                              , context);
+      YYFPRINTF (stderr, &quot;\n&quot;);
</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 '&quot;':
-        if (yyres)
-          yyres[yyn] = '\0';
-        return yyn;
-      }
</del><ins>+          case '&quot;':
+            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 &quot;syntax error&quot;
-   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 &quot;unexpected&quot;, one per
+     &quot;expected&quot;). */
+  int yycount = 0;
</ins><span class="cx"> 
</span><del>-  if (! (YYPACT_NINF &lt; yyn &amp;&amp; yyn &lt;= 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 &quot;syntax error&quot;.
+     - 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 &lt; 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim &lt; 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_(&quot;syntax error, unexpected %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;);
-      YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;);
-# endif
-      char *yyfmt;
-      char const *yyf;
-      static char const yyunexpected[] = &quot;syntax error, unexpected %s&quot;;
-      static char const yyexpecting[] = &quot;, expecting %s&quot;;
-      static char const yyor[] = &quot; or %s&quot;;
-      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 &lt; yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx &amp;&amp; yyx != YYTERROR
+                &amp;&amp; !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 &lt;= yysize1
+                         &amp;&amp; yysize1 &lt;= 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 &lt; 0 ? -yyn : 0;
</del><ins>+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_(&quot;syntax error&quot;));
+      YYCASE_(1, YY_(&quot;syntax error, unexpected %s&quot;));
+      YYCASE_(2, YY_(&quot;syntax error, unexpected %s, expecting %s&quot;));
+      YYCASE_(3, YY_(&quot;syntax error, unexpected %s, expecting %s or %s&quot;));
+      YYCASE_(4, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s&quot;));
+      YYCASE_(5, YY_(&quot;syntax error, unexpected %s, expecting %s or %s or %s or %s&quot;));
+# undef YYCASE_
+    }
</ins><span class="cx"> 
</span><del>-      /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn + 1;
-      int yyxend = yychecklim &lt; YYNTOKENS ? yychecklim : YYNTOKENS;
-      int yycount = 1;
</del><ins>+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize &lt;= yysize1 &amp;&amp; yysize1 &lt;= 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 &lt; yyxend; ++yyx)
-    if (yycheck[yyx + yyn] == yyx &amp;&amp; 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 &lt; yysize);
-        yysize = yysize1;
-        yyfmt = yystpcpy (yyfmt, yyprefix);
-        yyprefix = yyor;
-      }
-
-      yyf = YY_(yyformat);
-      yysize1 = yysize + yystrlen (yyf);
-      yysize_overflow |= (yysize1 &lt; yysize);
-      yysize = yysize1;
-
-      if (yysize_overflow)
-    return YYSIZE_MAXIMUM;
-
-      if (yyresult)
</del><ins>+  if (*yymsg_alloc &lt; 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 &quot;%s&quot;s.  */
-      char *yyp = yyresult;
-      int yyi = 0;
-      while ((*yyp = *yyf) != '\0')
</del><ins>+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize &lt;= *yymsg_alloc
+             &amp;&amp; *yymsg_alloc &lt;= 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 &quot;%s&quot;s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' &amp;&amp; yyformat[1] == 's' &amp;&amp; yyi &lt; yycount)
</ins><span class="cx">         {
</span><del>-          if (*yyp == '%' &amp;&amp; yyf[1] == 's' &amp;&amp; yyi &lt; 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 = &quot;Deleting&quot;;
</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, &quot;Starting parse\n&quot;));
</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 &amp;'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 &amp;'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_(&quot;memory exhausted&quot;),
+                    &amp;yyss1, yysize * sizeof (*yyssp),
+                    &amp;yyvs1, yysize * sizeof (*yyvsp),
+                    &amp;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_(&quot;memory exhausted&quot;),
-            &amp;yyss1, yysize * sizeof (*yyssp),
-            &amp;yyvs1, yysize * sizeof (*yyvsp),
-
-            &amp;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 &lt;= yystacksize)
</span><del>-    goto yyexhaustedlab;
</del><ins>+        goto yyexhaustedlab;
</ins><span class="cx">       yystacksize *= 2;
</span><span class="cx">       if (YYMAXDEPTH &lt; 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, &quot;Stack size increased to %lu\n&quot;,
</span><del>-          (unsigned long int) yystacksize));
</del><ins>+                  (unsigned long int) yystacksize));
</ins><span class="cx"> 
</span><span class="cx">       if (yyss + yystacksize - 1 &lt;= yyssp)
</span><del>-    YYABORT;
</del><ins>+        YYABORT;
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   YYDPRINTF ((stderr, &quot;Entering state %d\n&quot;, 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 =&gt; get a look-ahead token if don't already have one.  */
</del><ins>+  /* Not known =&gt; 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, &quot;Reading a token: &quot;));
</span><del>-      yychar = YYLEX;
</del><ins>+      yychar = yylex (&amp;yylval, context);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">   if (yychar &lt;= YYEOF)
</span><span class="lines">@@ -1386,29 +1264,27 @@
</span><span class="cx">   yyn = yytable[yyn];
</span><span class="cx">   if (yyn &lt;= 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 (&quot;Shifting&quot;, yytoken, &amp;yylval, &amp;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-&gt;result) = static_cast&lt;int&gt;((yyvsp[(1) - (1)]));
</del><ins>+        *(context-&gt;result) = static_cast&lt;int&gt;((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)]) &amp;&amp; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &amp;&amp; (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)]) &amp; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &amp; (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)]) &gt;= (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &gt;= (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)]) &lt;= (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &lt;= (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)]) &gt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &gt; (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)]) &lt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &lt; (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)]) &gt;&gt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &gt;&gt; (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)]) &lt;&lt; (yyvsp[(3) - (3)]);
-    ;}
</del><ins>+        (yyval) = (yyvsp[-2]) &lt;&lt; (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 &lt;&lt; (yyvsp[(1) - (3)]) &lt;&lt; &quot; % &quot; &lt;&lt; (yyvsp[(3) - (3)]);
</del><ins>+            stream &lt;&lt; (yyvsp[-2]) &lt;&lt; &quot; % &quot; &lt;&lt; (yyvsp[0]);
</ins><span class="cx">             std::string text = stream.str();
</span><span class="cx">             context-&gt;diagnostics-&gt;report(pp::Diagnostics::DIVISION_BY_ZERO,
</span><span class="cx">                                          context-&gt;token-&gt;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 &lt;&lt; (yyvsp[(1) - (3)]) &lt;&lt; &quot; / &quot; &lt;&lt; (yyvsp[(3) - (3)]);
</del><ins>+            stream &lt;&lt; (yyvsp[-2]) &lt;&lt; &quot; / &quot; &lt;&lt; (yyvsp[0]);
</ins><span class="cx">             std::string text = stream.str();
</span><span class="cx">             context-&gt;diagnostics-&gt;report(pp::Diagnostics::DIVISION_BY_ZERO,
</span><span class="cx">                                          context-&gt;token-&gt;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 (&quot;-&gt; $$ =&quot;, yyr1[yyn], &amp;yyval, &amp;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_(&quot;syntax error&quot;));
</span><span class="cx"> #else
</span><ins>+# define YYSYNTAX_ERROR yysyntax_error (&amp;yymsg_alloc, &amp;yymsg, \
+                                        yyssp, yytoken)
</ins><span class="cx">       {
</span><del>-    YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
-    if (yymsg_alloc &lt; yysize &amp;&amp; yymsg_alloc &lt; YYSTACK_ALLOC_MAXIMUM)
-      {
-        YYSIZE_T yyalloc = 2 * yysize;
-        if (! (yysize &lt;= yyalloc &amp;&amp; yyalloc &lt;= 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_(&quot;syntax error&quot;);
+        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 &lt; yysize &amp;&amp; yysize &lt;= yymsg_alloc)
-      {
-        (void) yysyntax_error (yymsg, yystate, yychar);
-        yyerror (context, yymsg);
-      }
-    else
-      {
-        yyerror (context, YY_(&quot;syntax error&quot;));
-        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 &lt;= 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 (&quot;Error: discarding&quot;,
-              yytoken, &amp;yylval, context);
-      yychar = YYEMPTY;
</del><ins>+        {
+          yydestruct (&quot;Error: discarding&quot;,
+                      yytoken, &amp;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 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
</del><ins>+      if (!yypact_value_is_default (yyn))
</ins><span class="cx">         {
</span><del>-          yyn = yytable[yyn];
-          if (0 &lt; yyn)
-        break;
</del><ins>+          yyn += YYTERROR;
+          if (0 &lt;= yyn &amp;&amp; yyn &lt;= YYLAST &amp;&amp; yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 &lt; 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 (&quot;Error: popping&quot;,
</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 &amp;&amp; yychar != YYEMPTY)
-     yydestruct (&quot;Cleanup: discarding lookahead&quot;,
-         yytoken, &amp;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 (&quot;Cleanup: discarding lookahead&quot;,
+                  yytoken, &amp;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 (&quot;Cleanup: popping&quot;,
</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>