ralloc: Add missing va_end following va_copy.
[mesa.git] / src / glsl / glsl_lexer.cpp
index 7661bbe9823412acee284120284ca3c16e39ea4e..04927950f4ad0dc7ac791281685f876fe5bbda70 100644 (file)
@@ -349,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 183
-#define YY_END_OF_BUFFER 184
+#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
@@ -358,86 +358,100 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[708] =
+static yyconst flex_int16_t yy_accept[836] =
     {   0,
-        0,    0,   15,   15,    0,    0,  184,  182,    1,   20,
-      182,  182,  182,  182,  182,  182,  182,  182,   96,   94,
-      182,  182,  182,  181,  182,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  182,    1,  182,   91,  183,
-       15,   19,  183,   18,   16,   17,   13,   12,    1,   80,
-       87,   81,   90,   84,   75,   86,   76,   93,   98,   85,
-       99,   96,    0,    0,  101,    0,   94,    0,   77,   79,
-       78,    0,  181,   83,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,   28,  181,  181,  181,
-
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-       32,  181,  181,   56,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,   92,   82,    1,    0,    0,
-        2,    0,    0,    0,    0,   15,   14,   18,   17,    0,
-       98,   97,    0,   99,    0,  100,   95,   88,   89,  181,
-      104,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,   31,  181,  181,  181,  181,  181,  181,  181,
-
-      181,  181,  181,   25,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,   57,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,    0,    0,    0,    0,   14,    0,   98,    0,
-       97,    0,   99,  100,  181,  181,   23,  181,  181,  144,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,   30,
-      107,  181,  181,  181,  181,   63,  181,  181,  112,  126,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  123,  147,   44,   45,   46,  181,  181,  181,  181,
-
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  110,  102,  181,  181,
-      181,  181,  181,  181,  181,   41,   42,   43,   73,  181,
-      181,    0,    0,    0,    0,    0,   97,  181,  181,   26,
-       35,   36,   37,  181,  105,  181,   22,  181,  181,  181,
-      181,  134,  135,  136,  181,  103,  181,  127,   24,  137,
-      138,  139,  149,  131,  132,  133,  181,  181,  181,   58,
-      129,  181,  181,   38,   39,   40,  181,  181,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  181,  124,  181,  181,  181,  181,  181,  181,  181,
-
-      181,  181,  181,  106,  181,  146,  181,  181,   29,    0,
-        0,    0,    0,  153,  181,  181,  151,  181,  181,  181,
-      125,  120,  156,  181,  181,  181,  181,  181,  181,  115,
-      181,  181,   74,   47,   48,   49,   50,   51,   52,   53,
-       54,   55,  181,  181,  181,  181,  130,  111,  181,  181,
-      118,   34,  181,  181,  143,   64,  119,   72,  154,  113,
-      181,  181,  181,  181,  181,  181,  181,    0,    0,    0,
-        0,  181,  181,  181,  114,   33,  181,  181,  181,  181,
-      181,  181,  157,  158,  159,  181,  181,  181,  181,  148,
-      181,  181,  181,  181,  181,  181,  181,  181,  108,  181,
-
-      181,  181,  181,  181,   59,  181,   60,  181,    0,    0,
-        0,    0,    0,  181,   61,   27,  121,  161,  162,  163,
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  116,  181,  181,  181,  181,  181,  181,  181,  181,
-      181,  109,  165,  166,  167,  181,  181,  128,  117,    0,
-        0,    6,    0,    0,    0,   11,    3,   21,  181,  181,
-      181,  181,  181,  181,  181,  181,  181,  160,  122,   62,
-      145,  181,  152,  150,  180,   66,   67,   68,  181,  181,
-      181,  181,  181,  181,    0,    0,    0,    0,    0,    0,
-      181,  181,  181,  164,  181,  181,  181,  181,  181,  181,
-
-      181,  181,  181,  181,  181,  181,  181,  181,  181,  168,
-        4,    0,    5,    0,    0,    0,    0,    0,  181,  181,
-      181,  181,  181,  181,  181,  177,  181,  181,  181,  181,
-      181,  181,   69,  181,  181,  181,    0,    0,    0,  181,
-      181,  178,  169,  181,  170,  181,  181,  181,  181,  181,
-      181,  181,  181,  181,  179,    0,    0,  171,  172,  175,
-      176,   65,  181,  140,  181,  141,  155,  173,  174,    0,
-        0,  181,  181,  181,    0,    0,    0,   70,  181,   71,
-        0,    0,    0,  181,    0,    0,    0,  181,    0,    0,
-        7,    0,    0,  181,    0,    8,    0,    0,  142,    0,
-
-        0,    0,    0,    9,    0,   10,    0
+        0,    0,   16,   16,    0,    0,  211,  209,    1,   21,
+      209,  209,  209,  209,  209,  209,  209,  209,  120,  118,
+      209,  209,  209,  208,  209,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  209,    1,  209,  210,   16,
+       20,  210,   19,   17,   18,   14,   13,    1,  102,  111,
+      103,  114,  108,   97,  110,   98,  117,  122,  109,  123,
+      120,    0,    0,  125,  120,    0,  118,  118,  106,   99,
+      101,  100,  107,  208,  115,  105,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,   30,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,   34,  208,  208,   61,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  116,
+      104,    1,    0,    0,    2,    0,    0,    0,    0,   16,
+       15,   19,   18,    0,  122,  121,    0,  123,    0,  124,
+      119,  112,  113,  208,  128,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,   33,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,   26,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,   62,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+        0,    0,    0,    0,   15,    0,  122,    0,  121,    0,
+      123,  124,  119,  208,  208,   24,  208,  208,  175,  168,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,   32,
+      131,  208,  208,  208,  208,   68,  208,  208,  136,  150,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  147,  171,   49,   50,   51,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  134,  126,  208,
+      208,   27,  208,  208,  208,  208,  208,  208,  208,   46,
+       47,   48,   95,  208,  208,    0,    0,    0,    0,    0,
+      121,  208,  208,   28,   37,   38,   39,  208,  129,  208,
+       23,  208,  208,  208,  208,  158,  159,  160,  208,  127,
+      208,  151,   25,  161,  162,  163,  173,  155,  156,  157,
+      208,  208,  208,   63,  153,  208,  208,  208,   40,   41,
+       42,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+
+      208,  208,  208,  208,  208,  208,  208,  148,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  130,  208,
+      208,  170,   43,   44,   45,  208,  208,   31,    0,    0,
+        0,    0,  178,  208,  208,  176,  208,  208,  208,  149,
+      144,  181,  208,  208,  208,  208,  208,  208,  139,  208,
+      208,  208,   96,   52,   53,   54,   55,   56,   57,   58,
+       59,   60,  208,  208,  208,  208,  154,  135,  208,  208,
+      142,   36,  208,  208,  167,   69,  143,   94,  179,  137,
+      208,  208,  208,  208,  208,  208,  208,  208,    0,    0,
+        0,    0,  208,  208,  208,  138,   35,  208,  208,  208,
+
+      208,  208,  208,  182,  183,  184,  208,  208,  208,  208,
+      208,  172,  208,  208,  208,  208,  208,  208,  208,  208,
+      132,  208,  208,  208,  208,  208,   64,  208,  208,   65,
+      208,    0,    0,    0,    0,    0,  208,   66,   29,  145,
+      186,  187,  188,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  140,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  133,  190,  191,  192,  208,
+      208,  152,  208,  141,    0,    0,    6,    0,    0,    0,
+       12,    3,   22,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  185,  146,   67,  208,  208,  208,  208,  169,
+
+      208,  177,  174,  207,   71,   72,   73,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,    0,    0,    0,
+        0,    0,    0,    0,  208,  208,  208,  189,  208,  208,
+      208,  208,  208,   82,   83,   84,  208,  208,  208,  208,
+      208,  208,  208,  208,  208,  208,  208,  208,  208,  193,
+       88,   89,   90,  208,    4,    0,    5,    0,    0,    0,
+        0,    0,    0,  208,  208,  208,  208,  208,  208,  208,
+      204,  208,  208,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,   74,  208,  208,  208,  208,  208,  208,    0,
+        0,    0,    0,  208,  208,  205,  194,  208,  195,  208,
+
+      208,  208,   85,  208,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,  206,  208,  208,   91,    0,    0,
+        0,  196,  197,  208,  200,  208,  201,  208,  208,   70,
+      208,  208,  208,  164,  208,  165,  180,  208,  198,  199,
+      208,  208,    0,    0,    0,  208,  208,  208,  208,   75,
+      208,   76,  208,  208,  208,  208,  208,    0,    0,    0,
+        0,  208,  208,   86,   87,  208,   77,  208,  208,   78,
+      208,   92,   93,    0,    0,    0,    0,  208,  208,  208,
+      208,  208,  208,    0,    0,    0,    0,  208,  208,  208,
+      208,  208,   79,    0,    0,    0,    7,    0,    0,  202,
+
+      203,  208,  208,  208,    0,    0,    8,    0,    0,  208,
+      208,  166,    0,    0,    0,   80,   81,    0,    0,    0,
+        9,    0,    0,   10,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   11,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -449,13 +463,13 @@ static yyconst flex_int32_t yy_ec[256] =
        10,   11,   12,    1,   13,   14,   15,   16,   17,   18,
        19,   20,   21,   21,   21,   22,   22,   23,    1,   24,
        25,   26,    1,    1,   27,   28,   29,   30,   31,   32,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   34,   35,   33,   33,   33,   33,   36,   33,   33,
-        1,    1,    1,   37,   38,    1,   39,   40,   41,   42,
+       33,   34,   34,   34,   34,   35,   34,   34,   34,   34,
+       34,   36,   37,   38,   39,   34,   34,   40,   34,   34,
+        1,    1,    1,   41,   42,    1,   43,   44,   45,   46,
 
-       43,   44,   45,   46,   47,   48,   49,   50,   51,   52,
-       53,   54,   33,   55,   56,   57,   58,   59,   60,   61,
-       62,   63,    1,   64,    1,    1,    1,    1,    1,    1,
+       47,   48,   49,   50,   51,   52,   53,   54,   55,   56,
+       57,   58,   34,   59,   60,   61,   62,   63,   64,   65,
+       66,   67,    1,   68,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -472,314 +486,357 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[65] =
+static yyconst flex_int32_t yy_meta[69] =
     {   0,
-        1,    2,    3,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    4,    4,    4,    4,    4,
-        4,    5,    1,    1,    1,    1,    6,    6,    6,    6,
-        5,    5,    7,    7,    7,    8,    1,    7,    6,    6,
-        6,    6,    5,    5,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        8,    7,    7,    1
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    3,    3,    3,    3,    3,
+        3,    3,    1,    1,    1,    1,    4,    4,    4,    4,
+        3,    3,    5,    5,    5,    5,    5,    5,    5,    5,
+        1,    5,    4,    4,    4,    4,    3,    3,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[719] =
+static yyconst flex_int16_t yy_base[845] =
     {   0,
-        0,   63,   88,    0, 1076, 1075, 1077, 1080,   64, 1080,
-     1051, 1050,   59, 1049,   58,   60,   58, 1048,  139,  187,
-       47, 1047,   56,    0, 1034,  121,  110,  137,  138,  134,
-      163, 1017,  173,  177,  115,  149,  140, 1011,  159,  121,
-      187,  194,  194,  172, 1022,  171,  249,  240, 1042, 1080,
-      250, 1080, 1051,  241, 1080,    0, 1080, 1080,  262, 1080,
-     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080,  236, 1080,
-      238,  187,  286,  303, 1080,    0,    0, 1040, 1080, 1080,
-     1080, 1039,    0, 1080, 1006, 1011, 1004, 1007, 1016, 1015,
-     1001, 1004, 1016,   35, 1010,  997,  994, 1008,  994,  991,
-
-      991,  997,  215,  232,  991, 1002,  987,  993,  997,  998,
-        0,  989, 1000,  234,  995,  975,  226,  979,  993,  983,
-      119,  976,  234,  989,  991,  973,  969,  977,  974,  963,
-      972,  256,  970,  976,  971,  974,  962,  965,  967,  245,
-      970,  961,  974,  227,  967, 1080, 1080,  308,  294,  324,
-     1080,  952,  965,  956,  967,  329,    0,  338,    0,  368,
-     1080,  303,  379, 1080,  386,  393,    0, 1080, 1080,  962,
-        0,  953,  957,  967,  964,  947,  946,  946,  950,  216,
-      961,  958,  958,  956,  953,  944,  951,  937,  935,  948,
-      933,  950,    0,  947,  934,  942,  939,  943,  944,  937,
-
-      934,  922,  921,  935,  938,  935,  922,  929,  919,  320,
-      925,  928,  918,  926,  914,  918,  909,  924,  914,  905,
-      924,  907,  905,  916,  905,  900,  898,  912,  897,  899,
-      896,  908,  907,  910,  288,  901,  895,  884,  331,  903,
-      905,  893,  885,  889,  901,  884,    0,  400,  410,  427,
-     1080,  439,  446, 1080,  879,  890,    0,  887,  343,    0,
-      880,  878,  880,  875,  884,  872,  890,  878,  346,    0,
-        0,  872,  883,  882,  882,    0,  866,  350,    0,    0,
-      868,  353,  876,  877,  867,  861,  860,  861,  860,  357,
-      856,    0,    0,  852,  851,  850,  852,  853,  858,  852,
-
-      848,  862,  857,  856,  855,  846,  849,  849,  841,  844,
-      839,  848,  853,  838,  851,  841,    0,    0,  848,  844,
-      835,  835,  841,  840,  837,    0,    0,    0,    0,  826,
-      839,  838,  837,  834,  822,  453,  463,  834,  836,    0,
-        0,    0,    0,  822,    0,  822,    0,  821,  822,  816,
-      827,    0,    0,    0,  817,    0,  813,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  824,  469,  823,    0,
-        0,  821,  817,    0,    0,    0,  806,  415,  432,  473,
-      811,  807,  813,  803,  801,  815,  799,  799,  813,  801,
-      813,  808,    0,  806,  803,  807,  790,  792,  799,  805,
-
-      800,  799,  786,    0,  788,    0,  787,  791,    0,  785,
-      834,  784,  787,    0,  775,  785,    0,  773,  773,  787,
-        0,  789,    0,  482,  797,  796,  795,  766,  765,    0,
-      783,  782,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  766,  780,  766,  763,    0,    0,  769,  768,
-        0,    0,  766,  758,    0,    0,    0,    0,    0,    0,
-      755,  767,  485,  759,  766,  763,  757,  750,  503,  766,
-      751,  746,  760,  758,    0,    0,  750,  769,  768,  767,
-      738,  737,  301,  481,    0,  750,  753,  751,  739,    0,
-      749,  746,  745,  734,  733,  732,  509,  741,    0,  753,
-
-      752,  751,  722,  721,    0,  736,    0,  734,  729,  515,
-      527,  773,  722,  730,    0,    0,    0,  745,  744,    0,
-      726,  729,  713,  721,  711,  719,  720,  720,  719,  704,
-      717,    0,  718,  706,  705,  701,  725,  724,  723,  694,
-      693,    0,  723,  722,    0,  704,  707,    0,    0,  693,
-      537, 1080,  561,    0,  567,  340, 1080,    0,  690,  689,
-      699,  699,  686,  701,  684,  699,  694,    0,    0,    0,
-        0,  679,    0,    0,    0,  700,  389,  700,  689,  692,
-      676,  675,  685,  685,  675,  529,  589,  474,  683,  671,
-      669,  668,  679,    0,  682,  678,  680,  676,  662,  669,
-
-      669,  671,  667,  669,  667,  667,  654,  653,  664,    0,
-     1080,  531, 1080,  596,    0,  616,  666,  648,  665,  664,
-      647,  635,  643,  633,  634,    0,  627,  646,  635,  607,
-      604,  601,    0,  604,  603,  586,  533,  572,  580,  564,
-      563,    0,    0,  564,    0,  540,  554,  552,  516,  530,
-      505,  486,  453,  450,    0,  461,  443,    0,    0,    0,
-        0,    0,  400,  406,  385,    0,    0,    0,    0,  343,
-      389,  319,  267,  249,  487,  341,  235,    0,  200,    0,
-      507,  498,  184,  157,  150,  564,  559,  136,  565,  591,
-     1080,  593,  550,  112,  594, 1080,  569,  576,    0,  123,
-
-      619,  621,  637, 1080,  638, 1080, 1080,  648,  653,  658,
-      663,  665,  667,  673,  680,  685,  690,  695
+        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[719] =
+static yyconst flex_int16_t yy_def[845] =
     {   0,
-      707,    1,  707,    3,  708,  708,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  709,  707,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  710,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  711,  707,
-      712,   19,  707,  707,  707,  713,   20,  707,  707,  707,
-      707,  707,  709,  707,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  714,  707,  710,  707,
-      707,  712,  707,  707,  707,  707,  713,  707,  707,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  707,  707,  707,  707,  714,  707,  707,  707,
-      707,  707,  707,  707,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  707,  707,  707,  707,  707,  707,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  707,
-      707,  707,  707,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  707,  707,  707,
-      707,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  707,  715,
-      707,  707,  707,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  707,
-      707,  707,  707,  716,  707,  707,  707,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  707,  717,  707,  716,  707,  707,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      707,  707,  707,  707,  718,  707,  707,  707,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  718,  707,  707,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  707,  707,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  707,
-      707,  709,  709,  709,  707,  707,  707,  709,  709,  709,
-      707,  707,  707,  709,  707,  707,  707,  709,  707,  707,
-      707,  707,  707,  709,  707,  707,  707,  707,  709,  707,
-
-      707,  707,  707,  707,  707,  707,    0,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707
+      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[1145] =
+static yyconst flex_int16_t yy_nxt[1283] =
     {   0,
         8,    9,   10,    9,   11,    8,   12,   13,    8,    8,
        14,   15,   16,   17,   18,   19,   20,   20,   20,   20,
        20,   20,    8,   21,   22,   23,   24,   24,   24,   24,
-       24,   24,   24,   24,   24,   24,   25,   24,   26,   27,
-       28,   29,   30,   31,   32,   33,   34,   24,   24,   35,
-       36,   37,   38,   39,   40,   41,   42,   43,   44,   45,
-       24,   24,   24,   46,   47,   59,   62,   59,   48,   65,
-       78,   79,   67,   69,   69,   69,   69,   69,   69,   69,
-       81,   82,   66,   63,   68,  179,  180,   49,   50,   51,
-       52,   51,   50,   50,   50,   50,   50,   50,   50,   50,
-
-       50,   50,   53,   50,   54,   54,   54,   54,   54,   54,
-       55,   50,   50,   50,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   50,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   50,   71,  116,   72,   72,   72,   72,   72,   72,
-       73,   85,   88,  126,   89,  213,  702,  117,   90,   74,
-       75,  699,  214,  127,   76,   91,   86,   87,  120,   92,
-       95,   74,   75,   99,   96,  100,   93,  118,  694,   94,
-       97,  119,  121,  689,  101,  146,   98,  123,  688,   76,
-
-       71,  102,   77,   77,   77,   77,   77,   77,   77,  103,
-      142,  108,  104,  124,  143,  105,  125,   74,   75,  109,
-      111,  106,  707,  112,  144,  128,  687,  113,  114,   74,
-       75,  110,  129,  130,  147,  115,  135,  131,  684,  136,
-      139,  150,  151,  132,  133,  140,  134,  707,  137,  141,
-      148,  156,   59,  156,  149,  138,  158,  158,  158,  158,
-      158,  158,  158,   59,  189,   59,  160,  161,  163,  164,
-      191,  264,  265,  240,  216,  190,  241,  208,  160,  161,
-      163,  164,  152,  201,  192,  209,  202,  203,  217,  153,
-      204,  235,  205,  154,  226,  150,  151,  683,  155,   71,
-
-      236,   73,   73,   73,   73,   73,   73,   73,  680,  148,
-      227,   59,  679,  149,  165,  165,   74,   75,  166,  166,
-      166,  166,  166,  166,  166,  150,  151,  523,   74,   75,
-      156,  321,  156,  250,  251,  524,  152,  294,  295,  296,
-      322,  556,  681,  153,  675,  250,  251,  154,  326,  327,
-      328,  676,  155,  158,  158,  158,  158,  158,  158,  158,
-      341,  342,  343,  352,  353,  354,  152,  360,  361,  362,
-      364,  365,  366,  153,  374,  375,  376,  154,  678,  248,
-      248,  589,  155,  249,  249,  249,  249,  249,  249,  249,
-      252,  252,  590,  682,  253,  253,  253,  253,  253,  253,
-
-      253,  166,  166,  166,  166,  166,  166,  166,  166,  166,
-      166,  166,  166,  166,  166,  249,  249,  249,  249,  249,
-      249,  249,  602,  603,  254,  249,  249,  249,  249,  249,
-      249,  249,  434,  435,  436,  677,  254,  674,  336,  336,
-      673,  161,  337,  337,  337,  337,  337,  337,  337,  437,
-      438,  439,  672,  161,  253,  253,  253,  253,  253,  253,
-      253,  253,  253,  253,  253,  253,  253,  253,  337,  337,
-      337,  337,  337,  337,  337,  551,  552,  164,  337,  337,
-      337,  337,  337,  337,  337,  425,  426,  427,  675,  164,
-      440,  441,  442,  671,  251,  676,  428,  429,  478,  479,
-
-      480,  500,  501,  502,  469,  670,  251,  525,  681,  481,
-      482,  669,  503,  504,  668,  526,  551,  552,  510,  511,
-      511,  511,  511,  511,  511,  537,  538,  539,  551,  552,
-      612,  613,  612,  613,  612,  613,  540,  541,  551,  552,
-      667,  685,  555,  555,  555,  555,  555,  555,  555,  686,
-      554,  697,  586,  587,  587,  587,  587,  587,  587,  682,
-      692,  666,  551,  552,  615,  690,  695,  693,  551,  552,
-      697,  665,  664,  691,  696,  554,  553,  553,  553,  553,
-      553,  553,  555,  555,  555,  555,  555,  555,  555,  615,
-      612,  613,  690,  663,  692,  695,  662,  612,  613,  661,
-
-      691,  693,  698,  696,  616,  616,  616,  616,  616,  616,
-      616,  614,  614,  614,  614,  614,  614,  612,  613,  700,
-      703,  698,  705,  660,  659,  658,  657,  701,  704,  656,
-      706,  616,  616,  616,  616,  616,  616,  616,  703,  705,
-      655,  654,  653,  652,  651,  650,  704,  706,   57,   57,
-       57,   57,   57,   57,   57,   57,   83,   83,   83,   83,
-       83,  159,  159,  159,  159,  159,   69,   69,  162,  162,
-      167,  167,  167,  247,  247,  649,  247,  247,  247,  247,
-      247,  553,  553,  553,  648,  647,  646,  553,  588,  588,
-      588,  614,  614,  614,  645,  644,  643,  614,  637,  637,
-
-      637,  642,  641,  640,  639,  638,  636,  635,  634,  633,
-      632,  631,  630,  629,  628,  627,  626,  625,  624,  623,
-      622,  621,  620,  619,  618,  617,  611,  610,  609,  608,
-      607,  606,  605,  604,  601,  600,  599,  598,  597,  596,
-      595,  594,  593,  592,  591,  585,  584,  583,  582,  581,
-      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,  550,  549,  548,  547,  546,
-      545,  544,  543,  542,  536,  535,  534,  533,  532,  531,
-      530,  529,  528,  527,  522,  521,  520,  519,  518,  517,
-
-      516,  515,  514,  513,  512,  509,  508,  507,  506,  505,
-      499,  498,  497,  496,  495,  494,  493,  492,  491,  490,
-      489,  488,  487,  486,  485,  484,  483,  477,  476,  475,
+       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,  462,  461,  460,  459,  458,  457,  456,  455,
-      454,  453,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  443,  433,  432,  431,  430,  424,  423,  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,  391,
-
-      390,  389,  388,  387,  386,  385,  384,  383,  382,  381,
-      380,  379,  378,  377,  373,  372,  371,  370,  369,  368,
-      367,  363,  359,  358,  357,  356,  355,  351,  350,  349,
-      348,  347,  346,  345,  344,  340,  339,  338,  335,  334,
-      333,  332,  331,  330,  329,  325,  324,  323,  320,  319,
-      318,  317,  316,  315,  314,  313,  312,  311,  310,  309,
-      308,  307,  306,  305,  304,  303,  302,  301,  300,  299,
-      298,  297,  293,  292,  291,  290,  289,  288,  287,  286,
-      285,  284,  283,  282,  281,  280,  279,  278,  277,  276,
-      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
-
-      263,  262,  261,  260,  259,  258,  257,  256,  255,  246,
-      245,  244,  243,  242,  239,  238,  237,  234,  233,  232,
-      231,  230,  229,  228,  225,  224,  223,  222,  221,  220,
-      219,  218,  215,  212,  211,  210,  207,  206,  200,  199,
-      198,  197,  196,  195,  194,  193,  188,  187,  186,  185,
-      184,  183,  182,  181,  178,  177,  176,  175,  174,  173,
-      172,  171,  170,  169,  168,  157,   80,  145,  122,  107,
-       84,   80,   70,   64,   61,   60,  707,   58,   58,    7,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707
+      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[1145] =
+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,
@@ -787,126 +844,141 @@ static yyconst flex_int16_t yy_chk[1145] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    2,    9,   13,    9,    2,   15,
-       21,   21,   16,   17,   17,   17,   17,   17,   17,   17,
-       23,   23,   15,   13,   16,   94,   94,    2,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    9,
+      791,    9,    2,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,   19,   35,   19,   19,   19,   19,   19,   19,
-       19,   26,   27,   40,   27,  121,  700,   35,   27,   19,
-       19,  694,  121,   40,   19,   28,   26,   26,   37,   28,
-       29,   19,   19,   30,   29,   30,   28,   36,  688,   28,
-       29,   36,   37,  685,   30,   46,   29,   39,  684,   19,
-
-       20,   31,   20,   20,   20,   20,   20,   20,   20,   31,
-       44,   33,   31,   39,   44,   31,   39,   20,   20,   33,
-       34,   31,   72,   34,   44,   41,  683,   34,   34,   20,
-       20,   33,   41,   41,   46,   34,   42,   41,  679,   42,
-       43,   48,   48,   41,   41,   43,   41,   72,   42,   43,
-       47,   51,   47,   51,   47,   42,   54,   54,   54,   54,
-       54,   54,   54,   59,  103,   59,   69,   69,   71,   71,
-      104,  180,  180,  144,  123,  103,  144,  117,   69,   69,
-       71,   71,   48,  114,  104,  117,  114,  114,  123,   48,
-      114,  140,  114,   48,  132,  149,  149,  677,   48,   73,
-
-      140,   73,   73,   73,   73,   73,   73,   73,  674,  148,
-      132,  148,  673,  148,   74,   74,   73,   73,   74,   74,
-       74,   74,   74,   74,   74,  150,  150,  483,   73,   73,
-      156,  235,  156,  162,  162,  483,  149,  210,  210,  210,
-      235,  556,  676,  149,  670,  162,  162,  149,  239,  239,
-      239,  670,  149,  158,  158,  158,  158,  158,  158,  158,
-      259,  259,  259,  269,  269,  269,  150,  278,  278,  278,
-      282,  282,  282,  150,  290,  290,  290,  150,  672,  160,
-      160,  556,  150,  160,  160,  160,  160,  160,  160,  160,
-      163,  163,  556,  676,  163,  163,  163,  163,  163,  163,
-
-      163,  165,  165,  165,  165,  165,  165,  165,  166,  166,
-      166,  166,  166,  166,  166,  248,  248,  248,  248,  248,
-      248,  248,  577,  577,  166,  249,  249,  249,  249,  249,
-      249,  249,  378,  378,  378,  671,  166,  665,  250,  250,
-      664,  249,  250,  250,  250,  250,  250,  250,  250,  379,
-      379,  379,  663,  249,  252,  252,  252,  252,  252,  252,
-      252,  253,  253,  253,  253,  253,  253,  253,  336,  336,
-      336,  336,  336,  336,  336,  588,  588,  253,  337,  337,
-      337,  337,  337,  337,  337,  368,  368,  368,  675,  253,
-      380,  380,  380,  657,  337,  675,  368,  368,  424,  424,
-
-      424,  463,  463,  463,  469,  656,  337,  484,  681,  424,
-      424,  654,  463,  463,  653,  484,  510,  510,  469,  469,
-      469,  469,  469,  469,  469,  497,  497,  497,  511,  511,
-      586,  586,  612,  612,  637,  637,  497,  497,  551,  551,
-      652,  682,  511,  511,  511,  511,  511,  511,  511,  682,
-      510,  693,  551,  551,  551,  551,  551,  551,  551,  681,
-      687,  651,  553,  553,  586,  686,  689,  687,  555,  555,
-      697,  650,  649,  686,  689,  510,  553,  553,  553,  553,
-      553,  553,  555,  555,  555,  555,  555,  555,  555,  586,
-      587,  587,  690,  648,  692,  695,  647,  614,  614,  646,
-
-      690,  692,  693,  695,  587,  587,  587,  587,  587,  587,
-      587,  614,  614,  614,  614,  614,  614,  616,  616,  698,
-      701,  697,  702,  644,  641,  640,  639,  698,  701,  638,
-      702,  616,  616,  616,  616,  616,  616,  616,  703,  705,
-      636,  635,  634,  632,  631,  630,  703,  705,  708,  708,
-      708,  708,  708,  708,  708,  708,  709,  709,  709,  709,
-      709,  710,  710,  710,  710,  710,  711,  711,  712,  712,
-      713,  713,  713,  714,  714,  629,  714,  714,  714,  714,
-      714,  715,  715,  715,  628,  627,  625,  715,  716,  716,
-      716,  717,  717,  717,  624,  623,  622,  717,  718,  718,
-
-      718,  621,  620,  619,  618,  617,  609,  608,  607,  606,
-      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
-      595,  593,  592,  591,  590,  589,  585,  584,  583,  582,
-      581,  580,  579,  578,  576,  572,  567,  566,  565,  564,
-      563,  562,  561,  560,  559,  550,  547,  546,  544,  543,
-      541,  540,  539,  538,  537,  536,  535,  534,  533,  531,
-      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
-      519,  518,  514,  513,  512,  509,  508,  506,  504,  503,
-      502,  501,  500,  498,  496,  495,  494,  493,  492,  491,
-      489,  488,  487,  486,  482,  481,  480,  479,  478,  477,
-
-      474,  473,  472,  471,  470,  468,  467,  466,  465,  464,
-      462,  461,  454,  453,  450,  449,  446,  445,  444,  443,
-      432,  431,  429,  428,  427,  426,  425,  422,  420,  419,
-      418,  416,  415,  413,  412,  411,  410,  408,  407,  405,
-      403,  402,  401,  400,  399,  398,  397,  396,  395,  394,
-      392,  391,  390,  389,  388,  387,  386,  385,  384,  383,
-      382,  381,  377,  373,  372,  369,  367,  357,  355,  351,
-      350,  349,  348,  346,  344,  339,  338,  335,  334,  333,
-      332,  331,  330,  325,  324,  323,  322,  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,  291,  289,  288,  287,  286,  285,  284,
-      283,  281,  277,  275,  274,  273,  272,  268,  267,  266,
-      265,  264,  263,  262,  261,  258,  256,  255,  246,  245,
-      244,  243,  242,  241,  240,  238,  237,  236,  234,  233,
-      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
-      222,  221,  220,  219,  218,  217,  216,  215,  214,  213,
-      212,  211,  209,  208,  207,  206,  205,  204,  203,  202,
-      201,  200,  199,  198,  197,  196,  195,  194,  192,  191,
-      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
-
-      179,  178,  177,  176,  175,  174,  173,  172,  170,  155,
-      154,  153,  152,  145,  143,  142,  141,  139,  138,  137,
-      136,  135,  134,  133,  131,  130,  129,  128,  127,  126,
-      125,  124,  122,  120,  119,  118,  116,  115,  113,  112,
-      110,  109,  108,  107,  106,  105,  102,  101,  100,   99,
-       98,   97,   96,   95,   93,   92,   91,   90,   89,   88,
-       87,   86,   85,   82,   78,   53,   49,   45,   38,   32,
-       25,   22,   18,   14,   12,   11,    7,    6,    5,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707
+        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
@@ -941,6 +1013,7 @@ static yyconst flex_int16_t yy_chk[1145] =
  * DEALINGS IN THE SOFTWARE.
  */
 #include <ctype.h>
+#include "strtod.h"
 #include "ast.h"
 #include "glsl_parser_extras.h"
 #include "glsl_parser.h"
@@ -955,38 +1028,46 @@ static yyconst flex_int16_t yy_chk[1145] =
 
 #define YY_USER_INIT yylineno = 0; yycolumn = 0;
 
-#define TOKEN_OR_IDENTIFIER(version, token)                     \
-   do {                                                                 \
-      if (yyextra->language_version >= version) {               \
-        return token;                                           \
-      } else {                                                  \
-        yylval->identifier = strdup(yytext);                    \
-        return IDENTIFIER;                                      \
-      }                                                                 \
-   } while (0)
+#define IS_UINT (yytext[yyleng - 1] == 'u' || yytext[yyleng - 1] == 'U')
 
-/* Handle reserved words in GLSL ES (version 100) */
-#define TOKEN_OR_IDENTIFIER_ES(version, token)                 \
-   do {                                                                \
-      if (yyextra->es_shader) {                                        \
-       return token;                                           \
-      } else {                                                 \
-       TOKEN_OR_IDENTIFIER(version, token);                    \
-      }                                                                \
-   } while (0)
-
-#define RESERVED_WORD(version, token)                                  \
+/* A macro for handling reserved words and keywords across language versions.
+ *
+ * Certain words start out as identifiers, become reserved words in
+ * later language revisions, and finally become language keywords.
+ *
+ * For example, consider the following lexer rule:
+ * samplerBuffer       KEYWORD(130, 140, SAMPLERBUFFER)
+ *
+ * This means that "samplerBuffer" will be treated as:
+ * - a keyword (SAMPLERBUFFER token)         ...in GLSL >= 1.40
+ * - a reserved word - error                 ...in GLSL >= 1.30
+ * - an identifier                           ...in GLSL <  1.30
+ */
+#define KEYWORD(reserved_version, allowed_version, token)              \
    do {                                                                        \
-      if (yyextra->language_version >= version) {                      \
+      if (yyextra->language_version >= allowed_version) {              \
         return token;                                                  \
-      } else {                                                         \
+      } else if (yyextra->language_version >= reserved_version) {      \
         _mesa_glsl_error(yylloc, yyextra,                              \
                          "Illegal use of reserved word `%s'", yytext); \
         return ERROR_TOK;                                              \
+      } else {                                                         \
+        yylval->identifier = strdup(yytext);                           \
+        return IDENTIFIER;                                             \
       }                                                                        \
    } while (0)
 
-#line 990 "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
@@ -1073,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 );
@@ -1121,7 +1206,7 @@ static int input (yyscan_t yyscanner );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1132,7 +1217,7 @@ static int input (yyscan_t yyscanner );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               unsigned n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -1220,10 +1305,10 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 86 "glsl_lexer.lpp"
+#line 95 "glsl_lexer.lpp"
 
 
-#line 1227 "glsl_lexer.cpp"
+#line 1312 "glsl_lexer.cpp"
 
     yylval = yylval_param;
 
@@ -1281,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 >= 708 )
+                               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 != 707 );
+               while ( yy_current_state != 835 );
                yy_cp = yyg->yy_last_accepting_cpos;
                yy_current_state = yyg->yy_last_accepting_state;
 
@@ -1309,7 +1394,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 88 "glsl_lexer.lpp"
+#line 97 "glsl_lexer.lpp"
 ;
        YY_BREAK
 /* Preprocessor tokens. */ 
@@ -1318,17 +1403,17 @@ case 2:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 91 "glsl_lexer.lpp"
+#line 100 "glsl_lexer.lpp"
 ;
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 92 "glsl_lexer.lpp"
+#line 101 "glsl_lexer.lpp"
 { BEGIN PP; return VERSION; }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 93 "glsl_lexer.lpp"
+#line 102 "glsl_lexer.lpp"
 { BEGIN PP; return EXTENSION; }
        YY_BREAK
 case 5:
@@ -1336,7 +1421,7 @@ case 5:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 94 "glsl_lexer.lpp"
+#line 103 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1358,7 +1443,7 @@ case 6:
 yyg->yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 109 "glsl_lexer.lpp"
+#line 118 "glsl_lexer.lpp"
 {
                                   /* Eat characters until the first digit is
                                    * encountered
@@ -1376,7 +1461,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 123 "glsl_lexer.lpp"
+#line 132 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_DEBUG_ON;
@@ -1384,7 +1469,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 127 "glsl_lexer.lpp"
+#line 136 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_DEBUG_OFF;
@@ -1392,7 +1477,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 131 "glsl_lexer.lpp"
+#line 140 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_OPTIMIZE_ON;
@@ -1400,7 +1485,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 135 "glsl_lexer.lpp"
+#line 144 "glsl_lexer.lpp"
 {
                                  BEGIN PP;
                                  return PRAGMA_OPTIMIZE_OFF;
@@ -1408,925 +1493,1065 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 139 "glsl_lexer.lpp"
-{ BEGIN PRAGMA; }
+#line 148 "glsl_lexer.lpp"
+{
+                                 BEGIN PP;
+                                 return PRAGMA_INVARIANT_ALL;
+                               }
        YY_BREAK
 case 12:
-/* rule 12 can match eol */
 YY_RULE_SETUP
-#line 141 "glsl_lexer.lpp"
-{ BEGIN 0; yylineno++; yycolumn = 0; }
+#line 152 "glsl_lexer.lpp"
+{ BEGIN PRAGMA; }
        YY_BREAK
 case 13:
+/* rule 13 can match eol */
 YY_RULE_SETUP
-#line 142 "glsl_lexer.lpp"
-{ }
+#line 154 "glsl_lexer.lpp"
+{ BEGIN 0; yylineno++; yycolumn = 0; }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 144 "glsl_lexer.lpp"
+#line 155 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 145 "glsl_lexer.lpp"
+#line 157 "glsl_lexer.lpp"
 { }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 146 "glsl_lexer.lpp"
-return COLON;
+#line 158 "glsl_lexer.lpp"
+{ }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 147 "glsl_lexer.lpp"
+#line 159 "glsl_lexer.lpp"
+return COLON;
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 160 "glsl_lexer.lpp"
 {
                                   yylval->identifier = strdup(yytext);
                                   return IDENTIFIER;
                                }
        YY_BREAK
-case 18:
+case 19:
 YY_RULE_SETUP
-#line 151 "glsl_lexer.lpp"
+#line 164 "glsl_lexer.lpp"
 {
                                    yylval->n = strtol(yytext, NULL, 10);
                                    return INTCONSTANT;
                                }
        YY_BREAK
-case 19:
-/* rule 19 can match eol */
-YY_RULE_SETUP
-#line 155 "glsl_lexer.lpp"
-{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
-       YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 157 "glsl_lexer.lpp"
-{ yylineno++; yycolumn = 0; }
+#line 168 "glsl_lexer.lpp"
+{ BEGIN 0; yylineno++; yycolumn = 0; return EOL; }
        YY_BREAK
 case 21:
+/* rule 21 can match eol */
 YY_RULE_SETUP
-#line 159 "glsl_lexer.lpp"
-return ATTRIBUTE;
+#line 170 "glsl_lexer.lpp"
+{ yylineno++; yycolumn = 0; }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 160 "glsl_lexer.lpp"
-return CONST_TOK;
+#line 172 "glsl_lexer.lpp"
+return ATTRIBUTE;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 161 "glsl_lexer.lpp"
-return BOOL_TOK;
+#line 173 "glsl_lexer.lpp"
+return CONST_TOK;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 162 "glsl_lexer.lpp"
-return FLOAT_TOK;
+#line 174 "glsl_lexer.lpp"
+return BOOL_TOK;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 163 "glsl_lexer.lpp"
-return INT_TOK;
+#line 175 "glsl_lexer.lpp"
+return FLOAT_TOK;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 165 "glsl_lexer.lpp"
-return BREAK;
+#line 176 "glsl_lexer.lpp"
+return INT_TOK;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 166 "glsl_lexer.lpp"
-return CONTINUE;
+#line 177 "glsl_lexer.lpp"
+KEYWORD(130, 130, UINT_TOK);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 167 "glsl_lexer.lpp"
-return DO;
+#line 179 "glsl_lexer.lpp"
+return BREAK;
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 168 "glsl_lexer.lpp"
-return WHILE;
+#line 180 "glsl_lexer.lpp"
+return CONTINUE;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 169 "glsl_lexer.lpp"
-return ELSE;
+#line 181 "glsl_lexer.lpp"
+return DO;
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 170 "glsl_lexer.lpp"
-return FOR;
+#line 182 "glsl_lexer.lpp"
+return WHILE;
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 171 "glsl_lexer.lpp"
-return IF;
+#line 183 "glsl_lexer.lpp"
+return ELSE;
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 172 "glsl_lexer.lpp"
-return DISCARD;
+#line 184 "glsl_lexer.lpp"
+return FOR;
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 173 "glsl_lexer.lpp"
-return RETURN;
+#line 185 "glsl_lexer.lpp"
+return IF;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 175 "glsl_lexer.lpp"
-return BVEC2;
+#line 186 "glsl_lexer.lpp"
+return DISCARD;
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 176 "glsl_lexer.lpp"
-return BVEC3;
+#line 187 "glsl_lexer.lpp"
+return RETURN;
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 177 "glsl_lexer.lpp"
-return BVEC4;
+#line 189 "glsl_lexer.lpp"
+return BVEC2;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 178 "glsl_lexer.lpp"
-return IVEC2;
+#line 190 "glsl_lexer.lpp"
+return BVEC3;
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 179 "glsl_lexer.lpp"
-return IVEC3;
+#line 191 "glsl_lexer.lpp"
+return BVEC4;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 180 "glsl_lexer.lpp"
-return IVEC4;
+#line 192 "glsl_lexer.lpp"
+return IVEC2;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 181 "glsl_lexer.lpp"
-return VEC2;
+#line 193 "glsl_lexer.lpp"
+return IVEC3;
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 182 "glsl_lexer.lpp"
-return VEC3;
+#line 194 "glsl_lexer.lpp"
+return IVEC4;
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 183 "glsl_lexer.lpp"
-return VEC4;
+#line 195 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC2);
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 184 "glsl_lexer.lpp"
-return MAT2X2;
+#line 196 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC3);
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 185 "glsl_lexer.lpp"
-return MAT3X3;
+#line 197 "glsl_lexer.lpp"
+KEYWORD(130, 130, UVEC4);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 186 "glsl_lexer.lpp"
-return MAT4X4;
+#line 198 "glsl_lexer.lpp"
+return VEC2;
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 187 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X2);
+#line 199 "glsl_lexer.lpp"
+return VEC3;
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 188 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X3);
+#line 200 "glsl_lexer.lpp"
+return VEC4;
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 189 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT2X4);
+#line 201 "glsl_lexer.lpp"
+return MAT2X2;
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 190 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X2);
+#line 202 "glsl_lexer.lpp"
+return MAT3X3;
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 191 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X3);
+#line 203 "glsl_lexer.lpp"
+return MAT4X4;
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 192 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT3X4);
+#line 204 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X2);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 193 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X2);
+#line 205 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X3);
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 194 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X3);
+#line 206 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT2X4);
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 195 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, MAT4X4);
+#line 207 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X2);
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 197 "glsl_lexer.lpp"
-return IN_TOK;
+#line 208 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X3);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 198 "glsl_lexer.lpp"
-return OUT_TOK;
+#line 209 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT3X4);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 199 "glsl_lexer.lpp"
-return INOUT_TOK;
+#line 210 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X2);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 200 "glsl_lexer.lpp"
-return UNIFORM;
+#line 211 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X3);
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 201 "glsl_lexer.lpp"
-return VARYING;
+#line 212 "glsl_lexer.lpp"
+KEYWORD(120, 120, MAT4X4);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 202 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(120, CENTROID);
+#line 214 "glsl_lexer.lpp"
+return IN_TOK;
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 203 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, INVARIANT);
+#line 215 "glsl_lexer.lpp"
+return OUT_TOK;
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 205 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(130, FLAT);
+#line 216 "glsl_lexer.lpp"
+return INOUT_TOK;
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 206 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SMOOTH);
+#line 217 "glsl_lexer.lpp"
+return UNIFORM;
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 207 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE);
+#line 218 "glsl_lexer.lpp"
+return VARYING;
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 209 "glsl_lexer.lpp"
-return SAMPLER1D;
+#line 219 "glsl_lexer.lpp"
+KEYWORD(120, 120, CENTROID);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 210 "glsl_lexer.lpp"
-return SAMPLER2D;
+#line 220 "glsl_lexer.lpp"
+KEYWORD(120 || ES, 120 || ES, INVARIANT);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 211 "glsl_lexer.lpp"
-return SAMPLER3D;
+#line 221 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 130, FLAT);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 212 "glsl_lexer.lpp"
-return SAMPLERCUBE;
+#line 222 "glsl_lexer.lpp"
+KEYWORD(130, 130, SMOOTH);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 213 "glsl_lexer.lpp"
-return SAMPLER1DSHADOW;
+#line 223 "glsl_lexer.lpp"
+KEYWORD(130, 130, NOPERSPECTIVE);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 214 "glsl_lexer.lpp"
-return SAMPLER2DSHADOW;
+#line 225 "glsl_lexer.lpp"
+return SAMPLER1D;
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 216 "glsl_lexer.lpp"
-return STRUCT;
+#line 226 "glsl_lexer.lpp"
+return SAMPLER2D;
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 217 "glsl_lexer.lpp"
-return VOID_TOK;
+#line 227 "glsl_lexer.lpp"
+return SAMPLER3D;
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 219 "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 228 "glsl_lexer.lpp"
+return SAMPLERCUBE;
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 229 "glsl_lexer.lpp"
-return INC_OP;
+KEYWORD(130, 130, SAMPLER1DARRAY);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 230 "glsl_lexer.lpp"
-return DEC_OP;
+KEYWORD(130, 130, SAMPLER2DARRAY);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 231 "glsl_lexer.lpp"
-return LE_OP;
+return SAMPLER1DSHADOW;
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 232 "glsl_lexer.lpp"
-return GE_OP;
+return SAMPLER2DSHADOW;
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 233 "glsl_lexer.lpp"
-return EQ_OP;
+KEYWORD(130, 130, SAMPLERCUBESHADOW);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 234 "glsl_lexer.lpp"
-return NE_OP;
+KEYWORD(130, 130, SAMPLER1DARRAYSHADOW);
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 235 "glsl_lexer.lpp"
-return AND_OP;
+KEYWORD(130, 130, SAMPLER2DARRAYSHADOW);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 236 "glsl_lexer.lpp"
-return OR_OP;
+KEYWORD(130, 130, ISAMPLER1D);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 237 "glsl_lexer.lpp"
-return XOR_OP;
+KEYWORD(130, 130, ISAMPLER2D);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 239 "glsl_lexer.lpp"
-return MUL_ASSIGN;
+#line 238 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER3D);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 240 "glsl_lexer.lpp"
-return DIV_ASSIGN;
+#line 239 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLERCUBE);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 241 "glsl_lexer.lpp"
-return ADD_ASSIGN;
+#line 240 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER1DARRAY);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 242 "glsl_lexer.lpp"
-return MOD_ASSIGN;
+#line 241 "glsl_lexer.lpp"
+KEYWORD(130, 130, ISAMPLER2DARRAY);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 243 "glsl_lexer.lpp"
-return LEFT_ASSIGN;
+#line 242 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1D);
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 244 "glsl_lexer.lpp"
-return RIGHT_ASSIGN;
+#line 243 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2D);
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 245 "glsl_lexer.lpp"
-return AND_ASSIGN;
+#line 244 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER3D);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 246 "glsl_lexer.lpp"
-return XOR_ASSIGN;
+#line 245 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLERCUBE);
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 247 "glsl_lexer.lpp"
-return OR_ASSIGN;
+#line 246 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER1DARRAY);
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 248 "glsl_lexer.lpp"
-return SUB_ASSIGN;
+#line 247 "glsl_lexer.lpp"
+KEYWORD(130, 130, USAMPLER2DARRAY);
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 250 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext, NULL, 10);
-                           return INTCONSTANT;
-                       }
+return STRUCT;
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 254 "glsl_lexer.lpp"
-{
-                           yylval->n = strtol(yytext + 2, NULL, 16);
-                           return INTCONSTANT;
-                       }
+#line 251 "glsl_lexer.lpp"
+return VOID_TOK;
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 258 "glsl_lexer.lpp"
+#line 253 "glsl_lexer.lpp"
 {
-                           yylval->n = strtol(yytext, NULL, 8);
-                           return INTCONSTANT;
-                       }
+                 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 263 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 265 "glsl_lexer.lpp"
+return INC_OP;
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 267 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 266 "glsl_lexer.lpp"
+return DEC_OP;
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 271 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 267 "glsl_lexer.lpp"
+return LE_OP;
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 275 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 268 "glsl_lexer.lpp"
+return GE_OP;
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 279 "glsl_lexer.lpp"
-{
-                           yylval->real = strtod(yytext, NULL);
-                           return FLOATCONSTANT;
-                       }
+#line 269 "glsl_lexer.lpp"
+return EQ_OP;
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 284 "glsl_lexer.lpp"
-{
-                           yylval->n = 1;
-                           return BOOLCONSTANT;
-                       }
+#line 270 "glsl_lexer.lpp"
+return NE_OP;
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 288 "glsl_lexer.lpp"
-{
-                           yylval->n = 0;
-                           return BOOLCONSTANT;
-                       }
+#line 271 "glsl_lexer.lpp"
+return AND_OP;
        YY_BREAK
