ralloc: Add missing va_end following va_copy.
[mesa.git] / src / glsl / glsl_lexer.cpp
index c93cc3a97903ec0a30d03ef20c9cfae248f1ae91..04927950f4ad0dc7ac791281685f876fe5bbda70 100644 (file)
@@ -54,6 +54,7 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -84,8 +85,6 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
-#endif /* ! C99 */
-
 #endif /* ! FLEXINT_H */
 
 #ifdef __cplusplus
@@ -159,15 +158,7 @@ typedef void* yyscan_t;
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k.
- * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
- * Ditto for the __ia64__ case accordingly.
- */
-#define YY_BUF_SIZE 32768
-#else
 #define YY_BUF_SIZE 16384
-#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -358,8 +349,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 187
-#define YY_END_OF_BUFFER 188
+#define YY_NUM_RULES 210
+#define YY_END_OF_BUFFER 211
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -367,87 +358,100 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[716] =
+static yyconst flex_int16_t yy_accept[836] =
     {   0,
-        0,    0,   15,   15,    0,    0,  188,  186,    1,   20,
-      186,  186,  186,  186,  186,  186,  186,  186,  100,   98,
-      186,  186,  186,  185,  186,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  186,    1,  186,   95,  187,
-       15,   19,  187,   18,   16,   17,   13,   12,    1,   84,
-       91,   85,   94,   88,   79,   90,   80,   97,  102,   89,
-      103,  100,    0,    0,  105,    0,   98,    0,   81,   83,
-       82,    0,  185,   87,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,   29,  185,  185,  185,
-
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-       33,  185,  185,   60,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,   96,   86,    1,    0,
-        0,    2,    0,    0,    0,    0,   15,   14,   18,   17,
-        0,  102,  101,    0,  103,    0,  104,   99,   92,   93,
-      185,  108,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,   32,  185,  185,  185,  185,  185,  185,
-
-      185,  185,  185,  185,   25,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,   61,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,    0,    0,    0,    0,   14,
-        0,  102,    0,  101,    0,  103,  104,  185,  185,   23,
-      185,  185,  148,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,   31,  111,  185,  185,  185,  185,   67,  185,
-      185,  116,  130,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  127,  151,   48,   49,   50,  185,
-
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  114,
-      106,  185,  185,   26,  185,  185,  185,  185,  185,  185,
-       45,   46,   47,   77,  185,  185,    0,    0,    0,    0,
-        0,  101,  185,  185,   27,   36,   37,   38,  185,  109,
-      185,   22,  185,  185,  185,  185,  138,  139,  140,  185,
-      107,  185,  131,   24,  141,  142,  143,  153,  135,  136,
-      137,  185,  185,  185,   62,  133,  185,  185,   39,   40,
-       41,  185,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  128,  185,  185,
-
-      185,  185,  185,  185,  185,  185,  185,  185,  110,  185,
-      150,   42,   43,   44,  185,  185,   30,    0,    0,    0,
-        0,  157,  185,  185,  155,  185,  185,  185,  129,  124,
-      160,  185,  185,  185,  185,  185,  185,  119,  185,  185,
-       78,   51,   52,   53,   54,   55,   56,   57,   58,   59,
-      185,  185,  185,  185,  134,  115,  185,  185,  122,   35,
-      185,  185,  147,   68,  123,   76,  158,  117,  185,  185,
-      185,  185,  185,  185,  185,    0,    0,    0,    0,  185,
-      185,  185,  118,   34,  185,  185,  185,  185,  185,  185,
-      161,  162,  163,  185,  185,  185,  185,  152,  185,  185,
-
-      185,  185,  185,  185,  185,  185,  112,  185,  185,  185,
-      185,  185,   63,  185,   64,  185,    0,    0,    0,    0,
-        0,  185,   65,   28,  125,  165,  166,  167,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  120,
-      185,  185,  185,  185,  185,  185,  185,  185,  185,  113,
-      169,  170,  171,  185,  185,  132,  121,    0,    0,    6,
-        0,    0,    0,   11,    3,   21,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  164,  126,   66,  149,  185,
-      156,  154,  184,   70,   71,   72,  185,  185,  185,  185,
-      185,  185,    0,    0,    0,    0,    0,    0,  185,  185,
-
-      185,  168,  185,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  185,  185,  185,  185,  185,  172,    4,    0,
-        5,    0,    0,    0,    0,    0,  185,  185,  185,  185,
-      185,  185,  185,  181,  185,  185,  185,  185,  185,  185,
-       73,  185,  185,  185,    0,    0,    0,  185,  185,  182,
-      173,  185,  174,  185,  185,  185,  185,  185,  185,  185,
-      185,  185,  183,    0,    0,  175,  176,  179,  180,   69,
-      185,  144,  185,  145,  159,  177,  178,    0,    0,  185,
-      185,  185,    0,    0,    0,   74,  185,   75,    0,    0,
-        0,  185,    0,    0,    0,  185,    0,    0,    7,    0,
-
-        0,  185,    0,    8,    0,    0,  146,    0,    0,    0,
-        0,    9,    0,   10,    0
+        0,    0,   16,   16,    0,    0,  211,  209,    1,   21,
+      209,  209,  209,  209,  209,  209,  209,  209,  120,  118,
+      209,  209,  209,  208,  209,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  209,    1,  209,  210,   16,
+       20,  210,   19,   17,   18,   14,   13,    1,  102,  111,
+      103,  114,  108,   97,  110,   98,  117,  122,  109,  123,
+      120,    0,    0,  125,  120,    0,  118,  118,  106,   99,
+      101,  100,  107,  208,  115,  105,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,   30,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,   34,  208,  208,   61,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  116,
+      104,    1,    0,    0,    2,    0,    0,    0,    0,   16,
+       15,   19,   18,    0,  122,  121,    0,  123,    0,  124,
+      119,  112,  113,  208,  128,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,   33,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,   26,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,   62,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+        0,    0,    0,    0,   15,    0,  122,    0,  121,    0,
+      123,  124,  119,  208,  208,   24,  208,  208,  175,  168,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,   32,
+      131,  208,  208,  208,  208,   68,  208,  208,  136,  150,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  147,  171,   49,   50,   51,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  134,  126,  208,
+      208,   27,  208,  208,  208,  208,  208,  208,  208,   46,
+       47,   48,   95,  208,  208,    0,    0,    0,    0,    0,
+      121,  208,  208,   28,   37,   38,   39,  208,  129,  208,
+       23,  208,  208,  208,  208,  158,  159,  160,  208,  127,
+      208,  151,   25,  161,  162,  163,  173,  155,  156,  157,
+      208,  208,  208,   63,  153,  208,  208,  208,   40,   41,
+       42,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  148,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  130,  208,
+      208,  170,   43,   44,   45,  208,  208,   31,    0,    0,
+        0,    0,  178,  208,  208,  176,  208,  208,  208,  149,
+      144,  181,  208,  208,  208,  208,  208,  208,  139,  208,
+      208,  208,   96,   52,   53,   54,   55,   56,   57,   58,
+       59,   60,  208,  208,  208,  208,  154,  135,  208,  208,
+      142,   36,  208,  208,  167,   69,  143,   94,  179,  137,
+      208,  208,  208,  208,  208,  208,  208,  208,    0,    0,
+        0,    0,  208,  208,  208,  138,   35,  208,  208,  208,
+
+      208,  208,  208,  182,  183,  184,  208,  208,  208,  208,
+      208,  172,  208,  208,  208,  208,  208,  208,  208,  208,
+      132,  208,  208,  208,  208,  208,   64,  208,  208,   65,
+      208,    0,    0,    0,    0,    0,  208,   66,   29,  145,
+      186,  187,  188,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  140,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  133,  190,  191,  192,  208,
+      208,  152,  208,  141,    0,    0,    6,    0,    0,    0,
+       12,    3,   22,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  185,  146,   67,  208,  208,  208,  208,  169,
+
+      208,  177,  174,  207,   71,   72,   73,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,    0,    0,    0,
+        0,    0,    0,    0,  208,  208,  208,  189,  208,  208,
+      208,  208,  208,   82,   83,   84,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  193,
+       88,   89,   90,  208,    4,    0,    5,    0,    0,    0,
+        0,    0,    0,  208,  208,  208,  208,  208,  208,  208,
+      204,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,   74,  208,  208,  208,  208,  208,  208,    0,
+        0,    0,    0,  208,  208,  205,  194,  208,  195,  208,
+
+      208,  208,   85,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  206,  208,  208,   91,    0,    0,
+        0,  196,  197,  208,  200,  208,  201,  208,  208,   70,
+      208,  208,  208,  164,  208,  165,  180,  208,  198,  199,
+      208,  208,    0,    0,    0,  208,  208,  208,  208,   75,
+      208,   76,  208,  208,  208,  208,  208,    0,    0,    0,
+        0,  208,  208,   86,   87,  208,   77,  208,  208,   78,
+      208,   92,   93,    0,    0,    0,    0,  208,  208,  208,
+      208,  208,  208,    0,    0,    0,    0,  208,  208,  208,
+      208,  208,   79,    0,    0,    0,    7,    0,    0,  202,
+
+      203,  208,  208,  208,    0,    0,    8,    0,    0,  208,
+      208,  166,    0,    0,    0,   80,   81,    0,    0,    0,
+        9,    0,    0,   10,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   11,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -459,13 +463,13 @@ static yyconst flex_int32_t yy_ec[256] =
        10,   11,   12,    1,   13,   14,   15,   16,   17,   18,
        19,   20,   21,   21,   21,   22,   22,   23,    1,   24,
        25,   26,    1,    1,   27,   28,   29,   30,   31,   32,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   34,   35,   33,   33,   33,   33,   36,   33,   33,
-        1,    1,    1,   37,   38,    1,   39,   40,   41,   42,
+       33,   34,   34,   34,   34,   35,   34,   34,   34,   34,
+       34,   36,   37,   38,   39,   34,   34,   40,   34,   34,
+        1,    1,    1,   41,   42,    1,   43,   44,   45,   46,
 
-       43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
-       53,   54,   33,   55,   56,   57,   58,   59,   60,   61,
-       62,   63,    1,   64,    1,    1,    1,    1,    1,    1,
+       47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+       57,   58,   34,   59,   60,   61,   62,   63,   64,   65,
+       66,   67,    1,   68,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -482,317 +486,357 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[65] =
+static yyconst flex_int32_t yy_meta[69] =
     {   0,
-        1,    2,    3,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    4,    4,    4,    4,    4,
-        4,    5,    1,    1,    1,    1,    6,    6,    6,    6,
-        5,    5,    7,    7,    7,    8,    1,    7,    6,    6,
-        6,    6,    5,    5,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        8,    7,    7,    1
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    3,    3,    3,    3,    3,
+        3,    3,    1,    1,    1,    1,    4,    4,    4,    4,
+        3,    3,    5,    5,    5,    5,    5,    5,    5,    5,
+        1,    5,    4,    4,    4,    4,    3,    3,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[727] =
+static yyconst flex_int16_t yy_base[845] =
     {   0,
-        0,   63,   88,    0, 1084, 1083, 1085, 1088,   64, 1088,
-     1059, 1058,   59, 1057,   58,   60,   58, 1056,  139,  187,
-       47, 1055,   56,    0, 1042,  121,  110,  137,  138,  134,
-      163, 1025,  173,  177,  115,  149,  140, 1019,  159,  121,
-      187,  194,  194,  172, 1030,  171,  253,  240, 1050, 1088,
-      250, 1088, 1059,  244, 1088,    0, 1088, 1088,  265, 1088,
-     1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088,  241, 1088,
-      243,  187,  286,  303, 1088,    0,    0, 1048, 1088, 1088,
-     1088, 1047,    0, 1088, 1014, 1019, 1012, 1015, 1024, 1023,
-     1009, 1012, 1024,   35, 1018, 1005, 1002, 1016, 1002,  999,
-
-      999, 1005,  218,  238,  999, 1010,  995, 1001, 1005, 1006,
-        0,  997, 1008,  239, 1003,  983,  218,  987, 1001,  991,
-      119,  984,  240,  997,  999,  981,  977,  985,  982,  971,
-      980,  258,  978,  984,  979,  982,  970,  973,  258,  224,
-      979,  982,  969,  982,  264,  975, 1088, 1088,  329,  324,
-      334, 1088,  960,  973,  964,  975,  330,    0,  322,    0,
-      333, 1088,  316,  378, 1088,  385,  392,    0, 1088, 1088,
-      970,    0,  961,  965,  975,  972,  955,  954,  954,  958,
-      300,  969,  966,  966,  964,  961,  952,  959,  945,  943,
-      956,  941,  958,    0,  955,  942,  950,  947,  951,  952,
-
-      945,  942,  930,  929,  943,  946,  943,  930,  937,  927,
-      343,  933,  936,  926,  934,  922,  926,  917,  932,  922,
-      913,  932,  915,  913,  924,  913,  908,  906,  920,  905,
-      907,  904,  916,  915,  918,  899,  320,  908,  902,  912,
-      890,  350,  909,  911,  899,  891,  895,  907,  890,    0,
-      399,  409,  426, 1088,  438,  445, 1088,  885,  896,    0,
-      893,  361,    0,  886,  884,  886,  881,  890,  878,  896,
-      884,  367,    0,    0,  878,  889,  888,  888,    0,  872,
-      414,    0,    0,  874,  431,  882,  883,  873,  867,  866,
-      867,  866,  450,  862,    0,    0,  858,  857,  856,  858,
-
-      859,  864,  858,  854,  868,  863,  862,  861,  852,  855,
-      855,  847,  850,  845,  854,  859,  844,  857,  847,    0,
-        0,  854,  850,    0,  841,  841,  847,  846,  453,  843,
-        0,    0,    0,    0,  832,  845,  844,  843,  840,  828,
-      462,  474,  840,  842,    0,    0,    0,    0,  828,    0,
-      828,    0,  827,  828,  822,  833,    0,    0,    0,  823,
-        0,  819,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  830,  457,  829,    0,    0,  827,  823,    0,    0,
-        0,  812,  479,  482,  485,  817,  813,  819,  809,  807,
-      821,  805,  805,  819,  807,  819,  814,    0,  812,  809,
-
-      813,  796,  798,  805,  811,  806,  805,  792,    0,  794,
-        0,    0,    0,    0,  793,  797,    0,  791,  840,  790,
-      793,    0,  781,  791,    0,  779,  779,  793,    0,  795,
-        0,  491,  803,  802,  801,  772,  771,    0,  789,  788,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      772,  786,  772,  769,    0,    0,  775,  774,    0,    0,
-      772,  764,    0,    0,    0,    0,    0,    0,  761,  773,
-      494,  765,  772,  769,  763,  756,  512,  772,  757,  752,
-      766,  764,    0,    0,  756,  775,  774,  773,  744,  743,
-      331,  480,    0,  756,  759,  757,  745,    0,  755,  752,
-
-      751,  740,  739,  738,  507,  747,    0,  759,  758,  757,
-      728,  727,    0,  742,    0,  740,  735,  485,  535,  779,
-      728,  736,    0,    0,    0,  751,  750,    0,  732,  735,
-      719,  727,  717,  725,  726,  726,  725,  710,  723,    0,
-      724,  712,  711,  707,  731,  730,  729,  700,  699,    0,
-      729,  728,    0,  710,  713,    0,    0,  699,  542, 1088,
-      563,    0,  569,  525, 1088,    0,  696,  695,  705,  705,
-      692,  707,  690,  705,  700,    0,    0,    0,    0,  685,
-        0,    0,    0,  706,  337,  706,  695,  698,  682,  681,
-      691,  691,  681,  514,  590,  373,  689,  677,  675,  674,
-
-      685,    0,  688,  684,  686,  682,  668,  675,  675,  677,
-      673,  675,  673,  673,  660,  659,  670,    0, 1088,  420,
-     1088,  597,    0,  617,  672,  654,  671,  670,  653,  645,
-      653,  643,  651,    0,  640,  659,  656,  650,  647,  644,
-        0,  639,  609,  592,  537,  588,  598,  582,  581,    0,
-        0,  569,    0,  567,  583,  560,  544,  527,  491,  487,
-      390,  378,    0,  392,  384,    0,    0,    0,    0,    0,
-      339,  330,  275,    0,    0,    0,    0,  249,  265,  241,
-      242,  222,  380,  541,  213,    0,  200,    0,  545,  497,
-      184,  157,  150,  566,  568,  136,  593,  594, 1088,  619,
-
-      571,  112,  595, 1088,  572,  578,    0,  123,  621,  630,
-      639, 1088,  640, 1088, 1088,  650,  655,  660,  665,  667,
-      669,  675,  682,  687,  692,  697
+        0,   67,   73,    0, 1210, 1209, 1211, 1214,   68, 1214,
+     1185, 1184,  134, 1183,  131,  132,  130, 1182,  146,  198,
+      129, 1181,  144,    0,  130,  113,  124,  141,  150,  126,
+      181, 1148,  159,  192,  118,  129,  146, 1142,  147,  174,
+      206,  192,  203,  222, 1153,  203,  221,  231, 1214,  260,
+     1214, 1187,  279, 1214,    0, 1214, 1214,  270, 1214, 1214,
+     1214, 1214, 1214, 1214, 1214, 1214, 1214,  244, 1214,  255,
+      139,  290,  307, 1214, 1214,    0,    0, 1214, 1176, 1214,
+     1214, 1214, 1175,    0, 1214, 1214, 1138, 1143, 1136, 1139,
+     1148, 1147, 1133, 1136, 1148,  144, 1142, 1129, 1126, 1140,
+
+     1126, 1123, 1123, 1129,  219,  193, 1123, 1134, 1119, 1125,
+     1129, 1130,    0, 1121, 1132,  278, 1131, 1126, 1106,  224,
+     1110, 1124, 1114,  232, 1107,  271, 1120, 1122, 1104, 1100,
+     1108, 1105, 1094, 1103,  234, 1101, 1107, 1102, 1105, 1093,
+     1096,  226,  145,  262, 1106, 1093, 1106,  263, 1099, 1214,
+     1214,  338,  331,  343, 1214, 1084, 1097, 1088, 1099,  345,
+        0,  334,    0,  345, 1214,  328,  391, 1214,  352,  398,
+      338, 1214, 1214, 1094,    0, 1085, 1089, 1099, 1096,  332,
+     1079, 1079, 1083,  320, 1094, 1091, 1091, 1089, 1086, 1077,
+     1084, 1070, 1068, 1081, 1066, 1083,    0, 1080, 1067, 1075,
+
+     1072, 1076, 1077, 1070, 1067, 1055, 1054, 1068, 1071, 1058,
+     1067, 1054, 1061, 1051,  364, 1057, 1060, 1050, 1058, 1046,
+     1050, 1041, 1056, 1046, 1037, 1056, 1039, 1037, 1048, 1037,
+     1032, 1030, 1044, 1029, 1031, 1028, 1040, 1039, 1042, 1023,
+      338, 1032, 1027, 1025, 1035, 1013,  403, 1032, 1034, 1022,
+     1014, 1018, 1030, 1013,    0,  415,  422,  439, 1214,  446,
+      455, 1214, 1214, 1008, 1019,    0, 1016,  406,    0,    0,
+     1009, 1007, 1009, 1004, 1013, 1001, 1019, 1007,  409,    0,
+        0, 1001, 1012, 1011, 1011,    0,  995,  429,    0,    0,
+      997,  460, 1005, 1006,  996,  990,  989,  990,  989,  989,
+
+      463,  984,    0,    0,  980,  979,  978,  980,  981,  986,
+      980,  976,  990,  985,  984,  983,  974,  977,  977,  969,
+      972,  967,  976,  981,  966,  979,  969,    0,    0,  976,
+      972,    0,  963,  963,  969,  959,  967,  466,  964,    0,
+        0,    0,    0,  953,  966,  965,  964,  961,  949,  472,
+      479,  961,  963,    0,    0,    0,    0,  949,    0,  949,
+        0,  948,  949,  943,  954,    0,    0,    0,  944,    0,
+      940,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      951,  487,  950,    0,    0,  948,  944,  940,    0,    0,
+        0,  932,  489,  494,  499,  937,  933,  939,  929,  927,
+
+      941,  925,  925,  939,  927,  939,  934,    0,  932,  929,
+      933,  916,  918,  925,  931,  926,  925,  912,    0,  914,
+      915,    0,    0,    0,    0,  912,  916,    0,  910,  963,
+      909,  912,    0,  900,  910,    0,  898,  898,  912,    0,
+      914,    0,  503,  926,  925,  924,  891,  890,    0,  908,
+      907,  902,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  890,  904,  890,  887,    0,    0,  893,  892,
+        0,    0,  890,  882,    0,    0,    0,    0,    0,    0,
+      879,  891,  506,  883,  890,  889,  886,  880,  873,  524,
+      889,  874,  869,  883,  881,    0,    0,  873,  896,  895,
+
+      894,  861,  860,  361,  365,    0,  873,  876,  874,  862,
+      858,    0,  871,  868,  867,  856,  855,  854,  519,  863,
+        0,  879,  878,  877,  844,  843,    0,  858,  844,    0,
+      855,  850,  547,  553,  898,  843,  851,    0,    0,    0,
+      870,  869,    0,  847,  850,  834,  842,  832,  840,  841,
+      841,  840,  825,  559,  838,    0,  839,  827,  826,  822,
+      850,  849,  848,  815,  814,    0,  848,  847,    0,  825,
+      828,    0,  562,    0,  814,  580, 1214,  587,    0,  607,
+      584, 1214,    0,  811,  810,  820,  820,  807,  822,  805,
+      820,  815,    0,    0,    0,  831,  830,  829,  796,    0,
+
+      796,    0,    0,    0,  502,  524,  820,  807,  810,  794,
+      793,  803,  803,  819,  818,  817,  784,  789,  615,  640,
+      550,  806,  796,  784,  782,  781,  792,    0,  795,  791,
+      793,  789,  775,  806,  805,    0,  787,  779,  770,  778,
+      768,  779,  775,  777,  775,  775,  762,  761,  772,    0,
+      791,  790,    0,  772, 1214,  555, 1214,  647,    0,  667,
+      785,  770,  752,  769,  768,  751,  743,  751,  741,  749,
+        0,  746,  745,  756,  739,  742,  757,  740,  753,  754,
+      751,  748,  757,  750,  749,  732,  731,  730,  741,  582,
+      754,  724,  734,  718,  717,    0,  745,  717,  743,  715,
+
+      719,  718,    0,  729,  732,  728,  730,  711,  725,  709,
+      710,  718,  701,  700,    0,  706,  705,    0,  728,  713,
+      706,    0,    0,  710,    0,  709,    0,  715,  714,    0,
+      690,  698,  688,  716,  695,    0,    0,  708,    0,    0,
+      707,  706,  746,  611,  696,  703,  702,  678,  677,  705,
+      677,  703,  689,  674,  691,  670,  669,  190,  613,  557,
+      667,  687,  686,    0,    0,  681,    0,  680,  686,    0,
+      671,    0,    0,  671,  590,  343,  672,  645,  644,  654,
+      635,  631,  612,  612,  604,  443,  635,  576,  575,  549,
+       25,   87,    0,  183,  500,  552, 1214,  636,  591,    0,
+
+        0,  196,  258,  254,  272,  609, 1214,  614,  598,  279,
+      284,    0,  336,  348,  671,    0,    0,  362,  672,  688,
+     1214,  394,  689, 1214,  408,  670,  691,  649,  651,  474,
+      476,  693,  694, 1214, 1214,  704,  707,  710,  530,  591,
+      713,  717,  720,  722
     } ;
 
-static yyconst flex_int16_t yy_def[727] =
+static yyconst flex_int16_t yy_def[845] =
     {   0,
-      715,    1,  715,    3,  716,  716,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  717,  715,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  718,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  719,  715,
-      720,   19,  715,  715,  715,  721,   20,  715,  715,  715,
-      715,  715,  717,  715,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  722,  715,  718,
-      715,  715,  720,  715,  715,  715,  715,  721,  715,  715,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  715,  715,  715,  715,  722,
-      715,  715,  715,  715,  715,  715,  715,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  715,  715,  715,  715,
-      715,  715,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  715,  715,  715,
-      715,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  715,  715,  715,  715,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  715,  723,  715,  715,
-      715,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  715,  715,  715,
-      715,  724,  715,  715,  715,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  715,  725,  715,  724,  715,  715,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  715,  715,
-      715,  715,  726,  715,  715,  715,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  726,  715,  715,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  715,  715,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  715,  715,  717,
-      717,  717,  715,  715,  715,  717,  717,  717,  715,  715,
-      715,  717,  715,  715,  715,  717,  715,  715,  715,  715,
-
-      715,  717,  715,  715,  715,  715,  717,  715,  715,  715,
-      715,  715,  715,  715,    0,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715
+      835,    1,  835,    3,  836,  836,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  837,  835,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  838,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  839,  835,  840,
+       19,  835,  835,  835,  835,  841,   20,  835,  835,  835,
+      835,  835,  835,  837,  835,  835,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      842,  835,  838,  835,  835,  840,  835,  835,  835,  835,
+      841,  835,  835,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      835,  835,  835,  835,  842,  835,  835,  835,  835,  835,
+      835,  835,  835,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  835,  835,  835,  835,  835,
+      835,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  835,  835,
+      835,  835,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  835,  835,
+      835,  835,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  835,  835,  835,  835,  835,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  835,  835,  835,  835,  843,  835,
+      835,  835,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  835,  835,  835,
+      843,  835,  835,  835,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  835,  835,  835,  835,  844,  835,
+      835,  835,  835,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  844,
+      835,  835,  835,  837,  837,  837,  837,  837,  837,  837,
+
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  835,  835,
+      835,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  835,  835,  835,  837,  837,  837,  837,  837,
+      837,  837,  837,  837,  837,  837,  837,  835,  835,  835,
+      835,  837,  837,  837,  837,  837,  837,  837,  837,  837,
+      837,  837,  837,  835,  835,  835,  835,  837,  837,  837,
+      837,  837,  837,  835,  835,  835,  835,  837,  837,  837,
+      837,  837,  837,  835,  835,  835,  835,  835,  835,  837,
+
+      837,  837,  837,  837,  835,  835,  835,  835,  835,  837,
+      837,  837,  835,  835,  835,  837,  837,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,    0,  835,  835,  835,  835,  835,
+      835,  835,  835,  835
     } ;
 
-static yyconst flex_int16_t yy_nxt[1153] =
+static yyconst flex_int16_t yy_nxt[1283] =
     {   0,
         8,    9,   10,    9,   11,    8,   12,   13,    8,    8,
        14,   15,   16,   17,   18,   19,   20,   20,   20,   20,
        20,   20,    8,   21,   22,   23,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   25,   24,   26,   27,
-       28,   29,   30,   31,   32,   33,   34,   24,   24,   35,
-       36,   37,   38,   39,   40,   41,   42,   43,   44,   45,
-       24,   24,   24,   46,   47,   59,   62,   59,   48,   65,
-       78,   79,   67,   69,   69,   69,   69,   69,   69,   69,
-       81,   82,   66,   63,   68,  180,  181,   49,   50,   51,
-       52,   51,   50,   50,   50,   50,   50,   50,   50,   50,
-
-       50,   50,   53,   50,   54,   54,   54,   54,   54,   54,
-       55,   50,   50,   50,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   50,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   50,   71,  116,   72,   72,   72,   72,   72,   72,
-       73,   85,   88,  126,   89,  214,  710,  117,   90,   74,
-       75,  707,  215,  127,   76,   91,   86,   87,  120,   92,
-       95,   74,   75,   99,   96,  100,   93,  118,  702,   94,
-       97,  119,  121,  697,  101,  147,   98,  123,  696,   76,
-
-       71,  102,   77,   77,   77,   77,   77,   77,   77,  103,
-      143,  108,  104,  124,  144,  105,  125,   74,   75,  109,
-      111,  106,  715,  112,  145,  128,  695,  113,  114,   74,
-       75,  110,  129,  130,  148,  115,  135,  131,  692,  136,
-      139,  151,  152,  132,  133,  140,  134,  715,  137,  141,
-      683,  157,  142,  157,  149,  138,   59,  684,  150,  159,
-      159,  159,  159,  159,  159,  159,   59,  190,   59,  209,
-      237,  161,  162,  164,  165,  691,  192,  210,  191,  238,
-      217,  688,  153,  161,  162,  164,  165,  687,  202,  154,
-      193,  203,  204,  155,  218,  205,  227,  206,  156,   71,
-
-      686,   73,   73,   73,   73,   73,   73,   73,  235,  236,
-      243,  685,  228,  244,  166,  166,   74,   75,  167,  167,
-      167,  167,  167,  167,  167,  151,  152,  682,   74,   75,
-      149,  157,   59,  157,  150,  151,  152,  159,  159,  159,
-      159,  159,  159,  159,  251,  251,  253,  254,  252,  252,
-      252,  252,  252,  252,  252,  267,  268,  531,  253,  254,
-      297,  298,  299,  325,  681,  532,  153,  331,  332,  333,
-      610,  611,  326,  154,  559,  560,  153,  155,  346,  347,
-      348,  683,  156,  154,  357,  358,  359,  155,  684,  255,
-      255,  680,  156,  256,  256,  256,  256,  256,  256,  256,
-
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  252,  252,  252,  252,  252,  252,
-      252,  620,  621,  257,  252,  252,  252,  252,  252,  252,
-      252,  365,  366,  367,  679,  257,  678,  341,  341,  677,
-      162,  342,  342,  342,  342,  342,  342,  342,  369,  370,
-      371,  676,  162,  256,  256,  256,  256,  256,  256,  256,
-      256,  256,  256,  256,  256,  256,  256,  379,  380,  381,
-      412,  413,  414,  433,  434,  435,  165,  342,  342,  342,
-      342,  342,  342,  342,  436,  437,  559,  560,  165,  342,
-      342,  342,  342,  342,  342,  342,  442,  443,  444,  445,
-
-      446,  447,  448,  449,  450,  254,  533,  486,  487,  488,
-      508,  509,  510,  477,  534,  620,  621,  254,  489,  490,
-      562,  511,  512,  545,  546,  547,  564,  518,  519,  519,
-      519,  519,  519,  519,  548,  549,  559,  560,  620,  621,
-      693,  675,  689,  559,  560,  562,  689,  674,  694,  623,
-      563,  563,  563,  563,  563,  563,  563,  594,  595,  595,
-      595,  595,  595,  595,  559,  560,  597,  698,  673,  700,
-      559,  560,  705,  705,  623,  699,  701,  598,  561,  561,
-      561,  561,  561,  561,  563,  563,  563,  563,  563,  563,
-      563,  620,  621,  690,  703,  698,  703,  690,  620,  621,
-
-      672,  671,  704,  699,  704,  624,  624,  624,  624,  624,
-      624,  624,  622,  622,  622,  622,  622,  622,  620,  621,
-      700,  708,  711,  706,  706,  670,  669,  701,  668,  709,
-      712,  713,  624,  624,  624,  624,  624,  624,  624,  714,
-      711,  713,  667,  666,  665,  664,  663,  662,  712,  714,
-       57,   57,   57,   57,   57,   57,   57,   57,   83,   83,
-       83,   83,   83,  160,  160,  160,  160,  160,   69,   69,
-      163,  163,  168,  168,  168,  250,  250,  661,  250,  250,
-      250,  250,  250,  561,  561,  561,  660,  659,  658,  561,
-      596,  596,  596,  622,  622,  622,  657,  656,  655,  622,
-
-      645,  645,  645,  654,  653,  652,  651,  650,  649,  648,
-      647,  646,  644,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  631,  630,  629,  628,  627,
-      626,  625,  619,  618,  617,  616,  615,  614,  613,  612,
-      609,  608,  607,  606,  605,  604,  603,  602,  601,  600,
-      599,  593,  592,  591,  590,  589,  588,  587,  586,  585,
-      584,  583,  582,  581,  580,  579,  578,  577,  576,  575,
-      574,  573,  572,  571,  570,  569,  568,  567,  566,  565,
-      564,  558,  557,  556,  555,  554,  553,  552,  551,  550,
-      544,  543,  542,  541,  540,  539,  538,  537,  536,  535,
-
-      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
-      520,  517,  516,  515,  514,  513,  507,  506,  505,  504,
-      503,  502,  501,  500,  499,  498,  497,  496,  495,  494,
-      493,  492,  491,  485,  484,  483,  482,  481,  480,  479,
-      478,  477,  476,  475,  474,  473,  472,  471,  470,  469,
-      468,  467,  466,  465,  464,  463,  462,  461,  460,  459,
-      458,  457,  456,  455,  454,  453,  452,  451,  441,  440,
-      439,  438,  432,  431,  430,  429,  428,  427,  426,  425,
-      424,  423,  422,  421,  420,  419,  418,  417,  416,  415,
-      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
-
-      401,  400,  399,  398,  397,  396,  395,  394,  393,  392,
-      391,  390,  389,  388,  387,  386,  385,  384,  383,  382,
-      378,  377,  376,  375,  374,  373,  372,  368,  364,  363,
-      362,  361,  360,  356,  355,  354,  353,  352,  351,  350,
-      349,  345,  344,  343,  340,  339,  338,  337,  336,  335,
-      334,  330,  329,  328,  327,  324,  323,  322,  321,  320,
-      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
-      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
-      296,  295,  294,  293,  292,  291,  290,  289,  288,  287,
-      286,  285,  284,  283,  282,  281,  280,  279,  278,  277,
-
-      276,  275,  274,  273,  272,  271,  270,  269,  266,  265,
-      264,  263,  262,  261,  260,  259,  258,  249,  248,  247,
-      246,  245,  242,  241,  240,  239,  234,  233,  232,  231,
-      230,  229,  226,  225,  224,  223,  222,  221,  220,  219,
-      216,  213,  212,  211,  208,  207,  201,  200,  199,  198,
-      197,  196,  195,  194,  189,  188,  187,  186,  185,  184,
-      183,  182,  179,  178,  177,  176,  175,  174,  173,  172,
-      171,  170,  169,  158,   80,  146,  122,  107,   84,   80,
-       70,   64,   61,   60,  715,   58,   58,    7,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715
+       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
+       25,   24,   26,   27,   28,   29,   30,   31,   32,   33,
+       34,   24,   24,   35,   36,   37,   38,   39,   40,   41,
+       42,   43,   44,   45,   24,   24,   24,   46,   47,   58,
+      803,   58,   48,   49,   50,   51,   50,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   52,   49,   53,
+       53,   53,   53,   53,   53,   54,   49,   49,   49,   55,
+
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   49,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       49,   61,   64,  804,   66,   68,   68,   68,   68,   68,
+       68,   68,   79,   80,   85,   65,   67,   87,   62,   70,
+      119,   71,   71,   71,   71,   71,   71,   72,   82,   83,
+       86,  121,   88,   89,  120,  122,   73,   74,  835,  101,
+       90,  102,   91,   93,   75,   76,   92,   94,  123,  126,
+      103,  758,   73,   74,   95,  241,   97,   96,  183,  184,
+
+       98,  110,  124,  835,  242,  127,   99,   75,  128,  111,
+       76,   70,  100,   77,   77,   77,   77,   77,   77,   77,
+      129,  112,  152,  104,   58,  805,  153,  150,   73,   74,
+      130,  105,  154,  155,  106,  195,   78,  107,  138,  113,
+      774,  139,  114,  108,   73,   74,  115,  116,  131,  196,
+      140,  117,  810,  142,  118,  132,  133,  141,  143,   78,
+      134,  160,  144,  160,  146,  145,  135,  136,  147,  137,
+      151,   58,  193,   58,  164,  165,  231,  156,  148,  213,
+      239,  240,  218,  194,  157,  167,  168,  214,  158,  219,
+      164,  165,  232,  159,  162,  162,  162,  162,  162,  162,
+
+      162,  167,  168,   70,  243,   72,   72,   72,   72,   72,
+       72,   72,  244,  248,  811,  221,  249,  812,  169,  169,
+       73,   74,  170,  170,  170,  170,  170,  170,  170,  222,
+      813,  205,  154,  155,  206,  207,   73,   74,  208,  152,
+      209,   58,  816,  153,  154,  155,  160,  817,  160,  162,
+      162,  162,  162,  162,  162,  162,  256,  256,  258,  259,
+      257,  257,  257,  257,  257,  257,  257,  170,  170,  170,
+      170,  170,  170,  170,  258,  259,  263,  156,  269,  274,
+      275,  305,  306,  307,  157,  333,  818,  546,  158,  156,
+      785,  548,  270,  159,  334,  819,  157,  547,  786,  263,
+
+      158,  549,  260,  260,  822,  159,  261,  261,  261,  261,
+      261,  261,  261,  170,  170,  170,  170,  170,  170,  170,
+      340,  341,  342,  355,  356,  357,  366,  367,  368,  262,
+      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
+      257,  257,  257,  257,  796,  262,  374,  375,  376,  825,
+      350,  350,  797,  165,  351,  351,  351,  351,  351,  351,
+      351,  261,  261,  261,  261,  261,  261,  261,  826,  165,
+      261,  261,  261,  261,  261,  261,  261,  378,  379,  380,
+      389,  390,  391,  423,  424,  425,  168,  351,  351,  351,
+      351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
+
+      351,  806,  168,  444,  445,  446,  454,  455,  456,  807,
+      259,  457,  458,  459,  447,  448,  460,  461,  462,  499,
+      500,  501,  522,  523,  524,  490,  259,  831,  639,  832,
+      502,  503,   68,  525,  526,  561,  562,  563,  640,  533,
+      534,  534,  534,  534,  534,  534,  564,  565,  576,  577,
+      641,  576,  577,  796,  576,  577,  656,  657,  775,  642,
+      643,  797,  578,  578,  578,  578,  578,  578,  580,  580,
+      580,  580,  580,  580,  580,  596,  597,  598,  614,  615,
+      616,  576,  577,  656,  657,  581,  579,  599,  576,  577,
+      617,  775,  808,  166,  802,  619,  620,  620,  620,  620,
+
+      620,  620,  578,  578,  578,  578,  578,  578,  576,  577,
+      806,  579,  759,  776,  759,  808,  656,  657,  807,  760,
+      622,  760,  580,  580,  580,  580,  580,  580,  580,  623,
+      658,  658,  658,  658,  658,  658,  798,  798,  801,  800,
+      624,  656,  657,  799,  799,  814,  776,  809,  656,  657,
+      829,  795,  829,  815,  659,  660,  660,  660,  660,  660,
+      660,  660,  658,  658,  658,  658,  658,  658,  656,  657,
+      809,  827,  820,  823,  794,  793,  792,  791,  828,  659,
+      821,  824,  660,  660,  660,  660,  660,  660,  660,  820,
+      823,  830,  827,  830,  833,  833,  790,  821,  824,  828,
+
+      789,  788,  834,  834,   56,   56,   56,   56,   56,   84,
+       84,   84,  163,  163,  163,  171,  171,  255,  787,  255,
+      255,  255,  621,  621,  690,  690,  784,  783,  782,  781,
+      780,  779,  778,  777,  773,  772,  771,  770,  769,  768,
+      767,  766,  765,  764,  763,  762,  761,  758,  757,  756,
+      755,  754,  753,  752,  751,  750,  749,  748,  747,  746,
+      745,  744,  743,  742,  741,  740,  739,  738,  737,  736,
+      735,  734,  733,  732,  731,  730,  729,  728,  727,  726,
+      725,  724,  723,  722,  721,  720,  719,  718,  717,  716,
+      715,  714,  713,  712,  711,  710,  709,  708,  707,  706,
+
+      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
+      695,  694,  693,  692,  691,  689,  688,  687,  686,  685,
+      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
+      674,  673,  672,  671,  670,  669,  668,  667,  666,  665,
+      664,  663,  662,  661,  655,  654,  653,  652,  651,  650,
+      649,  648,  647,  646,  645,  644,  638,  637,  636,  635,
+      634,  633,  632,  631,  630,  629,  628,  627,  626,  625,
+      618,  613,  612,  611,  610,  609,  608,  607,  606,  605,
+      604,  603,  602,  601,  600,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+
+      575,  574,  573,  572,  571,  570,  569,  568,  567,  566,
+      560,  559,  558,  557,  556,  555,  554,  553,  552,  551,
+      550,  545,  544,  543,  542,  541,  540,  539,  538,  537,
+      536,  535,  532,  531,  530,  529,  528,  527,  521,  520,
+      519,  518,  517,  516,  515,  514,  513,  512,  511,  510,
+      509,  508,  507,  506,  505,  504,  498,  497,  496,  495,
+      494,  493,  492,  491,  490,  489,  488,  487,  486,  485,
+      484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
+      474,  473,  472,  471,  470,  469,  468,  467,  466,  465,
+      464,  463,  453,  452,  451,  450,  449,  443,  442,  441,
+
+      440,  439,  438,  437,  436,  435,  434,  433,  432,  431,
+      430,  429,  428,  427,  426,  422,  421,  420,  419,  418,
+      417,  416,  415,  414,  413,  412,  411,  410,  409,  408,
+      407,  406,  405,  404,  403,  402,  401,  400,  399,  398,
+      397,  396,  395,  394,  393,  392,  388,  387,  386,  385,
+      384,  383,  382,  381,  377,  373,  372,  371,  370,  369,
+      365,  364,  363,  362,  361,  360,  359,  358,  354,  353,
+      352,  349,  348,  347,  346,  345,  344,  343,  339,  338,
+      337,  336,  335,  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,  299,  298,  297,  296,  295,  294,  293,
+      292,  291,  290,  289,  288,  287,  286,  285,  284,  283,
+      282,  281,  280,  279,  278,  277,  276,  273,  272,  271,
+      268,  267,  266,  265,  264,  254,  253,  252,  251,  250,
+      247,  246,  245,  238,  237,  236,  235,  234,  233,  230,
+      229,  228,  227,  226,  225,  224,  223,  220,  217,  216,
+      215,  212,  211,  210,  204,  203,  202,  201,  200,  199,
+      198,  197,  192,  191,  190,  189,  188,  187,  186,  185,
+      182,  181,  180,  179,  178,  177,  176,  175,  174,  173,
+
+      172,  161,  149,  125,  109,   81,   69,   63,   60,   59,
+      835,   57,   57,    7,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835
     } ;
 
-static yyconst flex_int16_t yy_chk[1153] =
+static yyconst flex_int16_t yy_chk[1283] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -800,127 +844,141 @@ static yyconst flex_int16_t yy_chk[1153] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    2,    9,   13,    9,    2,   15,
-       21,   21,   16,   17,   17,   17,   17,   17,   17,   17,
-       23,   23,   15,   13,   16,   94,   94,    2,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    9,
+      791,    9,    2,    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,    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,    3,   19,   35,   19,   19,   19,   19,   19,   19,
-       19,   26,   27,   40,   27,  121,  708,   35,   27,   19,
-       19,  702,  121,   40,   19,   28,   26,   26,   37,   28,
-       29,   19,   19,   30,   29,   30,   28,   36,  696,   28,
-       29,   36,   37,  693,   30,   46,   29,   39,  692,   19,
-
-       20,   31,   20,   20,   20,   20,   20,   20,   20,   31,
-       44,   33,   31,   39,   44,   31,   39,   20,   20,   33,
-       34,   31,   72,   34,   44,   41,  691,   34,   34,   20,
-       20,   33,   41,   41,   46,   34,   42,   41,  687,   42,
-       43,   48,   48,   41,   41,   43,   41,   72,   42,   43,
-      678,   51,   43,   51,   47,   42,   47,  678,   47,   54,
-       54,   54,   54,   54,   54,   54,   59,  103,   59,  117,
-      140,   69,   69,   71,   71,  685,  104,  117,  103,  140,
-      123,  682,   48,   69,   69,   71,   71,  681,  114,   48,
-      104,  114,  114,   48,  123,  114,  132,  114,   48,   73,
-
-      680,   73,   73,   73,   73,   73,   73,   73,  139,  139,
-      145,  679,  132,  145,   74,   74,   73,   73,   74,   74,
-       74,   74,   74,   74,   74,  150,  150,  673,   73,   73,
-      149,  157,  149,  157,  149,  151,  151,  159,  159,  159,
-      159,  159,  159,  159,  161,  161,  163,  163,  161,  161,
-      161,  161,  161,  161,  161,  181,  181,  491,  163,  163,
-      211,  211,  211,  237,  672,  491,  150,  242,  242,  242,
-      585,  585,  237,  150,  596,  596,  151,  150,  262,  262,
-      262,  683,  150,  151,  272,  272,  272,  151,  683,  164,
-      164,  671,  151,  164,  164,  164,  164,  164,  164,  164,
-
-      166,  166,  166,  166,  166,  166,  166,  167,  167,  167,
-      167,  167,  167,  167,  251,  251,  251,  251,  251,  251,
-      251,  620,  620,  167,  252,  252,  252,  252,  252,  252,
-      252,  281,  281,  281,  665,  167,  664,  253,  253,  662,
-      252,  253,  253,  253,  253,  253,  253,  253,  285,  285,
-      285,  661,  252,  255,  255,  255,  255,  255,  255,  255,
-      256,  256,  256,  256,  256,  256,  256,  293,  293,  293,
-      329,  329,  329,  373,  373,  373,  256,  341,  341,  341,
-      341,  341,  341,  341,  373,  373,  518,  518,  256,  342,
-      342,  342,  342,  342,  342,  342,  383,  383,  383,  384,
-
-      384,  384,  385,  385,  385,  342,  492,  432,  432,  432,
-      471,  471,  471,  477,  492,  594,  594,  342,  432,  432,
-      518,  471,  471,  505,  505,  505,  564,  477,  477,  477,
-      477,  477,  477,  477,  505,  505,  519,  519,  645,  645,
-      690,  660,  684,  559,  559,  518,  689,  659,  690,  594,
-      519,  519,  519,  519,  519,  519,  519,  559,  559,  559,
-      559,  559,  559,  559,  561,  561,  564,  694,  658,  695,
-      563,  563,  701,  705,  594,  694,  695,  564,  561,  561,
-      561,  561,  561,  561,  563,  563,  563,  563,  563,  563,
-      563,  595,  595,  684,  697,  698,  703,  689,  622,  622,
-
-      657,  656,  697,  698,  703,  595,  595,  595,  595,  595,
-      595,  595,  622,  622,  622,  622,  622,  622,  624,  624,
-      700,  706,  709,  701,  705,  655,  654,  700,  652,  706,
-      709,  710,  624,  624,  624,  624,  624,  624,  624,  710,
-      711,  713,  649,  648,  647,  646,  644,  643,  711,  713,
-      716,  716,  716,  716,  716,  716,  716,  716,  717,  717,
-      717,  717,  717,  718,  718,  718,  718,  718,  719,  719,
-      720,  720,  721,  721,  721,  722,  722,  642,  722,  722,
-      722,  722,  722,  723,  723,  723,  640,  639,  638,  723,
-      724,  724,  724,  725,  725,  725,  637,  636,  635,  725,
-
-      726,  726,  726,  633,  632,  631,  630,  629,  628,  627,
-      626,  625,  617,  616,  615,  614,  613,  612,  611,  610,
-      609,  608,  607,  606,  605,  604,  603,  601,  600,  599,
-      598,  597,  593,  592,  591,  590,  589,  588,  587,  586,
-      584,  580,  575,  574,  573,  572,  571,  570,  569,  568,
-      567,  558,  555,  554,  552,  551,  549,  548,  547,  546,
-      545,  544,  543,  542,  541,  539,  538,  537,  536,  535,
-      534,  533,  532,  531,  530,  529,  527,  526,  522,  521,
-      520,  517,  516,  514,  512,  511,  510,  509,  508,  506,
-      504,  503,  502,  501,  500,  499,  497,  496,  495,  494,
-
-      490,  489,  488,  487,  486,  485,  482,  481,  480,  479,
-      478,  476,  475,  474,  473,  472,  470,  469,  462,  461,
-      458,  457,  454,  453,  452,  451,  440,  439,  437,  436,
-      435,  434,  433,  430,  428,  427,  426,  424,  423,  421,
-      420,  419,  418,  416,  415,  410,  408,  407,  406,  405,
-      404,  403,  402,  401,  400,  399,  397,  396,  395,  394,
-      393,  392,  391,  390,  389,  388,  387,  386,  382,  378,
-      377,  374,  372,  362,  360,  356,  355,  354,  353,  351,
-      349,  344,  343,  340,  339,  338,  337,  336,  335,  330,
-      328,  327,  326,  325,  323,  322,  319,  318,  317,  316,
-
-      315,  314,  313,  312,  311,  310,  309,  308,  307,  306,
-      305,  304,  303,  302,  301,  300,  299,  298,  297,  294,
-      292,  291,  290,  289,  288,  287,  286,  284,  280,  278,
-      277,  276,  275,  271,  270,  269,  268,  267,  266,  265,
-      264,  261,  259,  258,  249,  248,  247,  246,  245,  244,
-      243,  241,  240,  239,  238,  236,  235,  234,  233,  232,
-      231,  230,  229,  228,  227,  226,  225,  224,  223,  222,
-      221,  220,  219,  218,  217,  216,  215,  214,  213,  212,
-      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,  184,  183,  182,  180,  179,
-      178,  177,  176,  175,  174,  173,  171,  156,  155,  154,
-      153,  146,  144,  143,  142,  141,  138,  137,  136,  135,
-      134,  133,  131,  130,  129,  128,  127,  126,  125,  124,
-      122,  120,  119,  118,  116,  115,  113,  112,  110,  109,
-      108,  107,  106,  105,  102,  101,  100,   99,   98,   97,
-       96,   95,   93,   92,   91,   90,   89,   88,   87,   86,
-       85,   82,   78,   53,   49,   45,   38,   32,   25,   22,
-       18,   14,   12,   11,    7,    6,    5,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715
+        3,   13,   15,  792,   16,   17,   17,   17,   17,   17,
+       17,   17,   21,   21,   25,   15,   16,   26,   13,   19,
+       35,   19,   19,   19,   19,   19,   19,   19,   23,   23,
+       25,   36,   26,   26,   35,   36,   19,   19,   71,   30,
+       27,   30,   27,   28,   19,   19,   27,   28,   37,   39,
+       30,  758,   19,   19,   28,  143,   29,   28,   96,   96,
+
+       29,   33,   37,   71,  143,   39,   29,   19,   39,   33,
+       19,   20,   29,   20,   20,   20,   20,   20,   20,   20,
+       40,   33,   47,   31,   47,  794,   47,   46,   20,   20,
+       40,   31,   48,   48,   31,  106,   20,   31,   42,   34,
+      758,   42,   34,   31,   20,   20,   34,   34,   41,  106,
+       42,   34,  802,   43,   34,   41,   41,   42,   43,   20,
+       41,   50,   43,   50,   44,   43,   41,   41,   44,   41,
+       46,   58,  105,   58,   68,   68,  135,   48,   44,  120,
+      142,  142,  124,  105,   48,   70,   70,  120,   48,  124,
+       68,   68,  135,   48,   53,   53,   53,   53,   53,   53,
+
+       53,   70,   70,   72,  144,   72,   72,   72,   72,   72,
+       72,   72,  144,  148,  803,  126,  148,  804,   73,   73,
+       72,   72,   73,   73,   73,   73,   73,   73,   73,  126,
+      805,  116,  153,  153,  116,  116,   72,   72,  116,  152,
+      116,  152,  810,  152,  154,  154,  160,  811,  160,  162,
+      162,  162,  162,  162,  162,  162,  164,  164,  166,  166,
+      164,  164,  164,  164,  164,  164,  164,  169,  169,  169,
+      169,  169,  169,  169,  166,  166,  171,  153,  180,  184,
+      184,  215,  215,  215,  153,  241,  813,  504,  153,  154,
+      776,  505,  180,  153,  241,  814,  154,  504,  776,  171,
+
+      154,  505,  167,  167,  818,  154,  167,  167,  167,  167,
+      167,  167,  167,  170,  170,  170,  170,  170,  170,  170,
+      247,  247,  247,  268,  268,  268,  279,  279,  279,  170,
+      256,  256,  256,  256,  256,  256,  256,  257,  257,  257,
+      257,  257,  257,  257,  786,  170,  288,  288,  288,  822,
+      258,  258,  786,  257,  258,  258,  258,  258,  258,  258,
+      258,  260,  260,  260,  260,  260,  260,  260,  825,  257,
+      261,  261,  261,  261,  261,  261,  261,  292,  292,  292,
+      301,  301,  301,  338,  338,  338,  261,  350,  350,  350,
+      350,  350,  350,  350,  351,  351,  351,  351,  351,  351,
+
+      351,  795,  261,  382,  382,  382,  393,  393,  393,  795,
+      351,  394,  394,  394,  382,  382,  395,  395,  395,  443,
+      443,  443,  483,  483,  483,  490,  351,  830,  605,  831,
+      443,  443,  839,  483,  483,  519,  519,  519,  605,  490,
+      490,  490,  490,  490,  490,  490,  519,  519,  533,  533,
+      606,  621,  621,  796,  534,  534,  656,  656,  760,  606,
+      606,  796,  533,  533,  533,  533,  533,  533,  534,  534,
+      534,  534,  534,  534,  534,  554,  554,  554,  573,  573,
+      573,  576,  576,  690,  690,  581,  533,  554,  578,  578,
+      573,  775,  799,  840,  790,  576,  576,  576,  576,  576,
+
+      576,  576,  578,  578,  578,  578,  578,  578,  580,  580,
+      806,  533,  744,  760,  759,  808,  619,  619,  806,  744,
+      581,  759,  580,  580,  580,  580,  580,  580,  580,  581,
+      619,  619,  619,  619,  619,  619,  787,  798,  789,  788,
+      581,  620,  620,  787,  798,  809,  775,  799,  658,  658,
+      828,  785,  829,  809,  619,  620,  620,  620,  620,  620,
+      620,  620,  658,  658,  658,  658,  658,  658,  660,  660,
+      808,  826,  815,  819,  784,  783,  782,  781,  826,  619,
+      815,  819,  660,  660,  660,  660,  660,  660,  660,  820,
+      823,  828,  827,  829,  832,  833,  780,  820,  823,  827,
+
+      779,  778,  832,  833,  836,  836,  836,  836,  836,  837,
+      837,  837,  838,  838,  838,  841,  841,  842,  777,  842,
+      842,  842,  843,  843,  844,  844,  774,  771,  769,  768,
+      766,  763,  762,  761,  757,  756,  755,  754,  753,  752,
+      751,  750,  749,  748,  747,  746,  745,  743,  742,  741,
+      738,  735,  734,  733,  732,  731,  729,  728,  726,  724,
+      721,  720,  719,  717,  716,  714,  713,  712,  711,  710,
+      709,  708,  707,  706,  705,  704,  702,  701,  700,  699,
+      698,  697,  695,  694,  693,  692,  691,  689,  688,  687,
+      686,  685,  684,  683,  682,  681,  680,  679,  678,  677,
+
+      676,  675,  674,  673,  672,  670,  669,  668,  667,  666,
+      665,  664,  663,  662,  661,  654,  652,  651,  649,  648,
+      647,  646,  645,  644,  643,  642,  641,  640,  639,  638,
+      637,  635,  634,  633,  632,  631,  630,  629,  627,  626,
+      625,  624,  623,  622,  618,  617,  616,  615,  614,  613,
+      612,  611,  610,  609,  608,  607,  601,  599,  598,  597,
+      596,  592,  591,  590,  589,  588,  587,  586,  585,  584,
+      575,  571,  570,  568,  567,  565,  564,  563,  562,  561,
+      560,  559,  558,  557,  555,  553,  552,  551,  550,  549,
+      548,  547,  546,  545,  544,  542,  541,  537,  536,  535,
+
+      532,  531,  529,  528,  526,  525,  524,  523,  522,  520,
+      518,  517,  516,  515,  514,  513,  511,  510,  509,  508,
+      507,  503,  502,  501,  500,  499,  498,  495,  494,  493,
+      492,  491,  489,  488,  487,  486,  485,  484,  482,  481,
+      474,  473,  470,  469,  466,  465,  464,  463,  452,  451,
+      450,  448,  447,  446,  445,  444,  441,  439,  438,  437,
+      435,  434,  432,  431,  430,  429,  427,  426,  421,  420,
+      418,  417,  416,  415,  414,  413,  412,  411,  410,  409,
+      407,  406,  405,  404,  403,  402,  401,  400,  399,  398,
+      397,  396,  392,  388,  387,  386,  383,  381,  371,  369,
+
+      365,  364,  363,  362,  360,  358,  353,  352,  349,  348,
+      347,  346,  345,  344,  339,  337,  336,  335,  334,  333,
+      331,  330,  327,  326,  325,  324,  323,  322,  321,  320,
+      319,  318,  317,  316,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  302,  300,  299,  298,  297,
+      296,  295,  294,  293,  291,  287,  285,  284,  283,  282,
+      278,  277,  276,  275,  274,  273,  272,  271,  267,  265,
+      264,  254,  253,  252,  251,  250,  249,  248,  246,  245,
+      244,  243,  242,  240,  239,  238,  237,  236,  235,  234,
+      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
+
+      223,  222,  221,  220,  219,  218,  217,  216,  214,  213,
+      212,  211,  210,  209,  208,  207,  206,  205,  204,  203,
+      202,  201,  200,  199,  198,  196,  195,  194,  193,  192,
+      191,  190,  189,  188,  187,  186,  185,  183,  182,  181,
+      179,  178,  177,  176,  174,  159,  158,  157,  156,  149,
+      147,  146,  145,  141,  140,  139,  138,  137,  136,  134,
+      133,  132,  131,  130,  129,  128,  127,  125,  123,  122,
+      121,  119,  118,  117,  115,  114,  112,  111,  110,  109,
+      108,  107,  104,  103,  102,  101,  100,   99,   98,   97,
+       95,   94,   93,   92,   91,   90,   89,   88,   87,   83,
+
+       79,   52,   45,   38,   32,   22,   18,   14,   12,   11,
+        7,    6,    5,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
+      835,  835
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -955,6 +1013,7 @@ static yyconst flex_int16_t yy_chk[1153] =
  * DEALINGS IN THE SOFTWARE.
  */
 #include <ctype.h>
+#include "strtod.h"
 #include "ast.h"
 #include "glsl_parser_extras.h"
 #include "glsl_parser.h"
@@ -969,38 +1028,46 @@ static yyconst flex_int16_t yy_chk[1153] =
 
 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
 
-#define TOKEN_OR_IDENTIFIER(version, token)                     \
-   do {                                                                 \
-      if (yyextra->language_version >= version) {               \
-        return token;                                           \
-      } else {                                                  \
-        yylval->identifier = strdup(yytext);                    \
-        return IDENTIFIER;                                      \
-      }                                                                 \
-   } while (0)
+#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U')
 
-/* Handle reserved words in GLSL ES (version 100) */
-#define TOKEN_OR_IDENTIFIER_ES(version, token)                 \
-   do {                                                                \
-      if (yyextra->es_shader) {                                        \
-       return token;                                           \
-      } else {                                                 \
-       TOKEN_OR_IDENTIFIER(version, token);                    \
-      }                                                                \
-   } while (0)
-
-#define RESERVED_WORD(version, token)                                  \
+/* A macro for handling reserved words and keywords across language versions.
+ *
+ * Certain words start out as identifiers, become reserved words in
+ * later language revisions, and finally become language keywords.
+ *
+ * For example, consider the following lexer rule:
+ * samplerBuffer       KEYWORD(130, 140, SAMPLERBUFFER)
+ *
+ * This means that "samplerBuffer" will be treated as:
+ * - a keyword (SAMPLERBUFFER token)         ...in GLSL >= 1.40
+ * - a reserved word - error                 ...in GLSL >= 1.30
+ * - an identifier                           ...in GLSL <  1.30
+ */
+#define KEYWORD(reserved_version, allowed_version, token)              \
    do {                                                                        \
-      if (yyextra->language_version >= version) {                      \
+      if (yyextra->language_version >= allowed_version) {              \
         return token;                                                  \
-      } else {                                                         \
+      } else if (yyextra->language_version >= reserved_version) {      \
         _mesa_glsl_error(yylloc, yyextra,                              \
                          "Illegal use of reserved word `%s'", yytext); \
         return ERROR_TOK;                                              \
+      } else {                                                         \
+        yylval->identifier = strdup(yytext);                           \
+        return IDENTIFIER;                                             \
       }                                                                        \
    } while (0)
 
-#line 1004 "glsl_lexer.cpp"
+/* The ES macro can be used in KEYWORD checks:
+ *
+ *    word      KEYWORD(110 || ES, 400, TOKEN)
+ * ...means the word is reserved in GLSL ES 1.00, while
+ *
+ *    word      KEYWORD(110, 130 || ES, TOKEN)
+ * ...means the word is a legal keyword in GLSL ES 1.00.
+ */
+#define ES yyextra->es_shader
+
+#line 1071 "glsl_lexer.cpp"
 
 #define INITIAL 0
 #define PP 1
@@ -1087,6 +1154,10 @@ int _mesa_glsl_get_lineno (yyscan_t yyscanner );
 
 void _mesa_glsl_set_lineno (int line_number ,yyscan_t yyscanner );
 
+int _mesa_glsl_get_column  (yyscan_t yyscanner );
+
+void _mesa_glsl_set_column (int column_no ,yyscan_t yyscanner );
+
 YYSTYPE * _mesa_glsl_get_lval (yyscan_t yyscanner );
 
 void _mesa_glsl_set_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
@@ -1127,12 +1198,7 @@ static int input (yyscan_t yyscanner );
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
-#ifdef __ia64__
-/* On IA-64, the buffer size is 16k, not 8k */
-#define YY_READ_BUF_SIZE 16384
-#else
 #define YY_READ_BUF_SIZE 8192
-#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -1151,7 +1217,7 @@ static int input (yyscan_t yyscanner );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               size_t n; \
+               unsigned n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -1239,10 +1305,10 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 86 "glsl_lexer.lpp"
+#line 95 "glsl_lexer.lpp"
 
 
-#line 1246 "glsl_lexer.cpp"
+#line 1312 "glsl_lexer.cpp"
 
     yylval = yylval_param;
 
@@ -1300,13 +1366,13 @@ yy_match:
                        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 >= 716 )
+                               if ( yy_current_state >= 836 )
                                        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 != 715 );
+               while ( yy_current_state != 835 );
                yy_cp = yyg->yy_last_accepting_cpos;
                yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1328,7 +1394,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 88 "glsl_lexer.lpp"
+#line 97 "glsl_lexer.lpp"
 ;
        YY_BREAK
 /* Preprocessor tokens. */ 
@@ -1337,17 +1403,17 @@ case 2:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 91 "glsl_lexer.lpp"
+#line 100 "glsl_lexer.lpp"
 ;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 92 "glsl_lexer.lpp"
+#line 101 "glsl_lexer.lpp"
 { BEGIN PP; return VERSION; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 93 "glsl_lexer.lpp"
+#line 102 "glsl_lexer.lpp"
 { BEGIN PP; return EXTENSION; }
        YY_BREAK
 case 5:
@@ -1355,7 +1421,7 @@ case 5:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 94 "glsl_lexer.lpp"
+#line 103 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1377,7 +1443,7 @@ case 6:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 109 "glsl_lexer.lpp"
+#line 118 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1395,7 +1461,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 123 "glsl_lexer.lpp"
+#line 132 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_DEBUG_ON;
@@ -1403,7 +1469,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 127 "glsl_lexer.lpp"
+#line 136 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_DEBUG_OFF;
@@ -1411,7 +1477,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 131 "glsl_lexer.lpp"
+#line 140 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_OPTIMIZE_ON;
@@ -1419,7 +1485,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 135 "glsl_lexer.lpp"
+#line 144 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_OPTIMIZE_OFF;
@@ -1427,946 +1493,1065 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 139 "glsl_lexer.lpp"
-{ BEGIN PRAGMA; }
+#line 148 "glsl_lexer.lpp"
+{
+                                 BEGIN PP;
+                                 return PRAGMA_INVARIANT_ALL;
+                               }
        YY_BREAK
 case 12:
-/* rule 12 can match eol */
 YY_RULE_SETUP
-#line 141 "glsl_lexer.lpp"
-{ BEGIN 0; yylineno++; yycolumn = 0; }
+#line 152 "glsl_lexer.lpp"
+{ BEGIN PRAGMA; }
        YY_BREAK
 case 13:
+/* rule 13 can match eol */
 YY_RULE_SETUP
-#line 142 "glsl_lexer.lpp"
-{ }
+#line 154 "glsl_lexer.lpp"
+{ BEGIN 0; yylineno++; yycolumn = 0; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 144 "glsl_lexer.lpp"
+#line 155 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 145 "glsl_lexer.lpp"
+#line 157 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 146 "glsl_lexer.lpp"
-return COLON;
+#line 158 "glsl_lexer.lpp"
+{ }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 147 "glsl_lexer.lpp"
+#line 159 "glsl_lexer.lpp"
+return COLON;
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 160 "glsl_lexer.lpp"
 {
                                   yylval->identifier = strdup(yytext);
                                   return IDENTIFIER;
                                }
        YY_BREAK
-case 18:
+case 19:
 YY_RULE_SETUP
-#line 151 "glsl_lexer.lpp"
+#line 164 "glsl_lexer.lpp"
 {
                                    yylval->n = strtol(yytext, NULL, 10);
                                    return INTCONSTANT;
                                }
        YY_BREAK
-case 19:
-/* rule 19 can match eol */
-YY_RULE_SETUP
-#line 155 "glsl_lexer.lpp"
-{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
-       YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 157 "glsl_lexer.lpp"
-{ yylineno++; yycolumn = 0; }
+#line 168 "glsl_lexer.lpp"
+{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
        YY_BREAK
 case 21:
+/* rule 21 can match eol */
 YY_RULE_SETUP
-#line 159 "glsl_lexer.lpp"
-return ATTRIBUTE;
+#line 170 "glsl_lexer.lpp"
+{ yylineno++; yycolumn = 0; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 160 "glsl_lexer.lpp"
-return CONST_TOK;
+#line 172 "glsl_lexer.lpp"
+return ATTRIBUTE;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 161 "glsl_lexer.lpp"
-return BOOL_TOK;
+#line 173 "glsl_lexer.lpp"
+return CONST_TOK;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 162 "glsl_lexer.lpp"
-return FLOAT_TOK;
+#line 174 "glsl_lexer.lpp"
+return BOOL_TOK;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 163 "glsl_lexer.lpp"
-return INT_TOK;
+#line 175 "glsl_lexer.lpp"
+return FLOAT_TOK;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 164 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UINT_TOK);
+#line 176 "glsl_lexer.lpp"
+return INT_TOK;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 166 "glsl_lexer.lpp"
-return BREAK;
+#line 177 "glsl_lexer.lpp"
+KEYWORD(130, 130, UINT_TOK);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 167 "glsl_lexer.lpp"
-return CONTINUE;
+#line 179 "glsl_lexer.lpp"
+return BREAK;
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 168 "glsl_lexer.lpp"
-return DO;
+#line 180 "glsl_lexer.lpp"
+return CONTINUE;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 169 "glsl_lexer.lpp"
-return WHILE;
+#line 181 "glsl_lexer.lpp"
+return DO;
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 170 "glsl_lexer.lpp"
-return ELSE;
+#line 182 "glsl_lexer.lpp"
+return WHILE;
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 171 "glsl_lexer.lpp"
-return FOR;
+#line 183 "glsl_lexer.lpp"
+return ELSE;
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 172 "glsl_lexer.lpp"
-return IF;
+#line 184 "glsl_lexer.lpp"
+return FOR;
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 173 "glsl_lexer.lpp"
-return DISCARD;
+#line 185 "glsl_lexer.lpp"
+return IF;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 174 "glsl_lexer.lpp"
-return RETURN;
+#line 186 "glsl_lexer.lpp"
+return DISCARD;
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 176 "glsl_lexer.lpp"
-return BVEC2;
+#line 187 "glsl_lexer.lpp"
+return RETURN;
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 177 "glsl_lexer.lpp"
-return BVEC3;
+#line 189 "glsl_lexer.lpp"
+return BVEC2;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 178 "glsl_lexer.lpp"
-return BVEC4;
+#line 190 "glsl_lexer.lpp"
+return BVEC3;
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 179 "glsl_lexer.lpp"
-return IVEC2;
+#line 191 "glsl_lexer.lpp"
+return BVEC4;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 180 "glsl_lexer.lpp"
-return IVEC3;
+#line 192 "glsl_lexer.lpp"
+return IVEC2;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 181 "glsl_lexer.lpp"
-return IVEC4;
+#line 193 "glsl_lexer.lpp"
+return IVEC3;
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 182 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UVEC2);
+#line 194 "glsl_lexer.lpp"
+return IVEC4;
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 183 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UVEC3);
+#line 195 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC2);
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 184 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UVEC4);
+#line 196 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC3);
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 185 "glsl_lexer.lpp"
-return VEC2;
+#line 197 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC4);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 186 "glsl_lexer.lpp"
-return VEC3;
+#line 198 "glsl_lexer.lpp"
+return VEC2;
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 187 "glsl_lexer.lpp"
-return VEC4;
+#line 199 "glsl_lexer.lpp"
+return VEC3;
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 188 "glsl_lexer.lpp"
-return MAT2X2;
+#line 200 "glsl_lexer.lpp"
+return VEC4;
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 189 "glsl_lexer.lpp"
-return MAT3X3;
+#line 201 "glsl_lexer.lpp"
+return MAT2X2;
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 190 "glsl_lexer.lpp"
-return MAT4X4;
+#line 202 "glsl_lexer.lpp"
+return MAT3X3;
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 191 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X2);
+#line 203 "glsl_lexer.lpp"
+return MAT4X4;
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 192 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X3);
+#line 204 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X2);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 193 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X4);
+#line 205 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X3);
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 194 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X2);
+#line 206 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X4);
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 195 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X3);
+#line 207 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X2);
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 196 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X4);
+#line 208 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X3);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 197 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X2);
+#line 209 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X4);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 198 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X3);
+#line 210 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X2);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 199 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X4);
+#line 211 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X3);
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 201 "glsl_lexer.lpp"
-return IN_TOK;
+#line 212 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X4);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 202 "glsl_lexer.lpp"
-return OUT_TOK;
+#line 214 "glsl_lexer.lpp"
+return IN_TOK;
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 203 "glsl_lexer.lpp"
-return INOUT_TOK;
+#line 215 "glsl_lexer.lpp"
+return OUT_TOK;
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 204 "glsl_lexer.lpp"
-return UNIFORM;
+#line 216 "glsl_lexer.lpp"
+return INOUT_TOK;
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 205 "glsl_lexer.lpp"
-return VARYING;
+#line 217 "glsl_lexer.lpp"
+return UNIFORM;
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 206 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, CENTROID);
+#line 218 "glsl_lexer.lpp"
+return VARYING;
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 207 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, INVARIANT);
+#line 219 "glsl_lexer.lpp"
+KEYWORD(120, 120, CENTROID);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 209 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(130, FLAT);
+#line 220 "glsl_lexer.lpp"
+KEYWORD(120 || ES, 120 || ES, INVARIANT);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 210 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SMOOTH);
+#line 221 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 130, FLAT);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 211 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE);
+#line 222 "glsl_lexer.lpp"
+KEYWORD(130, 130, SMOOTH);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 213 "glsl_lexer.lpp"
-return SAMPLER1D;
+#line 223 "glsl_lexer.lpp"
+KEYWORD(130, 130, NOPERSPECTIVE);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 214 "glsl_lexer.lpp"
-return SAMPLER2D;
+#line 225 "glsl_lexer.lpp"
+return SAMPLER1D;
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 215 "glsl_lexer.lpp"
-return SAMPLER3D;
+#line 226 "glsl_lexer.lpp"
+return SAMPLER2D;
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 216 "glsl_lexer.lpp"
-return SAMPLERCUBE;
+#line 227 "glsl_lexer.lpp"
+return SAMPLER3D;
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 217 "glsl_lexer.lpp"
-return SAMPLER1DSHADOW;
+#line 228 "glsl_lexer.lpp"
+return SAMPLERCUBE;
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 218 "glsl_lexer.lpp"
-return SAMPLER2DSHADOW;
+#line 229 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER1DARRAY);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 220 "glsl_lexer.lpp"
-return STRUCT;
+#line 230 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER2DARRAY);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 221 "glsl_lexer.lpp"
-return VOID_TOK;
+#line 231 "glsl_lexer.lpp"
+return SAMPLER1DSHADOW;
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 223 "glsl_lexer.lpp"
-{
-                 if ((yyextra->language_version >= 140)
-                     || yyextra->ARB_explicit_attrib_location_enable
-                     || (yyextra->ARB_fragment_coord_conventions_enable)){
-                     return LAYOUT_TOK;
-                  } else {
-                     yylval->identifier = strdup(yytext);
-                     return IDENTIFIER;
-                  }
-               }
+#line 232 "glsl_lexer.lpp"
+return SAMPLER2DSHADOW;
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 234 "glsl_lexer.lpp"
-return INC_OP;
+#line 233 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLERCUBESHADOW);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 235 "glsl_lexer.lpp"
-return DEC_OP;
+#line 234 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 236 "glsl_lexer.lpp"
-return LE_OP;
+#line 235 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 237 "glsl_lexer.lpp"
-return GE_OP;
+#line 236 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1D);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 238 "glsl_lexer.lpp"
-return EQ_OP;
+#line 237 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2D);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 239 "glsl_lexer.lpp"
-return NE_OP;
+#line 238 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER3D);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 240 "glsl_lexer.lpp"
-return AND_OP;
+#line 239 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLERCUBE);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 241 "glsl_lexer.lpp"
-return OR_OP;
+#line 240 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1DARRAY);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 242 "glsl_lexer.lpp"
-return XOR_OP;
+#line 241 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2DARRAY);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 244 "glsl_lexer.lpp"
-return MUL_ASSIGN;
+#line 242 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1D);
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 245 "glsl_lexer.lpp"
-return DIV_ASSIGN;
+#line 243 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2D);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 246 "glsl_lexer.lpp"
-return ADD_ASSIGN;
+#line 244 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER3D);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 247 "glsl_lexer.lpp"
-return MOD_ASSIGN;
+#line 245 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLERCUBE);
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 248 "glsl_lexer.lpp"
-return LEFT_ASSIGN;
+#line 246 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1DARRAY);
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 249 "glsl_lexer.lpp"
-return RIGHT_ASSIGN;
+#line 247 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2DARRAY);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 250 "glsl_lexer.lpp"
-return AND_ASSIGN;
+return STRUCT;
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 251 "glsl_lexer.lpp"
-return XOR_ASSIGN;
+return VOID_TOK;
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 252 "glsl_lexer.lpp"
-return OR_ASSIGN;
+#line 253 "glsl_lexer.lpp"
+{
+                 if ((yyextra->language_version >= 140)
+                     || yyextra->AMD_conservative_depth_enable
+                     || yyextra->ARB_explicit_attrib_location_enable
+                     || yyextra->ARB_fragment_coord_conventions_enable) {
+                     return LAYOUT_TOK;
+                  } else {
+                     yylval->identifier = strdup(yytext);
+                     return IDENTIFIER;
+                  }
+               }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 253 "glsl_lexer.lpp"
-return SUB_ASSIGN;
+#line 265 "glsl_lexer.lpp"
+return INC_OP;
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 255 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext, NULL, 10);
-                           return INTCONSTANT;
-                       }
+#line 266 "glsl_lexer.lpp"
+return DEC_OP;
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 259 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext + 2, NULL, 16);
-                           return INTCONSTANT;
-                       }
+#line 267 "glsl_lexer.lpp"
+return LE_OP;
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 263 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext, NULL, 8);
-                           return INTCONSTANT;
-                       }
+#line 268 "glsl_lexer.lpp"
+return GE_OP;
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 268 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 269 "glsl_lexer.lpp"
+return EQ_OP;
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 272 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 270 "glsl_lexer.lpp"
+return NE_OP;
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 276 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 271 "glsl_lexer.lpp"
+return AND_OP;
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 280 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 272 "glsl_lexer.lpp"
+return OR_OP;
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 284 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 273 "glsl_lexer.lpp"
+return XOR_OP;
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 289 "glsl_lexer.lpp"
-{
-                           yylval->n = 1;
-                           return BOOLCONSTANT;
-                       }
+#line 274 "glsl_lexer.lpp"
+return LEFT_OP;
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 293 "glsl_lexer.lpp"
-{
-                           yylval->n = 0;
-                           return BOOLCONSTANT;
-                       }
+#line 275 "glsl_lexer.lpp"
+return RIGHT_OP;
        YY_BREAK
