ralloc: Add missing va_end following va_copy.
[mesa.git] / src / glsl / glsl_lexer.cpp
index 2c502e880300ae2b6f8858bf9951b973b19f81dc..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 177
-#define YY_END_OF_BUFFER 178
+#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,81 +358,100 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[668] =
+static yyconst flex_int16_t yy_accept[836] =
     {   0,
-        0,    0,    9,    9,  178,  176,    1,   14,  176,  176,
-      176,  176,  176,  176,  176,  176,   90,   88,  176,  176,
-      176,  175,  176,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  176,    1,  176,   85,  177,    9,   13,
-      177,   12,   10,   11,    1,   74,   81,   75,   84,   78,
-       69,   80,   70,   87,   92,   79,   93,   90,    0,    0,
-       95,    0,   88,    0,   71,   73,   72,    0,  175,   77,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,   22,  175,  175,  175,  175,  175,  175,  175,
-
-      175,  175,  175,  175,  175,  175,   26,  175,  175,   50,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,   86,   76,    1,    0,    0,    2,    0,    0,    0,
-        0,    9,    8,   12,   11,    0,   92,   91,    0,   93,
-        0,   94,   89,   82,   83,  175,   98,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,   25,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,   19,
-
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-       51,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,    0,    0,
-        0,    0,    8,    0,   92,    0,   91,    0,   93,   94,
-      175,  175,   17,  175,  175,  138,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,   24,  101,  175,  175,  175,
-      175,   57,  175,  175,  106,  120,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  117,  141,   38,
-       39,   40,  175,  175,  175,  175,  175,  175,  175,  175,
-
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  104,   96,  175,  175,  175,  175,  175,  175,
-      175,   35,   36,   37,   67,  175,  175,    0,    0,    0,
-        0,    0,   91,  175,  175,   20,   29,   30,   31,  175,
-       99,  175,   16,  175,  175,  175,  175,  128,  129,  130,
-      175,   97,  175,  121,   18,  131,  132,  133,  143,  125,
-      126,  127,  175,  175,  175,   52,  123,  175,  175,   32,
-       33,   34,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  118,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  100,
-
-      175,  140,  175,  175,   23,    0,    0,    0,    0,  147,
-      175,  175,  145,  175,  175,  175,  119,  114,  150,  175,
-      175,  175,  175,  175,  175,  109,  175,  175,   68,   41,
-       42,   43,   44,   45,   46,   47,   48,   49,  175,  175,
-      175,  175,  124,  105,  175,  175,  112,   28,  175,  175,
-      137,   58,  113,   66,  148,  107,  175,  175,  175,  175,
-      175,  175,  175,    0,    0,    0,    0,  175,  175,  175,
-      108,   27,  175,  175,  175,  175,  175,  175,  151,  152,
-      153,  175,  175,  175,  175,  142,  175,  175,  175,  175,
-      175,  175,  175,  175,  102,  175,  175,  175,  175,  175,
-
-       53,  175,   54,  175,    0,    0,    0,    7,    0,  175,
-       55,   21,  115,  155,  156,  157,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  110,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  103,  159,  160,
-      161,  175,  175,  122,  111,    0,    0,    6,    0,    0,
-        0,    3,   15,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  154,  116,   56,  139,  175,  146,  144,  174,
-       60,   61,   62,  175,  175,  175,  175,  175,  175,    0,
-        0,    0,    0,  175,  175,  175,  158,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-
-      175,  175,  162,    4,    0,    5,    0,    0,    0,  175,
-      175,  175,  175,  175,  175,  175,  171,  175,  175,  175,
-      175,  175,  175,   63,  175,  175,  175,    0,  175,  175,
-      172,  163,  175,  164,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  173,  165,  166,  169,  170,   59,  175,
-      134,  175,  135,  149,  167,  168,  175,  175,  175,   64,
-      175,   65,  175,  175,  175,  136,    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] =
@@ -449,17 +459,17 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    5,    1,    6,    1,    7,    8,    1,    1,
-        1,    9,   10,    1,   11,   12,   13,   14,   15,   16,
-       17,   18,   19,   19,   19,   20,   20,   21,    1,   22,
-       23,   24,    1,    1,   25,   26,   27,   28,   29,   30,
-       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
-       31,   32,   33,   31,   31,   31,   31,   34,   31,   31,
-        1,    1,    1,   35,   36,    1,   37,   38,   39,   40,
-
-       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
-       51,   52,   31,   53,   54,   55,   56,   57,   58,   59,
-       60,   61,    1,   62,    1,    1,    1,    1,    1,    1,
+        1,    2,    5,    1,    6,    1,    7,    8,    1,    9,
+       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,   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,
+
+       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,
@@ -476,296 +486,357 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[63] =
+static yyconst flex_int32_t yy_meta[69] =
     {   0,
-        1,    2,    3,    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[678] =
+static yyconst flex_int16_t yy_base[845] =
     {   0,
-        0,   61,   84,    0, 1012, 1013,   62, 1013,  988,  987,
-       57,  986,   58,   59,   57,  985,  135,  183,   56,  984,
-      133,    0,  971,  119,  109,  130,  134,  111,  135,  954,
-      151,  165,   32,  152,  131,  948,  153,  170,  182,  176,
-      178,  193,  959,  125,  237,  243,  979, 1013,  214, 1013,
-      988,  233, 1013,    0,  231, 1013, 1013, 1013, 1013, 1013,
-     1013, 1013, 1013, 1013,  225, 1013,  227,  224,  289,  260,
-     1013,    0,    0,  977, 1013, 1013, 1013,  976,    0, 1013,
-      943,  948,  941,  944,  953,  952,  938,  941,  953,  155,
-      947,  934,  931,  945,  931,  928,  928,  934,  213,  222,
-
-      928,  939,  924,  930,  934,  935,    0,  926,  937,  237,
-      932,  912,  232,  916,  930,  920,  241,  913,  257,  926,
-      928,  910,  906,  914,  911,  900,  909,  228,  907,  913,
-      908,  911,  899,  902,  904,  257,  907,  898,  911,  215,
-      904, 1013, 1013,  310,  295,  318, 1013,  889,  902,  893,
-      904,  260,    0,  308,    0,  362, 1013,  303,  373, 1013,
-      380,  387,    0, 1013, 1013,  899,    0,  890,  894,  904,
-      901,  884,  883,  883,  887,  280,  898,  895,  895,  893,
-      890,  881,  888,  874,  872,  885,  870,  887,    0,  884,
-      871,  879,  876,  880,  881,  874,  871,  859,  858,  872,
-
-      875,  872,  859,  866,  856,  321,  862,  865,  855,  863,
-      851,  855,  846,  861,  851,  842,  861,  844,  842,  853,
-      842,  837,  835,  849,  834,  836,  833,  845,  844,  847,
-      298,  838,  832,  821,  337,  840,  842,  830,  822,  826,
-      838,  821,    0,  394,  404,  421, 1013,  433,  440, 1013,
-      816,  827,    0,  824,  340,    0,  817,  815,  817,  812,
-      821,  809,  827,  815,  344,    0,    0,  809,  820,  819,
-      819,    0,  803,  347,    0,    0,  805,  351,  813,  814,
-      804,  798,  797,  798,  797,  409,  793,    0,    0,  789,
-      788,  787,  789,  790,  795,  789,  785,  799,  794,  793,
-
-      792,  783,  786,  786,  778,  781,  776,  785,  790,  775,
-      788,  778,    0,    0,  785,  781,  772,  772,  778,  777,
-      774,    0,    0,    0,    0,  763,  776,  775,  774,  771,
-      759,  447,  457,  771,  773,    0,    0,    0,    0,  759,
-        0,  759,    0,  758,  759,  753,  764,    0,    0,    0,
-      754,    0,  750,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  761,  463,  760,    0,    0,  758,  754,    0,
-        0,    0,  743,  426,  467,  475,  748,  744,  750,  740,
-      738,  752,  736,  736,  750,  738,  750,  745,    0,  743,
-      740,  744,  727,  729,  736,  742,  737,  736,  723,    0,
-
-      725,    0,  724,  728,    0,  722,  769,  721,  724,    0,
-      712,  722,    0,  710,  710,  724,    0,  726,    0,  479,
-      734,  733,  732,  703,  702,    0,  720,  719,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  703,  717,
-      703,  700,    0,    0,  706,  705,    0,    0,  703,  695,
-        0,    0,    0,    0,    0,    0,  692,  704,  485,  696,
-      703,  700,  694,  687,  501,  703,  688,  683,  697,  695,
-        0,    0,  687,  706,  705,  704,  675,  674,  317,  489,
-        0,  687,  690,  688,  676,    0,  686,  683,  682,  671,
-      670,  669,  508,  678,    0,  690,  689,  688,  659,  658,
-
-        0,  673,    0,  671,  666,  495,  524, 1013,  660,  668,
-        0,    0,    0,  683,  682,    0,  664,  667,  651,  659,
-      649,  657,  658,  658,  657,  642,  655,    0,  656,  644,
-      643,  639,  663,  662,  661,  632,  631,    0,  661,  660,
-        0,  642,  645,    0,    0,  631,  543, 1013,  534,    0,
-      553, 1013,    0,  628,  627,  637,  637,  624,  639,  622,
-      637,  632,    0,    0,    0,    0,  617,    0,    0,    0,
-      638,  353,  638,  627,  630,  614,  613,  623,  623,  613,
-      530,  563,  413,  609,  608,  619,    0,  622,  618,  620,
-      616,  602,  609,  605,  607,  603,  598,  596,  596,  575,
-
-      542,  553,    0, 1013,  466, 1013,  582,    0,  588,  556,
-      555,  535,  527,  535,  516,  524,    0,  517,  510,  492,
-      493,  489,  472,    0,  473,  472,  451,  505,  428,  426,
-        0,    0,  423,    0,  387,  392,  390,  373,  334,  316,
-      298,  288,  286,    0,    0,    0,    0,    0,    0,  290,
-      296,  266,    0,    0,    0,    0,  257,  269,  241,    0,
-      250,    0,  202,  133,  105,    0, 1013,  605,  610,  615,
-      617,  619,  625,  632,  637,  642,  647
+        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[678] =
+static yyconst flex_int16_t yy_def[845] =
     {   0,
-      667,    1,  667,    3,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  668,  667,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  669,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  670,  667,  671,   17,  667,  667,
-      667,  672,   18,  667,  667,  667,  667,  667,  668,  667,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  673,  667,  669,  667,  667,  671,  667,  667,
-      667,  667,  672,  667,  667,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  667,  667,
-      667,  667,  673,  667,  667,  667,  667,  667,  667,  667,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  667,  667,  667,
-      667,  667,  667,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  668,  668,  667,  667,  667,  667,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  667,  667,  667,  667,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  668,  667,  674,  667,  667,  667,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  667,  667,  667,  667,  675,
-      667,  667,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  667,
-      676,  667,  675,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-
-      668,  668,  668,  667,  667,  667,  667,  677,  667,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  677,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,  668,  668,  668,  668,
-      668,  668,  668,  668,  668,  668,    0,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667
+      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[1076] =
+static yyconst flex_int16_t yy_nxt[1283] =
     {   0,
-        6,    7,    8,    7,    9,    6,   10,   11,   12,   13,
-       14,   15,   16,   17,   18,   18,   18,   18,   18,   18,
-        6,   19,   20,   21,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   23,   22,   24,   25,   26,   27,
-       28,   29,   30,   31,   32,   22,   22,   33,   34,   35,
-       36,   37,   38,   39,   40,   41,   42,   43,   22,   22,
-       22,   44,   45,   55,   58,   55,   46,   61,  112,   63,
-       65,   65,   65,   65,   65,   65,   65,   74,   75,   59,
-       62,   64,  113,   47,   48,   49,   50,   49,   48,   48,
-       48,   48,   48,   48,   48,   48,   51,   48,   52,   52,
-
-       52,   52,   52,   52,   53,   48,   48,   48,   54,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   48,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   54,   54,   54,   54,   48,   67,  142,   68,   68,
-       68,   68,   68,   68,   69,   77,   78,   81,   95,   84,
-       96,   85,  666,   70,   71,   86,   87,  116,   72,   97,
-       88,   98,   82,   83,   91,   70,   71,   89,   92,   99,
-       90,  117,  100,  665,   93,  101,  143,  104,  114,  119,
-       94,  102,  115,   72,   67,  105,   73,   73,   73,   73,
-
-       73,   73,   73,  175,  176,  120,  107,  106,  121,  108,
-      122,   70,   71,  109,  110,  152,  131,  152,  124,  132,
-      123,  111,  135,   70,   71,  125,  126,  136,  133,  138,
-      127,  137,   55,  139,   55,  134,  128,  129,  144,  130,
-       55,  664,  145,  140,  146,  147,  154,  154,  154,  154,
-      154,  154,  154,  156,  157,  159,  160,  667,  187,  236,
-      185,  152,  237,  152,  222,  156,  157,  159,  160,  161,
-      161,  186,  188,  162,  162,  162,  162,  162,  162,  162,
-      223,  204,  667,  148,  197,  209,  663,  198,  199,  205,
-      149,  200,  210,  201,  150,  212,  146,  147,  662,  151,
-
-       67,  231,   69,   69,   69,   69,   69,   69,   69,  213,
-      232,  144,  661,   55,  660,  145,  659,   70,   71,  146,
-      147,  154,  154,  154,  154,  154,  154,  154,  658,   70,
-       71,  246,  247,  260,  261,  148,  290,  291,  292,  317,
-      657,  519,  149,  246,  247,  656,  150,  655,  318,  520,
-      654,  151,  322,  323,  324,  337,  338,  339,  148,  348,
-      349,  350,  356,  357,  358,  149,  360,  361,  362,  150,
-      653,  244,  244,  652,  151,  245,  245,  245,  245,  245,
-      245,  245,  248,  248,  595,  596,  249,  249,  249,  249,
-      249,  249,  249,  162,  162,  162,  162,  162,  162,  162,
-
-      162,  162,  162,  162,  162,  162,  162,  245,  245,  245,
-      245,  245,  245,  245,  547,  548,  250,  245,  245,  245,
-      245,  245,  245,  245,  370,  371,  372,  651,  250,  650,
-      332,  332,  649,  157,  333,  333,  333,  333,  333,  333,
-      333,  430,  431,  432,  648,  157,  249,  249,  249,  249,
-      249,  249,  249,  249,  249,  249,  249,  249,  249,  249,
-      333,  333,  333,  333,  333,  333,  333,  605,  606,  160,
-      333,  333,  333,  333,  333,  333,  333,  421,  422,  423,
-      647,  160,  433,  434,  435,  646,  247,  645,  424,  425,
-      436,  437,  438,  474,  475,  476,  547,  548,  247,  496,
-
-      497,  498,  465,  644,  477,  478,  605,  606,  643,  642,
-      499,  500,  641,  521,  506,  507,  507,  507,  507,  507,
-      507,  522,  533,  534,  535,  547,  548,  640,  550,  639,
-      638,  605,  606,  536,  537,  547,  548,  551,  551,  551,
-      551,  551,  551,  551,  547,  548,  637,  549,  549,  549,
-      549,  549,  549,  550,  547,  548,  581,  582,  582,  582,
-      582,  582,  582,  608,  605,  606,  551,  551,  551,  551,
-      551,  551,  551,  636,  635,  634,  609,  609,  609,  609,
-      609,  609,  609,  605,  606,  633,  632,  631,  608,  605,
-      606,  630,  629,  627,  626,  607,  607,  607,  607,  607,
-
-      607,  609,  609,  609,  609,  609,  609,  609,   79,   79,
-       79,   79,   79,  155,  155,  155,  155,  155,   65,   65,
-      158,  158,  163,  163,  163,  243,  243,  625,  243,  243,
-      243,  243,  243,  549,  549,  549,  624,  623,  622,  549,
-      583,  583,  583,  607,  607,  607,  621,  620,  619,  607,
-      628,  628,  628,  618,  617,  616,  615,  614,  613,  612,
-      611,  610,  604,  603,  602,  601,  600,  599,  598,  597,
-      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
-      584,  580,  579,  578,  577,  576,  575,  574,  573,  572,
-      571,  570,  569,  568,  567,  566,  565,  564,  563,  562,
-
-      561,  560,  559,  558,  557,  556,  555,  554,  553,  552,
-      546,  545,  544,  543,  542,  541,  540,  539,  538,  532,
-      531,  530,  529,  528,  527,  526,  525,  524,  523,  518,
-      517,  516,  515,  514,  513,  512,  511,  510,  509,  508,
-      505,  504,  503,  502,  501,  495,  494,  493,  492,  491,
-      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
-      480,  479,  473,  472,  471,  470,  469,  468,  467,  466,
-      465,  464,  463,  462,  461,  460,  459,  458,  457,  456,
-      455,  454,  453,  452,  451,  450,  449,  448,  447,  446,
-      445,  444,  443,  442,  441,  440,  439,  429,  428,  427,
-
-      426,  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,
-      391,  390,  389,  388,  387,  386,  385,  384,  383,  382,
-      381,  380,  379,  378,  377,  376,  375,  374,  373,  369,
-      368,  367,  366,  365,  364,  363,  359,  355,  354,  353,
-      352,  351,  347,  346,  345,  344,  343,  342,  341,  340,
-      336,  335,  334,  331,  330,  329,  328,  327,  326,  325,
-      321,  320,  319,  316,  315,  314,  313,  312,  311,  310,
-      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
-
-      299,  298,  297,  296,  295,  294,  293,  289,  288,  287,
-      286,  285,  284,  283,  282,  281,  280,  279,  278,  277,
-      276,  275,  274,  273,  272,  271,  270,  269,  268,  267,
-      266,  265,  264,  263,  262,  259,  258,  257,  256,  255,
-      254,  253,  252,  251,  242,  241,  240,  239,  238,  235,
-      234,  233,  230,  229,  228,  227,  226,  225,  224,  221,
-      220,  219,  218,  217,  216,  215,  214,  211,  208,  207,
-      206,  203,  202,  196,  195,  194,  193,  192,  191,  190,
-      189,  184,  183,  182,  181,  180,  179,  178,  177,  174,
-      173,  172,  171,  170,  169,  168,  167,  166,  165,  164,
-
-      153,   76,  141,  118,  103,   80,   76,   66,   60,   57,
-       56,  667,    5,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667
+        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,   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[1076] =
+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,
@@ -773,118 +844,141 @@ static yyconst flex_int16_t yy_chk[1076] =
         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,    7,   11,    7,    2,   13,   33,   14,
-       15,   15,   15,   15,   15,   15,   15,   19,   19,   11,
-       13,   14,   33,    2,    3,    3,    3,    3,    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,    3,    3,    3,    3,   17,   44,   17,   17,
-       17,   17,   17,   17,   17,   21,   21,   24,   28,   25,
-       28,   25,  665,   17,   17,   25,   26,   35,   17,   28,
-       26,   29,   24,   24,   27,   17,   17,   26,   27,   29,
-       26,   35,   29,  664,   27,   29,   44,   31,   34,   37,
-       27,   29,   34,   17,   18,   31,   18,   18,   18,   18,
-
-       18,   18,   18,   90,   90,   37,   32,   31,   37,   32,
-       38,   18,   18,   32,   32,   49,   40,   49,   39,   40,
-       38,   32,   41,   18,   18,   39,   39,   41,   40,   42,
-       39,   41,   55,   42,   55,   40,   39,   39,   45,   39,
-       45,  663,   45,   42,   46,   46,   52,   52,   52,   52,
-       52,   52,   52,   65,   65,   67,   67,   68,  100,  140,
-       99,  152,  140,  152,  128,   65,   65,   67,   67,   70,
-       70,   99,  100,   70,   70,   70,   70,   70,   70,   70,
-      128,  113,   68,   46,  110,  117,  661,  110,  110,  113,
-       46,  110,  117,  110,   46,  119,  145,  145,  659,   46,
-
-       69,  136,   69,   69,   69,   69,   69,   69,   69,  119,
-      136,  144,  658,  144,  657,  144,  652,   69,   69,  146,
-      146,  154,  154,  154,  154,  154,  154,  154,  651,   69,
-       69,  158,  158,  176,  176,  145,  206,  206,  206,  231,
-      650,  479,  145,  158,  158,  643,  145,  642,  231,  479,
-      641,  145,  235,  235,  235,  255,  255,  255,  146,  265,
-      265,  265,  274,  274,  274,  146,  278,  278,  278,  146,
-      640,  156,  156,  639,  146,  156,  156,  156,  156,  156,
-      156,  156,  159,  159,  572,  572,  159,  159,  159,  159,
-      159,  159,  159,  161,  161,  161,  161,  161,  161,  161,
-
-      162,  162,  162,  162,  162,  162,  162,  244,  244,  244,
-      244,  244,  244,  244,  583,  583,  162,  245,  245,  245,
-      245,  245,  245,  245,  286,  286,  286,  638,  162,  637,
-      246,  246,  636,  245,  246,  246,  246,  246,  246,  246,
-      246,  374,  374,  374,  635,  245,  248,  248,  248,  248,
-      248,  248,  248,  249,  249,  249,  249,  249,  249,  249,
-      332,  332,  332,  332,  332,  332,  332,  605,  605,  249,
-      333,  333,  333,  333,  333,  333,  333,  364,  364,  364,
-      633,  249,  375,  375,  375,  630,  333,  629,  364,  364,
-      376,  376,  376,  420,  420,  420,  506,  506,  333,  459,
-
-      459,  459,  465,  627,  420,  420,  628,  628,  626,  625,
-      459,  459,  623,  480,  465,  465,  465,  465,  465,  465,
-      465,  480,  493,  493,  493,  507,  507,  622,  506,  621,
-      620,  581,  581,  493,  493,  549,  549,  507,  507,  507,
-      507,  507,  507,  507,  547,  547,  619,  549,  549,  549,
-      549,  549,  549,  506,  551,  551,  547,  547,  547,  547,
-      547,  547,  547,  581,  582,  582,  551,  551,  551,  551,
-      551,  551,  551,  618,  616,  615,  582,  582,  582,  582,
-      582,  582,  582,  607,  607,  614,  613,  612,  581,  609,
-      609,  611,  610,  602,  601,  607,  607,  607,  607,  607,
-
-      607,  609,  609,  609,  609,  609,  609,  609,  668,  668,
-      668,  668,  668,  669,  669,  669,  669,  669,  670,  670,
-      671,  671,  672,  672,  672,  673,  673,  600,  673,  673,
-      673,  673,  673,  674,  674,  674,  599,  598,  597,  674,
-      675,  675,  675,  676,  676,  676,  596,  595,  594,  676,
-      677,  677,  677,  593,  592,  591,  590,  589,  588,  586,
-      585,  584,  580,  579,  578,  577,  576,  575,  574,  573,
-      571,  567,  562,  561,  560,  559,  558,  557,  556,  555,
-      554,  546,  543,  542,  540,  539,  537,  536,  535,  534,
-      533,  532,  531,  530,  529,  527,  526,  525,  524,  523,
-
-      522,  521,  520,  519,  518,  517,  515,  514,  510,  509,
-      505,  504,  502,  500,  499,  498,  497,  496,  494,  492,
-      491,  490,  489,  488,  487,  485,  484,  483,  482,  478,
-      477,  476,  475,  474,  473,  470,  469,  468,  467,  466,
-      464,  463,  462,  461,  460,  458,  457,  450,  449,  446,
-      445,  442,  441,  440,  439,  428,  427,  425,  424,  423,
-      422,  421,  418,  416,  415,  414,  412,  411,  409,  408,
-      407,  406,  404,  403,  401,  399,  398,  397,  396,  395,
-      394,  393,  392,  391,  390,  388,  387,  386,  385,  384,
-      383,  382,  381,  380,  379,  378,  377,  373,  369,  368,
-
-      365,  363,  353,  351,  347,  346,  345,  344,  342,  340,
-      335,  334,  331,  330,  329,  328,  327,  326,  321,  320,
-      319,  318,  317,  316,  315,  312,  311,  310,  309,  308,
-      307,  306,  305,  304,  303,  302,  301,  300,  299,  298,
-      297,  296,  295,  294,  293,  292,  291,  290,  287,  285,
-      284,  283,  282,  281,  280,  279,  277,  273,  271,  270,
-      269,  268,  264,  263,  262,  261,  260,  259,  258,  257,
-      254,  252,  251,  242,  241,  240,  239,  238,  237,  236,
-      234,  233,  232,  230,  229,  228,  227,  226,  225,  224,
-      223,  222,  221,  220,  219,  218,  217,  216,  215,  214,
-
-      213,  212,  211,  210,  209,  208,  207,  205,  204,  203,
-      202,  201,  200,  199,  198,  197,  196,  195,  194,  193,
-      192,  191,  190,  188,  187,  186,  185,  184,  183,  182,
-      181,  180,  179,  178,  177,  175,  174,  173,  172,  171,
-      170,  169,  168,  166,  151,  150,  149,  148,  141,  139,
-      138,  137,  135,  134,  133,  132,  131,  130,  129,  127,
-      126,  125,  124,  123,  122,  121,  120,  118,  116,  115,
-      114,  112,  111,  109,  108,  106,  105,  104,  103,  102,
-      101,   98,   97,   96,   95,   94,   93,   92,   91,   89,
-       88,   87,   86,   85,   84,   83,   82,   81,   78,   74,
-
-       51,   47,   43,   36,   30,   23,   20,   16,   12,   10,
-        9,    5,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667,  667,  667,  667,  667,  667,
-      667,  667,  667,  667,  667
+        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
@@ -919,6 +1013,7 @@ static yyconst flex_int16_t yy_chk[1076] =
  * DEALINGS IN THE SOFTWARE.
  */
 #include <ctype.h>
+#include "strtod.h"
 #include "ast.h"
 #include "glsl_parser_extras.h"
 #include "glsl_parser.h"
@@ -933,39 +1028,50 @@ static yyconst flex_int16_t yy_chk[1076] =
 
 #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')
 
-#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 958 "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
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#include <unistd.h>
-#endif
+#define PRAGMA 2
 
 #define YY_EXTRA_TYPE struct _mesa_glsl_parse_state *
 
@@ -1048,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 );
@@ -1088,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. */
@@ -1112,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; \
@@ -1200,10 +1305,10 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 76 "glsl_lexer.lpp"
+#line 95 "glsl_lexer.lpp"
 
 
-#line 1207 "glsl_lexer.cpp"
+#line 1312 "glsl_lexer.cpp"
 
     yylval = yylval_param;
 
@@ -1261,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 >= 668 )
+                               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 != 667 );
+               while ( yy_current_state != 835 );
                yy_cp = yyg->yy_last_accepting_cpos;
                yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1289,7 +1394,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 78 "glsl_lexer.lpp"
+#line 97 "glsl_lexer.lpp"
 ;
        YY_BREAK
 /* Preprocessor tokens. */ 
@@ -1298,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 81 "glsl_lexer.lpp"
+#line 100 "glsl_lexer.lpp"
 ;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 82 "glsl_lexer.lpp"
+#line 101 "glsl_lexer.lpp"
 { BEGIN PP; return VERSION; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 83 "glsl_lexer.lpp"
+#line 102 "glsl_lexer.lpp"
 { BEGIN PP; return EXTENSION; }
        YY_BREAK
 case 5:
@@ -1316,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 84 "glsl_lexer.lpp"
+#line 103 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1338,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 99 "glsl_lexer.lpp"
+#line 118 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1356,916 +1461,1100 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 113 "glsl_lexer.lpp"
-{ BEGIN PP; return PRAGMA; }
+#line 132 "glsl_lexer.lpp"
+{
+                                 BEGIN PP;
+                                 return PRAGMA_DEBUG_ON;
+                               }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 114 "glsl_lexer.lpp"
-{ }
+#line 136 "glsl_lexer.lpp"
+{
+                                 BEGIN PP;
+                                 return PRAGMA_DEBUG_OFF;
+                               }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 115 "glsl_lexer.lpp"
-{ }
+#line 140 "glsl_lexer.lpp"
+{
+                                 BEGIN PP;
+                                 return PRAGMA_OPTIMIZE_ON;
+                               }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 116 "glsl_lexer.lpp"
-return COLON;
+#line 144 "glsl_lexer.lpp"
+{
+                                 BEGIN PP;
+                                 return PRAGMA_OPTIMIZE_OFF;
+                               }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 117 "glsl_lexer.lpp"
+#line 148 "glsl_lexer.lpp"
 {
-                                  yylval->identifier = strdup(yytext);
-                                  return IDENTIFIER;
+                                 BEGIN PP;
+                                 return PRAGMA_INVARIANT_ALL;
                                }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 121 "glsl_lexer.lpp"
-{
-                                   yylval->n = strtol(yytext, NULL, 10);
-                                   return INTCONSTANT;
-                               }
+#line 152 "glsl_lexer.lpp"
+{ BEGIN PRAGMA; }
        YY_BREAK
 case 13:
 /* rule 13 can match eol */
 YY_RULE_SETUP
-#line 125 "glsl_lexer.lpp"
-{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
+#line 154 "glsl_lexer.lpp"
+{ BEGIN 0; yylineno++; yycolumn = 0; }
        YY_BREAK
 case 14:
-/* rule 14 can match eol */
 YY_RULE_SETUP
-#line 127 "glsl_lexer.lpp"
-{ yylineno++; yycolumn = 0; }
+#line 155 "glsl_lexer.lpp"
+{ }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 129 "glsl_lexer.lpp"
-return ATTRIBUTE;
+#line 157 "glsl_lexer.lpp"
+{ }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 130 "glsl_lexer.lpp"
-return CONST_TOK;
+#line 158 "glsl_lexer.lpp"
+{ }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 131 "glsl_lexer.lpp"
-return BOOL_TOK;
+#line 159 "glsl_lexer.lpp"
+return COLON;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 132 "glsl_lexer.lpp"
-return FLOAT_TOK;
+#line 160 "glsl_lexer.lpp"
+{
+                                  yylval->identifier = strdup(yytext);
+                                  return IDENTIFIER;
+                               }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 133 "glsl_lexer.lpp"
-return INT_TOK;
+#line 164 "glsl_lexer.lpp"
+{
+                                   yylval->n = strtol(yytext, NULL, 10);
+                                   return INTCONSTANT;
+                               }
        YY_BREAK
 case 20:
+/* rule 20 can match eol */
 YY_RULE_SETUP
-#line 135 "glsl_lexer.lpp"
-return BREAK;
+#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 136 "glsl_lexer.lpp"
-return CONTINUE;
+#line 170 "glsl_lexer.lpp"
+{ yylineno++; yycolumn = 0; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 137 "glsl_lexer.lpp"
-return DO;
+#line 172 "glsl_lexer.lpp"
+return ATTRIBUTE;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 138 "glsl_lexer.lpp"
-return WHILE;
+#line 173 "glsl_lexer.lpp"
+return CONST_TOK;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 139 "glsl_lexer.lpp"
-return ELSE;
+#line 174 "glsl_lexer.lpp"
+return BOOL_TOK;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 140 "glsl_lexer.lpp"
-return FOR;
+#line 175 "glsl_lexer.lpp"
+return FLOAT_TOK;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 141 "glsl_lexer.lpp"
-return IF;
+#line 176 "glsl_lexer.lpp"
+return INT_TOK;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 142 "glsl_lexer.lpp"
-return DISCARD;
+#line 177 "glsl_lexer.lpp"
+KEYWORD(130, 130, UINT_TOK);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 143 "glsl_lexer.lpp"
-return RETURN;
+#line 179 "glsl_lexer.lpp"
+return BREAK;
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 145 "glsl_lexer.lpp"
-return BVEC2;
+#line 180 "glsl_lexer.lpp"
+return CONTINUE;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 146 "glsl_lexer.lpp"
-return BVEC3;
+#line 181 "glsl_lexer.lpp"
+return DO;
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 147 "glsl_lexer.lpp"
-return BVEC4;
+#line 182 "glsl_lexer.lpp"
+return WHILE;
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 148 "glsl_lexer.lpp"
-return IVEC2;
+#line 183 "glsl_lexer.lpp"
+return ELSE;
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 149 "glsl_lexer.lpp"
-return IVEC3;
+#line 184 "glsl_lexer.lpp"
+return FOR;
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 150 "glsl_lexer.lpp"
-return IVEC4;
+#line 185 "glsl_lexer.lpp"
+return IF;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 151 "glsl_lexer.lpp"
-return VEC2;
+#line 186 "glsl_lexer.lpp"
+return DISCARD;
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 152 "glsl_lexer.lpp"
-return VEC3;
+#line 187 "glsl_lexer.lpp"
+return RETURN;
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 153 "glsl_lexer.lpp"
-return VEC4;
+#line 189 "glsl_lexer.lpp"
+return BVEC2;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 154 "glsl_lexer.lpp"
-return MAT2X2;
+#line 190 "glsl_lexer.lpp"
+return BVEC3;
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 155 "glsl_lexer.lpp"
-return MAT3X3;
+#line 191 "glsl_lexer.lpp"
+return BVEC4;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 156 "glsl_lexer.lpp"
-return MAT4X4;
+#line 192 "glsl_lexer.lpp"
+return IVEC2;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 157 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X2);
+#line 193 "glsl_lexer.lpp"
+return IVEC3;
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 158 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X3);
+#line 194 "glsl_lexer.lpp"
+return IVEC4;
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 159 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X4);
+#line 195 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC2);
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 160 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X2);
+#line 196 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC3);
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 161 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X3);
+#line 197 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC4);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 162 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X4);
+#line 198 "glsl_lexer.lpp"
+return VEC2;
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 163 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X2);
+#line 199 "glsl_lexer.lpp"
+return VEC3;
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 164 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X3);
+#line 200 "glsl_lexer.lpp"
+return VEC4;
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 165 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X4);
+#line 201 "glsl_lexer.lpp"
+return MAT2X2;
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 167 "glsl_lexer.lpp"
-return IN_TOK;
+#line 202 "glsl_lexer.lpp"
+return MAT3X3;
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 168 "glsl_lexer.lpp"
-return OUT_TOK;
+#line 203 "glsl_lexer.lpp"
+return MAT4X4;
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 169 "glsl_lexer.lpp"
-return INOUT_TOK;
+#line 204 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X2);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 170 "glsl_lexer.lpp"
-return UNIFORM;
+#line 205 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X3);
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 171 "glsl_lexer.lpp"
-return VARYING;
+#line 206 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X4);
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 172 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, CENTROID);
+#line 207 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X2);
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 173 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, INVARIANT);
+#line 208 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X3);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 175 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, FLAT);
+#line 209 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X4);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 176 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SMOOTH);
+#line 210 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X2);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 177 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE);
+#line 211 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X3);
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 179 "glsl_lexer.lpp"
-return SAMPLER1D;
+#line 212 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X4);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 180 "glsl_lexer.lpp"
-return SAMPLER2D;
+#line 214 "glsl_lexer.lpp"
+return IN_TOK;
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 181 "glsl_lexer.lpp"
-return SAMPLER3D;
+#line 215 "glsl_lexer.lpp"
+return OUT_TOK;
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 182 "glsl_lexer.lpp"
-return SAMPLERCUBE;
+#line 216 "glsl_lexer.lpp"
+return INOUT_TOK;
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 183 "glsl_lexer.lpp"
-return SAMPLER1DSHADOW;
+#line 217 "glsl_lexer.lpp"
+return UNIFORM;
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 184 "glsl_lexer.lpp"
-return SAMPLER2DSHADOW;
+#line 218 "glsl_lexer.lpp"
+return VARYING;
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 186 "glsl_lexer.lpp"
-return STRUCT;
+#line 219 "glsl_lexer.lpp"
+KEYWORD(120, 120, CENTROID);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 187 "glsl_lexer.lpp"
-return VOID_TOK;
+#line 220 "glsl_lexer.lpp"
+KEYWORD(120 || ES, 120 || ES, INVARIANT);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 189 "glsl_lexer.lpp"
-{
-                 if ((yyextra->language_version >= 140)
-                     || (yyextra->ARB_fragment_coord_conventions_enable)){
-                     return LAYOUT_TOK;
-                  } else {
-                     yylval->identifier = strdup(yytext);
-                     return IDENTIFIER;
-                  }
-               }
+#line 221 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 130, FLAT);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 199 "glsl_lexer.lpp"
-return INC_OP;
+#line 222 "glsl_lexer.lpp"
+KEYWORD(130, 130, SMOOTH);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 200 "glsl_lexer.lpp"
-return DEC_OP;
+#line 223 "glsl_lexer.lpp"
+KEYWORD(130, 130, NOPERSPECTIVE);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 201 "glsl_lexer.lpp"
-return LE_OP;
+#line 225 "glsl_lexer.lpp"
+return SAMPLER1D;
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 202 "glsl_lexer.lpp"
-return GE_OP;
+#line 226 "glsl_lexer.lpp"
+return SAMPLER2D;
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 203 "glsl_lexer.lpp"
-return EQ_OP;
+#line 227 "glsl_lexer.lpp"
+return SAMPLER3D;
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 204 "glsl_lexer.lpp"
-return NE_OP;
+#line 228 "glsl_lexer.lpp"
+return SAMPLERCUBE;
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 205 "glsl_lexer.lpp"
-return AND_OP;
+#line 229 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER1DARRAY);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 206 "glsl_lexer.lpp"
-return OR_OP;
+#line 230 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER2DARRAY);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 207 "glsl_lexer.lpp"
-return XOR_OP;
+#line 231 "glsl_lexer.lpp"
+return SAMPLER1DSHADOW;
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 209 "glsl_lexer.lpp"
-return MUL_ASSIGN;
+#line 232 "glsl_lexer.lpp"
+return SAMPLER2DSHADOW;
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 210 "glsl_lexer.lpp"
-return DIV_ASSIGN;
+#line 233 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLERCUBESHADOW);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 211 "glsl_lexer.lpp"
-return ADD_ASSIGN;
+#line 234 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 212 "glsl_lexer.lpp"
-return MOD_ASSIGN;
+#line 235 "glsl_lexer.lpp"
+KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 213 "glsl_lexer.lpp"
-return LEFT_ASSIGN;
+#line 236 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1D);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 214 "glsl_lexer.lpp"
-return RIGHT_ASSIGN;
+#line 237 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2D);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 215 "glsl_lexer.lpp"
-return AND_ASSIGN;
+#line 238 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER3D);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 216 "glsl_lexer.lpp"
-return XOR_ASSIGN;
+#line 239 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLERCUBE);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 217 "glsl_lexer.lpp"
-return OR_ASSIGN;
+#line 240 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1DARRAY);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 218 "glsl_lexer.lpp"
-return SUB_ASSIGN;
+#line 241 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2DARRAY);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 220 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext, NULL, 10);
-                           return INTCONSTANT;
-                       }
+#line 242 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1D);
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 224 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext + 2, NULL, 16);
-                           return INTCONSTANT;
-                       }
+#line 243 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2D);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 228 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext, NULL, 8);
-                           return INTCONSTANT;
-                       }
+#line 244 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER3D);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 233 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 245 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLERCUBE);
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 237 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 246 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1DARRAY);
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 241 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 247 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2DARRAY);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 245 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 250 "glsl_lexer.lpp"
+return STRUCT;
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 249 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 251 "glsl_lexer.lpp"
+return VOID_TOK;
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 254 "glsl_lexer.lpp"
+#line 253 "glsl_lexer.lpp"
 {
-                           yylval->n = 1;
-                           return BOOLCONSTANT;
-                       }
+                 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 258 "glsl_lexer.lpp"
-{
-                           yylval->n = 0;
-                           return BOOLCONSTANT;
-                       }
+#line 265 "glsl_lexer.lpp"
+return INC_OP;
        YY_BREAK
