A special state to track field selection is not necessary.

Identifier is sufficient to parse struct fieldname.

TEST=WebGL conformance tests.

Review URL: https://codereview.appspot.com/8709048

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@2232 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/glslang.l b/src/compiler/glslang.l
index 90a5482..605eda8 100644
--- a/src/compiler/glslang.l
+++ b/src/compiler/glslang.l
@@ -59,7 +59,6 @@
 %option noyywrap nounput never-interactive
 %option yylineno reentrant bison-bridge
 %option extra-type="TParseContext*"
-%x FIELDS
 
 D           [0-9]
 L           [a-zA-Z_]
@@ -227,7 +226,7 @@
 ")"         { return RIGHT_PAREN; }
 ("["|"<:")  { return LEFT_BRACKET; }
 ("]"|":>")  { return RIGHT_BRACKET; }
-"."         { BEGIN(FIELDS); return DOT; }
+"."         { return DOT; }
 "!"         { return BANG; }
 "-"         { return DASH; }
 "~"         { return TILDE; }
@@ -242,16 +241,9 @@
 "&"         { return AMPERSAND; }
 "?"         { return QUESTION; }
 
-<FIELDS>{L}({L}|{D})* { 
-    BEGIN(INITIAL);
-    yylval->lex.string = NewPoolTString(yytext); 
-    return FIELD_SELECTION;
-}
-<FIELDS>[ \t\v\f\r] {}
-
 [ \t\v\n\f\r] { }
-<*><<EOF>>    { yyterminate(); }
-<*>.          { assert(false); return 0; }
+<<EOF>>    { yyterminate(); }
+.          { assert(false); return 0; }
 
 %%
 
diff --git a/src/compiler/glslang.y b/src/compiler/glslang.y
index b7e2bd6..b08dbad 100644
--- a/src/compiler/glslang.y
+++ b/src/compiler/glslang.y
@@ -116,7 +116,6 @@
 %token <lex> SAMPLER2D SAMPLERCUBE SAMPLER_EXTERNAL_OES SAMPLER2DRECT
 
 %token <lex> IDENTIFIER TYPE_NAME FLOATCONSTANT INTCONSTANT BOOLCONSTANT
-%token <lex> FIELD_SELECTION
 %token <lex> LEFT_OP RIGHT_OP
 %token <lex> INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP
 %token <lex> AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
@@ -322,7 +321,7 @@
     | function_call {
         $$ = $1;
     }