-/* Reserved words in GLSL 1.10. */
 case 108:
 YY_RULE_SETUP
-#line 300 "glsl_lexer.lpp"
-RESERVED_WORD(999, ASM);
+#line 277 "glsl_lexer.lpp"
+return MUL_ASSIGN;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 301 "glsl_lexer.lpp"
-RESERVED_WORD(999, CLASS);
+#line 278 "glsl_lexer.lpp"
+return DIV_ASSIGN;
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 302 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNION);
+#line 279 "glsl_lexer.lpp"
+return ADD_ASSIGN;
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 303 "glsl_lexer.lpp"
-RESERVED_WORD(999, ENUM);
+#line 280 "glsl_lexer.lpp"
+return MOD_ASSIGN;
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 304 "glsl_lexer.lpp"
-RESERVED_WORD(999, TYPEDEF);
+#line 281 "glsl_lexer.lpp"
+return LEFT_ASSIGN;
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
-RESERVED_WORD(999, TEMPLATE);
+#line 282 "glsl_lexer.lpp"
+return RIGHT_ASSIGN;
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 306 "glsl_lexer.lpp"
-RESERVED_WORD(999, THIS);
+#line 283 "glsl_lexer.lpp"
+return AND_ASSIGN;
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 307 "glsl_lexer.lpp"
-RESERVED_WORD(999, PACKED_TOK);
+#line 284 "glsl_lexer.lpp"
+return XOR_ASSIGN;
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 308 "glsl_lexer.lpp"
-RESERVED_WORD(999, GOTO);
+#line 285 "glsl_lexer.lpp"
+return OR_ASSIGN;
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 309 "glsl_lexer.lpp"
-RESERVED_WORD(130, SWITCH);
+#line 286 "glsl_lexer.lpp"
+return SUB_ASSIGN;
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 310 "glsl_lexer.lpp"
-RESERVED_WORD(130, DEFAULT);
+#line 288 "glsl_lexer.lpp"
+{
+                           yylval->n = strtol(yytext, NULL, 10);
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+                       }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 311 "glsl_lexer.lpp"
-RESERVED_WORD(999, INLINE_TOK);
+#line 292 "glsl_lexer.lpp"
+{
+                           yylval->n = strtol(yytext + 2, NULL, 16);
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+                       }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 312 "glsl_lexer.lpp"
-RESERVED_WORD(999, NOINLINE);
+#line 296 "glsl_lexer.lpp"
+{
+                           yylval->n = strtol(yytext, NULL, 8);
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+                       }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 313 "glsl_lexer.lpp"
-RESERVED_WORD(999, VOLATILE);
+#line 301 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 314 "glsl_lexer.lpp"
-RESERVED_WORD(999, PUBLIC_TOK);
+#line 305 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 315 "glsl_lexer.lpp"
-RESERVED_WORD(999, STATIC);
+#line 309 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 316 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERN);
+#line 313 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 317 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERNAL);
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 318 "glsl_lexer.lpp"
-RESERVED_WORD(999, INTERFACE);
+#line 322 "glsl_lexer.lpp"
+{
+                           yylval->n = 1;
+                           return BOOLCONSTANT;
+                       }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 319 "glsl_lexer.lpp"
-RESERVED_WORD(999, LONG_TOK);
+#line 326 "glsl_lexer.lpp"
+{
+                           yylval->n = 0;
+                           return BOOLCONSTANT;
+                       }
        YY_BREAK