-/* Reserved words in GLSL 1.10. */
 case 104:
 YY_RULE_SETUP
-#line 295 "glsl_lexer.lpp"
-RESERVED_WORD(999, ASM);
+#line 272 "glsl_lexer.lpp"
+return OR_OP;
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 296 "glsl_lexer.lpp"
-RESERVED_WORD(999, CLASS);
+#line 273 "glsl_lexer.lpp"
+return XOR_OP;
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 297 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNION);
+#line 274 "glsl_lexer.lpp"
+return LEFT_OP;
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 298 "glsl_lexer.lpp"
-RESERVED_WORD(999, ENUM);
+#line 275 "glsl_lexer.lpp"
+return RIGHT_OP;
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 299 "glsl_lexer.lpp"
-RESERVED_WORD(999, TYPEDEF);
+#line 277 "glsl_lexer.lpp"
+return MUL_ASSIGN;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 300 "glsl_lexer.lpp"
-RESERVED_WORD(999, TEMPLATE);
+#line 278 "glsl_lexer.lpp"
+return DIV_ASSIGN;
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 301 "glsl_lexer.lpp"
-RESERVED_WORD(999, THIS);
+#line 279 "glsl_lexer.lpp"
+return ADD_ASSIGN;
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 302 "glsl_lexer.lpp"
-RESERVED_WORD(999, PACKED_TOK);
+#line 280 "glsl_lexer.lpp"
+return MOD_ASSIGN;
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 303 "glsl_lexer.lpp"
-RESERVED_WORD(999, GOTO);
+#line 281 "glsl_lexer.lpp"
+return LEFT_ASSIGN;
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 304 "glsl_lexer.lpp"
-RESERVED_WORD(130, SWITCH);
+#line 282 "glsl_lexer.lpp"
+return RIGHT_ASSIGN;
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 305 "glsl_lexer.lpp"
-RESERVED_WORD(130, DEFAULT);
+#line 283 "glsl_lexer.lpp"
+return AND_ASSIGN;
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 306 "glsl_lexer.lpp"
-RESERVED_WORD(999, INLINE_TOK);
+#line 284 "glsl_lexer.lpp"
+return XOR_ASSIGN;
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 307 "glsl_lexer.lpp"
-RESERVED_WORD(999, NOINLINE);
+#line 285 "glsl_lexer.lpp"
+return OR_ASSIGN;
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 308 "glsl_lexer.lpp"
-RESERVED_WORD(999, VOLATILE);
+#line 286 "glsl_lexer.lpp"
+return SUB_ASSIGN;
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 309 "glsl_lexer.lpp"
-RESERVED_WORD(999, PUBLIC_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 310 "glsl_lexer.lpp"
-RESERVED_WORD(999, STATIC);
+#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 311 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERN);
+#line 296 "glsl_lexer.lpp"
+{
+                           yylval->n = strtol(yytext, NULL, 8);
+                           return IS_UINT ? UINTCONSTANT : INTCONSTANT;
+                       }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 312 "glsl_lexer.lpp"
-RESERVED_WORD(999, EXTERNAL);
+#line 301 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 313 "glsl_lexer.lpp"
-RESERVED_WORD(999, INTERFACE);
+#line 305 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 314 "glsl_lexer.lpp"
-RESERVED_WORD(999, LONG_TOK);
+#line 309 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 315 "glsl_lexer.lpp"
-RESERVED_WORD(999, SHORT_TOK);
+#line 313 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 316 "glsl_lexer.lpp"
-RESERVED_WORD(999, DOUBLE_TOK);
+#line 317 "glsl_lexer.lpp"
+{
+                           yylval->real = glsl_strtod(yytext, NULL);
+                           return FLOATCONSTANT;
+                       }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 317 "glsl_lexer.lpp"
-RESERVED_WORD(999, HALF);
+#line 322 "glsl_lexer.lpp"
+{
+                           yylval->n = 1;
+                           return BOOLCONSTANT;
+                       }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 318 "glsl_lexer.lpp"
-RESERVED_WORD(999, FIXED_TOK);
+#line 326 "glsl_lexer.lpp"
+{
+                           yylval->n = 0;
+                           return BOOLCONSTANT;
+                       }
        YY_BREAK
+/* Reserved words in GLSL 1.10. */
 case 128:
 YY_RULE_SETUP
-#line 319 "glsl_lexer.lpp"
-RESERVED_WORD(999, UNSIGNED);
+#line 333 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ASM);
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 320 "glsl_lexer.lpp"
-RESERVED_WORD(999, INPUT_TOK);
+#line 334 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CLASS);
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 321 "glsl_lexer.lpp"
-RESERVED_WORD(999, OUTPUT);
+#line 335 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNION);
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 322 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC2);
+#line 336 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, ENUM);
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 323 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC3);
+#line 337 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TYPEDEF);
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 324 "glsl_lexer.lpp"
-RESERVED_WORD(999, HVEC4);
+#line 338 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, TEMPLATE);
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 325 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC2);
+#line 339 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, THIS);
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 326 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC3);
+#line 340 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PACKED_TOK);
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 327 "glsl_lexer.lpp"
-RESERVED_WORD(999, DVEC4);
+#line 341 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, GOTO);
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 328 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC2);
+#line 342 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, SWITCH);
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 329 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC3);
+#line 343 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 130, DEFAULT);
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 330 "glsl_lexer.lpp"
-RESERVED_WORD(999, FVEC4);
+#line 344 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INLINE_TOK);
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 331 "glsl_lexer.lpp"
-return SAMPLER2DRECT;
+#line 345 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NOINLINE);
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 332 "glsl_lexer.lpp"
-RESERVED_WORD(999, SAMPLER3DRECT);
+#line 346 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, VOLATILE);
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 333 "glsl_lexer.lpp"
-return SAMPLER2DRECTSHADOW;
+#line 347 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, PUBLIC_TOK);
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 334 "glsl_lexer.lpp"
-RESERVED_WORD(999, SIZEOF);
+#line 348 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, STATIC);
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 335 "glsl_lexer.lpp"
-RESERVED_WORD(999, CAST);
+#line 349 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERN);
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 336 "glsl_lexer.lpp"
-RESERVED_WORD(999, NAMESPACE);
+#line 350 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, EXTERNAL);
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 337 "glsl_lexer.lpp"
-RESERVED_WORD(999, USING);
+#line 351 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INTERFACE);
        YY_BREAK
-/* Additional reserved words in GLSL 1.20. */
 case 147:
 YY_RULE_SETUP
-#line 340 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, LOWP);
+#line 352 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, LONG_TOK);
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 341 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP);
+#line 353 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SHORT_TOK);
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 342 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, HIGHP);
+#line 354 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DOUBLE_TOK);
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 343 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(120, PRECISION);
+#line 355 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HALF);
        YY_BREAK
-/* Additional reserved words in GLSL 1.30. */
 case 151:
 YY_RULE_SETUP
-#line 346 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, COMMON);
+#line 356 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FIXED_TOK);
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 347 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, PARTITION);
+#line 357 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, UNSIGNED);
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 348 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ACTIVE);
+#line 358 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, INPUT_TOK);
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 349 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER_ES(130, SUPERP);
+#line 359 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, OUTPUT);
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 350 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
+#line 360 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC2);
        YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 351 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, FILTER);
+#line 361 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC3);
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 352 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1D);
+#line 362 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, HVEC4);
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 353 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2D);
+#line 363 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC2);
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 354 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE3D);
+#line 364 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC3);
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 355 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGECUBE);
+#line 365 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 400, DVEC4);
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 356 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1D);
+#line 366 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC2);
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 357 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2D);
+#line 367 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC3);
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 358 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE3D);
+#line 368 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, FVEC4);
        YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 359 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGECUBE);