-    | postfix_expression DOT FIELD_SELECTION {
+    | postfix_expression DOT identifier {
         if ($1->isArray()) {
             context->error($3.line, "cannot apply dot operator to an array", ".");
             context->recover();
@@ -672,13 +671,6 @@
         TFunction *function = new TFunction($1.string, type);
         $$ = function;
     }
-    | FIELD_SELECTION {
-        if (context->reservedErrorCheck($1.line, *$1.string))
-            context->recover();
-        TType type(EbtVoid, EbpUndefined);
-        TFunction *function = new TFunction($1.string, type);
-        $$ = function;
-    }
     ;
 
 unary_expression
diff --git a/src/compiler/glslang_lex.cpp b/src/compiler/glslang_lex.cpp
index 6d57366..508cdb4 100644
--- a/src/compiler/glslang_lex.cpp
+++ b/src/compiler/glslang_lex.cpp
@@ -383,8 +383,8 @@
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 149
-#define YY_END_OF_BUFFER 150
+#define YY_NUM_RULES 147
+#define YY_END_OF_BUFFER 148
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -392,57 +392,57 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[449] =
+static yyconst flex_int16_t yy_accept[443] =
     {   0,
-        0,    0,    0,    0,  150,  148,  147,  147,  132,  138,
-      143,  127,  128,  136,  135,  124,  133,  131,  137,   96,
-       96,  125,  121,  139,  126,  140,  144,   93,  129,  130,
-      142,   93,   93,   93,   93,   93,   93,   93,   93,   93,
+        0,    0,  148,  146,  145,  145,  132,  138,  143,  127,
+      128,  136,  135,  124,  133,  131,  137,   96,   96,  125,
+      121,  139,  126,  140,  144,   93,  129,  130,  142,   93,
        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,  122,  141,  123,  134,  146,  149,  145,  118,  104,
-      123,  112,  107,  102,  110,  100,  111,  101,   99,  103,
-       98,   95,   96,    0,    0,  130,  122,  129,  119,  115,
-      117,  116,  120,   93,  108,  114,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   12,   93,   93,   93,
+       93,   93,   93,   93,   93,   93,   93,   93,   93,  122,
+      141,  123,  134,  118,  104,  123,  112,  107,  102,  110,
+      100,  111,  101,   99,  103,   98,   95,   96,    0,    0,
+      130,  122,  129,  119,  115,  117,  116,  120,   93,  108,
+      114,   93,   93,   93,   93,   93,   93,   93,   93,   93,
+       93,   12,   93,   93,   93,   93,   93,   93,   93,   93,
 
+       93,   93,   93,   93,   93,   15,   17,   93,   93,   93,
        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       15,   17,   93,   93,   93,   93,   93,   93,   93,   93,
        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,  109,
-      113,  145,    0,   98,    0,    0,   97,   94,  105,  106,
-       45,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   13,
-       93,   93,   93,   93,   93,   93,   93,   93,   21,   93,
-       93,   93,   93,   93,   93,   93,   93,   18,   93,   93,
+       93,   93,   93,   93,  109,  113,    0,   98,    0,    0,
+       97,   94,  105,  106,   45,   93,   93,   93,   93,   93,
+       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
+       93,   93,   93,   13,   93,   93,   93,   93,   93,   93,
+       93,   93,   21,   93,   93,   93,   93,   93,   93,   93,
+       93,   18,   93,   93,   93,   93,   93,   93,   93,   93,
        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
 
+       93,   93,   93,   93,   93,    0,   99,    0,   98,   93,
+       23,   93,   93,   90,   93,   93,   93,   93,   93,   93,
+       93,   16,   48,   93,   93,   93,   64,   93,   93,   53,
+       68,   93,   93,   93,   93,   93,   93,   93,   93,   65,
+        4,   28,   29,   30,   93,   93,   93,   93,   93,   93,
        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,    0,   99,    0,   98,   93,   23,   93,   93,   90,
-       93,   93,   93,   93,   93,   93,   93,   16,   48,   93,
-       93,   93,   64,   93,   93,   53,   68,   93,   93,   93,
-       93,   93,   93,   93,   93,   65,    4,   28,   29,   30,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   51,   24,   93,   93,
-       93,   93,   93,   93,   31,   32,   33,   22,   93,   93,
-       93,   10,   37,   38,   39,   46,    7,   93,   93,   93,
-       93,   77,   78,   79,   93,   25,   69,   20,   80,   81,
+       51,   24,   93,   93,   93,   93,   93,   93,   31,   32,
+       33,   22,   93,   93,   93,   10,   37,   38,   39,   46,
+        7,   93,   93,   93,   93,   77,   78,   79,   93,   25,
+       69,   20,   80,   81,   82,    2,   74,   75,   76,   93,
 
-       82,    2,   74,   75,   76,   93,   19,   72,   93,   93,
-       34,   35,   36,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   66,   93,   93,   93,   93,   93,   93,   93,
-       93,   47,   93,   92,   93,   93,   14,   93,   93,   93,
-       93,   67,   61,   56,   93,   93,   93,   93,   93,   73,
-       52,   93,   59,   27,   93,   89,   60,   44,   71,   54,
-       93,   93,   93,   93,   93,   93,   93,   93,   55,   26,
-       93,   93,   93,    3,   93,   93,   93,   93,   93,   49,
-        8,   93,    9,   93,   93,   11,   62,   93,   93,   93,
-       57,   93,   93,   93,   93,   93,   93,   50,   70,   58,
+       19,   72,   93,   93,   34,   35,   36,   93,   93,   93,
+       93,   93,   93,   93,   93,   93,   66,   93,   93,   93,
+       93,   93,   93,   93,   93,   47,   93,   92,   93,   93,
+       14,   93,   93,   93,   93,   67,   61,   56,   93,   93,
+       93,   93,   93,   73,   52,   93,   59,   27,   93,   89,
+       60,   44,   71,   54,   93,   93,   93,   93,   93,   93,
+       93,   93,   55,   26,   93,   93,   93,    3,   93,   93,
+       93,   93,   93,   49,    8,   93,    9,   93,   93,   11,
+       62,   93,   93,   93,   57,   93,   93,   93,   93,   93,
+       93,   50,   70,   58,    6,   63,    1,   91,    5,   83,
 
-        6,   63,    1,   91,    5,   83,   40,   84,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       41,   93,   93,   93,   93,   93,   93,   93,   43,   93,
-       87,   93,   93,   93,   93,   93,   85,   93,   86,   93,
-       93,   93,   93,   93,   93,   42,   88,    0
+       40,   84,   93,   93,   93,   93,   93,   93,   93,   93,
+       93,   93,   93,   93,   41,   93,   93,   93,   93,   93,
+       93,   93,   43,   93,   87,   93,   93,   93,   93,   93,
+       85,   93,   86,   93,   93,   93,   93,   93,   93,   42,
+       88,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -488,199 +488,189 @@
         3,    3,    3,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[452] =
+static yyconst flex_int16_t yy_base[445] =
     {   0,
-        0,    0,   67,    0,  656,  657,  657,  657,  630,  110,
-      131,  657,  657,  629,  128,  657,  127,  125,  628,  144,
-      153,  626,  657,  171,  626,  122,  657,    0,  657,  657,
-      142,   93,  124,  149,  150,  140,  160,  597,  164,  162,
-      596,  111,  138,  590,  171,  603,  177,  183,  102,  178,
-      599,  657,  181,  657,  657,  657,  657,    0,  657,  657,
-      657,  657,  657,  657,  657,  657,  657,  657,  232,  657,
-      239,  269,  278,  300,    0,  657,  657,  657,  620,  657,
-      657,  657,  619,    0,  657,  657,  592,  585,  588,  596,
-      595,  582,  597,  584,  590,  578,  575,  588,  575,  572,
+        0,    0,  587,  588,  588,  588,  561,   43,   64,  588,
+      588,  560,   61,  588,   60,   58,  559,   77,   86,  557,
+      588,  104,  557,   55,  588,    0,  588,  588,   75,   26,
+       57,   82,   83,   73,   93,  528,   97,   95,  527,   44,
+       71,  521,  104,  534,  110,  116,   35,  111,  530,  588,
+      114,  588,  588,  588,  588,  588,  588,  588,  588,  588,
+      588,  588,  588,  165,  588,  172,  202,  211,  233,    0,
+      588,  588,  588,  551,  588,  588,  588,  550,    0,  588,
+      588,  523,  516,  519,  527,  526,  513,  528,  515,  521,
+      509,  506,  519,  506,  503,  503,  509,  497,  108,  502,
 
-      572,  578,  566,  175,  571,  581,  567,  573,  576,  577,
-        0,  212,  576,  180,  562,  575,  566,  568,  558,  572,
-      569,  571,  554,  559,  556,  545,  224,  553,  558,  554,
-      556,  545,  548,  185,  553,  545,  557,  137,  550,  657,
-      657,    0,  313,  320,  337,  286,  350,    0,  657,  657,
-        0,  542,  546,  555,  552,  536,  536,  186,  551,  548,
-      548,  546,  543,  535,  541,  528,  539,  525,  541,    0,
-      538,  526,  533,  530,  534,  527,  516,  515,  528,  531,
-      528,  523,  514,  255,  519,  522,  513,  510,  514,  520,
-      511,  502,  505,  503,  513,  499,  497,  510,  496,  498,
+      512,  498,  504,  507,  508,    0,  145,  507,  113,  493,
+      506,  497,  499,  489,  503,  500,  502,  485,  490,  487,
+      476,  157,  484,  489,  485,  487,  476,  479,  118,  484,
+      476,  488,   70,  481,  588,  588,  246,  253,  270,  219,
+      283,    0,  588,  588,    0,  473,  477,  486,  483,  467,
+      467,  119,  482,  479,  479,  477,  474,  466,  472,  459,
+      470,  456,  472,    0,  469,  457,  464,  461,  465,  458,
+      447,  446,  459,  462,  459,  454,  445,  188,  450,  453,
+      444,  441,  445,  451,  442,  433,  436,  434,  444,  430,
+      428,  441,  427,  429,  426,  437,  436,  124,  431,  426,
 
-      495,  506,  505,  191,  500,  495,  484,  325,  502,  504,
-      493,  357,  364,  371,  378,  494,    0,  492,  342,    0,
-      484,  482,  490,  479,  496,  485,  383,    0,    0,  479,
-      489,  489,    0,  474,  386,    0,    0,  476,  389,  477,
-      471,  470,  471,  470,  392,    0,    0,    0,    0,    0,
-      466,  467,  472,  463,  476,  471,  470,  462,  466,  458,
-      461,  465,  470,  456,  468,  459,    0,    0,  465,  454,
-      454,  459,  458,  455,    0,    0,    0,    0,  445,  457,
-      459,    0,    0,    0,    0,    0,    0,  447,  448,  442,
-      452,    0,    0,    0,  443,    0,    0,    0,    0,    0,
+      415,  258,  433,  435,  424,  290,  297,  304,  311,  425,
+        0,  423,  275,    0,  415,  413,  421,  410,  427,  416,
+      316,    0,    0,  410,  420,  420,    0,  405,  319,    0,
+        0,  407,  322,  408,  402,  401,  402,  401,  325,    0,
+        0,    0,    0,    0,  397,  398,  403,  394,  407,  402,
+      401,  393,  397,  389,  392,  396,  401,  387,  399,  390,
+        0,    0,  396,  385,  385,  390,  389,  386,    0,    0,
+        0,    0,  376,  388,  390,    0,    0,    0,    0,    0,
+        0,  378,  379,  373,  383,    0,    0,    0,  374,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  381,
 
-        0,    0,    0,    0,    0,  450,    0,    0,  448,  444,
-        0,    0,    0,  440,  436,  441,  431,  444,  430,  443,
-      432,  439,    0,  437,  439,  423,  425,  431,  437,  432,
-      420,    0,  422,    0,  421,  424,    0,  413,  412,  412,
-      425,    0,  427,    0,  426,  425,  410,  423,  410,    0,
-        0,  413,    0,    0,  405,    0,    0,    0,    0,    0,
-      402,  413,  406,  412,  409,  404,  396,  408,    0,    0,
-      401,  408,  397,    0,  406,  403,  393,  396,  401,    0,
-        0,  401,    0,  399,  398,    0,    0,  397,  383,  395,
-        0,  386,  407,  406,  405,  376,  372,    0,    0,    0,
+        0,    0,  379,  375,    0,    0,    0,  371,  367,  372,
+      362,  375,  361,  374,  363,  370,    0,  368,  370,  354,
+      356,  362,  368,  363,  351,    0,  353,    0,  352,  355,
+        0,  344,  343,  343,  356,    0,  358,    0,  357,  356,
+      341,  354,  341,    0,    0,  344,    0,    0,  336,    0,
+        0,    0,    0,    0,  333,  344,  337,  343,  340,  335,
+      327,  339,    0,    0,  332,  339,  328,    0,  337,  334,
+      324,  329,  332,    0,    0,  332,    0,  330,  329,    0,
+        0,  328,  314,  326,    0,  317,  338,  337,  336,  307,
+      303,    0,    0,    0,    0,    0,    0,    0,    0,  328,
 
-        0,    0,    0,    0,    0,  397,  233,  392,  383,  366,
-      375,  377,  373,  375,  374,  373,  376,  373,  323,  320,
-        0,  295,  305,  289,  302,  270,  274,  271,  279,  258,
-        0,  268,  232,  234,  220,  228,    0,  237,    0,  242,
-      218,  208,  167,  181,  126,    0,    0,  657,  426,  428,
-      180
+      166,  325,  316,  299,  308,  310,  306,  308,  307,  306,
+      309,  306,  256,  253,    0,  228,  238,  222,  235,  203,
+      207,  204,  212,  191,    0,  201,  165,  167,  153,  161,
+        0,  170,    0,  175,  151,  141,  100,  114,   59,    0,
+        0,  588,  359,  113
     } ;
 
-static yyconst flex_int16_t yy_def[452] =
+static yyconst flex_int16_t yy_def[445] =
     {   0,
-      448,    1,  448,    3,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  449,  448,  448,
-      448,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  448,  448,  448,  448,  448,  448,  450,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  451,  448,  448,  448,  448,  448,
-      448,  448,  448,  449,  448,  448,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+      442,    1,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  443,  442,  442,  442,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  444,
+      442,  442,  442,  442,  442,  442,  442,  442,  443,  442,
+      442,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
 
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  448,
-      448,  450,  448,  448,  448,  448,  448,  451,  448,  448,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  442,  442,  442,  442,  442,  442,
+      442,  444,  442,  442,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
 
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  448,  448,  448,  448,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+      443,  443,  443,  443,  443,  442,  442,  442,  442,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
 
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
 
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,  449,  449,  449,
-      449,  449,  449,  449,  449,  449,  449,    0,  448,  448,
-      448
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,    0,  442,  442
     } ;
 
-static yyconst flex_int16_t yy_nxt[725] =
+static yyconst flex_int16_t yy_nxt[656] =
     {   0,
-        6,    7,    8,    9,   10,   11,   12,   13,   14,   15,
-       16,   17,   18,   19,   20,   21,   21,   21,   21,   21,
-       21,   22,   23,   24,   25,   26,   27,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   29,   30,   31,   32,
-       33,   34,   35,   36,   37,   38,   39,   40,   28,   41,
-       42,   43,   44,   45,   46,   47,   48,   49,   50,   51,
-       28,   28,   28,   52,   53,   54,   55,    6,   56,   57,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,   58,   58,   58,   58,   58,   58,
+        4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+       14,   15,   16,   17,   18,   19,   19,   19,   19,   19,
+       19,   20,   21,   22,   23,   24,   25,   26,   26,   26,
+       26,   26,   26,   26,   26,   26,   27,   28,   29,   30,
+       31,   32,   33,   34,   35,   36,   37,   38,   26,   39,
+       40,   41,   42,   43,   44,   45,   46,   47,   48,   49,
+       26,   26,   26,   50,   51,   52,   53,   55,   56,   57,
+       60,   62,   64,   64,   64,   64,   64,   64,   64,   77,
+       78,   82,   83,  110,   63,   61,  129,  111,   58,   66,
+      130,   67,   67,   67,   67,   67,   67,   68,   66,   80,
 
-       58,   58,   58,    6,    6,    6,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-        6,    6,    6,    6,   60,   61,   62,   65,   67,   69,
-       69,   69,   69,   69,   69,   69,   82,   83,   87,   88,
-      115,   68,   66,  134,  116,   63,   71,  135,   72,   72,
-       72,   72,   72,   72,   73,   71,   85,   73,   73,   73,
-       73,   73,   73,   73,   74,   77,   89,  117,   90,   75,
-       86,  148,   91,   74,  209,  447,  210,   74,   92,   99,
-      118,  100,   78,   95,   79,   80,   74,   96,   93,  102,
+       68,   68,   68,   68,   68,   68,   68,   69,   72,   84,
+      112,   85,   70,   81,  142,   86,   69,  203,  441,  204,
+       69,   87,   94,  113,   95,   73,   90,   74,   75,   69,
+       91,   88,   97,   96,   89,   92,  103,   70,  135,  106,
+       98,   93,   99,  115,  104,  100,  107,  162,  440,  119,
+      131,  101,  439,  108,  132,  105,  120,  121,  116,  125,
+      163,  117,  126,  133,  176,  198,  122,  123,  264,  124,
+      127,  438,  177,  199,  216,  217,  265,  128,  136,   64,
+       64,   64,   64,   64,   64,   64,  138,  138,  138,  138,
+      138,  138,  138,  437,  170,  137,  190,  171,  172,  406,
 
-      101,   94,   97,  108,   75,  140,  111,  103,   98,  104,
-      120,  109,  105,  112,  168,  446,  124,  136,  106,  445,
-      113,  137,  110,  125,  126,  121,  130,  169,  122,  131,
-      138,  182,  204,  127,  128,  270,  129,  132,  444,  183,
-      205,  222,  223,  271,  133,  141,   69,   69,   69,   69,
-       69,   69,   69,  144,  144,  144,  144,  144,  144,  144,
-      443,  176,  143,  196,  177,  178,  412,  413,  179,  145,
-      180,  248,  249,  250,  442,  143,  441,  440,  197,  439,
-      438,   71,  145,   72,   72,   72,   72,   72,   72,   73,
-       71,  437,   73,   73,   73,   73,   73,   73,   73,   74,
+      407,  173,  139,  174,  242,  243,  244,  436,  137,  435,
+      434,  191,  433,  432,   66,  139,   67,   67,   67,   67,
+       67,   67,   68,   66,  431,   68,   68,   68,   68,   68,
+       68,   68,   69,  141,  141,  141,  141,  141,  141,  141,
+      430,   69,  140,  429,  140,   69,  428,  141,  141,  141,
+      141,  141,  141,  141,   69,  206,  427,  206,  426,  425,
+      207,  207,  207,  207,  207,  207,  207,  138,  138,  138,
+      138,  138,  138,  138,  269,  270,  271,  424,  423,  208,
+      422,  208,  421,  139,  209,  209,  209,  209,  209,  209,
+      209,  277,  278,  279,  420,  419,  139,  141,  141,  141,
 
-      147,  147,  147,  147,  147,  147,  147,  436,   74,  146,
-      435,  146,   74,  434,  147,  147,  147,  147,  147,  147,
-      147,   74,  212,  433,  212,  432,  431,  213,  213,  213,
-      213,  213,  213,  213,  144,  144,  144,  144,  144,  144,
-      144,  275,  276,  277,  430,  429,  214,  428,  214,  427,
-      145,  215,  215,  215,  215,  215,  215,  215,  283,  284,
-      285,  426,  425,  145,  147,  147,  147,  147,  147,  147,
-      147,  213,  213,  213,  213,  213,  213,  213,  213,  213,
-      213,  213,  213,  213,  213,  215,  215,  215,  215,  215,
-      215,  215,  215,  215,  215,  215,  215,  215,  215,  292,
+      141,  141,  141,  141,  207,  207,  207,  207,  207,  207,
+      207,  207,  207,  207,  207,  207,  207,  207,  209,  209,
+      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
+      209,  209,  286,  287,  288,  293,  294,  295,  297,  298,
+      299,  305,  306,  307,  387,  388,  389,  418,  417,  416,
+      415,  414,  413,  412,  411,  410,  409,  390,  408,  391,
+       79,   79,  405,  404,  403,  402,  401,  400,  399,  398,
+      397,  396,  395,  394,  393,  392,  386,  385,  384,  383,
+      382,  381,  380,  379,  378,  377,  376,  375,  374,  373,
+      372,  371,  370,  369,  368,  367,  366,  365,  364,  363,
 
-      293,  294,  299,  300,  301,  303,  304,  305,  311,  312,
-      313,  393,  394,  395,  424,  423,  422,  421,  420,  419,
-      418,  417,  416,  415,  396,  414,  397,   84,   84,  142,
-      142,  411,  410,  409,  408,  407,  406,  405,  404,  403,
-      402,  401,  400,  399,  398,  392,  391,  390,  389,  388,
-      387,  386,  385,  384,  383,  382,  381,  380,  379,  378,
-      377,  376,  375,  374,  373,  372,  371,  370,  369,  368,
-      367,  366,  365,  364,  363,  362,  361,  360,  359,  358,
-      357,  356,  355,  354,  353,  352,  351,  350,  349,  348,
-      347,  346,  345,  344,  343,  342,  341,  340,  339,  338,
+      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
+      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  341,  340,  339,  338,  337,  336,  335,  334,  333,
+      332,  331,  330,  329,  328,  327,  326,  325,  324,  323,
+      322,  321,  320,  319,  318,  317,  316,  315,  314,  313,
+      312,  311,  310,  309,  308,  304,  303,  302,  301,  300,
+      296,  292,  291,  290,  289,  285,  284,  283,  282,  281,
+      280,  276,  275,  274,  273,  272,  268,  267,  266,  263,
+      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
+      252,  251,  250,  249,  248,  247,  246,  245,  241,  240,
 
-      337,  336,  335,  334,  333,  332,  331,  330,  329,  328,
-      327,  326,  325,  324,  323,  322,  321,  320,  319,  318,
-      317,  316,  315,  314,  310,  309,  308,  307,  306,  302,
-      298,  297,  296,  295,  291,  290,  289,  288,  287,  286,
-      282,  281,  280,  279,  278,  274,  273,  272,  269,  268,
-      267,  266,  265,  264,  263,  262,  261,  260,  259,  258,
-      257,  256,  255,  254,  253,  252,  251,  247,  246,  245,
-      244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
-      234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
-      224,  221,  220,  219,  218,  217,  216,  211,  208,  207,
+      239,  238,  237,  236,  235,  234,  233,  232,  231,  230,
+      229,  228,  227,  226,  225,  224,  223,  222,  221,  220,
+      219,  218,  215,  214,  213,  212,  211,  210,  205,  202,
+      201,  200,  197,  196,  195,  194,  193,  192,  189,  188,
+      187,  186,  185,  184,  183,  182,  181,  180,  179,  178,
+      175,  169,  168,  167,  166,  165,  164,  161,  160,  159,
+      158,  157,  156,  155,  154,  153,  152,  151,  150,  149,
+      148,  147,  146,  145,  144,  143,  134,  118,  114,  109,
+      102,   76,   71,   65,   59,   54,  442,    3,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
 
-      206,  203,  202,  201,  200,  199,  198,  195,  194,  193,
-      192,  191,  190,  189,  188,  187,  186,  185,  184,  181,
-      175,  174,  173,  172,  171,  170,  167,  166,  165,  164,
-      163,  162,  161,  160,  159,  158,  157,  156,  155,  154,
-      153,  152,  151,  150,  149,  139,  123,  119,  114,  107,
-       81,   76,   70,   64,   59,  448,    5,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442
     } ;
 
-static yyconst flex_int16_t yy_chk[725] =
+static yyconst flex_int16_t yy_chk[656] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -688,84 +678,76 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    8,    8,    9,
+       13,   15,   16,   16,   16,   16,   16,   16,   16,   24,
+       24,   30,   30,   40,   15,   13,   47,   40,    9,   18,
+       47,   18,   18,   18,   18,   18,   18,   18,   19,   29,
 
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,   10,   10,   11,   15,   17,   18,
-       18,   18,   18,   18,   18,   18,   26,   26,   32,   32,
-       42,   17,   15,   49,   42,   11,   20,   49,   20,   20,
-       20,   20,   20,   20,   20,   21,   31,   21,   21,   21,
-       21,   21,   21,   21,   20,   24,   33,   43,   33,   20,
-       31,  451,   33,   21,  138,  445,  138,   20,   34,   36,
-       43,   36,   24,   35,   24,   24,   21,   35,   34,   37,
+       19,   19,   19,   19,   19,   19,   19,   18,   22,   31,
+       41,   31,   18,   29,  444,   31,   19,  133,  439,  133,
+       18,   32,   34,   41,   34,   22,   33,   22,   22,   19,
+       33,   32,   35,   34,   32,   33,   37,   18,   51,   38,
+       35,   33,   35,   43,   37,   35,   38,   99,  438,   45,
+       48,   35,  437,   38,   48,   37,   45,   45,   43,   46,
+       99,   43,   46,   48,  109,  129,   45,   45,  198,   45,
+       46,  436,  109,  129,  152,  152,  198,   46,   51,   64,
+       64,   64,   64,   64,   64,   64,   66,   66,   66,   66,
+       66,   66,   66,  435,  107,   64,  122,  107,  107,  401,
 
-       36,   34,   35,   39,   20,   53,   40,   37,   35,   37,
-       45,   39,   37,   40,  104,  444,   47,   50,   37,  443,
-       40,   50,   39,   47,   47,   45,   48,  104,   45,   48,
-       50,  114,  134,   47,   47,  204,   47,   48,  442,  114,
-      134,  158,  158,  204,   48,   53,   69,   69,   69,   69,
-       69,   69,   69,   71,   71,   71,   71,   71,   71,   71,
-      441,  112,   69,  127,  112,  112,  407,  407,  112,   71,
-      112,  184,  184,  184,  440,   69,  438,  436,  127,  435,
-      434,   72,   71,   72,   72,   72,   72,   72,   72,   72,
-       73,  433,   73,   73,   73,   73,   73,   73,   73,   72,
+      401,  107,   66,  107,  178,  178,  178,  434,   64,  432,
+      430,  122,  429,  428,   67,   66,   67,   67,   67,   67,
+       67,   67,   67,   68,  427,   68,   68,   68,   68,   68,
+       68,   68,   67,  140,  140,  140,  140,  140,  140,  140,
+      426,   68,   69,  424,   69,   67,  423,   69,   69,   69,
+       69,   69,   69,   69,   68,  137,  422,  137,  421,  420,
+      137,  137,  137,  137,  137,  137,  137,  138,  138,  138,
+      138,  138,  138,  138,  202,  202,  202,  419,  418,  139,
+      417,  139,  416,  138,  139,  139,  139,  139,  139,  139,
+      139,  213,  213,  213,  414,  413,  138,  141,  141,  141,
 
-      146,  146,  146,  146,  146,  146,  146,  432,   73,   74,
-      430,   74,   72,  429,   74,   74,   74,   74,   74,   74,
-       74,   73,  143,  428,  143,  427,  426,  143,  143,  143,
-      143,  143,  143,  143,  144,  144,  144,  144,  144,  144,
-      144,  208,  208,  208,  425,  424,  145,  423,  145,  422,
-      144,  145,  145,  145,  145,  145,  145,  145,  219,  219,
-      219,  420,  419,  144,  147,  147,  147,  147,  147,  147,
-      147,  212,  212,  212,  212,  212,  212,  212,  213,  213,
-      213,  213,  213,  213,  213,  214,  214,  214,  214,  214,
-      214,  214,  215,  215,  215,  215,  215,  215,  215,  227,
+      141,  141,  141,  141,  206,  206,  206,  206,  206,  206,
+      206,  207,  207,  207,  207,  207,  207,  207,  208,  208,
+      208,  208,  208,  208,  208,  209,  209,  209,  209,  209,
+      209,  209,  221,  221,  221,  229,  229,  229,  233,  233,
+      233,  239,  239,  239,  372,  372,  372,  412,  411,  410,
+      409,  408,  407,  406,  405,  404,  403,  372,  402,  372,
+      443,  443,  400,  391,  390,  389,  388,  387,  386,  384,
+      383,  382,  379,  378,  376,  373,  371,  370,  369,  367,
+      366,  365,  362,  361,  360,  359,  358,  357,  356,  355,
+      349,  346,  343,  342,  341,  340,  339,  337,  335,  334,
 
-      227,  227,  235,  235,  235,  239,  239,  239,  245,  245,
-      245,  378,  378,  378,  418,  417,  416,  415,  414,  413,
-      412,  411,  410,  409,  378,  408,  378,  449,  449,  450,
-      450,  406,  397,  396,  395,  394,  393,  392,  390,  389,
-      388,  385,  384,  382,  379,  377,  376,  375,  373,  372,
-      371,  368,  367,  366,  365,  364,  363,  362,  361,  355,
-      352,  349,  348,  347,  346,  345,  343,  341,  340,  339,
-      338,  336,  335,  333,  331,  330,  329,  328,  327,  326,
-      325,  324,  322,  321,  320,  319,  318,  317,  316,  315,
-      314,  310,  309,  306,  295,  291,  290,  289,  288,  281,
+      333,  332,  330,  329,  327,  325,  324,  323,  322,  321,
+      320,  319,  318,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  304,  303,  300,  289,  285,  284,  283,  282,
+      275,  274,  273,  268,  267,  266,  265,  264,  263,  260,
+      259,  258,  257,  256,  255,  254,  253,  252,  251,  250,
+      249,  248,  247,  246,  245,  238,  237,  236,  235,  234,
+      232,  228,  226,  225,  224,  220,  219,  218,  217,  216,
+      215,  212,  210,  205,  204,  203,  201,  200,  199,  197,
+      196,  195,  194,  193,  192,  191,  190,  189,  188,  187,
+      186,  185,  184,  183,  182,  181,  180,  179,  177,  176,
 
-      280,  279,  274,  273,  272,  271,  270,  269,  266,  265,
-      264,  263,  262,  261,  260,  259,  258,  257,  256,  255,
-      254,  253,  252,  251,  244,  243,  242,  241,  240,  238,
-      234,  232,  231,  230,  226,  225,  224,  223,  222,  221,
-      218,  216,  211,  210,  209,  207,  206,  205,  203,  202,
-      201,  200,  199,  198,  197,  196,  195,  194,  193,  192,
-      191,  190,  189,  188,  187,  186,  185,  183,  182,  181,
-      180,  179,  178,  177,  176,  175,  174,  173,  172,  171,
-      169,  168,  167,  166,  165,  164,  163,  162,  161,  160,
-      159,  157,  156,  155,  154,  153,  152,  139,  137,  136,
+      175,  174,  173,  172,  171,  170,  169,  168,  167,  166,
+      165,  163,  162,  161,  160,  159,  158,  157,  156,  155,
+      154,  153,  151,  150,  149,  148,  147,  146,  134,  132,
+      131,  130,  128,  127,  126,  125,  124,  123,  121,  120,
+      119,  118,  117,  116,  115,  114,  113,  112,  111,  110,
+      108,  105,  104,  103,  102,  101,  100,   98,   97,   96,
+       95,   94,   93,   92,   91,   90,   89,   88,   87,   86,
+       85,   84,   83,   82,   78,   74,   49,   44,   42,   39,
+       36,   23,   20,   17,   12,    7,    3,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
 
-      135,  133,  132,  131,  130,  129,  128,  126,  125,  124,
-      123,  122,  121,  120,  119,  118,  117,  116,  115,  113,
-      110,  109,  108,  107,  106,  105,  103,  102,  101,  100,
-       99,   98,   97,   96,   95,   94,   93,   92,   91,   90,
-       89,   88,   87,   83,   79,   51,   46,   44,   41,   38,
-       25,   22,   19,   14,    9,    5,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  448,  448,  448
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
+      442,  442,  442,  442,  442
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[150] =
+static yyconst flex_int32_t yy_rule_can_match_eol[148] =
     {   0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -774,7 +756,7 @@
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 1, 0, 0,     };
+    0, 0, 0, 0, 0, 1, 0, 0,     };
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
@@ -818,7 +800,6 @@
 static int reserved_word(yyscan_t yyscanner);
 
 #define INITIAL 0
-#define FIELDS 1
 
 #define YY_EXTRA_TYPE TParseContext*
 
@@ -1090,13 +1071,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 449 )
+				if ( yy_current_state >= 443 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 448 );
+		while ( yy_current_state != 442 );
 		yy_cp = yyg->yy_last_accepting_cpos;
 		yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1653,7 +1634,7 @@
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-{ BEGIN(FIELDS); return DOT; }
+{ return DOT; }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
@@ -1708,31 +1689,18 @@
 { return QUESTION; }
 	YY_BREAK
 case 145:
-YY_RULE_SETUP
-{ 
-    BEGIN(INITIAL);
-    yylval->lex.string = NewPoolTString(yytext); 
-    return FIELD_SELECTION;
-}
-	YY_BREAK
-case 146:
-YY_RULE_SETUP
-{}
-	YY_BREAK
-case 147:
-/* rule 147 can match eol */
+/* rule 145 can match eol */
 YY_RULE_SETUP
 { }
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(FIELDS):
 { yyterminate(); }
 	YY_BREAK
-case 148:
+case 146:
 YY_RULE_SETUP
 { assert(false); return 0; }
 	YY_BREAK
-case 149:
+case 147:
 YY_RULE_SETUP
 ECHO;
 	YY_BREAK
@@ -2028,7 +1996,7 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 449 )
+			if ( yy_current_state >= 443 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2057,11 +2025,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 449 )
+		if ( yy_current_state >= 443 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 448);
+	yy_is_jam = (yy_current_state == 442);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
diff --git a/src/compiler/glslang_tab.cpp b/src/compiler/glslang_tab.cpp
index 779b911..f91625b 100644
--- a/src/compiler/glslang_tab.cpp
+++ b/src/compiler/glslang_tab.cpp
@@ -176,52 +176,51 @@
      FLOATCONSTANT = 302,
      INTCONSTANT = 303,
      BOOLCONSTANT = 304,