-/* Reserved words in GLSL 1.10. */
 case 98:
 YY_RULE_SETUP
-#line 265 "glsl_lexer.lpp"
-RESERVED_WORD(999, ASM);
+#line 266 "glsl_lexer.lpp"
+return DEC_OP;
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 266 "glsl_lexer.lpp"
-RESERVED_WORD(999, CLASS);
+#line 267 "glsl_lexer.lpp"
+return LE_OP;
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 267 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNION);
+#line 268 "glsl_lexer.lpp"
+return GE_OP;
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 268 "glsl_lexer.lpp"
-RESERVED_WORD(999, ENUM);
+#line 269 "glsl_lexer.lpp"
+return EQ_OP;
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 269 "glsl_lexer.lpp"
-RESERVED_WORD(999, TYPEDEF);
+#line 270 "glsl_lexer.lpp"
+return NE_OP;
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 270 "glsl_lexer.lpp"
-RESERVED_WORD(999, TEMPLATE);
+#line 271 "glsl_lexer.lpp"
+return AND_OP;
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 271 "glsl_lexer.lpp"
-RESERVED_WORD(999, THIS);
+#line 272 "glsl_lexer.lpp"
+return OR_OP;
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 272 "glsl_lexer.lpp"
-RESERVED_WORD(999, PACKED_TOK);
+#line 273 "glsl_lexer.lpp"
+return XOR_OP;
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 273 "glsl_lexer.lpp"
-RESERVED_WORD(999, GOTO);
+#line 274 "glsl_lexer.lpp"
+return LEFT_OP;
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 274 "glsl_lexer.lpp"
-RESERVED_WORD(130, SWITCH);
+#line 275 "glsl_lexer.lpp"
+return RIGHT_OP;
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 275 "glsl_lexer.lpp"
-RESERVED_WORD(130, DEFAULT);
+#line 277 "glsl_lexer.lpp"
+return MUL_ASSIGN;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 276 "glsl_lexer.lpp"
-RESERVED_WORD(999, INLINE_TOK);
+#line 278 "glsl_lexer.lpp"
+return DIV_ASSIGN;
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 277 "glsl_lexer.lpp"
-RESERVED_WORD(999, NOINLINE);
+#line 279 "glsl_lexer.lpp"
+return ADD_ASSIGN;
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 278 "glsl_lexer.lpp"
-RESERVED_WORD(999, VOLATILE);
+#line 280 "glsl_lexer.lpp"
+return MOD_ASSIGN;
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 279 "glsl_lexer.lpp"
-RESERVED_WORD(999, PUBLIC_TOK);
+#line 281 "glsl_lexer.lpp"
+return LEFT_ASSIGN;
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 280 "glsl_lexer.lpp"
-RESERVED_WORD(999, STATIC);
+#line 282 "glsl_lexer.lpp"
+return RIGHT_ASSIGN;
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 281 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERN);
+#line 283 "glsl_lexer.lpp"
+return AND_ASSIGN;
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 282 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERNAL);
+#line 284 "glsl_lexer.lpp"
+return XOR_ASSIGN;
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 283 "glsl_lexer.lpp"
-RESERVED_WORD(999, INTERFACE);
+#line 285 "glsl_lexer.lpp"
+return OR_ASSIGN;
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 284 "glsl_lexer.lpp"
-RESERVED_WORD(999, LONG_TOK);
+#line 286 "glsl_lexer.lpp"
+return SUB_ASSIGN;
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 285 "glsl_lexer.lpp"
-RESERVED_WORD(999, SHORT_TOK);
+#line 288 "glsl_lexer.lpp"
+{
+                           yylval->n = strtol(yytext, NULL, 10);
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+                       }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 286 "glsl_lexer.lpp"
-RESERVED_WORD(999, DOUBLE_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 287 "glsl_lexer.lpp"
-RESERVED_WORD(999, HALF);
+#line 296 "glsl_lexer.lpp"
+{
+                           yylval->n = strtol(yytext, NULL, 8);
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+                       }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 288 "glsl_lexer.lpp"
-RESERVED_WORD(999, FIXED_TOK);
+#line 301 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 289 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNSIGNED);
+#line 305 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 290 "glsl_lexer.lpp"
-RESERVED_WORD(999, INPUT_TOK);
+#line 309 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 291 "glsl_lexer.lpp"
-RESERVED_WORD(999, OUTPUT);
+#line 313 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 292 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC2);
+#line 317 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 293 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC3);
+#line 322 "glsl_lexer.lpp"
+{
+                           yylval->n = 1;
+                           return BOOLCONSTANT;
+                       }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 294 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC4);
+#line 326 "glsl_lexer.lpp"
+{
+                           yylval->n = 0;
+                           return BOOLCONSTANT;
+                       }
        YY_BREAK
+/* Reserved words in GLSL 1.10. */
 case 128:
 YY_RULE_SETUP
-#line 295 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC2);
+#line 333 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ASM);
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 296 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC3);
+#line 334 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CLASS);
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 297 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC4);
+#line 335 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNION);
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 298 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC2);
+#line 336 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ENUM);
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 299 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC3);
+#line 337 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TYPEDEF);
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 300 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC4);
+#line 338 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TEMPLATE);
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 301 "glsl_lexer.lpp"
-return SAMPLER2DRECT;
+#line 339 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, THIS);
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 302 "glsl_lexer.lpp"
-RESERVED_WORD(999, SAMPLER3DRECT);
+#line 340 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PACKED_TOK);
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 303 "glsl_lexer.lpp"
-return SAMPLER2DRECTSHADOW;
+#line 341 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, GOTO);
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 304 "glsl_lexer.lpp"
-RESERVED_WORD(999, SIZEOF);
+#line 342 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, SWITCH);
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
-RESERVED_WORD(999, CAST);
+#line 343 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, DEFAULT);
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 306 "glsl_lexer.lpp"
-RESERVED_WORD(999, NAMESPACE);
+#line 344 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INLINE_TOK);
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 307 "glsl_lexer.lpp"
-RESERVED_WORD(999, USING);
+#line 345 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NOINLINE);
        YY_BREAK
-/* Additional reserved words in GLSL 1.20. */
 case 141:
 YY_RULE_SETUP
-#line 310 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, LOWP);
+#line 346 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, VOLATILE);
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 311 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MEDIUMP);
+#line 347 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PUBLIC_TOK);
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 312 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, HIGHP);
+#line 348 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, STATIC);
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 313 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, PRECISION);
+#line 349 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERN);
        YY_BREAK
-/* Additional reserved words in GLSL 1.30. */
 case 145:
 YY_RULE_SETUP
-#line 316 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, COMMON);
+#line 350 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERNAL);
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 317 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, PARTITION);
+#line 351 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INTERFACE);
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 318 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ACTIVE);
+#line 352 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, LONG_TOK);
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 319 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SUPERP);
+#line 353 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SHORT_TOK);
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 320 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
+#line 354 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DOUBLE_TOK);
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 321 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, FILTER);
+#line 355 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HALF);
        YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 322 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1D);
+#line 356 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FIXED_TOK);
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 323 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2D);
+#line 357 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNSIGNED);
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 324 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE3D);
+#line 358 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INPUT_TOK);
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 325 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
+#line 359 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, OUTPUT);
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 326 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
+#line 360 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC2);
        YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 327 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
+#line 361 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC3);
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 328 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
+#line 362 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC4);
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 329 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
+#line 363 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC2);
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 330 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
+#line 364 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC3);
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 331 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
+#line 365 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC4);
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 332 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
+#line 366 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC2);
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 333 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
+#line 367 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC3);
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 334 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
+#line 368 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC4);
        YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 335 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