+/* Reserved words in GLSL 1.10. */
 case 128:
 YY_RULE_SETUP
-#line 320 "glsl_lexer.lpp"
-RESERVED_WORD(999, SHORT_TOK);
+#line 333 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ASM);
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 321 "glsl_lexer.lpp"
-RESERVED_WORD(999, DOUBLE_TOK);
+#line 334 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CLASS);
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 322 "glsl_lexer.lpp"
-RESERVED_WORD(999, HALF);
+#line 335 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNION);
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 323 "glsl_lexer.lpp"
-RESERVED_WORD(999, FIXED_TOK);
+#line 336 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ENUM);
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 324 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNSIGNED);
+#line 337 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TYPEDEF);
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 325 "glsl_lexer.lpp"
-RESERVED_WORD(999, INPUT_TOK);
+#line 338 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TEMPLATE);
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 326 "glsl_lexer.lpp"
-RESERVED_WORD(999, OUTPUT);
+#line 339 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, THIS);
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 327 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC2);
+#line 340 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PACKED_TOK);
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 328 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC3);
+#line 341 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, GOTO);
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 329 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC4);
+#line 342 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, SWITCH);
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 330 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC2);
+#line 343 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, DEFAULT);
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 331 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC3);
+#line 344 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INLINE_TOK);
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 332 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC4);
+#line 345 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NOINLINE);
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 333 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC2);
+#line 346 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, VOLATILE);
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 334 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC3);
+#line 347 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PUBLIC_TOK);
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 335 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC4);
+#line 348 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, STATIC);
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 336 "glsl_lexer.lpp"
-return SAMPLER2DRECT;
+#line 349 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERN);
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 337 "glsl_lexer.lpp"
-RESERVED_WORD(999, SAMPLER3DRECT);
+#line 350 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERNAL);
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 338 "glsl_lexer.lpp"
-return SAMPLER2DRECTSHADOW;
+#line 351 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INTERFACE);
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 339 "glsl_lexer.lpp"
-RESERVED_WORD(999, SIZEOF);
+#line 352 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, LONG_TOK);
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 340 "glsl_lexer.lpp"
-RESERVED_WORD(999, CAST);
+#line 353 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SHORT_TOK);
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 341 "glsl_lexer.lpp"
-RESERVED_WORD(999, NAMESPACE);
+#line 354 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DOUBLE_TOK);
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 342 "glsl_lexer.lpp"
-RESERVED_WORD(999, USING);
+#line 355 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HALF);
        YY_BREAK