-     FIELD_SELECTION = 305,
-     LEFT_OP = 306,
-     RIGHT_OP = 307,
-     INC_OP = 308,
-     DEC_OP = 309,
-     LE_OP = 310,
-     GE_OP = 311,
-     EQ_OP = 312,
-     NE_OP = 313,
-     AND_OP = 314,
-     OR_OP = 315,
-     XOR_OP = 316,
-     MUL_ASSIGN = 317,
-     DIV_ASSIGN = 318,
-     ADD_ASSIGN = 319,
-     MOD_ASSIGN = 320,
-     LEFT_ASSIGN = 321,
-     RIGHT_ASSIGN = 322,
-     AND_ASSIGN = 323,
-     XOR_ASSIGN = 324,
-     OR_ASSIGN = 325,
-     SUB_ASSIGN = 326,
-     LEFT_PAREN = 327,
-     RIGHT_PAREN = 328,
-     LEFT_BRACKET = 329,
-     RIGHT_BRACKET = 330,
-     LEFT_BRACE = 331,
-     RIGHT_BRACE = 332,
-     DOT = 333,
-     COMMA = 334,
-     COLON = 335,
-     EQUAL = 336,
-     SEMICOLON = 337,
-     BANG = 338,
-     DASH = 339,
-     TILDE = 340,
-     PLUS = 341,
-     STAR = 342,
-     SLASH = 343,
-     PERCENT = 344,
-     LEFT_ANGLE = 345,
-     RIGHT_ANGLE = 346,
-     VERTICAL_BAR = 347,
-     CARET = 348,
-     AMPERSAND = 349,
-     QUESTION = 350
+     LEFT_OP = 305,
+     RIGHT_OP = 306,
+     INC_OP = 307,
+     DEC_OP = 308,
+     LE_OP = 309,
+     GE_OP = 310,
+     EQ_OP = 311,
+     NE_OP = 312,
+     AND_OP = 313,
+     OR_OP = 314,
+     XOR_OP = 315,
+     MUL_ASSIGN = 316,
+     DIV_ASSIGN = 317,
+     ADD_ASSIGN = 318,
+     MOD_ASSIGN = 319,
+     LEFT_ASSIGN = 320,
+     RIGHT_ASSIGN = 321,
+     AND_ASSIGN = 322,
+     XOR_ASSIGN = 323,
+     OR_ASSIGN = 324,
+     SUB_ASSIGN = 325,
+     LEFT_PAREN = 326,
+     RIGHT_PAREN = 327,
+     LEFT_BRACKET = 328,
+     RIGHT_BRACKET = 329,
+     LEFT_BRACE = 330,
+     RIGHT_BRACE = 331,
+     DOT = 332,
+     COMMA = 333,
+     COLON = 334,
+     EQUAL = 335,
+     SEMICOLON = 336,
+     BANG = 337,
+     DASH = 338,
+     TILDE = 339,
+     PLUS = 340,
+     STAR = 341,
+     SLASH = 342,
+     PERCENT = 343,
+     LEFT_ANGLE = 344,
+     RIGHT_ANGLE = 345,
+     VERTICAL_BAR = 346,
+     CARET = 347,
+     AMPERSAND = 348,
+     QUESTION = 349
    };
 #endif
 
@@ -534,20 +533,20 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  74
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1437
+#define YYLAST   1490
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  96
+#define YYNTOKENS  95
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  84
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  203
+#define YYNRULES  202
 /* YYNRULES -- Number of states.  */
 #define YYNSTATES  307
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   350
+#define YYMAXUTOK   349
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -589,8 +588,7 @@
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94
 };
 
 #if YYDEBUG
@@ -601,113 +599,113 @@
        0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
       21,    23,    28,    30,    34,    37,    40,    42,    44,    46,
       50,    53,    56,    59,    61,    64,    68,    71,    73,    75,
-      77,    79,    82,    85,    88,    90,    92,    94,    96,   100,
-     104,   106,   110,   114,   116,   118,   122,   126,   130,   134,
-     136,   140,   144,   146,   148,   150,   152,   156,   158,   162,
-     164,   168,   170,   176,   178,   182,   184,   186,   188,   190,
-     192,   194,   198,   200,   203,   206,   211,   214,   216,   218,
-     221,   225,   229,   232,   238,   242,   245,   249,   252,   253,
-     255,   257,   259,   261,   263,   267,   273,   280,   286,   288,
-     291,   296,   302,   307,   310,   312,   315,   317,   319,   321,
-     324,   326,   328,   331,   333,   335,   337,   339,   344,   346,
+      77,    80,    83,    86,    88,    90,    92,    94,    98,   102,
+     104,   108,   112,   114,   116,   120,   124,   128,   132,   134,
+     138,   142,   144,   146,   148,   150,   154,   156,   160,   162,
+     166,   168,   174,   176,   180,   182,   184,   186,   188,   190,
+     192,   196,   198,   201,   204,   209,   212,   214,   216,   219,
+     223,   227,   230,   236,   240,   243,   247,   250,   251,   253,
+     255,   257,   259,   261,   265,   271,   278,   284,   286,   289,
+     294,   300,   305,   308,   310,   313,   315,   317,   319,   322,
+     324,   326,   329,   331,   333,   335,   337,   342,   344,   346,
      348,   350,   352,   354,   356,   358,   360,   362,   364,   366,
      368,   370,   372,   374,   376,   378,   380,   382,   384,   386,
-     388,   389,   396,   397,   403,   405,   408,   412,   414,   418,
-     420,   425,   427,   429,   431,   433,   435,   437,   439,   441,
-     443,   446,   447,   448,   454,   456,   458,   459,   462,   463,
-     466,   469,   473,   475,   478,   480,   483,   489,   493,   495,
-     497,   502,   503,   510,   511,   520,   521,   529,   531,   533,
-     535,   536,   539,   543,   546,   549,   552,   556,   559,   561,
-     564,   566,   568,   569
+     387,   394,   395,   401,   403,   406,   410,   412,   416,   418,
+     423,   425,   427,   429,   431,   433,   435,   437,   439,   441,
+     444,   445,   446,   452,   454,   456,   457,   460,   461,   464,
+     467,   471,   473,   476,   478,   481,   487,   491,   493,   495,
+     500,   501,   508,   509,   518,   519,   527,   529,   531,   533,
+     534,   537,   541,   544,   547,   550,   554,   557,   559,   562,
+     564,   566,   567
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     176,     0,    -1,    45,    -1,    46,    -1,    45,    -1,    98,
-      -1,    48,    -1,    47,    -1,    49,    -1,    72,   125,    73,
-      -1,    99,    -1,   100,    74,   101,    75,    -1,   102,    -1,
-     100,    78,    50,    -1,   100,    53,    -1,   100,    54,    -1,
-     125,    -1,   103,    -1,   104,    -1,   100,    78,   104,    -1,
-     106,    73,    -1,   105,    73,    -1,   107,    39,    -1,   107,
-      -1,   107,   123,    -1,   106,    79,   123,    -1,   108,    72,
-      -1,   143,    -1,    45,    -1,    50,    -1,   100,    -1,    53,
-     109,    -1,    54,   109,    -1,   110,   109,    -1,    86,    -1,
-      84,    -1,    83,    -1,   109,    -1,   111,    87,   109,    -1,
-     111,    88,   109,    -1,   111,    -1,   112,    86,   111,    -1,
-     112,    84,   111,    -1,   112,    -1,   113,    -1,   114,    90,
-     113,    -1,   114,    91,   113,    -1,   114,    55,   113,    -1,
-     114,    56,   113,    -1,   114,    -1,   115,    57,   114,    -1,
-     115,    58,   114,    -1,   115,    -1,   116,    -1,   117,    -1,
-     118,    -1,   119,    59,   118,    -1,   119,    -1,   120,    61,
-     119,    -1,   120,    -1,   121,    60,   120,    -1,   121,    -1,
-     121,    95,   125,    80,   123,    -1,   122,    -1,   109,   124,
-     123,    -1,    81,    -1,    62,    -1,    63,    -1,    64,    -1,
-      71,    -1,   123,    -1,   125,    79,   123,    -1,   122,    -1,
-     128,    82,    -1,   136,    82,    -1,     7,   141,   142,    82,
-      -1,   129,    73,    -1,   131,    -1,   130,    -1,   131,   133,
-      -1,   130,    79,   133,    -1,   138,    45,    72,    -1,   140,
-      97,    -1,   140,    97,    74,   126,    75,    -1,   139,   134,
-     132,    -1,   134,   132,    -1,   139,   134,   135,    -1,   134,
-     135,    -1,    -1,    33,    -1,    34,    -1,    35,    -1,   140,
-      -1,   137,    -1,   136,    79,    97,    -1,   136,    79,    97,
-      74,    75,    -1,   136,    79,    97,    74,   126,    75,    -1,
-     136,    79,    97,    81,   151,    -1,   138,    -1,   138,    97,
-      -1,   138,    97,    74,    75,    -1,   138,    97,    74,   126,
-      75,    -1,   138,    97,    81,   151,    -1,     3,    45,    -1,
-     140,    -1,   139,   140,    -1,     9,    -1,     8,    -1,    37,
-      -1,     3,    37,    -1,    36,    -1,   142,    -1,   141,   142,
-      -1,     4,    -1,     5,    -1,     6,    -1,   143,    -1,   143,
-      74,   126,    75,    -1,    39,    -1,    11,    -1,    12,    -1,
-      10,    -1,    27,    -1,    28,    -1,    29,    -1,    21,    -1,
-      22,    -1,    23,    -1,    24,    -1,    25,    -1,    26,    -1,
-      30,    -1,    31,    -1,    32,    -1,    41,    -1,    42,    -1,
-      43,    -1,    44,    -1,   144,    -1,    46,    -1,    -1,    38,
-      97,    76,   145,   147,    77,    -1,    -1,    38,    76,   146,
-     147,    77,    -1,   148,    -1,   147,   148,    -1,   140,   149,
-      82,    -1,   150,    -1,   149,    79,   150,    -1,    97,    -1,
-      97,    74,   126,    75,    -1,   123,    -1,   127,    -1,   155,
-      -1,   154,    -1,   152,    -1,   164,    -1,   165,    -1,   168,
-      -1,   175,    -1,    76,    77,    -1,    -1,    -1,    76,   156,
-     163,   157,    77,    -1,   162,    -1,   154,    -1,    -1,   160,
-     162,    -1,    -1,   161,   154,    -1,    76,    77,    -1,    76,
-     163,    77,    -1,   153,    -1,   163,   153,    -1,    82,    -1,
-     125,    82,    -1,    18,    72,   125,    73,   166,    -1,   159,
-      16,   159,    -1,   159,    -1,   125,    -1,   138,    97,    81,
-     151,    -1,    -1,    40,    72,   169,   167,    73,   158,    -1,
-      -1,    15,   170,   159,    40,    72,   125,    73,    82,    -1,
-      -1,    17,    72,   171,   172,   174,    73,   158,    -1,   164,
-      -1,   152,    -1,   167,    -1,    -1,   173,    82,    -1,   173,
-      82,   125,    -1,    14,    82,    -1,    13,    82,    -1,    20,
-      82,    -1,    20,   125,    82,    -1,    19,    82,    -1,   177,
-      -1,   176,   177,    -1,   178,    -1,   127,    -1,    -1,   128,
-     179,   162,    -1
+     175,     0,    -1,    45,    -1,    46,    -1,    45,    -1,    97,
+      -1,    48,    -1,    47,    -1,    49,    -1,    71,   124,    72,
+      -1,    98,    -1,    99,    73,   100,    74,    -1,   101,    -1,
+      99,    77,    96,    -1,    99,    52,    -1,    99,    53,    -1,
+     124,    -1,   102,    -1,   103,    -1,    99,    77,   103,    -1,
+     105,    72,    -1,   104,    72,    -1,   106,    39,    -1,   106,
+      -1,   106,   122,    -1,   105,    78,   122,    -1,   107,    71,
+      -1,   142,    -1,    45,    -1,    99,    -1,    52,   108,    -1,
+      53,   108,    -1,   109,   108,    -1,    85,    -1,    83,    -1,
+      82,    -1,   108,    -1,   110,    86,   108,    -1,   110,    87,
+     108,    -1,   110,    -1,   111,    85,   110,    -1,   111,    83,
+     110,    -1,   111,    -1,   112,    -1,   113,    89,   112,    -1,
+     113,    90,   112,    -1,   113,    54,   112,    -1,   113,    55,
+     112,    -1,   113,    -1,   114,    56,   113,    -1,   114,    57,
+     113,    -1,   114,    -1,   115,    -1,   116,    -1,   117,    -1,
+     118,    58,   117,    -1,   118,    -1,   119,    60,   118,    -1,
+     119,    -1,   120,    59,   119,    -1,   120,    -1,   120,    94,
+     124,    79,   122,    -1,   121,    -1,   108,   123,   122,    -1,
+      80,    -1,    61,    -1,    62,    -1,    63,    -1,    70,    -1,
+     122,    -1,   124,    78,   122,    -1,   121,    -1,   127,    81,
+      -1,   135,    81,    -1,     7,   140,   141,    81,    -1,   128,
+      72,    -1,   130,    -1,   129,    -1,   130,   132,    -1,   129,
+      78,   132,    -1,   137,    45,    71,    -1,   139,    96,    -1,
+     139,    96,    73,   125,    74,    -1,   138,   133,   131,    -1,
+     133,   131,    -1,   138,   133,   134,    -1,   133,   134,    -1,
+      -1,    33,    -1,    34,    -1,    35,    -1,   139,    -1,   136,
+      -1,   135,    78,    96,    -1,   135,    78,    96,    73,    74,
+      -1,   135,    78,    96,    73,   125,    74,    -1,   135,    78,
+      96,    80,   150,    -1,   137,    -1,   137,    96,    -1,   137,
+      96,    73,    74,    -1,   137,    96,    73,   125,    74,    -1,
+     137,    96,    80,   150,    -1,     3,    45,    -1,   139,    -1,
+     138,   139,    -1,     9,    -1,     8,    -1,    37,    -1,     3,
+      37,    -1,    36,    -1,   141,    -1,   140,   141,    -1,     4,
+      -1,     5,    -1,     6,    -1,   142,    -1,   142,    73,   125,
+      74,    -1,    39,    -1,    11,    -1,    12,    -1,    10,    -1,
+      27,    -1,    28,    -1,    29,    -1,    21,    -1,    22,    -1,
+      23,    -1,    24,    -1,    25,    -1,    26,    -1,    30,    -1,
+      31,    -1,    32,    -1,    41,    -1,    42,    -1,    43,    -1,
+      44,    -1,   143,    -1,    46,    -1,    -1,    38,    96,    75,
+     144,   146,    76,    -1,    -1,    38,    75,   145,   146,    76,
+      -1,   147,    -1,   146,   147,    -1,   139,   148,    81,    -1,
+     149,    -1,   148,    78,   149,    -1,    96,    -1,    96,    73,
+     125,    74,    -1,   122,    -1,   126,    -1,   154,    -1,   153,
+      -1,   151,    -1,   163,    -1,   164,    -1,   167,    -1,   174,
+      -1,    75,    76,    -1,    -1,    -1,    75,   155,   162,   156,
+      76,    -1,   161,    -1,   153,    -1,    -1,   159,   161,    -1,
+      -1,   160,   153,    -1,    75,    76,    -1,    75,   162,    76,
+      -1,   152,    -1,   162,   152,    -1,    81,    -1,   124,    81,
+      -1,    18,    71,   124,    72,   165,    -1,   158,    16,   158,
+      -1,   158,    -1,   124,    -1,   137,    96,    80,   150,    -1,
+      -1,    40,    71,   168,   166,    72,   157,    -1,    -1,    15,
+     169,   158,    40,    71,   124,    72,    81,    -1,    -1,    17,
+      71,   170,   171,   173,    72,   157,    -1,   163,    -1,   151,
+      -1,   166,    -1,    -1,   172,    81,    -1,   172,    81,   124,
+      -1,    14,    81,    -1,    13,    81,    -1,    20,    81,    -1,
+      20,   124,    81,    -1,    19,    81,    -1,   176,    -1,   175,
+     176,    -1,   177,    -1,   126,    -1,    -1,   127,   178,   161,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   169,   169,   170,   173,   208,   211,   224,   229,   234,
-     240,   243,   322,   325,   426,   436,   449,   457,   557,   560,
-     568,   572,   579,   583,   590,   596,   605,   613,   668,   675,
-     685,   688,   698,   708,   729,   730,   731,   736,   737,   746,
-     758,   759,   767,   778,   782,   783,   793,   803,   813,   826,
-     827,   837,   850,   854,   858,   862,   863,   876,   877,   890,
-     891,   904,   905,   922,   923,   936,   937,   938,   939,   940,
-     944,   947,   958,   966,   993,   998,  1012,  1050,  1053,  1060,
-    1068,  1089,  1110,  1121,  1150,  1155,  1165,  1170,  1180,  1183,
-    1186,  1189,  1195,  1202,  1205,  1227,  1245,  1269,  1292,  1296,
-    1314,  1322,  1354,  1374,  1463,  1472,  1495,  1498,  1504,  1512,
-    1520,  1528,  1538,  1545,  1548,  1551,  1557,  1560,  1575,  1579,
-    1583,  1587,  1596,  1601,  1606,  1611,  1616,  1621,  1626,  1631,
-    1636,  1641,  1647,  1653,  1659,  1664,  1669,  1678,  1687,  1692,
-    1705,  1705,  1719,  1719,  1728,  1731,  1746,  1782,  1786,  1792,
-    1800,  1816,  1820,  1824,  1825,  1831,  1832,  1833,  1834,  1835,
-    1839,  1840,  1840,  1840,  1850,  1851,  1855,  1855,  1856,  1856,
-    1861,  1864,  1874,  1877,  1883,  1884,  1888,  1896,  1900,  1910,
-    1915,  1932,  1932,  1937,  1937,  1944,  1944,  1952,  1955,  1961,
-    1964,  1970,  1974,  1981,  1988,  1995,  2002,  2013,  2022,  2026,
-    2033,  2036,  2042,  2042
+       0,   168,   168,   169,   172,   207,   210,   223,   228,   233,
+     239,   242,   321,   324,   425,   435,   448,   456,   556,   559,
+     567,   571,   578,   582,   589,   595,   604,   612,   667,   677,
+     680,   690,   700,   721,   722,   723,   728,   729,   738,   750,
+     751,   759,   770,   774,   775,   785,   795,   805,   818,   819,
+     829,   842,   846,   850,   854,   855,   868,   869,   882,   883,
+     896,   897,   914,   915,   928,   929,   930,   931,   932,   936,
+     939,   950,   958,   985,   990,  1004,  1042,  1045,  1052,  1060,
+    1081,  1102,  1113,  1142,  1147,  1157,  1162,  1172,  1175,  1178,
+    1181,  1187,  1194,  1197,  1219,  1237,  1261,  1284,  1288,  1306,
+    1314,  1346,  1366,  1455,  1464,  1487,  1490,  1496,  1504,  1512,
+    1520,  1530,  1537,  1540,  1543,  1549,  1552,  1567,  1571,  1575,
+    1579,  1588,  1593,  1598,  1603,  1608,  1613,  1618,  1623,  1628,
+    1633,  1639,  1645,  1651,  1656,  1661,  1670,  1679,  1684,  1697,
+    1697,  1711,  1711,  1720,  1723,  1738,  1774,  1778,  1784,  1792,
+    1808,  1812,  1816,  1817,  1823,  1824,  1825,  1826,  1827,  1831,
+    1832,  1832,  1832,  1842,  1843,  1847,  1847,  1848,  1848,  1853,
+    1856,  1866,  1869,  1875,  1876,  1880,  1888,  1892,  1902,  1907,
+    1924,  1924,  1929,  1929,  1936,  1936,  1944,  1947,  1953,  1956,
+    1962,  1966,  1973,  1980,  1987,  1994,  2005,  2014,  2018,  2025,
+    2028,  2034,  2034
 };
 #endif
 
@@ -724,18 +722,18 @@
   "MATRIX3", "MATRIX4", "IN_QUAL", "OUT_QUAL", "INOUT_QUAL", "UNIFORM",
   "VARYING", "STRUCT", "VOID_TYPE", "WHILE", "SAMPLER2D", "SAMPLERCUBE",
   "SAMPLER_EXTERNAL_OES", "SAMPLER2DRECT", "IDENTIFIER", "TYPE_NAME",
-  "FLOATCONSTANT", "INTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION",
-  "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP",
-  "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN",
-  "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN",
-  "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN",
-  "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT",
-  "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS",
-  "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR",
-  "CARET", "AMPERSAND", "QUESTION", "$accept", "identifier",
-  "variable_identifier", "primary_expression", "postfix_expression",
-  "integer_expression", "function_call", "function_call_or_method",
-  "function_call_generic", "function_call_header_no_parameters",
+  "FLOATCONSTANT", "INTCONSTANT", "BOOLCONSTANT", "LEFT_OP", "RIGHT_OP",
+  "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP",
+  "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
+  "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
+  "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET",
+  "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON",
+  "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH",
+  "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET",
+  "AMPERSAND", "QUESTION", "$accept", "identifier", "variable_identifier",
+  "primary_expression", "postfix_expression", "integer_expression",
+  "function_call", "function_call_or_method", "function_call_generic",
+  "function_call_header_no_parameters",
   "function_call_header_with_parameters", "function_call_header",
   "function_identifier", "unary_expression", "unary_operator",
   "multiplicative_expression", "additive_expression", "shift_expression",
@@ -778,34 +776,34 @@
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,   348,   349,   350
+     345,   346,   347,   348,   349
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    96,    97,    97,    98,    99,    99,    99,    99,    99,
-     100,   100,   100,   100,   100,   100,   101,   102,   103,   103,
-     104,   104,   105,   105,   106,   106,   107,   108,   108,   108,
-     109,   109,   109,   109,   110,   110,   110,   111,   111,   111,
-     112,   112,   112,   113,   114,   114,   114,   114,   114,   115,
-     115,   115,   116,   117,   118,   119,   119,   120,   120,   121,
-     121,   122,   122,   123,   123,   124,   124,   124,   124,   124,
-     125,   125,   126,   127,   127,   127,   128,   129,   129,   130,
-     130,   131,   132,   132,   133,   133,   133,   133,   134,   134,
-     134,   134,   135,   136,   136,   136,   136,   136,   137,   137,
-     137,   137,   137,   137,   138,   138,   139,   139,   139,   139,
-     139,   140,   140,   141,   141,   141,   142,   142,   143,   143,
-     143,   143,   143,   143,   143,   143,   143,   143,   143,   143,
-     143,   143,   143,   143,   143,   143,   143,   143,   143,   143,
-     145,   144,   146,   144,   147,   147,   148,   149,   149,   150,
-     150,   151,   152,   153,   153,   154,   154,   154,   154,   154,
-     155,   156,   157,   155,   158,   158,   160,   159,   161,   159,
-     162,   162,   163,   163,   164,   164,   165,   166,   166,   167,
-     167,   169,   168,   170,   168,   171,   168,   172,   172,   173,
-     173,   174,   174,   175,   175,   175,   175,   175,   176,   176,
-     177,   177,   179,   178
+       0,    95,    96,    96,    97,    98,    98,    98,    98,    98,
+      99,    99,    99,    99,    99,    99,   100,   101,   102,   102,
+     103,   103,   104,   104,   105,   105,   106,   107,   107,   108,
+     108,   108,   108,   109,   109,   109,   110,   110,   110,   111,
+     111,   111,   112,   113,   113,   113,   113,   113,   114,   114,
+     114,   115,   116,   117,   118,   118,   119,   119,   120,   120,
+     121,   121,   122,   122,   123,   123,   123,   123,   123,   124,
+     124,   125,   126,   126,   126,   127,   128,   128,   129,   129,
+     130,   131,   131,   132,   132,   132,   132,   133,   133,   133,
+     133,   134,   135,   135,   135,   135,   135,   136,   136,   136,
+     136,   136,   136,   137,   137,   138,   138,   138,   138,   138,
+     139,   139,   140,   140,   140,   141,   141,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   142,   142,   142,
+     142,   142,   142,   142,   142,   142,   142,   142,   142,   144,
+     143,   145,   143,   146,   146,   147,   148,   148,   149,   149,
+     150,   151,   152,   152,   153,   153,   153,   153,   153,   154,
+     155,   156,   154,   157,   157,   159,   158,   160,   158,   161,
+     161,   162,   162,   163,   163,   164,   165,   165,   166,   166,
+     168,   167,   169,   167,   170,   167,   171,   171,   172,   172,
+     173,   173,   174,   174,   174,   174,   174,   175,   175,   176,
+     176,   178,   177
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -814,24 +812,24 @@
        0,     2,     1,     1,     1,     1,     1,     1,     1,     3,
        1,     4,     1,     3,     2,     2,     1,     1,     1,     3,
        2,     2,     2,     1,     2,     3,     2,     1,     1,     1,
-       1,     2,     2,     2,     1,     1,     1,     1,     3,     3,
-       1,     3,     3,     1,     1,     3,     3,     3,     3,     1,
-       3,     3,     1,     1,     1,     1,     3,     1,     3,     1,
-       3,     1,     5,     1,     3,     1,     1,     1,     1,     1,
-       1,     3,     1,     2,     2,     4,     2,     1,     1,     2,
-       3,     3,     2,     5,     3,     2,     3,     2,     0,     1,
-       1,     1,     1,     1,     3,     5,     6,     5,     1,     2,
-       4,     5,     4,     2,     1,     2,     1,     1,     1,     2,
-       1,     1,     2,     1,     1,     1,     1,     4,     1,     1,
+       2,     2,     2,     1,     1,     1,     1,     3,     3,     1,
+       3,     3,     1,     1,     3,     3,     3,     3,     1,     3,
+       3,     1,     1,     1,     1,     3,     1,     3,     1,     3,
+       1,     5,     1,     3,     1,     1,     1,     1,     1,     1,
+       3,     1,     2,     2,     4,     2,     1,     1,     2,     3,
+       3,     2,     5,     3,     2,     3,     2,     0,     1,     1,
+       1,     1,     1,     3,     5,     6,     5,     1,     2,     4,
+       5,     4,     2,     1,     2,     1,     1,     1,     2,     1,
+       1,     2,     1,     1,     1,     1,     4,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     6,     0,     5,     1,     2,     3,     1,     3,     1,
-       4,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     0,     0,     5,     1,     1,     0,     2,     0,     2,
-       2,     3,     1,     2,     1,     2,     5,     3,     1,     1,
-       4,     0,     6,     0,     8,     0,     7,     1,     1,     1,
-       0,     2,     3,     2,     2,     2,     3,     2,     1,     2,
-       1,     1,     0,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       6,     0,     5,     1,     2,     3,     1,     3,     1,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+       0,     0,     5,     1,     1,     0,     2,     0,     2,     2,
+       3,     1,     2,     1,     2,     5,     3,     1,     1,     4,
+       0,     6,     0,     8,     0,     7,     1,     1,     1,     0,
+       2,     3,     2,     2,     2,     3,     2,     1,     2,     1,
+       1,     0,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -839,50 +837,50 @@
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,   113,   114,   115,     0,   107,   106,   121,   119,
-     120,   125,   126,   127,   128,   129,   130,   122,   123,   124,
-     131,   132,   133,   110,   108,     0,   118,   134,   135,   136,
-     137,   139,   201,   202,     0,    78,    88,     0,    93,    98,
-       0,   104,     0,   111,   116,   138,     0,   198,   200,   109,
-     103,     0,     2,     3,   142,     0,    73,     0,    76,    88,
-       0,    89,    90,    91,    79,     0,    88,     0,    74,     2,
-      99,   105,   112,     0,     1,   199,     0,     0,   140,     0,
-     203,    80,    85,    87,    92,     0,    94,    81,     0,     0,
-       4,     7,     6,     8,    29,     0,     0,     0,    36,    35,
-      34,     5,    10,    30,    12,    17,    18,     0,     0,    23,
-       0,    37,     0,    40,    43,    44,    49,    52,    53,    54,
-      55,    57,    59,    61,    72,     0,    27,    75,     0,     0,
-     144,     0,     0,     0,   183,     0,     0,     0,     0,     0,
-     161,   170,   174,    37,    63,    70,     0,   152,     0,   116,
-     155,   172,   154,   153,     0,   156,   157,   158,   159,    82,
-      84,    86,     0,     0,   100,     0,   151,   102,    31,    32,
-       0,    14,    15,     0,     0,    21,    20,     0,    22,    24,
-      26,    33,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   117,   149,     0,   147,
-     143,   145,     0,   194,   193,   168,   185,     0,   197,   195,
-       0,   181,   160,     0,    66,    67,    68,    69,    65,     0,
-       0,   175,   171,   173,     0,    95,     0,    97,   101,     9,
-       0,    16,    28,    13,    19,    25,    38,    39,    42,    41,
-      47,    48,    45,    46,    50,    51,    56,    58,    60,     0,
-       0,     0,   146,   141,     0,     0,     0,     0,     0,   196,
-       0,   162,    64,    71,     0,    96,    11,     0,     0,   148,
-       0,   167,   169,   188,   187,   190,   168,   179,     0,     0,
-       0,    83,    62,   150,     0,   189,     0,     0,   178,   176,
-       0,     0,   163,     0,   191,     0,   168,     0,   165,   182,
-     164,     0,   192,   186,   177,   180,   184
+       0,     0,   112,   113,   114,     0,   106,   105,   120,   118,
+     119,   124,   125,   126,   127,   128,   129,   121,   122,   123,
+     130,   131,   132,   109,   107,     0,   117,   133,   134,   135,
+     136,   138,   200,   201,     0,    77,    87,     0,    92,    97,
+       0,   103,     0,   110,   115,   137,     0,   197,   199,   108,
+     102,     0,     2,     3,   141,     0,    72,     0,    75,    87,
+       0,    88,    89,    90,    78,     0,    87,     0,    73,     2,
+      98,   104,   111,     0,     1,   198,     0,     0,   139,     0,
+     202,    79,    84,    86,    91,     0,    93,    80,     0,     0,
+       4,     7,     6,     8,     0,     0,     0,    35,    34,    33,
+       5,    10,    29,    12,    17,    18,     0,     0,    23,     0,
+      36,     0,    39,    42,    43,    48,    51,    52,    53,    54,
+      56,    58,    60,    71,     0,    27,    74,     0,     0,   143,
+       0,     0,     0,   182,     0,     0,     0,     0,     0,   160,
+     169,   173,    36,    62,    69,     0,   151,     0,   115,   154,
+     171,   153,   152,     0,   155,   156,   157,   158,    81,    83,
+      85,     0,     0,    99,     0,   150,   101,    30,    31,     0,
+      14,    15,     0,     0,    21,    20,     0,    22,    24,    26,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   116,   148,     0,   146,   142,
+     144,     0,   193,   192,   167,   184,     0,   196,   194,     0,
+     180,   159,     0,    65,    66,    67,    68,    64,     0,     0,
+     174,   170,   172,     0,    94,     0,    96,   100,     9,     0,
+      16,     2,     3,    13,    19,    25,    37,    38,    41,    40,
+      46,    47,    44,    45,    49,    50,    55,    57,    59,     0,
+       0,     0,   145,   140,     0,     0,     0,     0,     0,   195,
+       0,   161,    63,    70,     0,    95,    11,     0,     0,   147,
+       0,   166,   168,   187,   186,   189,   167,   178,     0,     0,
+       0,    82,    61,   149,     0,   188,     0,     0,   177,   175,
+       0,     0,   162,     0,   190,     0,   167,     0,   164,   181,
+     163,     0,   191,   185,   176,   179,   183
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,   197,   101,   102,   103,   230,   104,   105,   106,   107,
-     108,   109,   110,   143,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   144,   145,   219,   146,
-     125,   147,   148,    34,    35,    36,    82,    64,    65,    83,
-      37,    38,    39,    40,    41,    42,    43,   126,    45,   131,
-      77,   129,   130,   198,   199,   167,   150,   151,   152,   153,
-     213,   280,   299,   254,   255,   256,   300,   154,   155,   156,
-     289,   279,   157,   260,   205,   257,   275,   286,   287,   158,
+      -1,   196,   100,   101,   102,   229,   103,   104,   105,   106,
+     107,   108,   109,   142,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   143,   144,   218,   145,
+     124,   146,   147,    34,    35,    36,    82,    64,    65,    83,
+      37,    38,    39,    40,    41,    42,    43,   125,    45,   130,
+      77,   128,   129,   197,   198,   166,   149,   150,   151,   152,
+     212,   280,   299,   254,   255,   256,   300,   153,   154,   155,
+     289,   279,   156,   260,   204,   257,   275,   286,   287,   157,
       46,    47,    48,    57
 };
 
@@ -891,203 +889,209 @@
 #define YYPACT_NINF -261
 static const yytype_int16 yypact[] =
 {
-    1274,   -14,  -261,  -261,  -261,   122,  -261,  -261,  -261,  -261,
+    1327,   -20,  -261,  -261,  -261,   113,  -261,  -261,  -261,  -261,
     -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
-    -261,  -261,  -261,  -261,  -261,   -13,  -261,  -261,  -261,  -261,
-    -261,  -261,  -261,   -57,   -59,   -41,    63,     7,  -261,    89,
-    1317,  -261,  1391,  -261,    -1,  -261,  1230,  -261,  -261,  -261,
-    -261,  1391,  -261,  -261,  -261,   -26,  -261,    11,  -261,    75,
-      76,  -261,  -261,  -261,  -261,  1317,   128,    92,  -261,     3,
-     -46,  -261,  -261,   995,  -261,  -261,    36,  1317,  -261,   293,
-    -261,  -261,  -261,  -261,    92,  1317,   -37,  -261,   194,   995,
-      58,  -261,  -261,  -261,  -261,   995,   995,   995,  -261,  -261,
-    -261,  -261,  -261,    14,  -261,  -261,  -261,    95,    -9,  1061,
-     104,  -261,   995,    77,   -27,  -261,   -29,   113,  -261,  -261,
-    -261,   119,   126,   -47,  -261,   108,  -261,  -261,    92,  1130,
-    -261,  1317,   106,   107,  -261,   118,   120,   109,   863,   123,
-     117,  -261,  -261,    96,  -261,  -261,    23,  -261,   -57,    83,
-    -261,  -261,  -261,  -261,   377,  -261,  -261,  -261,  -261,   124,
-    -261,  -261,   929,   995,  -261,   121,  -261,  -261,  -261,  -261,
-       1,  -261,  -261,   995,  1354,  -261,  -261,   995,   125,  -261,
-    -261,  -261,   995,   995,   995,   995,   995,   995,   995,   995,
-     995,   995,   995,   995,   995,   995,  -261,   134,    24,  -261,
-    -261,  -261,  1173,  -261,  -261,   133,  -261,   995,  -261,  -261,
-      38,  -261,  -261,   461,  -261,  -261,  -261,  -261,  -261,   995,
-     995,  -261,  -261,  -261,   995,  -261,   136,  -261,  -261,  -261,
-     137,   135,  -261,   127,  -261,  -261,  -261,  -261,    77,    77,
-    -261,  -261,  -261,  -261,   -29,   -29,  -261,   119,   126,    93,
-     995,    92,  -261,  -261,   160,    11,   629,   713,    28,  -261,
-     797,   461,  -261,  -261,   152,  -261,  -261,   995,   153,  -261,
-     157,  -261,  -261,  -261,  -261,   797,   133,   135,    92,   158,
-     168,  -261,  -261,  -261,   995,  -261,   148,   161,   230,  -261,
-     169,   545,  -261,    42,   995,   545,   133,   995,  -261,  -261,
-    -261,   167,   135,  -261,  -261,  -261,  -261
+    -261,  -261,  -261,  -261,  -261,   -19,  -261,  -261,  -261,  -261,
+    -261,  -261,  -261,   -61,   -40,   -28,    75,    -7,  -261,    24,
+    1370,  -261,  1444,  -261,   -11,  -261,  1283,  -261,  -261,  -261,
+    -261,  1444,  -261,  -261,  -261,     6,  -261,    54,  -261,    88,
+      62,  -261,  -261,  -261,  -261,  1370,    59,    91,  -261,    36,
+     -50,  -261,  -261,  1051,  -261,  -261,    63,  1370,  -261,   293,
+    -261,  -261,  -261,  -261,    91,  1370,   -12,  -261,   856,  1051,
+      77,  -261,  -261,  -261,  1051,  1051,  1051,  -261,  -261,  -261,
+    -261,  -261,   -14,  -261,  -261,  -261,    84,   -44,  1116,    95,
+    -261,  1051,    53,     3,  -261,   -36,    89,  -261,  -261,  -261,
+     104,   107,   -45,  -261,    96,  -261,  -261,    91,  1184,  -261,
+    1370,    92,    93,  -261,    98,   101,    94,   921,   105,   102,
+    -261,  -261,    72,  -261,  -261,     9,  -261,   -61,    42,  -261,
+    -261,  -261,  -261,   376,  -261,  -261,  -261,  -261,   106,  -261,
+    -261,   986,  1051,  -261,   103,  -261,  -261,  -261,  -261,   -41,
+    -261,  -261,  1051,  1407,  -261,  -261,  1051,   110,  -261,  -261,
+    -261,  1051,  1051,  1051,  1051,  1051,  1051,  1051,  1051,  1051,
+    1051,  1051,  1051,  1051,  1051,  -261,   109,    23,  -261,  -261,
+    -261,  1227,  -261,  -261,   111,  -261,  1051,  -261,  -261,    25,
+    -261,  -261,   459,  -261,  -261,  -261,  -261,  -261,  1051,  1051,
+    -261,  -261,  -261,  1051,  -261,   114,  -261,  -261,  -261,   115,
+     112,    77,   116,  -261,  -261,  -261,  -261,  -261,    53,    53,
+    -261,  -261,  -261,  -261,   -36,   -36,  -261,   104,   107,    76,
+    1051,    91,  -261,  -261,   145,    54,   625,   708,    -6,  -261,
+     791,   459,  -261,  -261,   117,  -261,  -261,  1051,   120,  -261,
+     124,  -261,  -261,  -261,  -261,   791,   111,   112,    91,   125,
+     122,  -261,  -261,  -261,  1051,  -261,   118,   128,   180,  -261,
+     126,   542,  -261,    -5,  1051,   542,   111,  1051,  -261,  -261,
+    -261,   123,   112,  -261,  -261,  -261,  -261
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -261,   -24,  -261,  -261,  -261,  -261,  -261,  -261,    78,  -261,
-    -261,  -261,  -261,   -43,  -261,   -10,  -261,   -64,    -5,  -261,
-    -261,  -261,    59,    60,    61,  -261,   -68,   -87,  -261,   -91,
-     -71,     9,    10,  -261,  -261,  -261,   173,   200,   196,   178,
-    -261,  -261,  -236,   -25,   -36,   259,   -30,     0,  -261,  -261,
-    -261,   139,  -121,  -261,    16,  -145,     8,  -147,  -237,  -261,
-    -261,  -261,   -23,  -260,  -261,  -261,   -54,    55,    17,  -261,
-    -261,    -4,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
-    -261,   227,  -261,  -261
+    -261,   -24,  -261,  -261,  -261,  -261,  -261,  -261,    34,  -261,
+    -261,  -261,  -261,    32,  -261,   -33,  -261,   -27,   -26,  -261,
+    -261,  -261,    14,    16,    18,  -261,   -66,   -87,  -261,   -92,
+     -85,    11,    12,  -261,  -261,  -261,   141,   150,   161,   143,
+    -261,  -261,  -231,     5,   -30,   224,   -18,     0,  -261,  -261,
+    -261,   100,  -119,  -261,   -17,  -156,   -25,  -145,  -243,  -261,
+    -261,  -261,   -64,  -260,  -261,  -261,   -52,    21,   -22,  -261,
+    -261,   -39,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
+    -261,   191,  -261,  -261
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -167
+#define YYTABLE_NINF -166
 static const yytype_int16 yytable[] =
 {
-      44,    55,   166,    80,    71,   124,   170,   223,   201,    32,
-      33,    66,    72,   194,    58,    70,   288,   165,   227,   272,
-     124,    76,   179,    49,   278,    56,   186,   187,    88,    84,
-     111,    50,    52,    53,    66,    89,   304,   162,    59,   278,
-      44,   128,    44,    86,   163,   111,    44,   210,   195,    84,
-      78,    44,   168,   169,   298,    32,    33,   184,   298,   185,
-     159,   188,   189,    54,   176,    44,    60,   171,   172,   181,
-     177,     6,     7,    73,   229,    87,   166,    44,    60,   149,
-     220,   201,   231,     6,     7,    44,    67,    79,   173,    68,
-     235,   226,   174,   128,   124,   128,    61,    62,    63,    23,
-      24,   276,   220,   251,   249,   221,   252,   220,    61,    62,
-      63,    23,    24,    49,   223,   301,   258,   220,   127,   111,
-     259,   220,   240,   241,   242,   243,     2,     3,     4,    44,
-     -28,    44,   262,   263,    69,    53,   -77,    52,    53,   236,
-     237,   111,   111,   111,   111,   111,   111,   111,   111,   111,
-     111,   111,   305,   264,   149,   -27,   124,    73,   214,   215,
-     216,    61,    62,    63,   182,   183,   128,   217,   175,   277,
-     190,   191,   220,   267,   238,   239,   180,   218,   192,   268,
-     282,   111,   124,   196,   277,   244,   245,   193,   203,   204,
-     206,   208,   207,   293,   212,   211,   228,  -118,   224,   -29,
-     270,   271,    44,   302,     8,     9,    10,   111,   250,  -166,
-     166,   265,   266,   149,   220,    11,    12,    13,    14,    15,
-      16,    17,    18,    19,    20,    21,    22,   281,   283,   284,
-     294,   291,    25,    26,   295,    27,    28,    29,    30,    90,
-      31,    91,    92,    93,    94,   292,   296,    95,    96,   306,
-     297,   246,   234,   247,   290,   248,   149,   149,   160,    81,
-     149,   149,    85,   161,    51,   273,    97,   269,   261,   164,
-     202,   285,   303,    75,   274,   149,     0,    98,    99,     0,
-     100,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   149,     0,     0,     0,   149,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,   132,   133,   134,     0,
-     135,   136,   137,   138,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
-      24,    25,    26,   139,    27,    28,    29,    30,    90,    31,
-      91,    92,    93,    94,     0,     0,    95,    96,     0,     0,
+      44,    55,   165,   164,   169,    80,   226,   123,   222,   200,
+      71,    32,    33,   272,   193,    70,   288,    49,   185,   186,
+      56,   178,   123,    88,    72,    50,    52,    53,   175,   278,
+      89,   228,    58,    76,   176,    84,   304,   219,   170,   171,
+      44,    66,    44,    86,   278,   209,    44,   127,   298,   194,
+      59,    44,   298,   187,   188,    84,    54,    32,    33,   172,
+     158,   161,    73,   173,    66,    44,   276,   301,   162,    69,
+      53,    67,   219,   219,    68,   165,   225,    44,    60,   148,
+     230,    78,   200,     6,     7,    44,   183,   219,   184,   235,
+     220,    60,    61,    62,    63,   123,     6,     7,   127,    49,
+     127,   251,   249,   219,   252,   110,   259,    87,    61,    62,
+      63,    23,    24,   -27,   258,    73,   222,     2,     3,     4,
+     110,    61,    62,    63,    23,    24,   167,   168,    44,    79,
+      44,   262,   263,   213,   214,   215,    52,    53,   264,   181,
+     182,   305,   216,   180,   126,   189,   190,   -76,   -28,   233,
+     238,   239,   217,   148,   219,   267,   174,   123,   240,   241,
+     242,   243,   191,   244,   245,   268,   179,   192,   277,   205,
+     195,   127,   206,   202,   203,   207,   210,   227,   211,   223,
+     282,  -117,   250,   277,   123,   270,  -165,  -138,   265,   266,
+     219,   281,   293,   110,   283,   284,   296,   291,   292,   294,
+     295,    44,   302,   271,   306,   246,   297,   234,   247,    81,
+     165,   248,   148,   236,   237,   110,   110,   110,   110,   110,
+     110,   110,   110,   110,   110,   110,   159,    85,   160,    51,
+     201,   303,   273,   261,   269,   274,   285,    75,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    97,     0,     0,     0,   140,
-     141,     0,     0,     0,     0,   142,    98,    99,     0,   100,
-       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
-     132,   133,   134,     0,   135,   136,   137,   138,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,    23,    24,    25,    26,   139,    27,    28,
-      29,    30,    90,    31,    91,    92,    93,    94,     0,     0,
-      95,    96,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    97,
-       0,     0,     0,   140,   222,     0,     0,     0,     0,   142,
-      98,    99,     0,   100,     1,     2,     3,     4,     5,     6,
-       7,     8,     9,    10,   132,   133,   134,     0,   135,   136,
-     137,   138,    11,    12,    13,    14,    15,    16,    17,    18,
+       0,     0,     0,     0,   290,   110,   148,   148,     0,     0,
+     148,   148,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   148,     0,     0,     0,     0,
+       0,     0,   110,     0,     0,     0,     0,     0,     0,     0,
+       0,   148,     0,     0,     0,   148,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,   131,   132,   133,     0,
+     134,   135,   136,   137,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,   138,    27,    28,    29,    30,    90,    31,
+      91,    92,    93,     0,     0,    94,    95,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    96,     0,     0,     0,   139,   140,
+       0,     0,     0,     0,   141,    97,    98,     0,    99,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,   131,
+     132,   133,     0,   134,   135,   136,   137,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,    23,    24,    25,    26,   138,    27,    28,    29,
+      30,    90,    31,    91,    92,    93,     0,     0,    94,    95,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    96,     0,     0,
+       0,   139,   221,     0,     0,     0,     0,   141,    97,    98,
+       0,    99,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,   131,   132,   133,     0,   134,   135,   136,   137,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,     0,     0,     0,    23,    24,    25,    26,   138,
+      27,    28,    29,    30,    90,    31,    91,    92,    93,     0,
+       0,    94,    95,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      96,     0,     0,     0,   139,     0,     0,     0,     0,     0,
+     141,    97,    98,     0,    99,     1,     2,     3,     4,     5,
+       6,     7,     8,     9,    10,   131,   132,   133,     0,   134,
+     135,   136,   137,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,     0,     0,     0,    23,    24,
+      25,    26,   138,    27,    28,    29,    30,    90,    31,    91,
+      92,    93,     0,     0,    94,    95,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    96,     0,     0,     0,    79,     0,     0,
+       0,     0,     0,   141,    97,    98,     0,    99,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,   131,   132,
+     133,     0,   134,   135,   136,   137,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
+       0,    23,    24,    25,    26,   138,    27,    28,    29,    30,
+      90,    31,    91,    92,    93,     0,     0,    94,    95,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    96,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   141,    97,    98,     0,
+      99,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,     0,     0,     0,     0,     0,     0,     0,     0,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,     0,     0,     0,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    90,    31,    91,    92,    93,     0,     0,
+      94,    95,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    96,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   141,
+      97,    98,     0,    99,    60,     2,     3,     4,     0,     6,
+       7,     8,     9,    10,     0,     0,     0,     0,     0,     0,
+       0,     0,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,     0,     0,     0,    23,    24,    25,
-      26,   139,    27,    28,    29,    30,    90,    31,    91,    92,
-      93,    94,     0,     0,    95,    96,     0,     0,     0,     0,
+      26,     0,    27,    28,    29,    30,    90,    31,    91,    92,
+      93,     0,     0,    94,    95,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    97,     0,     0,     0,   140,     0,     0,
-       0,     0,     0,   142,    98,    99,     0,   100,     1,     2,
-       3,     4,     5,     6,     7,     8,     9,    10,   132,   133,
-     134,     0,   135,   136,   137,   138,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,    23,    24,    25,    26,   139,    27,    28,    29,    30,
-      90,    31,    91,    92,    93,    94,     0,     0,    95,    96,
+       0,     0,    96,     0,     0,     0,     8,     9,    10,     0,
+       0,     0,     0,    97,    98,     0,    99,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
+      30,    90,    31,    91,    92,    93,     0,     0,    94,    95,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    97,     0,     0,
-       0,    79,     0,     0,     0,     0,     0,   142,    98,    99,
-       0,   100,     1,     2,     3,     4,     5,     6,     7,     8,
-       9,    10,   132,   133,   134,     0,   135,   136,   137,   138,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,    23,    24,    25,    26,   139,
-      27,    28,    29,    30,    90,    31,    91,    92,    93,    94,
-       0,     0,    95,    96,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    97,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   142,    98,    99,     0,   100,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
-      24,    25,    26,     0,    27,    28,    29,    30,    90,    31,
-      91,    92,    93,    94,     0,     0,    95,    96,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    97,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   142,    98,    99,     0,   100,
-      60,     2,     3,     4,     0,     6,     7,     8,     9,    10,
-       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-       0,     0,     0,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    90,    31,    91,    92,    93,    94,     0,     0,
-      95,    96,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    97,
-       0,     0,     0,     8,     9,    10,     0,     0,     0,     0,
-      98,    99,     0,   100,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,     0,     0,     0,
-       0,    25,    26,     0,    27,    28,    29,    30,    90,    31,
-      91,    92,    93,    94,     0,     0,    95,    96,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    97,     0,     0,     0,     8,
-       9,    10,     0,     0,     0,   209,    98,    99,     0,   100,
-      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,     0,     0,     0,     0,     0,    25,    26,     0,
-      27,    28,    29,    30,    90,    31,    91,    92,    93,    94,
-       0,     0,    95,    96,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    97,     0,     0,   225,     8,     9,    10,     0,     0,
-       0,     0,    98,    99,     0,   100,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,     0,     0,
-       0,     0,     0,    25,    26,     0,    27,    28,    29,    30,
-      90,    31,    91,    92,    93,    94,     0,     0,    95,    96,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    97,     0,     0,
-       0,     8,     9,    10,     0,     0,     0,     0,    98,    99,
-       0,   100,    11,    12,    13,    14,    15,    16,    17,    18,
+       0,     0,     0,     0,     0,     0,     0,    96,     0,     0,
+     163,     8,     9,    10,     0,     0,     0,     0,    97,    98,
+       0,    99,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
-     178,     0,    27,    28,    29,    30,    90,    31,    91,    92,
-      93,    94,     0,     0,    95,    96,     0,     0,     0,     0,
+      26,     0,    27,    28,    29,    30,    90,    31,    91,    92,
+      93,     0,     0,    94,    95,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    97,     2,     3,     4,     0,     0,     0,
-       8,     9,    10,     0,    98,    99,     0,   100,     0,     0,
-       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,     0,     0,     0,     0,     0,    25,    26,
-       0,    27,    28,    29,    30,     0,    31,     2,     3,     4,
-       0,     0,     0,     8,     9,    10,     0,     0,     0,     0,
-       0,     0,     0,     0,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,     0,   200,     0,     0,
-       0,    25,    26,     0,    27,    28,    29,    30,     0,    31,
+       0,     0,    96,     0,     0,     0,     8,     9,    10,     0,
+       0,     0,   208,    97,    98,     0,    99,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,     0,     0,    25,    26,     0,    27,    28,    29,
+      30,    90,    31,    91,    92,    93,     0,     0,    94,    95,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      74,     0,     0,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
-     253,    11,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,     0,    31,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,     0,     0,     0,
-       0,     0,     0,     0,     0,    11,    12,    13,    14,    15,
+       0,     0,     0,     0,     0,     0,     0,    96,     0,     0,
+     224,     8,     9,    10,     0,     0,     0,     0,    97,    98,
+       0,    99,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
+      26,     0,    27,    28,    29,    30,    90,    31,    91,    92,
+      93,     0,     0,    94,    95,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    96,     0,     0,     0,     8,     9,    10,     0,
+       0,     0,     0,    97,    98,     0,    99,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,     0,
+       0,     0,     0,     0,    25,   177,     0,    27,    28,    29,
+      30,    90,    31,    91,    92,    93,     0,     0,    94,    95,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    96,     2,     3,
+       4,     0,     0,     0,     8,     9,    10,     0,    97,    98,
+       0,    99,     0,     0,     0,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
-      23,    24,    25,    26,     0,    27,    28,    29,    30,     0,
+       0,     0,    25,    26,     0,    27,    28,    29,    30,     0,
       31,     2,     3,     4,     0,     0,     0,     8,     9,    10,
        0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+     199,     0,     0,     0,     0,    25,    26,     0,    27,    28,
+      29,    30,     0,    31,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    74,     0,     0,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,     0,     0,     0,     0,
+       0,     0,     0,   253,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,     0,     0,     0,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,     0,    31,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+       0,     0,     0,    23,    24,    25,    26,     0,    27,    28,
+      29,    30,     0,    31,     2,     3,     4,     0,     0,     0,
+       8,     9,    10,     0,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,     0,     0,     0,     0,     0,    25,    26,
+       0,    27,    28,    29,    30,     0,    31,     8,     9,    10,
+       0,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
        0,     0,     0,     0,     0,    25,    26,     0,    27,    28,
-      29,    30,     0,    31,     8,     9,    10,     0,     0,     0,
+      29,    30,   231,   232,     8,     9,    10,     0,     0,     0,
        0,     0,     0,     0,     0,    11,    12,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,     0,     0,     0,
-       0,     0,    25,    26,     0,    27,    28,    29,    30,   232,
-      31,     8,     9,    10,   233,     0,     0,     0,     0,     0,
-       0,     0,    11,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    21,    22,     0,     0,     0,     0,     0,    25,
-      26,     0,    27,    28,    29,    30,     0,    31
+       0,     0,    25,    26,     0,    27,    28,    29,    30,     0,
+      31
 };
 
 #define yypact_value_is_default(Yystate) \
@@ -1098,150 +1102,156 @@
 
 static const yytype_int16 yycheck[] =
 {
-       0,    25,    89,    57,    40,    73,    97,   154,   129,     0,
-       0,    36,    42,    60,    73,    39,   276,    88,   163,   256,
-      88,    51,   109,    37,   260,    82,    55,    56,    74,    65,
-      73,    45,    45,    46,    59,    81,   296,    74,    79,   275,
-      40,    77,    42,    67,    81,    88,    46,   138,    95,    85,
-      76,    51,    95,    96,   291,    46,    46,    84,   295,    86,
-      84,    90,    91,    76,    73,    65,     3,    53,    54,   112,
-      79,     8,     9,    74,    73,    72,   163,    77,     3,    79,
-      79,   202,   173,     8,     9,    85,    79,    76,    74,    82,
-     177,   162,    78,   129,   162,   131,    33,    34,    35,    36,
-      37,    73,    79,    79,   195,    82,    82,    79,    33,    34,
-      35,    36,    37,    37,   261,    73,   207,    79,    82,   162,
-      82,    79,   186,   187,   188,   189,     4,     5,     6,   129,
-      72,   131,   219,   220,    45,    46,    73,    45,    46,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,   194,   297,   224,   154,    72,   224,    74,    62,    63,
-      64,    33,    34,    35,    87,    88,   202,    71,    73,   260,
-      57,    58,    79,    80,   184,   185,    72,    81,    59,   250,
-     267,   224,   250,    75,   275,   190,   191,    61,    82,    82,
-      72,    82,    72,   284,    77,    72,    75,    72,    74,    72,
-      40,   255,   202,   294,    10,    11,    12,   250,    74,    76,
-     297,    75,    75,   213,    79,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    75,    75,    72,
-      82,    73,    38,    39,    73,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    77,    16,    53,    54,    82,
-      81,   192,   174,   193,   278,   194,   256,   257,    85,    59,
-     260,   261,    66,    85,     5,   257,    72,   251,   213,    75,
-     131,   275,   295,    46,   257,   275,    -1,    83,    84,    -1,
-      86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,    25,    89,    88,    96,    57,   162,    73,   153,   128,
+      40,     0,     0,   256,    59,    39,   276,    37,    54,    55,
+      81,   108,    88,    73,    42,    45,    45,    46,    72,   260,
+      80,    72,    72,    51,    78,    65,   296,    78,    52,    53,
+      40,    36,    42,    67,   275,   137,    46,    77,   291,    94,
+      78,    51,   295,    89,    90,    85,    75,    46,    46,    73,
+      84,    73,    73,    77,    59,    65,    72,    72,    80,    45,
+      46,    78,    78,    78,    81,   162,   161,    77,     3,    79,
+     172,    75,   201,     8,     9,    85,    83,    78,    85,   176,
+      81,     3,    33,    34,    35,   161,     8,     9,   128,    37,
+     130,    78,   194,    78,    81,    73,    81,    71,    33,    34,
+      35,    36,    37,    71,   206,    73,   261,     4,     5,     6,
+      88,    33,    34,    35,    36,    37,    94,    95,   128,    75,
+     130,   218,   219,    61,    62,    63,    45,    46,   223,    86,
+      87,   297,    70,   111,    81,    56,    57,    72,    71,   173,
+     183,   184,    80,   153,    78,    79,    72,   223,   185,   186,
+     187,   188,    58,   189,   190,   250,    71,    60,   260,    71,
+      74,   201,    71,    81,    81,    81,    71,    74,    76,    73,
+     267,    71,    73,   275,   250,    40,    75,    71,    74,    74,
+      78,    74,   284,   161,    74,    71,    16,    72,    76,    81,
+      72,   201,   294,   255,    81,   191,    80,   173,   192,    59,
+     297,   193,   212,   181,   182,   183,   184,   185,   186,   187,
+     188,   189,   190,   191,   192,   193,    85,    66,    85,     5,
+     130,   295,   257,   212,   251,   257,   275,    46,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   278,   223,   256,   257,    -1,    -1,
+     260,   261,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   275,    -1,    -1,    -1,    -1,
+      -1,    -1,   250,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,   291,    -1,    -1,    -1,   295,     3,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    -1,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
       37,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
+      47,    48,    49,    -1,    -1,    52,    53,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
-      77,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,    86,
-       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    -1,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    36,    37,    38,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,
-      83,    84,    -1,    86,     3,     4,     5,     6,     7,     8,
-       9,    10,    11,    12,    13,    14,    15,    -1,    17,    18,
-      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    36,    37,    38,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    76,
+      -1,    -1,    -1,    -1,    81,    82,    83,    -1,    85,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    36,    37,    38,    39,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    82,    83,    84,    -1,    86,     3,     4,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+      -1,    75,    76,    -1,    -1,    -1,    -1,    81,    82,    83,
+      -1,    85,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
+      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    49,    -1,
+      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,
+      81,    82,    83,    -1,    85,     3,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      28,    29,    30,    31,    32,    -1,    -1,    -1,    36,    37,
+      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
+      48,    49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    71,    -1,    -1,    -1,    75,    -1,    -1,
+      -1,    -1,    -1,    81,    82,    83,    -1,    85,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
       -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    -1,    -1,    53,    54,
+      45,    46,    47,    48,    49,    -1,    -1,    52,    53,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
-      -1,    86,     3,     4,     5,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    -1,
+      85,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    -1,    -1,
+      52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
+      82,    83,    -1,    85,     3,     4,     5,     6,    -1,     8,
+       9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    -1,    -1,    -1,    36,    37,    38,
+      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    82,    83,    84,    -1,    86,     3,     4,     5,     6,
-       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
-      37,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    10,    11,    12,    -1,
+      -1,    -1,    -1,    82,    83,    -1,    85,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,    86,
-       3,     4,     5,     6,    -1,     8,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    -1,    -1,
-      53,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,
-      83,    84,    -1,    86,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    -1,
-      -1,    38,    39,    -1,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    -1,    -1,    53,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    10,
-      11,    12,    -1,    -1,    -1,    82,    83,    84,    -1,    86,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,    -1,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      -1,    -1,    53,    54,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,    75,    10,    11,    12,    -1,    -1,
-      -1,    -1,    83,    84,    -1,    86,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    32,    -1,    -1,
-      -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    -1,    -1,    53,    54,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    10,    11,    12,    -1,    -1,    -1,    -1,    83,    84,
-      -1,    86,    21,    22,    23,    24,    25,    26,    27,    28,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+      74,    10,    11,    12,    -1,    -1,    -1,    -1,    82,    83,
+      -1,    85,    21,    22,    23,    24,    25,    26,    27,    28,
       29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
       39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    -1,    -1,    53,    54,    -1,    -1,    -1,    -1,
+      49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,     4,     5,     6,    -1,    -1,    -1,
-      10,    11,    12,    -1,    83,    84,    -1,    86,    -1,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,
-      -1,    41,    42,    43,    44,    -1,    46,     4,     5,     6,
-      -1,    -1,    -1,    10,    11,    12,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    -1,    77,    -1,    -1,
-      -1,    38,    39,    -1,    41,    42,    43,    44,    -1,    46,
+      -1,    -1,    71,    -1,    -1,    -1,    10,    11,    12,    -1,
+      -1,    -1,    81,    82,    83,    -1,    85,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       0,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      77,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    -1,    -1,    -1,    36,    37,    38,    39,
-      -1,    41,    42,    43,    44,    -1,    46,     3,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+      74,    10,    11,    12,    -1,    -1,    -1,    -1,    82,    83,
+      -1,    85,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
+      39,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
+      49,    -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    10,    11,    12,    -1,
+      -1,    -1,    -1,    82,    83,    -1,    85,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    -1,    -1,    52,    53,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,     4,     5,
+       6,    -1,    -1,    -1,    10,    11,    12,    -1,    82,    83,
+      -1,    85,    -1,    -1,    -1,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
-      36,    37,    38,    39,    -1,    41,    42,    43,    44,    -1,
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    -1,
       46,     4,     5,     6,    -1,    -1,    -1,    10,    11,    12,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      76,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
+      43,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     0,    -1,    -1,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    -1,    -1,    -1,    36,
+      37,    38,    39,    -1,    41,    42,    43,    44,    -1,    46,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+      -1,    -1,    -1,    36,    37,    38,    39,    -1,    41,    42,
+      43,    44,    -1,    46,     4,     5,     6,    -1,    -1,    -1,
+      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      -1,    41,    42,    43,    44,    -1,    46,    10,    11,    12,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       -1,    -1,    -1,    -1,    -1,    38,    39,    -1,    41,    42,
-      43,    44,    -1,    46,    10,    11,    12,    -1,    -1,    -1,
+      43,    44,    45,    46,    10,    11,    12,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    -1,    -1,    -1,
-      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    45,
-      46,    10,    11,    12,    50,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      29,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    38,
-      39,    -1,    41,    42,    43,    44,    -1,    46
+      -1,    -1,    38,    39,    -1,    41,    42,    43,    44,    -1,
+      46
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1251,34 +1261,34 @@
        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
       12,    21,    22,    23,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    36,    37,    38,    39,    41,    42,    43,
-      44,    46,   127,   128,   129,   130,   131,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   176,   177,   178,    37,
-      45,   141,    45,    46,    76,    97,    82,   179,    73,    79,
-       3,    33,    34,    35,   133,   134,   139,    79,    82,    45,
-      97,   140,   142,    74,     0,   177,   142,   146,    76,    76,
-     162,   133,   132,   135,   140,   134,    97,    72,    74,    81,
-      45,    47,    48,    49,    50,    53,    54,    72,    83,    84,
-      86,    98,    99,   100,   102,   103,   104,   105,   106,   107,
+      44,    46,   126,   127,   128,   129,   130,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   175,   176,   177,    37,
+      45,   140,    45,    46,    75,    96,    81,   178,    72,    78,
+       3,    33,    34,    35,   132,   133,   138,    78,    81,    45,
+      96,   139,   141,    73,     0,   176,   141,   145,    75,    75,
+     161,   132,   131,   134,   139,   133,    96,    71,    73,    80,
+      45,    47,    48,    49,    52,    53,    71,    82,    83,    85,
+      97,    98,    99,   101,   102,   103,   104,   105,   106,   107,
      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   126,   143,    82,   140,   147,
-     148,   145,    13,    14,    15,    17,    18,    19,    20,    40,
-      76,    77,    82,   109,   122,   123,   125,   127,   128,   143,
-     152,   153,   154,   155,   163,   164,   165,   168,   175,    97,
-     132,   135,    74,    81,    75,   126,   123,   151,   109,   109,
-     125,    53,    54,    74,    78,    73,    73,    79,    39,   123,
-      72,   109,    87,    88,    84,    86,    55,    56,    90,    91,
-      57,    58,    59,    61,    60,    95,    75,    97,   149,   150,
-      77,   148,   147,    82,    82,   170,    72,    72,    82,    82,
-     125,    72,    77,   156,    62,    63,    64,    71,    81,   124,
-      79,    82,    77,   153,    74,    75,   126,   151,    75,    73,
-     101,   125,    45,    50,   104,   123,   109,   109,   111,   111,
-     113,   113,   113,   113,   114,   114,   118,   119,   120,   125,
-      74,    79,    82,    77,   159,   160,   161,   171,   125,    82,
-     169,   163,   123,   123,   126,    75,    75,    80,   126,   150,
-      40,   162,   154,   152,   164,   172,    73,   125,   138,   167,
-     157,    75,   123,    75,    72,   167,   173,   174,   159,   166,
-      97,    73,    77,   125,    82,    73,    16,    81,   154,   158,
-     162,    73,   125,   158,   159,   151,    82
+     118,   119,   120,   121,   125,   142,    81,   139,   146,   147,
+     144,    13,    14,    15,    17,    18,    19,    20,    40,    75,
+      76,    81,   108,   121,   122,   124,   126,   127,   142,   151,
+     152,   153,   154,   162,   163,   164,   167,   174,    96,   131,
+     134,    73,    80,    74,   125,   122,   150,   108,   108,   124,
+      52,    53,    73,    77,    72,    72,    78,    39,   122,    71,
+     108,    86,    87,    83,    85,    54,    55,    89,    90,    56,
+      57,    58,    60,    59,    94,    74,    96,   148,   149,    76,
+     147,   146,    81,    81,   169,    71,    71,    81,    81,   124,
+      71,    76,   155,    61,    62,    63,    70,    80,   123,    78,
+      81,    76,   152,    73,    74,   125,   150,    74,    72,   100,
+     124,    45,    46,    96,   103,   122,   108,   108,   110,   110,
+     112,   112,   112,   112,   113,   113,   117,   118,   119,   124,
+      73,    78,    81,    76,   158,   159,   160,   170,   124,    81,
+     168,   162,   122,   122,   125,    74,    74,    79,   125,   149,
+      40,   161,   153,   151,   163,   171,    72,   124,   137,   166,
+     156,    74,   122,    74,    71,   166,   172,   173,   158,   165,
+      96,    72,    76,   124,    81,    72,    16,    80,   153,   157,
+     161,    72,   124,   157,   158,   150,    81
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2670,22 +2680,11 @@
   case 29:
 
     {
-        if (context->reservedErrorCheck((yyvsp[(1) - (1)].lex).line, *(yyvsp[(1) - (1)].lex).string))
-            context->recover();
-        TType type(EbtVoid, EbpUndefined);
-        TFunction *function = new TFunction((yyvsp[(1) - (1)].lex).string, type);
-        (yyval.interm.function) = function;
-    }
-    break;
-
-  case 30:
-
-    {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
     break;
 
-  case 31:
+  case 30:
 
     {
         if (context->lValueErrorCheck((yyvsp[(1) - (2)].lex).line, "++", (yyvsp[(2) - (2)].interm.intermTypedNode)))
@@ -2699,7 +2698,7 @@
     }
     break;
 
-  case 32:
+  case 31:
 
     {
         if (context->lValueErrorCheck((yyvsp[(1) - (2)].lex).line, "--", (yyvsp[(2) - (2)].interm.intermTypedNode)))
@@ -2713,7 +2712,7 @@
     }
     break;
 
-  case 33:
+  case 32:
 
     {
         if ((yyvsp[(1) - (2)].interm).op != EOpNull) {
@@ -2734,27 +2733,27 @@
     }
     break;
 
-  case 34:
+  case 33:
 
     { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpNull; }
     break;
 
-  case 35:
+  case 34:
 
     { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpNegative; }
     break;
 
-  case 36:
+  case 35:
 
     { (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpLogicalNot; }
     break;
 
-  case 37:
+  case 36:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 38:
+  case 37:
 
     {
         FRAG_VERT_ONLY("*", (yyvsp[(2) - (3)].lex).line);
@@ -2767,7 +2766,7 @@
     }
     break;
 
-  case 39:
+  case 38:
 
     {
         FRAG_VERT_ONLY("/", (yyvsp[(2) - (3)].lex).line);
@@ -2780,12 +2779,12 @@
     }
     break;
 
-  case 40:
+  case 39:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 41:
+  case 40:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpAdd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2797,7 +2796,7 @@
     }
     break;
 
-  case 42:
+  case 41:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpSub, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2809,6 +2808,11 @@
     }
     break;
 
+  case 42:
+
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+    break;
+
   case 43:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
@@ -2816,11 +2820,6 @@
 
   case 44:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
-    break;
-
-  case 45:
-
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLessThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
         if ((yyval.interm.intermTypedNode) == 0) {
@@ -2833,7 +2832,7 @@
     }
     break;
 
-  case 46:
+  case 45:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpGreaterThan, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2847,7 +2846,7 @@
     }
     break;
 
-  case 47:
+  case 46:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLessThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2861,7 +2860,7 @@
     }
     break;
 
-  case 48:
+  case 47:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpGreaterThanEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2875,12 +2874,12 @@
     }
     break;
 