+#line 369 "glsl_lexer.lpp"
+return SAMPLER2DRECT;
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 360 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1D);
+#line 370 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SAMPLER3DRECT);
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 361 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2D);
+#line 371 "glsl_lexer.lpp"
+return SAMPLER2DRECTSHADOW;
        YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 362 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE3D);
+#line 372 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, SIZEOF);
        YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 363 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGECUBE);
+#line 373 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, CAST);
        YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 364 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DARRAY);
+#line 374 "glsl_lexer.lpp"
+KEYWORD(110 || ES, 999, NAMESPACE);
        YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 365 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DARRAY);
+#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 366 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE1DARRAY);
+#line 378 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, LOWP);
        YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 367 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGE2DARRAY);
+#line 379 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, MEDIUMP);
        YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 368 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE1DARRAY);
+#line 380 "glsl_lexer.lpp"
+KEYWORD(120, 130 || ES, HIGHP);
        YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 369 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGE2DARRAY);
+#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 370 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE1DSHADOW);
+#line 384 "glsl_lexer.lpp"
+KEYWORD(130, 130, CASE);
        YY_BREAK
 case 176:
 YY_RULE_SETUP
-#line 371 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGE2DSHADOW);
+#line 385 "glsl_lexer.lpp"
+KEYWORD(130, 999, COMMON);
        YY_BREAK
 case 177:
 YY_RULE_SETUP