-/* Additional reserved words in GLSL 1.20. */
 case 151:
 YY_RULE_SETUP
-#line 345 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, LOWP);
+#line 356 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FIXED_TOK);
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 346 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP);
+#line 357 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNSIGNED);
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 347 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, HIGHP);
+#line 358 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INPUT_TOK);
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 348 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, PRECISION);
+#line 359 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, OUTPUT);
        YY_BREAK
-/* Additional reserved words in GLSL 1.30. */
 case 155:
 YY_RULE_SETUP
-#line 351 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, COMMON);
+#line 360 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC2);
        YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 352 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, PARTITION);
+#line 361 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC3);
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 353 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ACTIVE);
+#line 362 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC4);
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 354 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(130, SUPERP);
+#line 363 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC2);
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 355 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
+#line 364 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC3);
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 356 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, FILTER);
+#line 365 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC4);
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 357 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1D);
+#line 366 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC2);
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 358 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2D);
+#line 367 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC3);
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 359 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE3D);
+#line 368 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC4);
        YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 360 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
+#line 369 "glsl_lexer.lpp"
+return SAMPLER2DRECT;
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 361 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
+#line 370 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SAMPLER3DRECT);
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 362 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
+#line 371 "glsl_lexer.lpp"
+return SAMPLER2DRECTSHADOW;
        YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 363 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