-  case 49:
+  case 48:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 50:
+  case 49:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2894,7 +2893,7 @@
     }
     break;
 
-  case 51:
+  case 50:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpNotEqual, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2908,6 +2907,11 @@
     }
     break;
 
+  case 51:
+
+    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
+    break;
+
   case 52:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
@@ -2925,11 +2929,6 @@
 
   case 55:
 
-    { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
-    break;
-
-  case 56:
-
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLogicalAnd, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
         if ((yyval.interm.intermTypedNode) == 0) {
@@ -2942,12 +2941,12 @@
     }
     break;
 
-  case 57:
+  case 56:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 58:
+  case 57:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLogicalXor, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2961,12 +2960,12 @@
     }
     break;
 
-  case 59:
+  case 58:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 60:
+  case 59:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addBinaryMath(EOpLogicalOr, (yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line, context->symbolTable);
@@ -2980,12 +2979,12 @@
     }
     break;
 
-  case 61:
+  case 60:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 62:
+  case 61:
 
     {
        if (context->boolErrorCheck((yyvsp[(2) - (5)].lex).line, (yyvsp[(1) - (5)].interm.intermTypedNode)))
@@ -3003,12 +3002,12 @@
     }
     break;
 
-  case 63:
+  case 62:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 64:
+  case 63:
 
     {
         if (context->lValueErrorCheck((yyvsp[(2) - (3)].interm).line, "assign", (yyvsp[(1) - (3)].interm.intermTypedNode)))
@@ -3022,39 +3021,39 @@
     }
     break;
 