+#line 369 "glsl_lexer.lpp"
+return SAMPLER2DRECT;
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 336 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
+#line 370 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SAMPLER3DRECT);
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 337 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
+#line 371 "glsl_lexer.lpp"
+return SAMPLER2DRECTSHADOW;
        YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 338 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
+#line 372 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SIZEOF);
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 339 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
+#line 373 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CAST);
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 340 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
+#line 374 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NAMESPACE);
        YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 341 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
+#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 342 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
+#line 378 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, LOWP);
        YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 343 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
+#line 379 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, MEDIUMP);
        YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 344 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
+#line 380 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, HIGHP);
        YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 345 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+#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 347 "glsl_lexer.lpp"
+#line 384 "glsl_lexer.lpp"
+KEYWORD(130, 130, CASE);
+       YY_BREAK
+case 176:
+YY_RULE_SETUP
+#line 385 "glsl_lexer.lpp"
+KEYWORD(130, 999, COMMON);
+       YY_BREAK
+case 177:
+YY_RULE_SETUP
+#line 386 "glsl_lexer.lpp"
+KEYWORD(130, 999, PARTITION);
+       YY_BREAK
+case 178:
+YY_RULE_SETUP
+#line 387 "glsl_lexer.lpp"
+KEYWORD(130, 999, ACTIVE);
+       YY_BREAK
+case 179:
+YY_RULE_SETUP
+#line 388 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 999, SUPERP);
+       YY_BREAK
+case 180:
+YY_RULE_SETUP
+#line 389 "glsl_lexer.lpp"
+KEYWORD(130, 140, SAMPLERBUFFER);
+       YY_BREAK
+case 181:
+YY_RULE_SETUP
+#line 390 "glsl_lexer.lpp"
+KEYWORD(130, 999, FILTER);
+       YY_BREAK
+case 182:
+YY_RULE_SETUP
+#line 391 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE1D);
+       YY_BREAK
+case 183:
+YY_RULE_SETUP
+#line 392 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE2D);
+       YY_BREAK
+case 184:
+YY_RULE_SETUP
+#line 393 "glsl_lexer.lpp"
+KEYWORD(130, 999, IMAGE3D);
+       YY_BREAK
+case 185:
+YY_RULE_SETUP
+#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 176:
+case 209:
 YY_RULE_SETUP
-#line 354 "glsl_lexer.lpp"
+#line 425 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
-case 177:
+case 210:
 YY_RULE_SETUP
-#line 356 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2267 "glsl_lexer.cpp"
+#line 2555 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
+case YY_STATE_EOF(PRAGMA):
        yyterminate();
 
        case YY_END_OF_BUFFER:
@@ -2560,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 >= 668 )
+                       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];
@@ -2589,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 >= 668 )
+               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 == 667);
+       yy_is_jam = (yy_current_state == 835);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2998,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.
  */
@@ -3405,7 +3694,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 356 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"