+#line 372 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SIZEOF);
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 364 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
+#line 373 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CAST);
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 365 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
+#line 374 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NAMESPACE);
        YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 366 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
+#line 375 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, USING);
        YY_BREAK
+/* Additional reserved words in GLSL 1.20. */
 case 171:
 YY_RULE_SETUP
-#line 367 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
+#line 378 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, LOWP);
        YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 368 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
+#line 379 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, MEDIUMP);
        YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 369 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
+#line 380 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, HIGHP);
        YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 370 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
+#line 381 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, PRECISION);
        YY_BREAK
+/* Additional reserved words in GLSL 1.30. */
 case 175:
 YY_RULE_SETUP
-#line 371 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
+#line 384 "glsl_lexer.lpp"
+KEYWORD(130, 130, CASE);
        YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 372 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
+#line 385 "glsl_lexer.lpp"
+KEYWORD(130, 999, COMMON);
        YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 373 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
+#line 386 "glsl_lexer.lpp"
+KEYWORD(130, 999, PARTITION);
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 374 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
+#line 387 "glsl_lexer.lpp"
+KEYWORD(130, 999, ACTIVE);
        YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 375 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
+#line 388 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 999, SUPERP);
        YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 376 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
+#line 389 "glsl_lexer.lpp"
+KEYWORD(130, 140, SAMPLERBUFFER);
        YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 377 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