-  case 65:
+  case 64:
 
     {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpAssign; }
     break;
 
-  case 66:
+  case 65:
 
     { FRAG_VERT_ONLY("*=", (yyvsp[(1) - (1)].lex).line);     (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpMulAssign; }
     break;
 
-  case 67:
+  case 66:
 
     { FRAG_VERT_ONLY("/=", (yyvsp[(1) - (1)].lex).line);     (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpDivAssign; }
     break;
 
-  case 68:
+  case 67:
 
     {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpAddAssign; }
     break;
 
-  case 69:
+  case 68:
 
     {                                    (yyval.interm).line = (yyvsp[(1) - (1)].lex).line; (yyval.interm).op = EOpSubAssign; }
     break;
 
-  case 70:
+  case 69:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
     break;
 
-  case 71:
+  case 70:
 
     {
         (yyval.interm.intermTypedNode) = context->intermediate.addComma((yyvsp[(1) - (3)].interm.intermTypedNode), (yyvsp[(3) - (3)].interm.intermTypedNode), (yyvsp[(2) - (3)].lex).line);
@@ -3066,7 +3065,7 @@
     }
     break;
 
-  case 72:
+  case 71:
 
     {
         if (context->constErrorCheck((yyvsp[(1) - (1)].interm.intermTypedNode)))
@@ -3075,7 +3074,7 @@
     }
     break;
 
-  case 73:
+  case 72:
 
     {
         TFunction &function = *((yyvsp[(1) - (2)].interm).function);
@@ -3106,7 +3105,7 @@
     }
     break;
 
-  case 74:
+  case 73:
 
     {
         if ((yyvsp[(1) - (2)].interm).intermAggregate)
@@ -3115,7 +3114,7 @@
     }
     break;
 
-  case 75:
+  case 74:
 
     {
         if (((yyvsp[(2) - (4)].interm.precision) == EbpHigh) && (context->shaderType == SH_FRAGMENT_SHADER) && !context->fragmentPrecisionHigh) {
@@ -3130,7 +3129,7 @@
     }
     break;
 
-  case 76:
+  case 75:
 
     {
         //
@@ -3169,6 +3168,13 @@
     }
     break;
 
+  case 76:
+
+    {
+        (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
+    }
+    break;
+
   case 77:
 
     {
@@ -3179,13 +3185,6 @@
   case 78:
 
     {
-        (yyval.interm.function) = (yyvsp[(1) - (1)].interm.function);
-    }
-    break;
-
-  case 79:
-
-    {
         // Add the parameter
         (yyval.interm.function) = (yyvsp[(1) - (2)].interm.function);
         if ((yyvsp[(2) - (2)].interm).param.type->getBasicType() != EbtVoid)
@@ -3195,7 +3194,7 @@
     }
     break;
 
-  case 80:
+  case 79:
 
     {
         //
@@ -3217,7 +3216,7 @@
     }
     break;
 
-  case 81:
+  case 80:
 
     {
         if ((yyvsp[(1) - (3)].interm.type).qualifier != EvqGlobal && (yyvsp[(1) - (3)].interm.type).qualifier != EvqTemporary) {
@@ -3238,7 +3237,7 @@
     }
     break;
 
-  case 82:
+  case 81:
 
     {
         if ((yyvsp[(1) - (2)].interm.type).type == EbtVoid) {
@@ -3253,7 +3252,7 @@
     }
     break;
 
-  case 83:
+  case 82:
 
     {
         // Check that we can make an array out of this type
@@ -3275,7 +3274,7 @@
     }
     break;
 
-  case 84:
+  case 83:
 
     {
         (yyval.interm) = (yyvsp[(3) - (3)].interm);
@@ -3284,13 +3283,22 @@
     }
     break;
 
+  case 84:
+
+    {
+        (yyval.interm) = (yyvsp[(2) - (2)].interm);
+        if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type))
+            context->recover();
+        if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
+            context->recover();
+    }
+    break;
+
   case 85:
 
     {
-        (yyval.interm) = (yyvsp[(2) - (2)].interm);
-        if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type))
-            context->recover();
-        if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
+        (yyval.interm) = (yyvsp[(3) - (3)].interm);
+        if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
             context->recover();
     }
     break;
@@ -3298,8 +3306,10 @@
   case 86:
 
     {
-        (yyval.interm) = (yyvsp[(3) - (3)].interm);
-        if (context->paramErrorCheck((yyvsp[(3) - (3)].interm).line, (yyvsp[(1) - (3)].interm.type).qualifier, (yyvsp[(2) - (3)].interm.qualifier), (yyval.interm).param.type))
+        (yyval.interm) = (yyvsp[(2) - (2)].interm);
+        if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type))
+            context->recover();
+        if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
             context->recover();
     }
     break;
@@ -3307,11 +3317,7 @@
   case 87:
 
     {
-        (yyval.interm) = (yyvsp[(2) - (2)].interm);
-        if (context->parameterSamplerErrorCheck((yyvsp[(2) - (2)].interm).line, (yyvsp[(1) - (2)].interm.qualifier), *(yyvsp[(2) - (2)].interm).param.type))
-            context->recover();
-        if (context->paramErrorCheck((yyvsp[(2) - (2)].interm).line, EvqTemporary, (yyvsp[(1) - (2)].interm.qualifier), (yyval.interm).param.type))
-            context->recover();
+        (yyval.interm.qualifier) = EvqIn;
     }
     break;
 
@@ -3325,25 +3331,18 @@
   case 89:
 
     {
-        (yyval.interm.qualifier) = EvqIn;
+        (yyval.interm.qualifier) = EvqOut;
     }
     break;
 
   case 90:
 
     {
-        (yyval.interm.qualifier) = EvqOut;
-    }
-    break;
-
-  case 91:
-
-    {
         (yyval.interm.qualifier) = EvqInOut;
     }
     break;
 
-  case 92:
+  case 91:
 
     {
         TParameter param = { 0, new TType((yyvsp[(1) - (1)].interm.type)) };
@@ -3351,14 +3350,14 @@
     }
     break;
 
-  case 93:
+  case 92:
 
     {
         (yyval.interm) = (yyvsp[(1) - (1)].interm);
     }
     break;
 
-  case 94:
+  case 93:
 
     {
         if ((yyvsp[(1) - (3)].interm).type.type == EbtInvariant && !(yyvsp[(3) - (3)].lex).symbol)
@@ -3384,7 +3383,7 @@
     }
     break;
 
-  case 95:
+  case 94:
 
     {
         if (context->structQualifierErrorCheck((yyvsp[(3) - (5)].lex).line, (yyvsp[(1) - (5)].interm).type))
@@ -3406,7 +3405,7 @@
     }
     break;
 
-  case 96:
+  case 95:
 
     {
         if (context->structQualifierErrorCheck((yyvsp[(3) - (6)].lex).line, (yyvsp[(1) - (6)].interm).type))
@@ -3434,7 +3433,7 @@
     }
     break;
 
-  case 97:
+  case 96:
 
     {
         if (context->structQualifierErrorCheck((yyvsp[(3) - (5)].lex).line, (yyvsp[(1) - (5)].interm).type))
@@ -3458,7 +3457,7 @@
     }
     break;
 
-  case 98:
+  case 97:
 
     {
         (yyval.interm).type = (yyvsp[(1) - (1)].interm.type);
@@ -3466,7 +3465,7 @@
     }
     break;
 
-  case 99:
+  case 98:
 
     {
         TIntermSymbol* symbol = context->intermediate.addSymbol(0, *(yyvsp[(2) - (2)].lex).string, TType((yyvsp[(1) - (2)].interm.type)), (yyvsp[(2) - (2)].lex).line);
@@ -3488,7 +3487,7 @@
     }
     break;
 
-  case 100:
+  case 99:
 
     {
         context->error((yyvsp[(2) - (4)].lex).line, "unsized array declarations not supported", (yyvsp[(2) - (4)].lex).string->c_str());
@@ -3500,7 +3499,7 @@
     }
     break;
 
-  case 101:
+  case 100:
 
     {
         TType type = TType((yyvsp[(1) - (5)].interm.type));
@@ -3536,7 +3535,7 @@
     }
     break;
 
-  case 102:
+  case 101:
 
     {
         if (context->structQualifierErrorCheck((yyvsp[(2) - (4)].lex).line, (yyvsp[(1) - (4)].interm.type)))
@@ -3560,7 +3559,7 @@
     }
     break;
 
-  case 103:
+  case 102:
 
     {
         VERTEX_ONLY("invariant declaration", (yyvsp[(1) - (2)].lex).line);
@@ -3582,7 +3581,7 @@
     }
     break;
 
-  case 104:
+  case 103:
 
     {
         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
@@ -3595,7 +3594,7 @@
     }
     break;
 
-  case 105:
+  case 104:
 
     {
         if ((yyvsp[(2) - (2)].interm.type).array) {
@@ -3619,14 +3618,14 @@
     }
     break;
 
-  case 106:
+  case 105:
 
     {
         (yyval.interm.type).setBasic(EbtVoid, EvqConst, (yyvsp[(1) - (1)].lex).line);
     }
     break;
 
-  case 107:
+  case 106:
 
     {
         VERTEX_ONLY("attribute", (yyvsp[(1) - (1)].lex).line);
@@ -3636,7 +3635,7 @@
     }
     break;
 
-  case 108:
+  case 107:
 
     {
         if (context->globalErrorCheck((yyvsp[(1) - (1)].lex).line, context->symbolTable.atGlobalLevel(), "varying"))
@@ -3648,7 +3647,7 @@
     }
     break;
 
-  case 109:
+  case 108:
 
     {
         if (context->globalErrorCheck((yyvsp[(1) - (2)].lex).line, context->symbolTable.atGlobalLevel(), "invariant varying"))
@@ -3660,7 +3659,7 @@
     }
     break;
 
-  case 110:
+  case 109:
 
     {
         if (context->globalErrorCheck((yyvsp[(1) - (1)].lex).line, context->symbolTable.atGlobalLevel(), "uniform"))
@@ -3669,7 +3668,7 @@
     }
     break;
 
-  case 111:
+  case 110:
 
     {
         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
@@ -3683,7 +3682,7 @@
     }
     break;
 
-  case 112:
+  case 111:
 
     {
         (yyval.interm.type) = (yyvsp[(2) - (2)].interm.type);
@@ -3691,35 +3690,35 @@
     }
     break;
 
-  case 113:
+  case 112:
 
     {
         (yyval.interm.precision) = EbpHigh;
     }
     break;
 
-  case 114:
+  case 113:
 
     {
         (yyval.interm.precision) = EbpMedium;
     }
     break;
 
-  case 115:
+  case 114:
 
     {
         (yyval.interm.precision) = EbpLow;
     }
     break;
 
-  case 116:
+  case 115:
 
     {
         (yyval.interm.type) = (yyvsp[(1) - (1)].interm.type);
     }
     break;
 
-  case 117:
+  case 116:
 
     {
         (yyval.interm.type) = (yyvsp[(1) - (4)].interm.type);
@@ -3735,7 +3734,7 @@
     }
     break;
 
-  case 118:
+  case 117:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3743,7 +3742,7 @@
     }
     break;
 
-  case 119:
+  case 118:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3751,7 +3750,7 @@
     }
     break;
 