-#line 372 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IMAGEBUFFER);
+#line 386 "glsl_lexer.lpp"
+KEYWORD(130, 999, PARTITION);
        YY_BREAK
 case 178:
 YY_RULE_SETUP
-#line 373 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, IIMAGEBUFFER);
+#line 387 "glsl_lexer.lpp"
+KEYWORD(130, 999, ACTIVE);
        YY_BREAK
 case 179:
 YY_RULE_SETUP
-#line 374 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, UIMAGEBUFFER);
+#line 388 "glsl_lexer.lpp"
+KEYWORD(130 || ES, 999, SUPERP);
        YY_BREAK
 case 180:
 YY_RULE_SETUP
-#line 375 "glsl_lexer.lpp"
-TOKEN_OR_IDENTIFIER(130, ROW_MAJOR);
+#line 389 "glsl_lexer.lpp"
+KEYWORD(130, 140, SAMPLERBUFFER);
        YY_BREAK
 case 181:
 YY_RULE_SETUP
-#line 377 "glsl_lexer.lpp"
+#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 182:
+case 209:
 YY_RULE_SETUP
-#line 384 "glsl_lexer.lpp"
+#line 425 "glsl_lexer.lpp"
 { return yytext[0]; }
        YY_BREAK
-case 183:
+case 210:
 YY_RULE_SETUP
-#line 386 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"
 ECHO;
        YY_BREAK
-#line 2330 "glsl_lexer.cpp"
+#line 2555 "glsl_lexer.cpp"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(PP):
 case YY_STATE_EOF(PRAGMA):
@@ -2624,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 >= 708 )
+                       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];
@@ -2653,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 >= 708 )
+               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 == 707);
+       yy_is_jam = (yy_current_state == 835);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3469,7 +3694,7 @@ void _mesa_glsl_free (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 386 "glsl_lexer.lpp"
+#line 427 "glsl_lexer.lpp"