+#line 390 "glsl_lexer.lpp"
+KEYWORD(130, 999, FILTER);
        YY_BREAK
 case 182:
 YY_RULE_SETUP
-#line 378 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
+#line 391 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1D);
        YY_BREAK
 case 183:
 YY_RULE_SETUP
-#line 379 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
+#line 392 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2D);
        YY_BREAK
 case 184:
 YY_RULE_SETUP
-#line 380 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+#line 393 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE3D);
        YY_BREAK
 case 185:
 YY_RULE_SETUP
-#line 382 "glsl_lexer.lpp"
+#line 394 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGECUBE);
+       YY_BREAK
+case 186:
+YY_RULE_SETUP
+#line 395 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE1D);
+       YY_BREAK
+case 187:
+YY_RULE_SETUP
+#line 396 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE2D);
+       YY_BREAK
+case 188:
+YY_RULE_SETUP
+#line 397 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE3D);
+       YY_BREAK
+case 189:
+YY_RULE_SETUP
+#line 398 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGECUBE);
+       YY_BREAK
+case 190:
+YY_RULE_SETUP
+#line 399 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE1D);
+       YY_BREAK
+case 191:
+YY_RULE_SETUP
+#line 400 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE2D);
+       YY_BREAK
+case 192:
+YY_RULE_SETUP
+#line 401 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE3D);
+       YY_BREAK
+case 193:
+YY_RULE_SETUP
+#line 402 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGECUBE);
+       YY_BREAK
+case 194:
+YY_RULE_SETUP
+#line 403 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1DARRAY);
+       YY_BREAK
+case 195:
+YY_RULE_SETUP
+#line 404 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2DARRAY);
+       YY_BREAK
+case 196:
+YY_RULE_SETUP
+#line 405 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE1DARRAY);
+       YY_BREAK
+case 197:
+YY_RULE_SETUP
+#line 406 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGE2DARRAY);
+       YY_BREAK
+case 198:
+YY_RULE_SETUP
+#line 407 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE1DARRAY);
+       YY_BREAK
+case 199:
+YY_RULE_SETUP
+#line 408 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGE2DARRAY);
+       YY_BREAK
+case 200:
+YY_RULE_SETUP
+#line 409 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1DSHADOW);
+       YY_BREAK
+case 201:
+YY_RULE_SETUP
+#line 410 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2DSHADOW);
+       YY_BREAK
+case 202:
+YY_RULE_SETUP
+#line 411 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1DARRAYSHADOW);
+       YY_BREAK
+case 203:
+YY_RULE_SETUP
+#line 412 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2DARRAYSHADOW);
+       YY_BREAK
+case 204:
+YY_RULE_SETUP
+#line 413 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGEBUFFER);
+       YY_BREAK
+case 205:
+YY_RULE_SETUP
+#line 414 "glsl_lexer.lpp"
+KEYWORD(130, 999, IIMAGEBUFFER);
+       YY_BREAK
+case 206:
+YY_RULE_SETUP
+#line 415 "glsl_lexer.lpp"
+KEYWORD(130, 999, UIMAGEBUFFER);
+       YY_BREAK
+case 207:
+YY_RULE_SETUP
+#line 416 "glsl_lexer.lpp"
+KEYWORD(130, 999, ROW_MAJOR);
+       YY_BREAK
+case 208:
+YY_RULE_SETUP
+#line 418 "glsl_lexer.lpp"
 {
                            struct _mesa_glsl_parse_state *state = yyextra;
                            void *ctx = state;  
-                           yylval->identifier = talloc_strdup(ctx, yytext);
+                           yylval->identifier = ralloc_strdup(ctx, yytext);
                            return IDENTIFIER;
                        }
        YY_BREAK
-case 186:
+case 209:
 YY_RULE_SETUP
-#line 389 "glsl_lexer.lpp"
+#line 425 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
-case 187:
+case 210:
 YY_RULE_SETUP
-#line 391 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2370 "glsl_lexer.cpp"
+#line 2555 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
 case YY_STATE_EOF(PRAGMA):
@@ -2664,7 +2849,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
                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 >= 716 )
+                       if ( yy_current_state >= 836 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2693,11 +2878,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
        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 >= 716 )
+               if ( yy_current_state >= 836 )
                        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 == 715);
+       yy_is_jam = (yy_current_state == 835);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3102,8 +3287,8 @@ YY_BUFFER_STATE _mesa_glsl__scan_string (yyconst char * yystr , yyscan_t yyscann
 
 /** Setup the input buffer state to scan the given bytes. The next call to _mesa_glsl_lex() will
  * scan from a @e copy of @a bytes.
- * @param yybytes the byte buffer to scan
- * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
  * @param yyscanner The scanner object.
  * @return the newly allocated buffer state object.
  */
@@ -3509,7 +3694,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 391 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"