-  case 120:
+  case 119:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3759,7 +3758,7 @@
     }
     break;
 
-  case 121:
+  case 120:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3767,12 +3766,21 @@
     }
     break;
 
+  case 121:
+
+    {
+        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
+        (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
+        (yyval.interm.type).setAggregate(2);
+    }
+    break;
+
   case 122:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
-        (yyval.interm.type).setAggregate(2);
+        (yyval.interm.type).setAggregate(3);
     }
     break;
 
@@ -3781,7 +3789,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
-        (yyval.interm.type).setAggregate(3);
+        (yyval.interm.type).setAggregate(4);
     }
     break;
 
@@ -3789,8 +3797,8 @@
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtFloat, qual, (yyvsp[(1) - (1)].lex).line);
-        (yyval.interm.type).setAggregate(4);
+        (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
+        (yyval.interm.type).setAggregate(2);
     }
     break;
 
@@ -3799,7 +3807,7 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
-        (yyval.interm.type).setAggregate(2);
+        (yyval.interm.type).setAggregate(3);
     }
     break;
 
@@ -3808,20 +3816,11 @@
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
         (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
-        (yyval.interm.type).setAggregate(3);
-    }
-    break;
-
-  case 127:
-
-    {
-        TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
-        (yyval.interm.type).setBasic(EbtBool, qual, (yyvsp[(1) - (1)].lex).line);
         (yyval.interm.type).setAggregate(4);
     }
     break;
 
-  case 128:
+  case 127:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3830,7 +3829,7 @@
     }
     break;
 
-  case 129:
+  case 128:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3839,7 +3838,7 @@
     }
     break;
 
-  case 130:
+  case 129:
 
     {
         TQualifier qual = context->symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3848,7 +3847,7 @@
     }
     break;
 
-  case 131:
+  case 130:
 
     {
         FRAG_VERT_ONLY("mat2", (yyvsp[(1) - (1)].lex).line);
@@ -3858,7 +3857,7 @@
     }
     break;
 
-  case 132:
+  case 131:
 
     {
         FRAG_VERT_ONLY("mat3", (yyvsp[(1) - (1)].lex).line);
@@ -3868,7 +3867,7 @@
     }
     break;
 
-  case 133:
+  case 132:
 
     {
         FRAG_VERT_ONLY("mat4", (yyvsp[(1) - (1)].lex).line);
@@ -3878,7 +3877,7 @@
     }
     break;
 
-  case 134:
+  case 133:
 
     {
         FRAG_VERT_ONLY("sampler2D", (yyvsp[(1) - (1)].lex).line);
@@ -3887,7 +3886,7 @@
     }
     break;
 
-  case 135:
+  case 134:
 
     {
         FRAG_VERT_ONLY("samplerCube", (yyvsp[(1) - (1)].lex).line);
@@ -3896,7 +3895,7 @@
     }
     break;
 
-  case 136:
+  case 135:
 
     {
         if (!context->supportsExtension("GL_OES_EGL_image_external")) {
@@ -3909,7 +3908,7 @@
     }
     break;
 
-  case 137:
+  case 136:
 
     {
         if (!context->supportsExtension("GL_ARB_texture_rectangle")) {
@@ -3922,7 +3921,7 @@
     }
     break;
 
-  case 138:
+  case 137:
 
     {
         FRAG_VERT_ONLY("struct", (yyvsp[(1) - (1)].interm.type).line);
@@ -3931,7 +3930,7 @@
     }
     break;
 
-  case 139:
+  case 138:
 
     {
         //
@@ -3945,12 +3944,12 @@
     }
     break;
 
-  case 140:
+  case 139:
 
     { if (context->enterStructDeclaration((yyvsp[(2) - (3)].lex).line, *(yyvsp[(2) - (3)].lex).string)) context->recover(); }
     break;
 
-  case 141:
+  case 140:
 
     {
         if (context->reservedErrorCheck((yyvsp[(2) - (6)].lex).line, *(yyvsp[(2) - (6)].lex).string))
@@ -3968,12 +3967,12 @@
     }
     break;
 
-  case 142:
+  case 141:
 
     { if (context->enterStructDeclaration((yyvsp[(2) - (2)].lex).line, *(yyvsp[(2) - (2)].lex).string)) context->recover(); }
     break;
 
-  case 143:
+  case 142:
 
     {
         TType* structure = new TType((yyvsp[(4) - (5)].interm.typeList), TString(""));
@@ -3983,14 +3982,14 @@
     }
     break;
 
-  case 144:
+  case 143:
 
     {
         (yyval.interm.typeList) = (yyvsp[(1) - (1)].interm.typeList);
     }
     break;
 
-  case 145:
+  case 144:
 
     {
         (yyval.interm.typeList) = (yyvsp[(1) - (2)].interm.typeList);
@@ -4006,7 +4005,7 @@
     }
     break;
 
-  case 146:
+  case 145:
 
     {
         (yyval.interm.typeList) = (yyvsp[(2) - (3)].interm.typeList);
@@ -4043,7 +4042,7 @@
     }
     break;
 
-  case 147:
+  case 146:
 
     {
         (yyval.interm.typeList) = NewPoolTTypeList();
@@ -4051,14 +4050,14 @@
     }
     break;
 
-  case 148:
+  case 147:
 
     {
         (yyval.interm.typeList)->push_back((yyvsp[(3) - (3)].interm.typeLine));
     }
     break;
 
-  case 149:
+  case 148:
 
     {
         if (context->reservedErrorCheck((yyvsp[(1) - (1)].lex).line, *(yyvsp[(1) - (1)].lex).string))
@@ -4070,7 +4069,7 @@
     }
     break;
 
-  case 150:
+  case 149:
 
     {
         if (context->reservedErrorCheck((yyvsp[(1) - (4)].lex).line, *(yyvsp[(1) - (4)].lex).string))
@@ -4087,21 +4086,26 @@
     }
     break;
 
-  case 151:
+  case 150:
 
     { (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode); }
     break;
 
-  case 152:
+  case 151:
 
     { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
     break;
 
-  case 153:
+  case 152:
 
     { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermAggregate); }
     break;
 
+  case 153:
+
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+    break;
+
   case 154:
 
     { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
@@ -4129,25 +4133,20 @@
 
   case 159:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+    { (yyval.interm.intermAggregate) = 0; }
     break;
 
   case 160:
 
-    { (yyval.interm.intermAggregate) = 0; }
+    { context->symbolTable.push(); }
     break;
 
   case 161:
 
-    { context->symbolTable.push(); }
-    break;
-
-  case 162:
-
     { context->symbolTable.pop(); }
     break;
 
-  case 163:
+  case 162:
 
     {
         if ((yyvsp[(3) - (5)].interm.intermAggregate) != 0) {
@@ -4158,6 +4157,11 @@
     }
     break;
 
+  case 163:
+
+    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+    break;
+
   case 164:
 
     { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
@@ -4165,37 +4169,32 @@
 
   case 165:
 
-    { (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode); }
+    { context->symbolTable.push(); }
     break;
 
   case 166:
 
-    { context->symbolTable.push(); }
+    { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
     break;
 
   case 167:
 
-    { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
+    { context->symbolTable.push(); }
     break;
 
   case 168:
 
-    { context->symbolTable.push(); }
-    break;
-
-  case 169:
-
     { context->symbolTable.pop(); (yyval.interm.intermNode) = (yyvsp[(2) - (2)].interm.intermNode); }
     break;
 
-  case 170:
+  case 169:
 
     {
         (yyval.interm.intermNode) = 0;
     }
     break;
 
-  case 171:
+  case 170:
 
     {
         if ((yyvsp[(2) - (3)].interm.intermAggregate)) {
@@ -4206,31 +4205,31 @@
     }
     break;
 
-  case 172:
+  case 171:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.makeAggregate((yyvsp[(1) - (1)].interm.intermNode), 0);
     }
     break;
 
-  case 173:
+  case 172:
 
     {
         (yyval.interm.intermAggregate) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermAggregate), (yyvsp[(2) - (2)].interm.intermNode), 0);
     }
     break;
 
-  case 174:
+  case 173:
 
     { (yyval.interm.intermNode) = 0; }
     break;
 
-  case 175:
+  case 174:
 
     { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[(1) - (2)].interm.intermTypedNode)); }
     break;
 
-  case 176:
+  case 175:
 
     {
         if (context->boolErrorCheck((yyvsp[(1) - (5)].lex).line, (yyvsp[(3) - (5)].interm.intermTypedNode)))
@@ -4239,7 +4238,7 @@
     }
     break;
 
-  case 177:
+  case 176:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermNode);
@@ -4247,7 +4246,7 @@
     }
     break;
 
-  case 178:
+  case 177:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (1)].interm.intermNode);
@@ -4255,7 +4254,7 @@
     }
     break;
 
-  case 179:
+  case 178:
 
     {
         (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
@@ -4264,7 +4263,7 @@
     }
     break;
 
-  case 180:
+  case 179:
 
     {
         TIntermNode* intermNode;
@@ -4282,12 +4281,12 @@
     }
     break;
 
-  case 181:
+  case 180:
 
     { context->symbolTable.push(); ++context->loopNestingLevel; }
     break;
 
-  case 182:
+  case 181:
 
     {
         context->symbolTable.pop();
@@ -4296,12 +4295,12 @@
     }
     break;
 
-  case 183:
+  case 182:
 
     { ++context->loopNestingLevel; }
     break;
 
-  case 184:
+  case 183:
 
     {
         if (context->boolErrorCheck((yyvsp[(8) - (8)].lex).line, (yyvsp[(6) - (8)].interm.intermTypedNode)))
@@ -4312,12 +4311,12 @@
     }
     break;
 
-  case 185:
+  case 184:
 
     { context->symbolTable.push(); ++context->loopNestingLevel; }
     break;
 
-  case 186:
+  case 185:
 
     {
         context->symbolTable.pop();
@@ -4326,6 +4325,13 @@
     }
     break;
 
+  case 186:
+
+    {
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+    }
+    break;
+
   case 187:
 
     {
@@ -4336,25 +4342,18 @@
   case 188:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
     }
     break;
 
   case 189:
 
     {
-        (yyval.interm.intermTypedNode) = (yyvsp[(1) - (1)].interm.intermTypedNode);
-    }
-    break;
-
-  case 190:
-
-    {
         (yyval.interm.intermTypedNode) = 0;
     }
     break;
 
-  case 191:
+  case 190:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (2)].interm.intermTypedNode);
@@ -4362,7 +4361,7 @@
     }
     break;
 
-  case 192:
+  case 191:
 
     {
         (yyval.interm.nodePair).node1 = (yyvsp[(1) - (3)].interm.intermTypedNode);
@@ -4370,7 +4369,7 @@
     }
     break;
 
-  case 193:
+  case 192:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4381,7 +4380,7 @@
     }
     break;
 
-  case 194:
+  case 193:
 
     {
         if (context->loopNestingLevel <= 0) {
@@ -4392,7 +4391,7 @@
     }
     break;
 
-  case 195:
+  case 194:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(1) - (2)].lex).line);
@@ -4403,7 +4402,7 @@
     }
     break;
 
-  case 196:
+  case 195:
 
     {
         (yyval.interm.intermNode) = context->intermediate.addBranch(EOpReturn, (yyvsp[(2) - (3)].interm.intermTypedNode), (yyvsp[(1) - (3)].lex).line);
@@ -4418,7 +4417,7 @@
     }
     break;
 
-  case 197:
+  case 196:
 
     {
         FRAG_ONLY("discard", (yyvsp[(1) - (2)].lex).line);
@@ -4426,7 +4425,7 @@
     }
     break;
 
-  case 198:
+  case 197:
 
     {
         (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
@@ -4434,7 +4433,7 @@
     }
     break;
 
-  case 199:
+  case 198:
 
     {
         (yyval.interm.intermNode) = context->intermediate.growAggregate((yyvsp[(1) - (2)].interm.intermNode), (yyvsp[(2) - (2)].interm.intermNode), 0);
@@ -4442,6 +4441,13 @@
     }
     break;
 
+  case 199:
+
+    {
+        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
+    }
+    break;
+
   case 200:
 
     {
@@ -4452,13 +4458,6 @@
   case 201:
 
     {
-        (yyval.interm.intermNode) = (yyvsp[(1) - (1)].interm.intermNode);
-    }
-    break;
-
-  case 202:
-
-    {
         TFunction* function = (yyvsp[(1) - (1)].interm).function;
         
         const TSymbol *builtIn = context->symbolTable.findBuiltIn(function->getMangledName());
@@ -4545,7 +4544,7 @@
     }
     break;
 
-  case 203:
+  case 202:
 
     {
         //?? Check that all paths return a value if return type != void ?
diff --git a/src/compiler/glslang_tab.h b/src/compiler/glslang_tab.h
index 4e369d9..cc32471 100644
--- a/src/compiler/glslang_tab.h
+++ b/src/compiler/glslang_tab.h
@@ -93,52 +93,51 @@
      FLOATCONSTANT = 302,
      INTCONSTANT = 303,
      BOOLCONSTANT = 304,
-     FIELD_SELECTION = 305,
-     LEFT_OP = 306,
-     RIGHT_OP = 307,
-     INC_OP = 308,
-     DEC_OP = 309,
-     LE_OP = 310,
-     GE_OP = 311,
-     EQ_OP = 312,
-     NE_OP = 313,
-     AND_OP = 314,
-     OR_OP = 315,
-     XOR_OP = 316,
-     MUL_ASSIGN = 317,
-     DIV_ASSIGN = 318,
-     ADD_ASSIGN = 319,
-     MOD_ASSIGN = 320,
-     LEFT_ASSIGN = 321,
-     RIGHT_ASSIGN = 322,
-     AND_ASSIGN = 323,
-     XOR_ASSIGN = 324,
-     OR_ASSIGN = 325,
-     SUB_ASSIGN = 326,
-     LEFT_PAREN = 327,
-     RIGHT_PAREN = 328,
-     LEFT_BRACKET = 329,
-     RIGHT_BRACKET = 330,
-     LEFT_BRACE = 331,
-     RIGHT_BRACE = 332,
-     DOT = 333,
-     COMMA = 334,
-     COLON = 335,
-     EQUAL = 336,
-     SEMICOLON = 337,
-     BANG = 338,
-     DASH = 339,
-     TILDE = 340,
-     PLUS = 341,
-     STAR = 342,
-     SLASH = 343,
-     PERCENT = 344,
-     LEFT_ANGLE = 345,
-     RIGHT_ANGLE = 346,
-     VERTICAL_BAR = 347,
-     CARET = 348,
-     AMPERSAND = 349,
-     QUESTION = 350
+     LEFT_OP = 305,
+     RIGHT_OP = 306,
+     INC_OP = 307,
+     DEC_OP = 308,
+     LE_OP = 309,
+     GE_OP = 310,
+     EQ_OP = 311,
+     NE_OP = 312,
+     AND_OP = 313,
+     OR_OP = 314,
+     XOR_OP = 315,
+     MUL_ASSIGN = 316,
+     DIV_ASSIGN = 317,
+     ADD_ASSIGN = 318,
+     MOD_ASSIGN = 319,
+     LEFT_ASSIGN = 320,
+     RIGHT_ASSIGN = 321,
+     AND_ASSIGN = 322,
+     XOR_ASSIGN = 323,
+     OR_ASSIGN = 324,
+     SUB_ASSIGN = 325,
+     LEFT_PAREN = 326,
+     RIGHT_PAREN = 327,
+     LEFT_BRACKET = 328,
+     RIGHT_BRACKET = 329,
+     LEFT_BRACE = 330,
+     RIGHT_BRACE = 331,
+     DOT = 332,
+     COMMA = 333,
+     COLON = 334,
+     EQUAL = 335,
+     SEMICOLON = 336,
+     BANG = 337,
+     DASH = 338,
+     TILDE = 339,
+     PLUS = 340,
+     STAR = 341,
+     SLASH = 342,
+     PERCENT = 343,
+     LEFT_ANGLE = 344,
+     RIGHT_ANGLE = 345,
+     VERTICAL_BAR = 346,
+     CARET = 347,
+     AMPERSAND = 348,
+     QUESTION = 349
    };
 #endif