Update reserved keywords.

TRAC #20514
ISSUE=317
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@1031 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/ParseHelper.cpp b/src/compiler/ParseHelper.cpp
index 0a739336..7d54803 100644
--- a/src/compiler/ParseHelper.cpp
+++ b/src/compiler/ParseHelper.cpp
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -463,10 +463,8 @@
             }
         }
         if (identifier.find("__") != TString::npos) {
-            //error(line, "Two consecutive underscores are reserved for future use.", identifier.c_str(), "", "");
-            //return true;
-            infoSink.info.message(EPrefixWarning, "Two consecutive underscores are reserved for future use.", line);
-            return false;
+            error(line, "identifiers containing two consecutive underscores (__) are reserved as possible future keywords", identifier.c_str(), "", "");
+            return true;
         }
     }
 
diff --git a/src/compiler/glslang.l b/src/compiler/glslang.l
index 084ddaa..c63efad 100644
--- a/src/compiler/glslang.l
+++ b/src/compiler/glslang.l
@@ -1,6 +1,6 @@
 /*
 //
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -15,7 +15,7 @@
 
 %top{
 //
-// Copyright (c) 2010 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -159,6 +159,7 @@
 "extern"       { return reserved_word(yyscanner); }
 "external"     { return reserved_word(yyscanner); }
 "interface"    { return reserved_word(yyscanner); }
+"flat"         { return reserved_word(yyscanner); }
 
 "long"         { return reserved_word(yyscanner); }
 "short"        { return reserved_word(yyscanner); }
@@ -166,6 +167,7 @@
 "half"         { return reserved_word(yyscanner); }
 "fixed"        { return reserved_word(yyscanner); }
 "unsigned"     { return reserved_word(yyscanner); }
+"superp"       { return reserved_word(yyscanner); }
 
 "input"        { return reserved_word(yyscanner); }
 "output"       { return reserved_word(yyscanner); }
@@ -173,12 +175,21 @@
 "hvec2"        { return reserved_word(yyscanner); }
 "hvec3"        { return reserved_word(yyscanner); }
 "hvec4"        { return reserved_word(yyscanner); }
-"fvec2"        { return reserved_word(yyscanner); }
-"fvec3"        { return reserved_word(yyscanner); }
-"fvec4"        { return reserved_word(yyscanner); }
 "dvec2"        { return reserved_word(yyscanner); }
 "dvec3"        { return reserved_word(yyscanner); }
 "dvec4"        { return reserved_word(yyscanner); }
+"fvec2"        { return reserved_word(yyscanner); }
+"fvec3"        { return reserved_word(yyscanner); }
+"fvec4"        { return reserved_word(yyscanner); }
+
+"sampler1D"    { return reserved_word(yyscanner); }
+"sampler3D"    { return reserved_word(yyscanner); }
+
+"sampler1DShadow" { return reserved_word(yyscanner); }
+"sampler2DShadow" { return reserved_word(yyscanner); }
+
+"sampler3DRect" { return reserved_word(yyscanner); }
+"sampler2DRectShadow" { return reserved_word(yyscanner); }
 
 "sizeof"       { return reserved_word(yyscanner); }
 "cast"         { return reserved_word(yyscanner); }
diff --git a/src/compiler/glslang_lex.cpp b/src/compiler/glslang_lex.cpp
index dde988b..6cdf492 100644
--- a/src/compiler/glslang_lex.cpp
+++ b/src/compiler/glslang_lex.cpp
@@ -1,6 +1,6 @@
 #line 17 "./compiler/glslang.l"
 //
-// Copyright (c) 2010 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -383,8 +383,8 @@
 	*yy_cp = '\0'; \
 	yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 147
-#define YY_END_OF_BUFFER 148
+#define YY_NUM_RULES 155
+#define YY_END_OF_BUFFER 156
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -392,55 +392,58 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[426] =
+static yyconst flex_int16_t yy_accept[459] =
     {   0,
-        0,    0,    0,    0,    0,    0,  148,  146,  145,  145,
-      130,  136,  141,  125,  126,  134,  133,  122,  131,  129,
-      135,   94,   94,  123,  119,  137,  124,  138,  142,   90,
-      127,  128,  140,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,  120,  139,  121,  132,    3,    4,    3,
-      144,  147,  143,  116,  102,  121,  110,  105,  100,  108,
-       98,  109,   99,   97,    2,    1,  101,   96,   92,   93,
-        0,    0,   94,  128,  120,  127,  117,  113,  115,  114,
-      118,   90,  106,  112,   90,   90,   90,   90,   90,   90,
+        0,    0,    0,    0,    0,    0,  156,  154,  153,  153,
+      138,  144,  149,  133,  134,  142,  141,  130,  139,  137,
+      143,  102,  102,  131,  127,  145,  132,  146,  150,   98,
+      135,  136,  148,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,  128,  147,  129,  140,    3,    4,    3,
+      152,  155,  151,  124,  110,  129,  118,  113,  108,  116,
+      106,  117,  107,  105,    2,    1,  109,  104,  100,  101,
+        0,    0,  102,  136,  128,  135,  125,  121,  123,  122,
+      126,   98,  114,  120,   98,   98,   98,   98,   98,   98,
 
-       90,   90,   90,   90,   17,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   20,   22,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,  107,  111,    5,  143,
-        0,    1,   96,    0,    0,   95,   91,  103,  104,   50,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   18,   90,   90,
-       90,   90,   90,   90,   90,   90,   26,   90,   90,   90,
-       90,   90,   90,   90,   90,   23,   90,   90,   90,   90,
+       98,   98,   98,   98,   17,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   20,   22,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,  115,  119,    5,
+      151,    0,    1,  104,    0,    0,  103,   99,  111,  112,
+       50,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   18,
+       98,   98,   98,   98,   98,   98,   98,   98,   26,   98,
+       98,   98,   98,   98,   98,   98,   98,   23,   98,   98,
 
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,    0,   97,
-        0,   96,   90,   28,   90,   90,   87,   90,   90,   90,
-       90,   90,   90,   90,   21,   53,   90,   90,   90,   90,
-       90,   58,   72,   90,   90,   90,   90,   90,   90,   90,
-       90,   69,    9,   33,   34,   35,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   56,   29,   90,   90,   90,   90,   90,   90,   36,
-       37,   38,   27,   90,   90,   90,   15,   42,   43,   44,
-       51,   12,   90,   90,   90,   90,   83,   84,   85,   90,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,    0,  105,    0,  104,   98,   28,   98,   98,   95,
+       98,   98,   98,   98,   98,   98,   98,   21,   53,   98,
+       98,   98,   69,   98,   98,   58,   73,   98,   98,   98,
+       98,   98,   98,   98,   98,   70,    9,   33,   34,   35,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   56,   29,   98,   98,
+       98,   98,   98,   98,   36,   37,   38,   27,   98,   98,
+       98,   15,   42,   43,   44,   51,   12,   98,   98,   98,
 
-       30,   73,   25,   80,   81,   82,    7,   77,   78,   79,
-       90,   24,   75,   90,   90,   39,   40,   41,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   70,   90,   90,
-       90,   90,   90,   90,   90,   52,   90,   89,   90,   90,
-       19,   90,   90,   90,   90,   71,   66,   61,   90,   90,
-       90,   90,   90,   76,   57,   90,   64,   32,   90,   86,
-       65,   49,   59,   90,   90,   90,   90,   90,   90,   90,
-       90,   60,   31,   90,   90,   90,    8,   90,   90,   90,
-       90,   90,   54,   13,   90,   14,   90,   90,   16,   67,
-       90,   90,   90,   62,   90,   90,   90,   90,   55,   74,
+       98,   82,   83,   84,   98,   30,   74,   25,   85,   86,
+       87,    7,   79,   80,   81,   98,   24,   77,   98,   98,
+       39,   40,   41,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   71,   98,   98,   98,   98,   98,   98,   98,
+       98,   52,   98,   97,   98,   98,   19,   98,   98,   98,
+       98,   72,   66,   61,   98,   98,   98,   98,   98,   78,
+       57,   98,   64,   32,   98,   94,   65,   49,   76,   59,
+       98,   98,   98,   98,   98,   98,   98,   98,   60,   31,
+       98,   98,   98,    8,   98,   98,   98,   98,   98,   54,
+       13,   98,   14,   98,   98,   16,   67,   98,   98,   98,
 
-       63,   11,   68,    6,   88,   10,   45,   90,   90,   90,
-       90,   90,   90,   46,   90,   90,   90,   48,   90,   90,
-       90,   90,   90,   47,    0
+       62,   98,   98,   98,   98,   98,   98,   55,   75,   63,
+       11,   68,    6,   96,   10,   88,   45,   89,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       46,   98,   98,   98,   98,   98,   98,   98,   48,   98,
+       92,   98,   98,   98,   98,   98,   90,   98,   91,   98,
+       98,   98,   98,   98,   98,   47,   93,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -450,15 +453,15 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    2,    4,    1,    1,    1,    5,    6,    1,    7,
         8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
-       18,   19,   16,   16,   16,   20,   20,   21,   22,   23,
-       24,   25,   26,    1,   27,   27,   28,   29,   30,   27,
-       31,   31,   31,   31,   31,   31,   31,   31,   32,   31,
-       31,   33,   34,   31,   31,   31,   31,   35,   31,   31,
-       36,    1,   37,   38,   31,    1,   39,   40,   41,   42,
+       18,   19,   20,   20,   20,   21,   21,   22,   23,   24,
+       25,   26,   27,    1,   28,   28,   29,   30,   31,   28,
+       32,   32,   32,   32,   32,   32,   32,   32,   33,   32,
+       32,   34,   35,   32,   32,   32,   32,   36,   32,   32,
+       37,    1,   38,   39,   32,    1,   40,   41,   42,   43,
 
-       43,   44,   45,   46,   47,   31,   48,   49,   50,   51,
-       52,   53,   31,   54,   55,   56,   57,   58,   59,   60,
-       61,   62,   63,   64,   65,   66,    1,    1,    1,    1,
+       44,   45,   46,   47,   48,   32,   49,   50,   51,   52,
+       53,   54,   32,   55,   56,   57,   58,   59,   60,   61,
+       62,   63,   64,   65,   66,   67,    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,
@@ -475,201 +478,214 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[67] =
+static yyconst flex_int32_t yy_meta[68] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    3,    3,    3,    3,    3,    3,
-        1,    1,    1,    1,    1,    1,    3,    3,    3,    3,
-        4,    4,    4,    4,    4,    1,    1,    1,    3,    3,
-        3,    3,    3,    3,    4,    4,    4,    4,    4,    4,
+        3,    1,    1,    1,    1,    1,    1,    3,    3,    3,
+        3,    4,    4,    4,    4,    4,    1,    1,    1,    3,
+        3,    3,    3,    3,    3,    4,    4,    4,    4,    4,
         4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    1,    1,    1,    1
+        4,    4,    4,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[431] =
+static yyconst flex_int16_t yy_base[464] =
     {   0,
-        0,    0,   64,   65,   74,    0,  627,  628,  628,  628,
-      602,   45,  135,  628,  628,  601,  132,  628,  131,  129,
-      143,  155,  163,  599,  628,  179,  599,   47,  628,    0,
-      628,  628,  126,   98,  108,  147,  158,  158,  165,  570,
-      130,  107,  569,  148,  156,  563,  172,  576,  174,  181,
-      177,  195,  572,  628,  173,  628,  628,  628,  628,  603,
-      628,  628,    0,  628,  628,  628,  628,  628,  628,  628,
-      628,  628,  628,  233,  628,    0,  628,  239,  255,  271,
-      287,    0,  300,  628,  628,  628,  592,  628,  628,  628,
-      591,    0,  628,  628,  564,  557,  560,  568,  567,  554,
+        0,    0,   65,   66,   75,    0,  680,  681,  681,  681,
+      654,   45,  137,  681,  681,  653,  134,  681,  133,  131,
+      146,  159,  168,  651,  681,  186,  651,   47,  681,    0,
+      681,  681,  128,  100,  110,  152,  156,  146,  166,  622,
+      173,  109,  621,  126,  177,  615,  178,  628,  187,  184,
+      141,  197,  624,  681,  157,  681,  681,  681,  681,  656,
+      681,  681,    0,  681,  681,  681,  681,  681,  681,  681,
+      681,  681,  681,  236,  681,    0,  681,  243,  273,  282,
+      304,    0,  314,  681,  681,  681,  644,  681,  681,  681,
+      643,    0,  681,  681,  616,  609,  612,  620,  619,  606,
 
-      569,  556,  562,  550,  547,  560,  547,  544,  544,  550,
-      538,  545,  542,  552,  538,  544,  547,  548,    0,  187,
-      547,  241,  533,  546,  537,  539,  529,  543,  540,  542,
-      525,  530,  527,  516,  192,  530,  526,  528,  517,  520,
-      274,  525,  517,  529,  114,  522,  628,  628,  628,    0,
-      316,    0,  322,  338,  344,  351,    0,  628,  628,    0,
-      514,  518,  527,  524,  508,  508,  205,  523,  520,  520,
-      518,  515,  507,  513,  500,  511,  514,    0,  511,  499,
-      506,  503,  507,  500,  489,  488,  501,  504,  501,  496,
-      487,  247,  492,  495,  486,  483,  487,  493,  484,  475,
+      621,  608,  614,  602,  599,  612,  599,  596,  596,  602,
+      590,  189,  595,  605,  591,  597,  600,  601,    0,  216,
+      600,  188,  586,  599,  590,  592,  582,  596,  593,  595,
+      578,  583,  580,  569,  183,  577,  582,  578,  580,  569,
+      572,  220,  577,  569,  581,  176,  574,  681,  681,  681,
+        0,  331,    0,  344,  361,  290,  374,    0,  681,  681,
+        0,  566,  570,  579,  576,  560,  560,  215,  575,  572,
+      572,  570,  567,  559,  565,  552,  563,  549,  565,    0,
+      562,  550,  557,  554,  558,  551,  540,  539,  552,  555,
+      552,  547,  538,  260,  543,  546,  537,  534,  538,  544,
 
-      478,  476,  486,  472,  470,  470,  472,  469,  480,  479,
-      328,  474,  469,  458,  260,  476,  478,  467,  358,  366,
-      372,  378,  468,    0,  466,  276,    0,  458,  456,  464,
-      453,  470,  459,  291,    0,    0,  453,  463,  463,  448,
-      305,    0,    0,  450,  327,  451,  445,  444,  445,  444,
-      382,    0,    0,    0,    0,    0,  440,  441,  446,  437,
-      450,  445,  444,  436,  440,  432,  435,  439,  444,  443,
-      434,    0,    0,  440,  429,  429,  434,  433,  430,    0,
-        0,    0,    0,  420,  432,  434,    0,    0,    0,    0,
-        0,    0,  422,  423,  417,  427,    0,    0,    0,  418,
+      535,  526,  529,  527,  537,  523,  521,  534,  520,  522,
+      519,  530,  529,  283,  524,  519,  508,  264,  526,  528,
+      517,  381,  388,  395,  402,  518,    0,  516,  320,    0,
+      508,  506,  514,  503,  520,  509,  336,    0,    0,  503,
+      513,  513,    0,  498,  349,    0,    0,  500,  366,  501,
+      495,  494,  495,  494,  407,    0,    0,    0,    0,    0,
+      490,  491,  496,  487,  500,  495,  494,  486,  490,  482,
+      485,  489,  494,  480,  492,  483,    0,    0,  489,  478,
+      478,  483,  482,  479,    0,    0,    0,    0,  469,  481,
+      483,    0,    0,    0,    0,    0,    0,  471,  472,  466,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      425,    0,    0,  423,  419,    0,    0,    0,  415,  411,
-      416,  406,  419,  405,  418,  407,  414,    0,  412,  414,
-      398,  407,  413,  408,  396,    0,  398,    0,  397,  400,
-        0,  389,  388,  388,  401,    0,  403,    0,  402,  401,
-      386,  399,  386,    0,    0,  389,    0,    0,  381,    0,
-        0,    0,    0,  378,  389,  382,  388,  385,  380,  372,
-      382,    0,    0,  365,  371,  360,    0,  369,  366,  356,
-      385,  364,    0,    0,  364,    0,  362,  361,    0,    0,
-      360,  323,  308,    0,  298,  318,  270,  265,    0,    0,
+      476,    0,    0,    0,  467,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  474,    0,    0,  472,  468,
+        0,    0,    0,  464,  460,  465,  455,  468,  454,  467,
+      456,  463,    0,  461,  463,  447,  449,  455,  461,  456,
+      444,    0,  446,    0,  445,  448,    0,  437,  436,  436,
+      449,    0,  451,    0,  450,  449,  434,  447,  434,    0,
+        0,  437,    0,    0,  429,    0,    0,    0,    0,    0,
+      426,  437,  430,  436,  433,  428,  420,  432,    0,    0,
+      425,  432,  421,    0,  430,  427,  417,  411,  425,    0,
+        0,  425,    0,  423,  422,    0,    0,  421,  407,  419,
 
-        0,    0,    0,    0,    0,    0,  279,  271,  240,  240,
-      238,  237,  226,    0,  208,  188,  190,    0,  186,  173,
-      187,  164,  158,    0,  628,  415,  417,  419,  423,  186
+        0,  410,  431,  430,  429,  400,  396,    0,    0,    0,
+        0,    0,    0,    0,    0,  421,  250,  421,  411,  384,
+      392,  394,  390,  392,  391,  390,  393,  390,  391,  388,
+        0,  332,  343,  317,  329,  313,  317,  304,  321,  291,
+        0,  302,  280,  271,  255,  262,    0,  256,    0,  232,
+      206,  212,  148,  159,  113,    0,    0,  681,  442,  444,
+      446,  450,  161
     } ;
 
-static yyconst flex_int16_t yy_def[431] =
+static yyconst flex_int16_t yy_def[464] =
     {   0,
-      425,    1,  426,  426,  425,    5,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  427,
-      425,  425,  425,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  428,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  429,  425,  425,  425,  425,
-      425,  430,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  427,  425,  425,  427,  427,  427,  427,  427,  427,
+      458,    1,  459,  459,  458,    5,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  460,
+      458,  458,  458,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  461,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  462,  458,  458,  458,  458,
+      458,  463,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  460,  458,  458,  460,  460,  460,  460,  460,  460,
 
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  425,  425,  425,  428,
-      425,  429,  425,  425,  425,  425,  430,  425,  425,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  458,  458,  458,
+      461,  458,  462,  458,  458,  458,  458,  463,  458,  458,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
 
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  425,  425,
-      425,  425,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  458,  458,  458,  458,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
 
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
 
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,  427,  427,  427,  427,  427,  427,
-      427,  427,  427,  427,    0,  425,  425,  425,  425,  425
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,  460,  460,  460,
+      460,  460,  460,  460,  460,  460,  460,    0,  458,  458,
+      458,  458,  458
     } ;
 
-static yyconst flex_int16_t yy_nxt[695] =
+static yyconst flex_int16_t yy_nxt[749] =
     {   0,
         8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
        18,   19,   20,   21,   22,   23,   23,   23,   23,   23,
-       24,   25,   26,   27,   28,   29,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   31,   32,   33,   34,   35,
-       36,   37,   38,   39,   40,   41,   42,   30,   43,   44,
-       45,   46,   47,   48,   49,   50,   51,   52,   53,   30,
-       30,   30,   54,   55,   56,   57,   59,   59,   65,   66,
-       90,   91,   60,   60,    8,   61,   62,    8,    8,    8,
+       23,   24,   25,   26,   27,   28,   29,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   31,   32,   33,   34,
+       35,   36,   37,   38,   39,   40,   41,   42,   30,   43,
+       44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
+       30,   30,   30,   54,   55,   56,   57,   59,   59,   65,
+       66,   90,   91,   60,   60,    8,   61,   62,    8,    8,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
 
-       63,   63,   63,   63,   63,   63,   63,   63,   63,    8,
         8,    8,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,    8,    8,    8,   63,   63,   63,   63,   63,   63,
        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,    8,    8,    8,    8,
-       67,   70,   72,   74,   74,   74,   74,   74,   74,   93,
-      119,   75,   95,   96,   73,   71,   76,  120,   68,   97,
-      216,   98,  217,   94,  121,   99,   77,   78,  116,   79,
-       79,   79,   79,   79,   80,   78,  117,   83,   83,   83,
-       83,   83,   83,   85,   81,  100,  123,  118,  157,   82,
-      124,  424,   81,  423,  125,  101,  147,   81,  102,   86,
+       63,   63,   63,   63,   63,   63,   63,   63,    8,    8,
+        8,    8,   67,   70,   72,   74,   74,   74,   74,   74,
+       74,   74,   93,  119,   75,   95,   96,   73,   71,   76,
+      120,   68,   97,  158,   98,  123,   94,  121,   99,  124,
+       77,   78,  457,   79,   79,   79,   79,   79,   79,   80,
+       78,  148,   83,   83,   83,   83,   83,   83,   83,   81,
+       85,  100,  142,  456,   82,  107,  143,  108,   81,  103,
 
-      103,   87,   88,  110,  104,   81,  107,  126,  108,  105,
-      128,  111,  132,  112,   82,  106,  113,  109,  422,  133,
-      134,  421,  114,  137,  420,  129,  138,  141,  130,  135,
-      204,  142,  136,  143,  139,  184,  148,  144,  185,  186,
-      419,  140,  187,  418,  188,  205,  145,   74,   74,   74,
-       74,   74,   74,  153,  153,  153,  153,  153,  153,  229,
-      230,  417,  151,  254,  255,  256,  416,   78,  154,   79,
-       79,   79,   79,   79,   80,  151,  280,  281,  282,  415,
-      414,  154,  413,   78,   81,   80,   80,   80,   80,   80,
-       80,  190,  288,  289,  290,  412,  155,   81,  155,  191,
+      455,  101,   81,  104,  102,  110,  109,   86,  105,   87,
+       88,   81,  116,  111,  106,  112,  125,  128,  113,   82,
+      117,  149,  206,  219,  114,  220,  132,  138,  178,  126,
+      139,  118,  129,  133,  134,  130,  144,  207,  140,  192,
+      145,  179,  454,  135,  136,  141,  137,  193,  453,  146,
+       74,   74,   74,   74,   74,   74,   74,  154,  154,  154,
+      154,  154,  154,  154,  452,  186,  152,  214,  187,  188,
+      232,  233,  189,  155,  190,  215,  258,  259,  260,  152,
+      285,  286,  287,  422,  423,   78,  155,   79,   79,   79,
+       79,   79,   79,   80,   78,  451,   80,   80,   80,   80,
 
-       81,  156,  156,  156,  156,  156,  156,  297,  298,  299,
-      411,  410,   78,   81,   83,   83,   83,   83,   83,   83,
-      211,  304,  305,  306,  409,  219,  408,  219,  212,   81,
-      220,  220,  220,  220,  220,  220,  153,  153,  153,  153,
-      153,  153,   81,  308,  309,  310,  407,  221,  406,  221,
-      405,  154,  222,  222,  222,  222,  222,  222,  156,  156,
-      156,  156,  156,  156,  154,  156,  156,  156,  156,  156,
-      156,  275,  220,  220,  220,  220,  220,  220,  404,  276,
-      220,  220,  220,  220,  220,  220,  222,  222,  222,  222,
-      222,  222,  222,  222,  222,  222,  222,  222,  316,  317,
+       80,   80,   80,   81,  157,  157,  157,  157,  157,  157,
+      157,  450,   81,  156,  449,  156,   81,  448,  157,  157,
+      157,  157,  157,  157,  157,   81,   78,  280,   83,   83,
+       83,   83,   83,   83,   83,  281,  293,  294,  295,  447,
+      222,  446,  222,  445,   81,  223,  223,  223,  223,  223,
+      223,  223,  302,  303,  304,  444,  443,   81,  154,  154,
+      154,  154,  154,  154,  154,  309,  310,  311,  442,  441,
+      224,  440,  224,  439,  155,  225,  225,  225,  225,  225,
+      225,  225,  313,  314,  315,  438,  437,  155,  157,  157,
+      157,  157,  157,  157,  157,  223,  223,  223,  223,  223,
 
-      318,  396,  403,  402,  401,  400,  399,  395,  394,  393,
-      392,  391,  397,  390,  398,   58,   58,   58,   58,   92,
-       92,  150,  150,  152,  389,  152,  152,  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,  337,  336,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  326,
-      325,  324,  323,  322,  321,  320,  319,  315,  314,  313,
+      223,  223,  223,  223,  223,  223,  223,  223,  223,  225,
+      225,  225,  225,  225,  225,  225,  225,  225,  225,  225,
+      225,  225,  225,  321,  322,  323,  403,  404,  405,  436,
+      435,  434,  433,  432,  431,  430,  429,  428,  427,  406,
+      426,  407,   58,   58,   58,   58,   92,   92,  151,  151,
+      153,  425,  153,  153,  424,  421,  420,  419,  418,  417,
+      416,  415,  414,  413,  412,  411,  410,  409,  408,  402,
+      401,  400,  399,  398,  397,  396,  395,  394,  393,  392,
+      391,  390,  389,  388,  387,  386,  385,  384,  383,  382,
+      381,  380,  379,  378,  377,  376,  375,  374,  373,  372,
 
-      312,  311,  307,  303,  302,  301,  300,  296,  295,  294,
-      293,  292,  291,  287,  286,  285,  284,  283,  279,  278,
-      277,  274,  273,  272,  271,  270,  269,  268,  267,  266,
-      265,  264,  263,  262,  261,  260,  259,  258,  257,  253,
-      252,  251,  250,  249,  248,  247,  246,  245,  244,  243,
-      242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
-      232,  231,  228,  227,  226,  225,  224,  223,  218,  215,
-      214,  213,  210,  209,  208,  207,  206,  203,  202,  201,
-      200,  199,  198,  197,  196,  195,  194,  193,  192,  189,
-      183,  182,  181,  180,  179,  178,  177,  176,  175,  174,
+      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,  337,  336,  335,  334,  333,  332,
+      331,  330,  329,  328,  327,  326,  325,  324,  320,  319,
+      318,  317,  316,  312,  308,  307,  306,  305,  301,  300,
+      299,  298,  297,  296,  292,  291,  290,  289,  288,  284,
+      283,  282,  279,  278,  277,  276,  275,  274,  273,  272,
+      271,  270,  269,  268,  267,  266,  265,  264,  263,  262,
+      261,  257,  256,  255,  254,  253,  252,  251,  250,  249,
 
-      173,  172,  171,  170,  169,  168,  167,  166,  165,  164,
-      163,  162,  161,  160,  159,  158,  149,  146,  131,  127,
-      122,  115,   89,   84,   69,   64,  425,    7,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
+      238,  237,  236,  235,  234,  231,  230,  229,  228,  227,
+      226,  221,  218,  217,  216,  213,  212,  211,  210,  209,
+      208,  205,  204,  203,  202,  201,  200,  199,  198,  197,
+      196,  195,  194,  191,  185,  184,  183,  182,  181,  180,
+      177,  176,  175,  174,  173,  172,  171,  170,  169,  168,
+      167,  166,  165,  164,  163,  162,  161,  160,  159,  150,
+      147,  131,  127,  122,  115,   89,   84,   69,   64,  458,
+        7,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
 
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458
     } ;
 
-static yyconst flex_int16_t yy_chk[695] =
+static yyconst flex_int16_t yy_chk[749] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -677,8 +693,8 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    3,    4,   12,   12,
-       28,   28,    3,    4,    5,    5,    5,    5,    5,    5,
+        1,    1,    1,    1,    1,    1,    1,    3,    4,   12,
+       12,   28,   28,    3,    4,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
 
@@ -686,72 +702,77 @@
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-       13,   17,   19,   20,   20,   20,   20,   20,   20,   33,
-       42,   21,   34,   34,   19,   17,   21,   42,   13,   35,
-      145,   35,  145,   33,   42,   35,   21,   22,   41,   22,
-       22,   22,   22,   22,   22,   23,   41,   23,   23,   23,
-       23,   23,   23,   26,   22,   36,   44,   41,  430,   22,
-       44,  423,   23,  422,   45,   36,   55,   22,   36,   26,
+        5,    5,   13,   17,   19,   20,   20,   20,   20,   20,
+       20,   20,   33,   42,   21,   34,   34,   19,   17,   21,
+       42,   13,   35,  463,   35,   44,   33,   42,   35,   44,
+       21,   22,  455,   22,   22,   22,   22,   22,   22,   22,
+       23,   55,   23,   23,   23,   23,   23,   23,   23,   22,
+       26,   36,   51,  454,   22,   38,   51,   38,   23,   37,
 
-       37,   26,   26,   39,   37,   23,   38,   45,   38,   37,
-       47,   39,   49,   39,   22,   37,   39,   38,  421,   49,
-       49,  420,   39,   50,  419,   47,   50,   51,   47,   49,
-      135,   51,   49,   52,   50,  120,   55,   52,  120,  120,
-      417,   50,  120,  416,  120,  135,   52,   74,   74,   74,
-       74,   74,   74,   78,   78,   78,   78,   78,   78,  167,
-      167,  415,   74,  192,  192,  192,  413,   79,   78,   79,
-       79,   79,   79,   79,   79,   74,  215,  215,  215,  412,
-      411,   78,  410,   80,   79,   80,   80,   80,   80,   80,
-       80,  122,  226,  226,  226,  409,   81,   79,   81,  122,
+      453,   36,   22,   37,   36,   39,   38,   26,   37,   26,
+       26,   23,   41,   39,   37,   39,   45,   47,   39,   22,
+       41,   55,  135,  146,   39,  146,   49,   50,  112,   45,
+       50,   41,   47,   49,   49,   47,   52,  135,   50,  122,
+       52,  112,  452,   49,   49,   50,   49,  122,  451,   52,
+       74,   74,   74,   74,   74,   74,   74,   78,   78,   78,
+       78,   78,   78,   78,  450,  120,   74,  142,  120,  120,
+      168,  168,  120,   78,  120,  142,  194,  194,  194,   74,
+      218,  218,  218,  417,  417,   79,   78,   79,   79,   79,
+       79,   79,   79,   79,   80,  448,   80,   80,   80,   80,
 
-       80,   81,   81,   81,   81,   81,   81,  234,  234,  234,
-      408,  407,   83,   80,   83,   83,   83,   83,   83,   83,
-      141,  241,  241,  241,  398,  151,  397,  151,  141,   83,
-      151,  151,  151,  151,  151,  151,  153,  153,  153,  153,
-      153,  153,   83,  245,  245,  245,  396,  154,  395,  154,
-      393,  153,  154,  154,  154,  154,  154,  154,  155,  155,
-      155,  155,  155,  155,  153,  156,  156,  156,  156,  156,
-      156,  211,  219,  219,  219,  219,  219,  219,  392,  211,
-      220,  220,  220,  220,  220,  220,  221,  221,  221,  221,
-      221,  221,  222,  222,  222,  222,  222,  222,  251,  251,
+       80,   80,   80,   79,  156,  156,  156,  156,  156,  156,
+      156,  446,   80,   81,  445,   81,   79,  444,   81,   81,
+       81,   81,   81,   81,   81,   80,   83,  214,   83,   83,
+       83,   83,   83,   83,   83,  214,  229,  229,  229,  443,
+      152,  442,  152,  440,   83,  152,  152,  152,  152,  152,
+      152,  152,  237,  237,  237,  439,  438,   83,  154,  154,
+      154,  154,  154,  154,  154,  245,  245,  245,  437,  436,
+      155,  435,  155,  434,  154,  155,  155,  155,  155,  155,
+      155,  155,  249,  249,  249,  433,  432,  154,  157,  157,
+      157,  157,  157,  157,  157,  222,  222,  222,  222,  222,
 
-      251,  381,  391,  388,  387,  385,  382,  380,  379,  378,
-      376,  375,  381,  374,  381,  426,  426,  426,  426,  427,
-      427,  428,  428,  429,  371,  429,  429,  370,  369,  368,
-      367,  366,  365,  364,  359,  356,  353,  352,  351,  350,
-      349,  347,  345,  344,  343,  342,  340,  339,  337,  335,
-      334,  333,  332,  331,  330,  329,  327,  326,  325,  324,
-      323,  322,  321,  320,  319,  315,  314,  311,  300,  296,
-      295,  294,  293,  286,  285,  284,  279,  278,  277,  276,
-      275,  274,  271,  270,  269,  268,  267,  266,  265,  264,
-      263,  262,  261,  260,  259,  258,  257,  250,  249,  248,
+      222,  222,  223,  223,  223,  223,  223,  223,  223,  224,
+      224,  224,  224,  224,  224,  224,  225,  225,  225,  225,
+      225,  225,  225,  255,  255,  255,  388,  388,  388,  430,
+      429,  428,  427,  426,  425,  424,  423,  422,  421,  388,
+      420,  388,  459,  459,  459,  459,  460,  460,  461,  461,
+      462,  419,  462,  462,  418,  416,  407,  406,  405,  404,
+      403,  402,  400,  399,  398,  395,  394,  392,  389,  387,
+      386,  385,  383,  382,  381,  378,  377,  376,  375,  374,
+      373,  372,  371,  365,  362,  359,  358,  357,  356,  355,
+      353,  351,  350,  349,  348,  346,  345,  343,  341,  340,
 
-      247,  246,  244,  240,  239,  238,  237,  233,  232,  231,
-      230,  229,  228,  225,  223,  218,  217,  216,  214,  213,
-      212,  210,  209,  208,  207,  206,  205,  204,  203,  202,
-      201,  200,  199,  198,  197,  196,  195,  194,  193,  191,
-      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
-      180,  179,  177,  176,  175,  174,  173,  172,  171,  170,
-      169,  168,  166,  165,  164,  163,  162,  161,  146,  144,
-      143,  142,  140,  139,  138,  137,  136,  134,  133,  132,
-      131,  130,  129,  128,  127,  126,  125,  124,  123,  121,
-      118,  117,  116,  115,  114,  113,  112,  111,  110,  109,
+      339,  338,  337,  336,  335,  334,  332,  331,  330,  329,
+      328,  327,  326,  325,  324,  320,  319,  316,  305,  301,
+      300,  299,  298,  291,  290,  289,  284,  283,  282,  281,
+      280,  279,  276,  275,  274,  273,  272,  271,  270,  269,
+      268,  267,  266,  265,  264,  263,  262,  261,  254,  253,
+      252,  251,  250,  248,  244,  242,  241,  240,  236,  235,
+      234,  233,  232,  231,  228,  226,  221,  220,  219,  217,
+      216,  215,  213,  212,  211,  210,  209,  208,  207,  206,
+      205,  204,  203,  202,  201,  200,  199,  198,  197,  196,
+      195,  193,  192,  191,  190,  189,  188,  187,  186,  185,
 
-      108,  107,  106,  105,  104,  103,  102,  101,  100,   99,
-       98,   97,   96,   95,   91,   87,   60,   53,   48,   46,
-       43,   40,   27,   24,   16,   11,    7,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425,  425,  425,  425,  425,  425,  425,
-      425,  425,  425,  425
+      184,  183,  182,  181,  179,  178,  177,  176,  175,  174,
+      173,  172,  171,  170,  169,  167,  166,  165,  164,  163,
+      162,  147,  145,  144,  143,  141,  140,  139,  138,  137,
+      136,  134,  133,  132,  131,  130,  129,  128,  127,  126,
+      125,  124,  123,  121,  118,  117,  116,  115,  114,  113,
+      111,  110,  109,  108,  107,  106,  105,  104,  103,  102,
+      101,  100,   99,   98,   97,   96,   95,   91,   87,   60,
+       53,   48,   46,   43,   40,   27,   24,   16,   11,    7,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
 
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
+      458,  458,  458,  458,  458,  458,  458,  458
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[148] =
+static yyconst flex_int32_t yy_rule_can_match_eol[156] =
     {   0,
 0, 0, 0, 1, 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, 
@@ -760,7 +781,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, 1, 0, 0,     };
+    0, 0, 0, 0, 0, 0, 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.
@@ -771,7 +792,7 @@
 #define YY_RESTORE_YY_MORE_OFFSET
 /*
 //
-// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
+// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 //
@@ -1086,13 +1107,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 >= 426 )
+				if ( yy_current_state >= 459 )
 					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 != 425 );
+		while ( yy_current_state != 458 );
 		yy_cp = yyg->yy_last_accepting_cpos;
 		yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1481,233 +1502,265 @@
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 91:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 92:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 93:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 94:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 95:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 96:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 97:
+YY_RULE_SETUP
+{ return reserved_word(yyscanner); }
+	YY_BREAK
+case 98:
+YY_RULE_SETUP
 {
    yylval->lex.string = NewPoolTString(yytext); 
    return check_type(yyscanner);
 }
 	YY_BREAK
-case 91:
-YY_RULE_SETUP
-{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
-	YY_BREAK
-case 93:
-YY_RULE_SETUP
-{ context->error(yylineno, "Invalid Octal number.", yytext, "", ""); context->recover(); return 0;}
-	YY_BREAK
-case 94:
-YY_RULE_SETUP
-{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
-	YY_BREAK
-case 95:
-YY_RULE_SETUP
-{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
-	YY_BREAK
-case 96:
-YY_RULE_SETUP
-{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
-	YY_BREAK
-case 97:
-YY_RULE_SETUP
-{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
-	YY_BREAK
-case 98:
-YY_RULE_SETUP
-{  return(ADD_ASSIGN); }
-	YY_BREAK
 case 99:
 YY_RULE_SETUP
-{  return(SUB_ASSIGN); }
+{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-{  return(MUL_ASSIGN); }
+{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-{  return(DIV_ASSIGN); }
+{ context->error(yylineno, "Invalid Octal number.", yytext, "", ""); context->recover(); return 0;}
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-{  return(MOD_ASSIGN); }
+{ yylval->lex.i = strtol(yytext, 0, 0); return(INTCONSTANT); }
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-{  return(LEFT_ASSIGN); }
+{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-{  return(RIGHT_ASSIGN); }
+{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-{  return(AND_ASSIGN); }
+{ yylval->lex.f = static_cast<float>(atof_dot(yytext)); return(FLOATCONSTANT); }
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-{  return(XOR_ASSIGN); }
+{  return(ADD_ASSIGN); }
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-{  return(OR_ASSIGN); }
+{  return(SUB_ASSIGN); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-{  return(INC_OP); }
+{  return(MUL_ASSIGN); }
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-{  return(DEC_OP); }
+{  return(DIV_ASSIGN); }
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-{  return(AND_OP); }
+{  return(MOD_ASSIGN); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-{  return(OR_OP); }
+{  return(LEFT_ASSIGN); }
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-{  return(XOR_OP); }
+{  return(RIGHT_ASSIGN); }
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-{  return(LE_OP); }
+{  return(AND_ASSIGN); }
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-{  return(GE_OP); }
+{  return(XOR_ASSIGN); }
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-{  return(EQ_OP); }
+{  return(OR_ASSIGN); }
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-{  return(NE_OP); }
+{  return(INC_OP); }
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-{  return(LEFT_OP); }
+{  return(DEC_OP); }
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-{  return(RIGHT_OP); }
+{  return(AND_OP); }
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-{ context->lexAfterType = false; return(SEMICOLON); }
+{  return(OR_OP); }
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-{ context->lexAfterType = false; return(LEFT_BRACE); }
+{  return(XOR_OP); }
 	YY_BREAK
 case 121:
 YY_RULE_SETUP
-{ return(RIGHT_BRACE); }
+{  return(LE_OP); }
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-{ if (context->inTypeParen) context->lexAfterType = false; return(COMMA); }
+{  return(GE_OP); }
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-{ return(COLON); }
+{  return(EQ_OP); }
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-{ context->lexAfterType = false; return(EQUAL); }
+{  return(NE_OP); }
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-{ context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); }
+{  return(LEFT_OP); }
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-{ context->inTypeParen = false; return(RIGHT_PAREN); }
+{  return(RIGHT_OP); }
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-{ return(LEFT_BRACKET); }
+{ context->lexAfterType = false; return(SEMICOLON); }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-{ return(RIGHT_BRACKET); }
+{ context->lexAfterType = false; return(LEFT_BRACE); }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-{ BEGIN(FIELDS);  return(DOT); }
+{ return(RIGHT_BRACE); }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-{ return(BANG); }
+{ if (context->inTypeParen) context->lexAfterType = false; return(COMMA); }
 	YY_BREAK
 case 131:
 YY_RULE_SETUP
-{ return(DASH); }
+{ return(COLON); }
 	YY_BREAK
 case 132:
 YY_RULE_SETUP
-{ return(TILDE); }
+{ context->lexAfterType = false; return(EQUAL); }
 	YY_BREAK
 case 133:
 YY_RULE_SETUP
-{ return(PLUS); }
+{ context->lexAfterType = false; context->inTypeParen = true; return(LEFT_PAREN); }
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-{ return(STAR); }
+{ context->inTypeParen = false; return(RIGHT_PAREN); }
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-{ return(SLASH); }
+{ return(LEFT_BRACKET); }
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-{ return(PERCENT); }
+{ return(RIGHT_BRACKET); }
 	YY_BREAK
 case 137:
 YY_RULE_SETUP
-{ return(LEFT_ANGLE); }
+{ BEGIN(FIELDS);  return(DOT); }
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
-{ return(RIGHT_ANGLE); }
+{ return(BANG); }
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-{ return(VERTICAL_BAR); }
+{ return(DASH); }
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
-{ return(CARET); }
+{ return(TILDE); }
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
-{ return(AMPERSAND); }
+{ return(PLUS); }
 	YY_BREAK
 case 142:
 YY_RULE_SETUP
-{ return(QUESTION); }
+{ return(STAR); }
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
+{ return(SLASH); }
+	YY_BREAK
+case 144:
+YY_RULE_SETUP
+{ return(PERCENT); }
+	YY_BREAK
+case 145:
+YY_RULE_SETUP
+{ return(LEFT_ANGLE); }
+	YY_BREAK
+case 146:
+YY_RULE_SETUP
+{ return(RIGHT_ANGLE); }
+	YY_BREAK
+case 147:
+YY_RULE_SETUP
+{ return(VERTICAL_BAR); }
+	YY_BREAK
+case 148:
+YY_RULE_SETUP
+{ return(CARET); }
+	YY_BREAK
+case 149:
+YY_RULE_SETUP
+{ return(AMPERSAND); }
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+{ return(QUESTION); }
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
 { 
     BEGIN(INITIAL);
     yylval->lex.string = NewPoolTString(yytext); 
     return FIELD_SELECTION;
 }
 	YY_BREAK
-case 144:
+case 152:
 YY_RULE_SETUP
 {}
 	YY_BREAK
-case 145:
-/* rule 145 can match eol */
+case 153:
+/* rule 153 can match eol */
 YY_RULE_SETUP
 {  }
 	YY_BREAK
@@ -1716,11 +1769,11 @@
 case YY_STATE_EOF(FIELDS):
 { context->AfterEOF = true; yyterminate(); }
 	YY_BREAK
-case 146:
+case 154:
 YY_RULE_SETUP
 { context->warning(yylineno, "Unknown char", yytext, ""); return 0; }
 	YY_BREAK
-case 147:
+case 155:
 YY_RULE_SETUP
 ECHO;
 	YY_BREAK
@@ -2016,7 +2069,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 >= 426 )
+			if ( yy_current_state >= 459 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2045,11 +2098,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 >= 426 )
+		if ( yy_current_state >= 459 )
 			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 == 425);
+	yy_is_jam = (yy_current_state == 458);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }