glcpp: Add __VERSION__ define to the current language version.

Fixes:
glsl-version-define
glsl-version-define-110
glsl-version-define-120
diff --git a/src/glsl/glcpp/glcpp-parse.c b/src/glsl/glcpp/glcpp-parse.c
index bfbd97f..f0ad4a0 100644
--- a/src/glsl/glcpp/glcpp-parse.c
+++ b/src/glsl/glcpp/glcpp-parse.c
@@ -203,10 +203,13 @@
 static void
 glcpp_parser_lex_from (glcpp_parser_t *parser, token_list_t *list);
 
+static void
+add_builtin_define(glcpp_parser_t *parser, const char *name, int value);
+
 
 
 /* Line 189 of yacc.c  */
-#line 210 "glcpp/glcpp-parse.c"
+#line 213 "glcpp/glcpp-parse.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -246,24 +249,25 @@
      HASH_IFDEF = 268,
      HASH_IFNDEF = 269,
      HASH_UNDEF = 270,
-     IDENTIFIER = 271,
-     IF_EXPANDED = 272,
-     INTEGER = 273,
-     INTEGER_STRING = 274,
-     NEWLINE = 275,
-     OTHER = 276,
-     PLACEHOLDER = 277,
-     SPACE = 278,
-     PASTE = 279,
-     OR = 280,
-     AND = 281,
-     NOT_EQUAL = 282,
-     EQUAL = 283,
-     GREATER_OR_EQUAL = 284,
-     LESS_OR_EQUAL = 285,
-     RIGHT_SHIFT = 286,
-     LEFT_SHIFT = 287,
-     UNARY = 288
+     HASH_VERSION = 271,
+     IDENTIFIER = 272,
+     IF_EXPANDED = 273,
+     INTEGER = 274,
+     INTEGER_STRING = 275,
+     NEWLINE = 276,
+     OTHER = 277,
+     PLACEHOLDER = 278,
+     SPACE = 279,
+     PASTE = 280,
+     OR = 281,
+     AND = 282,
+     NOT_EQUAL = 283,
+     EQUAL = 284,
+     GREATER_OR_EQUAL = 285,
+     LESS_OR_EQUAL = 286,
+     RIGHT_SHIFT = 287,
+     LEFT_SHIFT = 288,
+     UNARY = 289
    };
 #endif
 
@@ -293,7 +297,7 @@
 
 
 /* Line 264 of yacc.c  */
-#line 297 "glcpp/glcpp-parse.c"
+#line 301 "glcpp/glcpp-parse.c"
 
 #ifdef short
 # undef short
@@ -510,20 +514,20 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   673
+#define YYLAST   604
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  56
+#define YYNTOKENS  57
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  16
+#define YYNNTS  17
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  98
+#define YYNRULES  100
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  157
+#define YYNSTATES  161
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   288
+#define YYMAXUTOK   289
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -534,16 +538,16 @@
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    46,     2,     2,     2,    42,    29,     2,
-      44,    45,    40,    38,    48,    39,    53,    41,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,    54,
-      32,    55,    33,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,    47,     2,     2,     2,    43,    30,     2,
+      45,    46,    41,    39,    49,    40,    54,    42,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,    55,
+      33,    56,    34,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    49,     2,    50,    28,     2,     2,     2,     2,     2,
+       2,    50,     2,    51,    29,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    51,    27,    52,    47,     2,     2,     2,
+       2,     2,     2,    52,    28,    53,    48,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -559,7 +563,7 @@
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    30,    31,    34,    35,    36,    37,    43
+      25,    26,    27,    31,    32,    35,    36,    37,    38,    44
 };
 
 #if YYDEBUG
@@ -569,63 +573,65 @@
 {
        0,     0,     3,     4,     7,     9,    11,    13,    16,    20,
       24,    29,    36,    44,    48,    52,    57,    62,    66,    69,
-      72,    75,    78,    80,    82,    86,    90,    94,    98,   102,
-     106,   110,   114,   118,   122,   126,   130,   134,   138,   142,
-     146,   150,   154,   157,   160,   163,   166,   170,   172,   176,
-     178,   181,   184,   185,   187,   188,   190,   193,   198,   200,
-     202,   205,   207,   210,   212,   214,   216,   218,   220,   222,
-     224,   226,   228,   230,   232,   234,   236,   238,   240,   242,
-     244,   246,   248,   250,   252,   254,   256,   258,   260,   262,
-     264,   266,   268,   270,   272,   274,   276,   278,   280
+      72,    75,    79,    82,    84,    86,    88,    92,    96,   100,
+     104,   108,   112,   116,   120,   124,   128,   132,   136,   140,
+     144,   148,   152,   156,   160,   163,   166,   169,   172,   176,
+     178,   182,   184,   187,   190,   191,   193,   194,   196,   199,
+     204,   206,   208,   211,   213,   216,   218,   220,   222,   224,
+     226,   228,   230,   232,   234,   236,   238,   240,   242,   244,
+     246,   248,   250,   252,   254,   256,   258,   260,   262,   264,
+     266,   268,   270,   272,   274,   276,   278,   280,   282,   284,
+     286
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      57,     0,    -1,    -1,    57,    58,    -1,    60,    -1,    63,
-      -1,    59,    -1,     6,    64,    -1,    17,    61,    20,    -1,
-       5,    61,    20,    -1,     8,    16,    65,    20,    -1,     7,
-      16,    44,    45,    65,    20,    -1,     7,    16,    44,    62,
-      45,    65,    20,    -1,    15,    16,    20,    -1,    12,    68,
-      20,    -1,    13,    16,    66,    20,    -1,    14,    16,    66,
-      20,    -1,     9,    68,    20,    -1,     9,    20,    -1,    10,
-      20,    -1,    11,    20,    -1,     6,    20,    -1,    19,    -1,
-      18,    -1,    61,    25,    61,    -1,    61,    26,    61,    -1,
-      61,    27,    61,    -1,    61,    28,    61,    -1,    61,    29,
-      61,    -1,    61,    30,    61,    -1,    61,    31,    61,    -1,
-      61,    34,    61,    -1,    61,    35,    61,    -1,    61,    33,
-      61,    -1,    61,    32,    61,    -1,    61,    36,    61,    -1,
-      61,    37,    61,    -1,    61,    39,    61,    -1,    61,    38,
-      61,    -1,    61,    42,    61,    -1,    61,    41,    61,    -1,
-      61,    40,    61,    -1,    46,    61,    -1,    47,    61,    -1,
-      39,    61,    -1,    38,    61,    -1,    44,    61,    45,    -1,
-      16,    -1,    62,    48,    16,    -1,    20,    -1,    69,    20,
-      -1,    69,    20,    -1,    -1,    69,    -1,    -1,    69,    -1,
-       4,    16,    -1,     4,    44,    16,    45,    -1,    70,    -1,
-      67,    -1,    68,    67,    -1,    70,    -1,    69,    70,    -1,
-      16,    -1,    19,    -1,    71,    -1,    21,    -1,    23,    -1,
-      49,    -1,    50,    -1,    44,    -1,    45,    -1,    51,    -1,
-      52,    -1,    53,    -1,    29,    -1,    40,    -1,    38,    -1,
-      39,    -1,    47,    -1,    46,    -1,    41,    -1,    42,    -1,
-      37,    -1,    36,    -1,    32,    -1,    33,    -1,    35,    -1,
-      34,    -1,    31,    -1,    30,    -1,    28,    -1,    27,    -1,
-      26,    -1,    25,    -1,    54,    -1,    48,    -1,    55,    -1,
-      24,    -1
+      58,     0,    -1,    -1,    58,    59,    -1,    61,    -1,    65,
+      -1,    60,    -1,     6,    66,    -1,    18,    63,    21,    -1,
+       5,    63,    21,    -1,     8,    17,    67,    21,    -1,     7,
+      17,    45,    46,    67,    21,    -1,     7,    17,    45,    64,
+      46,    67,    21,    -1,    15,    17,    21,    -1,    12,    70,
+      21,    -1,    13,    17,    68,    21,    -1,    14,    17,    68,
+      21,    -1,     9,    70,    21,    -1,     9,    21,    -1,    10,
+      21,    -1,    11,    21,    -1,    16,    62,    21,    -1,     6,
+      21,    -1,    20,    -1,    19,    -1,    62,    -1,    63,    26,
+      63,    -1,    63,    27,    63,    -1,    63,    28,    63,    -1,
+      63,    29,    63,    -1,    63,    30,    63,    -1,    63,    31,
+      63,    -1,    63,    32,    63,    -1,    63,    35,    63,    -1,
+      63,    36,    63,    -1,    63,    34,    63,    -1,    63,    33,
+      63,    -1,    63,    37,    63,    -1,    63,    38,    63,    -1,
+      63,    40,    63,    -1,    63,    39,    63,    -1,    63,    43,
+      63,    -1,    63,    42,    63,    -1,    63,    41,    63,    -1,
+      47,    63,    -1,    48,    63,    -1,    40,    63,    -1,    39,
+      63,    -1,    45,    63,    46,    -1,    17,    -1,    64,    49,
+      17,    -1,    21,    -1,    71,    21,    -1,    71,    21,    -1,
+      -1,    71,    -1,    -1,    71,    -1,     4,    17,    -1,     4,
+      45,    17,    46,    -1,    72,    -1,    69,    -1,    70,    69,
+      -1,    72,    -1,    71,    72,    -1,    17,    -1,    20,    -1,
+      73,    -1,    22,    -1,    24,    -1,    50,    -1,    51,    -1,
+      45,    -1,    46,    -1,    52,    -1,    53,    -1,    54,    -1,
+      30,    -1,    41,    -1,    39,    -1,    40,    -1,    48,    -1,
+      47,    -1,    42,    -1,    43,    -1,    38,    -1,    37,    -1,
+      33,    -1,    34,    -1,    36,    -1,    35,    -1,    32,    -1,
+      31,    -1,    29,    -1,    28,    -1,    27,    -1,    26,    -1,
+      55,    -1,    49,    -1,    56,    -1,    25,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   166,   166,   168,   172,   175,   180,   181,   185,   188,
-     194,   197,   200,   203,   211,   223,   228,   233,   245,   256,
-     259,   262,   266,   275,   278,   281,   284,   287,   290,   293,
-     296,   299,   302,   305,   308,   311,   314,   317,   320,   323,
-     326,   329,   332,   335,   338,   341,   344,   350,   355,   363,
-     364,   368,   374,   375,   378,   380,   387,   391,   395,   400,
-     406,   414,   420,   428,   432,   436,   440,   444,   451,   452,
-     453,   454,   455,   456,   457,   458,   459,   460,   461,   462,
-     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
-     473,   474,   475,   476,   477,   478,   479,   480,   481
+       0,   169,   169,   171,   175,   178,   183,   184,   188,   191,
+     197,   200,   203,   206,   214,   226,   231,   236,   248,   259,
+     262,   265,   274,   278,   287,   292,   293,   296,   299,   302,
+     305,   308,   311,   314,   317,   320,   323,   326,   329,   332,
+     335,   338,   341,   344,   347,   350,   353,   356,   359,   365,
+     370,   378,   379,   383,   389,   390,   393,   395,   402,   406,
+     410,   415,   421,   429,   435,   443,   447,   451,   455,   459,
+     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   477,   478,   479,   480,   481,   482,   483,   484,   485,
+     486,   487,   488,   489,   490,   491,   492,   493,   494,   495,
+     496
 };
 #endif
 
@@ -637,16 +643,16 @@
   "$end", "error", "$undefined", "COMMA_FINAL", "DEFINED",
   "ELIF_EXPANDED", "HASH", "HASH_DEFINE_FUNC", "HASH_DEFINE_OBJ",
   "HASH_ELIF", "HASH_ELSE", "HASH_ENDIF", "HASH_IF", "HASH_IFDEF",
-  "HASH_IFNDEF", "HASH_UNDEF", "IDENTIFIER", "IF_EXPANDED", "INTEGER",
-  "INTEGER_STRING", "NEWLINE", "OTHER", "PLACEHOLDER", "SPACE", "PASTE",
-  "OR", "AND", "'|'", "'^'", "'&'", "NOT_EQUAL", "EQUAL", "'<'", "'>'",
-  "GREATER_OR_EQUAL", "LESS_OR_EQUAL", "RIGHT_SHIFT", "LEFT_SHIFT", "'+'",
-  "'-'", "'*'", "'/'", "'%'", "UNARY", "'('", "')'", "'!'", "'~'", "','",
-  "'['", "']'", "'{'", "'}'", "'.'", "';'", "'='", "$accept", "input",
-  "line", "expanded_line", "control_line", "expression", "identifier_list",
-  "text_line", "non_directive", "replacement_list", "junk",
-  "conditional_token", "conditional_tokens", "pp_tokens",
-  "preprocessing_token", "operator", 0
+  "HASH_IFNDEF", "HASH_UNDEF", "HASH_VERSION", "IDENTIFIER", "IF_EXPANDED",
+  "INTEGER", "INTEGER_STRING", "NEWLINE", "OTHER", "PLACEHOLDER", "SPACE",
+  "PASTE", "OR", "AND", "'|'", "'^'", "'&'", "NOT_EQUAL", "EQUAL", "'<'",
+  "'>'", "GREATER_OR_EQUAL", "LESS_OR_EQUAL", "RIGHT_SHIFT", "LEFT_SHIFT",
+  "'+'", "'-'", "'*'", "'/'", "'%'", "UNARY", "'('", "')'", "'!'", "'~'",
+  "','", "'['", "']'", "'{'", "'}'", "'.'", "';'", "'='", "$accept",
+  "input", "line", "expanded_line", "control_line", "integer_constant",
+  "expression", "identifier_list", "text_line", "non_directive",
+  "replacement_list", "junk", "conditional_token", "conditional_tokens",
+  "pp_tokens", "preprocessing_token", "operator", 0
 };
 #endif
 
@@ -657,26 +663,27 @@
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279,   280,   281,   124,    94,    38,
-     282,   283,    60,    62,   284,   285,   286,   287,    43,    45,
-      42,    47,    37,   288,    40,    41,    33,   126,    44,    91,
-      93,   123,   125,    46,    59,    61
+     275,   276,   277,   278,   279,   280,   281,   282,   124,    94,
+      38,   283,   284,    60,    62,   285,   286,   287,   288,    43,
+      45,    42,    47,    37,   289,    40,    41,    33,   126,    44,
+      91,    93,   123,   125,    46,    59,    61
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    56,    57,    57,    58,    58,    58,    58,    59,    59,
-      60,    60,    60,    60,    60,    60,    60,    60,    60,    60,
-      60,    60,    61,    61,    61,    61,    61,    61,    61,    61,
+       0,    57,    58,    58,    59,    59,    59,    59,    60,    60,
       61,    61,    61,    61,    61,    61,    61,    61,    61,    61,
-      61,    61,    61,    61,    61,    61,    61,    62,    62,    63,
-      63,    64,    65,    65,    66,    66,    67,    67,    67,    68,
-      68,    69,    69,    70,    70,    70,    70,    70,    71,    71,
-      71,    71,    71,    71,    71,    71,    71,    71,    71,    71,
-      71,    71,    71,    71,    71,    71,    71,    71,    71,    71,
-      71,    71,    71,    71,    71,    71,    71,    71,    71
+      61,    61,    61,    62,    62,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    63,    64,
+      64,    65,    65,    66,    67,    67,    68,    68,    69,    69,
+      69,    70,    70,    71,    71,    72,    72,    72,    72,    72,
+      73,    73,    73,    73,    73,    73,    73,    73,    73,    73,
+      73,    73,    73,    73,    73,    73,    73,    73,    73,    73,
+      73,    73,    73,    73,    73,    73,    73,    73,    73,    73,
+      73
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -684,14 +691,15 @@
 {
        0,     2,     0,     2,     1,     1,     1,     2,     3,     3,
        4,     6,     7,     3,     3,     4,     4,     3,     2,     2,
-       2,     2,     1,     1,     3,     3,     3,     3,     3,     3,
+       2,     3,     2,     1,     1,     1,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     2,     2,     2,     3,     1,     3,     1,
-       2,     2,     0,     1,     0,     1,     2,     4,     1,     1,
-       2,     1,     2,     1,     1,     1,     1,     1,     1,     1,
+       3,     3,     3,     3,     2,     2,     2,     2,     3,     1,
+       3,     1,     2,     2,     0,     1,     0,     1,     2,     4,
+       1,     1,     2,     1,     2,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -700,58 +708,60 @@
 static const yytype_uint8 yydefact[] =
 {
        2,     0,     1,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    63,     0,    64,    49,    66,    67,
-      98,    94,    93,    92,    91,    75,    90,    89,    85,    86,
-      88,    87,    84,    83,    77,    78,    76,    81,    82,    70,
-      71,    80,    79,    96,    68,    69,    72,    73,    74,    95,
-      97,     3,     6,     4,     5,     0,    61,    65,    23,    22,
-       0,     0,     0,     0,     0,     0,    21,     7,     0,     0,
-      52,     0,    18,    59,     0,    58,    19,    20,     0,    54,
-      54,     0,     0,    50,    62,    45,    44,     0,    42,    43,
-       9,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    51,
-       0,     0,    53,    56,     0,    17,    60,    14,     0,    55,
-       0,    13,     8,    46,    24,    25,    26,    27,    28,    29,
-      30,    34,    33,    31,    32,    35,    36,    38,    37,    41,
-      40,    39,    47,    52,     0,    10,     0,    15,    16,     0,
-      52,     0,    57,    11,     0,    48,    12
+       0,     0,     0,     0,     0,    65,     0,    66,    51,    68,
+      69,   100,    96,    95,    94,    93,    77,    92,    91,    87,
+      88,    90,    89,    86,    85,    79,    80,    78,    83,    84,
+      72,    73,    82,    81,    98,    70,    71,    74,    75,    76,
+      97,    99,     3,     6,     4,     5,     0,    63,    67,    24,
+      23,     0,     0,     0,     0,     0,    25,     0,    22,     7,
+       0,     0,    54,     0,    18,    61,     0,    60,    19,    20,
+       0,    56,    56,     0,     0,     0,    52,    64,    47,    46,
+       0,    44,    45,     9,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    53,     0,     0,    55,    58,     0,    17,    62,
+      14,     0,    57,     0,    13,    21,     8,    48,    26,    27,
+      28,    29,    30,    31,    32,    36,    35,    33,    34,    37,
+      38,    40,    39,    43,    42,    41,    49,    54,     0,    10,
+       0,    15,    16,     0,    54,     0,    59,    11,     0,    50,
+      12
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    51,    52,    53,    65,   144,    54,    67,   111,
-     118,    73,    74,   112,    56,    57
+      -1,     1,    52,    53,    54,    66,    67,   148,    55,    69,
+     114,   121,    75,    76,   115,    57,    58
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -120
+#define YYPACT_NINF -146
 static const yytype_int16 yypact[] =
 {
-    -120,   108,  -120,   -17,   356,    -9,     9,   160,   -15,     6,
-     316,    17,    18,    29,  -120,   -17,  -120,  -120,  -120,  -120,
-    -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,
-    -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,
-    -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,  -120,
-    -120,  -120,  -120,  -120,  -120,   396,  -120,  -120,  -120,  -120,
-     -17,   -17,   -17,   -17,   -17,   512,  -120,  -120,   436,     2,
-     476,    -8,  -120,  -120,   212,  -120,  -120,  -120,   264,   476,
-     476,    39,   535,  -120,  -120,  -120,  -120,   553,  -120,  -120,
-    -120,   -17,   -17,   -17,   -17,   -17,   -17,   -17,   -17,   -17,
-     -17,   -17,   -17,   -17,   -17,   -17,   -17,   -17,   -17,  -120,
-     -10,    40,   476,  -120,    49,  -120,  -120,  -120,    46,   476,
-      48,  -120,  -120,  -120,   573,   589,   604,   618,   631,   -23,
-     -23,     1,     1,     1,     1,    16,    16,    22,    22,  -120,
-    -120,  -120,  -120,   476,    -1,  -120,    24,  -120,  -120,    50,
-     476,    56,  -120,  -120,    53,  -120,  -120
+    -146,   111,  -146,   429,   -10,    -9,    -4,   151,   -15,    27,
+     271,    54,    63,    86,    82,  -146,   429,  -146,  -146,  -146,
+    -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,
+    -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,
+    -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,  -146,
+    -146,  -146,  -146,  -146,  -146,  -146,   311,  -146,  -146,  -146,
+    -146,   429,   429,   429,   429,   429,  -146,   452,  -146,  -146,
+     351,    59,   391,    17,  -146,  -146,   191,  -146,  -146,  -146,
+     231,   391,   391,    84,    85,   475,  -146,  -146,  -146,  -146,
+     424,  -146,  -146,  -146,   429,   429,   429,   429,   429,   429,
+     429,   429,   429,   429,   429,   429,   429,   429,   429,   429,
+     429,   429,  -146,    30,    88,   391,  -146,    90,  -146,  -146,
+    -146,    89,   391,    91,  -146,  -146,  -146,  -146,   492,   508,
+     523,   537,   550,   561,   561,    18,    18,    18,    18,    25,
+      25,    36,    36,  -146,  -146,  -146,  -146,   391,    26,  -146,
+      67,  -146,  -146,    93,   391,   113,  -146,  -146,   148,  -146,
+    -146
 };
 
 /* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
+static const yytype_int16 yypgoto[] =
 {
-    -120,  -120,  -120,  -120,  -120,   -11,  -120,  -120,  -120,  -119,
-      -6,   -46,    65,    19,    -7,  -120
+    -146,  -146,  -146,  -146,  -146,   120,   -11,  -146,  -146,  -146,
+    -145,    92,    -6,   160,     0,    -7,  -146
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -761,168 +771,155 @@
 #define YYTABLE_NINF -1
 static const yytype_uint8 yytable[] =
 {
-      75,    58,    59,    75,    82,    76,   142,    69,   113,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-      55,    60,    61,    68,   149,    70,    77,    62,   116,    63,
-      64,   154,   116,    79,    80,   143,   114,   102,   103,   104,
-     105,   106,   107,   108,   150,    81,   110,   151,    84,    85,
-      86,    87,    88,    89,   104,   105,   106,   107,   108,   121,
-     145,    84,   106,   107,   108,   146,   147,    75,   148,   152,
-     153,    75,   155,   156,   120,    78,     0,     0,     0,     0,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   119,   119,
-       0,     0,     0,     0,     0,    84,     0,     0,     2,     0,
-       0,     0,    84,     3,     4,     5,     6,     7,     8,     9,
-      10,    11,    12,    13,    14,    15,     0,    16,    17,    18,
-       0,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,     0,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    71,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    14,     0,     0,    16,
-      72,    18,     0,    19,    20,    21,    22,    23,    24,    25,
+      77,    56,   153,    77,    70,    85,    78,    15,    71,   158,
+      17,    68,    19,    72,    20,    21,    22,    23,    24,    25,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,     0,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    71,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    14,     0,
-       0,    16,   115,    18,     0,    19,    20,    21,    22,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,     0,    39,    40,    41,    42,
-      43,    44,    45,    46,    47,    48,    49,    50,    71,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      14,     0,     0,    16,   117,    18,     0,    19,    20,    21,
-      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      71,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    14,     0,     0,    16,     0,    18,     0,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    14,     0,     0,    16,    66,    18,     0,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    14,     0,     0,    16,    83,    18,     0,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    14,     0,     0,    16,   109,    18,     0,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    14,     0,     0,    16,     0,    18,     0,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    90,     0,     0,     0,     0,    91,    92,    93,
+      36,    37,    38,    39,   116,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,   146,    79,    87,
+      88,    89,    90,    91,    92,   105,   106,   107,   108,   109,
+     110,   111,   117,    87,   107,   108,   109,   110,   111,    77,
+     119,    81,   154,    77,   119,   155,   147,   109,   110,   111,
+      82,   122,   122,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     145,    59,    60,    83,   113,   124,   125,   150,    87,   149,
+     151,     2,   152,   156,   157,    87,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+     159,    17,    18,    19,    84,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    73,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,   160,
+      80,    17,    74,    19,   123,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    73,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,     0,
+       0,    17,   118,    19,     0,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    73,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,     0,
+       0,    17,   120,    19,     0,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    73,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,     0,
+       0,    17,     0,    19,     0,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,     0,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,     0,
+       0,    17,    86,    19,     0,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,     0,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,     0,
+       0,    17,   112,    19,     0,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,     0,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    15,     0,
+       0,    17,     0,    19,     0,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,     0,    40,    41,    42,    43,
+      44,    45,    46,    47,    48,    49,    50,    51,    59,    60,
       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   122,     0,     0,     0,     0,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,    91,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,     0,     0,   123,    92,
-      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,    93,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,   108,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,   108
+     104,   105,   106,   107,   108,   109,   110,   111,    61,    62,
+     127,     0,     0,    93,    63,     0,    64,    65,    94,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,   126,     0,     0,     0,
+       0,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,   110,   111,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,   108,   109,   110,   111,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108,   109,   110,   111,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,    99,   100,   101,   102,   103,   104,   105,   106,   107,
+     108,   109,   110,   111,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,   110,   111
 };
 
 static const yytype_int16 yycheck[] =
 {
-       7,    18,    19,    10,    15,    20,    16,    16,    16,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-       1,    38,    39,     4,   143,    16,    20,    44,    74,    46,
-      47,   150,    78,    16,    16,    45,    44,    36,    37,    38,
-      39,    40,    41,    42,    45,    16,    44,    48,    55,    60,
-      61,    62,    63,    64,    38,    39,    40,    41,    42,    20,
-      20,    68,    40,    41,    42,    16,    20,    74,    20,    45,
-      20,    78,    16,    20,    80,    10,    -1,    -1,    -1,    -1,
-      91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   108,    79,    80,
-      -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,     0,    -1,
-      -1,    -1,   119,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    -1,    19,    20,    21,
-      -1,    23,    24,    25,    26,    27,    28,    29,    30,    31,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,     4,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    16,    -1,    -1,    19,
-      20,    21,    -1,    23,    24,    25,    26,    27,    28,    29,
+       7,     1,   147,    10,     4,    16,    21,    17,    17,   154,
+      20,    21,    22,    17,    24,    25,    26,    27,    28,    29,
       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    -1,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,     4,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    16,    -1,
-      -1,    19,    20,    21,    -1,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    -1,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,     4,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      16,    -1,    -1,    19,    20,    21,    -1,    23,    24,    25,
+      40,    41,    42,    43,    17,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    56,    17,    21,    56,
+      61,    62,    63,    64,    65,    37,    38,    39,    40,    41,
+      42,    43,    45,    70,    39,    40,    41,    42,    43,    76,
+      76,    17,    46,    80,    80,    49,    46,    41,    42,    43,
+      17,    81,    82,    94,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,    19,    20,    17,    45,    21,    21,    17,   115,    21,
+      21,     0,    21,    46,    21,   122,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      17,    20,    21,    22,    14,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,     4,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    21,
+      10,    20,    21,    22,    82,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,     4,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    -1,
+      -1,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,     4,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    -1,
+      -1,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,     4,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    -1,
+      -1,    20,    -1,    22,    -1,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    -1,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    -1,
+      -1,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    -1,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    -1,
+      -1,    20,    21,    22,    -1,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    -1,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    17,    -1,
+      -1,    20,    -1,    22,    -1,    24,    25,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43,    -1,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    19,    20,
       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    -1,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-       4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    16,    -1,    -1,    19,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    16,    -1,    -1,    19,    20,    21,    -1,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    16,    -1,    -1,    19,    20,    21,    -1,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    16,    -1,    -1,    19,    20,    21,    -1,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    16,    -1,    -1,    19,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    20,    -1,    -1,    -1,    -1,    25,    26,    27,
+      36,    37,    38,    39,    40,    41,    42,    43,    39,    40,
+      46,    -1,    -1,    21,    45,    -1,    47,    48,    26,    27,
       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    20,    -1,    -1,    -1,    -1,
-      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    -1,    -1,    45,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    29,    30,    31,
+      38,    39,    40,    41,    42,    43,    21,    -1,    -1,    -1,
+      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42
+      42,    43,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    43,    30,    31,    32,
+      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
+      43,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,    43
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    57,     0,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,    17,    19,    20,    21,    23,
+       0,    58,     0,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    20,    21,    22,
       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    44,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    58,    59,    60,    63,    69,    70,    71,    18,    19,
-      38,    39,    44,    46,    47,    61,    20,    64,    69,    16,
-      16,     4,    20,    67,    68,    70,    20,    20,    68,    16,
-      16,    16,    61,    20,    70,    61,    61,    61,    61,    61,
-      20,    25,    26,    27,    28,    29,    30,    31,    32,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    20,
-      44,    65,    69,    16,    44,    20,    67,    20,    66,    69,
-      66,    20,    20,    45,    61,    61,    61,    61,    61,    61,
-      61,    61,    61,    61,    61,    61,    61,    61,    61,    61,
-      61,    61,    16,    45,    62,    20,    16,    20,    20,    65,
-      45,    48,    45,    20,    65,    16,    20
+      55,    56,    59,    60,    61,    65,    71,    72,    73,    19,
+      20,    39,    40,    45,    47,    48,    62,    63,    21,    66,
+      71,    17,    17,     4,    21,    69,    70,    72,    21,    21,
+      70,    17,    17,    17,    62,    63,    21,    72,    63,    63,
+      63,    63,    63,    21,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    43,    21,    45,    67,    71,    17,    45,    21,    69,
+      21,    68,    71,    68,    21,    21,    21,    46,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    17,    46,    64,    21,
+      17,    21,    21,    67,    46,    49,    46,    21,    67,    17,
+      21
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -1776,7 +1773,7 @@
         case 4:
 
 /* Line 1455 of yacc.c  */
-#line 172 "glcpp/glcpp-parse.y"
+#line 175 "glcpp/glcpp-parse.y"
     {
 		glcpp_print(parser->output, "\n");
 	;}
@@ -1785,7 +1782,7 @@
   case 5:
 
 /* Line 1455 of yacc.c  */
-#line 175 "glcpp/glcpp-parse.y"
+#line 178 "glcpp/glcpp-parse.y"
     {
 		_glcpp_parser_print_expanded_token_list (parser, (yyvsp[(1) - (1)].token_list));
 		glcpp_print(parser->output, "\n");
@@ -1796,7 +1793,7 @@
   case 8:
 
 /* Line 1455 of yacc.c  */
-#line 185 "glcpp/glcpp-parse.y"
+#line 188 "glcpp/glcpp-parse.y"
     {
 		_glcpp_parser_skip_stack_push_if (parser, & (yylsp[(1) - (3)]), (yyvsp[(2) - (3)].ival));
 	;}
@@ -1805,7 +1802,7 @@
   case 9:
 
 /* Line 1455 of yacc.c  */
-#line 188 "glcpp/glcpp-parse.y"
+#line 191 "glcpp/glcpp-parse.y"
     {
 		_glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (3)]), "elif", (yyvsp[(2) - (3)].ival));
 	;}
@@ -1814,7 +1811,7 @@
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 194 "glcpp/glcpp-parse.y"
+#line 197 "glcpp/glcpp-parse.y"
     {
 		_define_object_macro (parser, & (yylsp[(2) - (4)]), (yyvsp[(2) - (4)].str), (yyvsp[(3) - (4)].token_list));
 	;}
@@ -1823,7 +1820,7 @@
   case 11:
 
 /* Line 1455 of yacc.c  */
-#line 197 "glcpp/glcpp-parse.y"
+#line 200 "glcpp/glcpp-parse.y"
     {
 		_define_function_macro (parser, & (yylsp[(2) - (6)]), (yyvsp[(2) - (6)].str), NULL, (yyvsp[(5) - (6)].token_list));
 	;}
@@ -1832,7 +1829,7 @@
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 200 "glcpp/glcpp-parse.y"
+#line 203 "glcpp/glcpp-parse.y"
     {
 		_define_function_macro (parser, & (yylsp[(2) - (7)]), (yyvsp[(2) - (7)].str), (yyvsp[(4) - (7)].string_list), (yyvsp[(6) - (7)].token_list));
 	;}
@@ -1841,7 +1838,7 @@
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 203 "glcpp/glcpp-parse.y"
+#line 206 "glcpp/glcpp-parse.y"
     {
 		macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (3)].str));
 		if (macro) {
@@ -1855,7 +1852,7 @@
   case 14:
 
 /* Line 1455 of yacc.c  */
-#line 211 "glcpp/glcpp-parse.y"
+#line 214 "glcpp/glcpp-parse.y"
     {
 		token_list_t *expanded;
 		token_t *token;
@@ -1873,7 +1870,7 @@
   case 15:
 
 /* Line 1455 of yacc.c  */
-#line 223 "glcpp/glcpp-parse.y"
+#line 226 "glcpp/glcpp-parse.y"
     {
 		macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str));
 		talloc_free ((yyvsp[(2) - (4)].str));
@@ -1884,7 +1881,7 @@
   case 16:
 
 /* Line 1455 of yacc.c  */
-#line 228 "glcpp/glcpp-parse.y"
+#line 231 "glcpp/glcpp-parse.y"
     {
 		macro_t *macro = hash_table_find (parser->defines, (yyvsp[(2) - (4)].str));
 		talloc_free ((yyvsp[(2) - (4)].str));
@@ -1895,7 +1892,7 @@
   case 17:
 
 /* Line 1455 of yacc.c  */
-#line 233 "glcpp/glcpp-parse.y"
+#line 236 "glcpp/glcpp-parse.y"
     {
 		token_list_t *expanded;
 		token_t *token;
@@ -1913,7 +1910,7 @@
   case 18:
 
 /* Line 1455 of yacc.c  */
-#line 245 "glcpp/glcpp-parse.y"
+#line 248 "glcpp/glcpp-parse.y"
     {
 		/* #elif without an expression results in a warning if the
 		 * condition doesn't matter (we just handled #if 1 or such)
@@ -1930,7 +1927,7 @@
   case 19:
 
 /* Line 1455 of yacc.c  */
-#line 256 "glcpp/glcpp-parse.y"
+#line 259 "glcpp/glcpp-parse.y"
     {
 		_glcpp_parser_skip_stack_change_if (parser, & (yylsp[(1) - (2)]), "else", 1);
 	;}
@@ -1939,16 +1936,31 @@
   case 20:
 
 /* Line 1455 of yacc.c  */
-#line 259 "glcpp/glcpp-parse.y"
+#line 262 "glcpp/glcpp-parse.y"
     {
 		_glcpp_parser_skip_stack_pop (parser, & (yylsp[(1) - (2)]));
 	;}
     break;
 
-  case 22:
+  case 21:
 
 /* Line 1455 of yacc.c  */
-#line 266 "glcpp/glcpp-parse.y"
+#line 265 "glcpp/glcpp-parse.y"
+    {
+		macro_t *macro = hash_table_find (parser->defines, "__VERSION__");
+		if (macro) {
+			hash_table_remove (parser->defines, "__VERSION__");
+			talloc_free (macro);
+		}
+		add_builtin_define (parser, "__VERSION__", (yyvsp[(2) - (3)].ival));
+		glcpp_printf(parser->output, "#version %" PRIiMAX "\n", (yyvsp[(2) - (3)].ival));
+	;}
+    break;
+
+  case 23:
+
+/* Line 1455 of yacc.c  */
+#line 278 "glcpp/glcpp-parse.y"
     {
 		if (strlen ((yyvsp[(1) - (1)].str)) >= 3 && strncmp ((yyvsp[(1) - (1)].str), "0x", 2) == 0) {
 			(yyval.ival) = strtoll ((yyvsp[(1) - (1)].str) + 2, NULL, 16);
@@ -1960,226 +1972,226 @@
 	;}
     break;
 
-  case 23:
-
-/* Line 1455 of yacc.c  */
-#line 275 "glcpp/glcpp-parse.y"
-    {
-		(yyval.ival) = (yyvsp[(1) - (1)].ival);
-	;}
-    break;
-
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 278 "glcpp/glcpp-parse.y"
+#line 287 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival);
-	;}
-    break;
-
-  case 25:
-
-/* Line 1455 of yacc.c  */
-#line 281 "glcpp/glcpp-parse.y"
-    {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (1)].ival);
 	;}
     break;
 
   case 26:
 
 /* Line 1455 of yacc.c  */
-#line 284 "glcpp/glcpp-parse.y"
+#line 293 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) || (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 287 "glcpp/glcpp-parse.y"
+#line 296 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) && (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 28:
 
 /* Line 1455 of yacc.c  */
-#line 290 "glcpp/glcpp-parse.y"
+#line 299 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) | (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 29:
 
 /* Line 1455 of yacc.c  */
-#line 293 "glcpp/glcpp-parse.y"
+#line 302 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) ^ (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 30:
 
 /* Line 1455 of yacc.c  */
-#line 296 "glcpp/glcpp-parse.y"
+#line 305 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) & (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 31:
 
 /* Line 1455 of yacc.c  */
-#line 299 "glcpp/glcpp-parse.y"
+#line 308 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) != (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 302 "glcpp/glcpp-parse.y"
+#line 311 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) == (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 305 "glcpp/glcpp-parse.y"
+#line 314 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) >= (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 34:
 
 /* Line 1455 of yacc.c  */
-#line 308 "glcpp/glcpp-parse.y"
+#line 317 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) <= (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 35:
 
 /* Line 1455 of yacc.c  */
-#line 311 "glcpp/glcpp-parse.y"
+#line 320 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) > (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 314 "glcpp/glcpp-parse.y"
+#line 323 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) < (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 317 "glcpp/glcpp-parse.y"
+#line 326 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) >> (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 38:
 
 /* Line 1455 of yacc.c  */
-#line 320 "glcpp/glcpp-parse.y"
+#line 329 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) << (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 323 "glcpp/glcpp-parse.y"
+#line 332 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) - (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 326 "glcpp/glcpp-parse.y"
+#line 335 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) + (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 329 "glcpp/glcpp-parse.y"
+#line 338 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) % (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 332 "glcpp/glcpp-parse.y"
+#line 341 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = ! (yyvsp[(2) - (2)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) / (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 43:
 
 /* Line 1455 of yacc.c  */
-#line 335 "glcpp/glcpp-parse.y"
+#line 344 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = ~ (yyvsp[(2) - (2)].ival);
+		(yyval.ival) = (yyvsp[(1) - (3)].ival) * (yyvsp[(3) - (3)].ival);
 	;}
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 338 "glcpp/glcpp-parse.y"
+#line 347 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = - (yyvsp[(2) - (2)].ival);
+		(yyval.ival) = ! (yyvsp[(2) - (2)].ival);
 	;}
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 341 "glcpp/glcpp-parse.y"
+#line 350 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = + (yyvsp[(2) - (2)].ival);
+		(yyval.ival) = ~ (yyvsp[(2) - (2)].ival);
 	;}
     break;
 
   case 46:
 
 /* Line 1455 of yacc.c  */
-#line 344 "glcpp/glcpp-parse.y"
+#line 353 "glcpp/glcpp-parse.y"
     {
-		(yyval.ival) = (yyvsp[(2) - (3)].ival);
+		(yyval.ival) = - (yyvsp[(2) - (2)].ival);
 	;}
     break;
 
   case 47:
 
 /* Line 1455 of yacc.c  */
-#line 350 "glcpp/glcpp-parse.y"
+#line 356 "glcpp/glcpp-parse.y"
+    {
+		(yyval.ival) = + (yyvsp[(2) - (2)].ival);
+	;}
+    break;
+
+  case 48:
+
+/* Line 1455 of yacc.c  */
+#line 359 "glcpp/glcpp-parse.y"
+    {
+		(yyval.ival) = (yyvsp[(2) - (3)].ival);
+	;}
+    break;
+
+  case 49:
+
+/* Line 1455 of yacc.c  */
+#line 365 "glcpp/glcpp-parse.y"
     {
 		(yyval.string_list) = _string_list_create (parser);
 		_string_list_append_item ((yyval.string_list), (yyvsp[(1) - (1)].str));
@@ -2187,10 +2199,10 @@
 	;}
     break;
 
-  case 48:
+  case 50:
 
 /* Line 1455 of yacc.c  */
-#line 355 "glcpp/glcpp-parse.y"
+#line 370 "glcpp/glcpp-parse.y"
     {
 		(yyval.string_list) = (yyvsp[(1) - (3)].string_list);	
 		_string_list_append_item ((yyval.string_list), (yyvsp[(3) - (3)].str));
@@ -2198,54 +2210,44 @@
 	;}
     break;
 
-  case 49:
-
-/* Line 1455 of yacc.c  */
-#line 363 "glcpp/glcpp-parse.y"
-    { (yyval.token_list) = NULL; ;}
-    break;
-
   case 51:
 
 /* Line 1455 of yacc.c  */
-#line 368 "glcpp/glcpp-parse.y"
+#line 378 "glcpp/glcpp-parse.y"
+    { (yyval.token_list) = NULL; ;}
+    break;
+
+  case 53:
+
+/* Line 1455 of yacc.c  */
+#line 383 "glcpp/glcpp-parse.y"
     {
 		yyerror (& (yylsp[(1) - (2)]), parser, "Invalid tokens after #");
 	;}
     break;
 
-  case 52:
+  case 54:
 
 /* Line 1455 of yacc.c  */
-#line 374 "glcpp/glcpp-parse.y"
+#line 389 "glcpp/glcpp-parse.y"
     { (yyval.token_list) = NULL; ;}
     break;
 
-  case 55:
-
-/* Line 1455 of yacc.c  */
-#line 380 "glcpp/glcpp-parse.y"
-    {
-		glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive");
-	;}
-    break;
-
-  case 56:
-
-/* Line 1455 of yacc.c  */
-#line 387 "glcpp/glcpp-parse.y"
-    {
-		int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0;
-		(yyval.token) = _token_create_ival (parser, INTEGER, v);
-	;}
-    break;
-
   case 57:
 
 /* Line 1455 of yacc.c  */
-#line 391 "glcpp/glcpp-parse.y"
+#line 395 "glcpp/glcpp-parse.y"
     {
-		int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0;
+		glcpp_warning(&(yylsp[(1) - (1)]), parser, "extra tokens at end of directive");
+	;}
+    break;
+
+  case 58:
+
+/* Line 1455 of yacc.c  */
+#line 402 "glcpp/glcpp-parse.y"
+    {
+		int v = hash_table_find (parser->defines, (yyvsp[(2) - (2)].str)) ? 1 : 0;
 		(yyval.token) = _token_create_ival (parser, INTEGER, v);
 	;}
     break;
@@ -2253,30 +2255,17 @@
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 400 "glcpp/glcpp-parse.y"
-    {
-		parser->space_tokens = 1;
-		(yyval.token_list) = _token_list_create (parser);
-		_token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token));
-		talloc_unlink (parser, (yyvsp[(1) - (1)].token));
-	;}
-    break;
-
-  case 60:
-
-/* Line 1455 of yacc.c  */
 #line 406 "glcpp/glcpp-parse.y"
     {
-		(yyval.token_list) = (yyvsp[(1) - (2)].token_list);
-		_token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
-		talloc_unlink (parser, (yyvsp[(2) - (2)].token));
+		int v = hash_table_find (parser->defines, (yyvsp[(3) - (4)].str)) ? 1 : 0;
+		(yyval.token) = _token_create_ival (parser, INTEGER, v);
 	;}
     break;
 
   case 61:
 
 /* Line 1455 of yacc.c  */
-#line 414 "glcpp/glcpp-parse.y"
+#line 415 "glcpp/glcpp-parse.y"
     {
 		parser->space_tokens = 1;
 		(yyval.token_list) = _token_list_create (parser);
@@ -2288,7 +2277,7 @@
   case 62:
 
 /* Line 1455 of yacc.c  */
-#line 420 "glcpp/glcpp-parse.y"
+#line 421 "glcpp/glcpp-parse.y"
     {
 		(yyval.token_list) = (yyvsp[(1) - (2)].token_list);
 		_token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
@@ -2299,29 +2288,32 @@
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 428 "glcpp/glcpp-parse.y"
+#line 429 "glcpp/glcpp-parse.y"
     {
-		(yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str));
-		(yyval.token)->location = yylloc;
+		parser->space_tokens = 1;
+		(yyval.token_list) = _token_list_create (parser);
+		_token_list_append ((yyval.token_list), (yyvsp[(1) - (1)].token));
+		talloc_unlink (parser, (yyvsp[(1) - (1)].token));
 	;}
     break;
 
   case 64:
 
 /* Line 1455 of yacc.c  */
-#line 432 "glcpp/glcpp-parse.y"
+#line 435 "glcpp/glcpp-parse.y"
     {
-		(yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str));
-		(yyval.token)->location = yylloc;
+		(yyval.token_list) = (yyvsp[(1) - (2)].token_list);
+		_token_list_append ((yyval.token_list), (yyvsp[(2) - (2)].token));
+		talloc_unlink (parser, (yyvsp[(2) - (2)].token));
 	;}
     break;
 
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 436 "glcpp/glcpp-parse.y"
+#line 443 "glcpp/glcpp-parse.y"
     {
-		(yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival));
+		(yyval.token) = _token_create_str (parser, IDENTIFIER, (yyvsp[(1) - (1)].str));
 		(yyval.token)->location = yylloc;
 	;}
     break;
@@ -2329,9 +2321,9 @@
   case 66:
 
 /* Line 1455 of yacc.c  */
-#line 440 "glcpp/glcpp-parse.y"
+#line 447 "glcpp/glcpp-parse.y"
     {
-		(yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str));
+		(yyval.token) = _token_create_str (parser, INTEGER_STRING, (yyvsp[(1) - (1)].str));
 		(yyval.token)->location = yylloc;
 	;}
     break;
@@ -2339,9 +2331,9 @@
   case 67:
 
 /* Line 1455 of yacc.c  */
-#line 444 "glcpp/glcpp-parse.y"
+#line 451 "glcpp/glcpp-parse.y"
     {
-		(yyval.token) = _token_create_ival (parser, SPACE, SPACE);
+		(yyval.token) = _token_create_ival (parser, (yyvsp[(1) - (1)].ival), (yyvsp[(1) - (1)].ival));
 		(yyval.token)->location = yylloc;
 	;}
     break;
@@ -2349,224 +2341,244 @@
   case 68:
 
 /* Line 1455 of yacc.c  */
-#line 451 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '['; ;}
+#line 455 "glcpp/glcpp-parse.y"
+    {
+		(yyval.token) = _token_create_str (parser, OTHER, (yyvsp[(1) - (1)].str));
+		(yyval.token)->location = yylloc;
+	;}
     break;
 
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 452 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = ']'; ;}
+#line 459 "glcpp/glcpp-parse.y"
+    {
+		(yyval.token) = _token_create_ival (parser, SPACE, SPACE);
+		(yyval.token)->location = yylloc;
+	;}
     break;
 
   case 70:
 
 /* Line 1455 of yacc.c  */
-#line 453 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '('; ;}
+#line 466 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '['; ;}
     break;
 
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 454 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = ')'; ;}
+#line 467 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = ']'; ;}
     break;
 
   case 72:
 
 /* Line 1455 of yacc.c  */
-#line 455 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '{'; ;}
+#line 468 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '('; ;}
     break;
 
   case 73:
 
 /* Line 1455 of yacc.c  */
-#line 456 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '}'; ;}
+#line 469 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = ')'; ;}
     break;
 
   case 74:
 
 /* Line 1455 of yacc.c  */
-#line 457 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '.'; ;}
+#line 470 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '{'; ;}
     break;
 
   case 75:
 
 /* Line 1455 of yacc.c  */
-#line 458 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '&'; ;}
+#line 471 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '}'; ;}
     break;
 
   case 76:
 
 /* Line 1455 of yacc.c  */
-#line 459 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '*'; ;}
+#line 472 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '.'; ;}
     break;
 
   case 77:
 
 /* Line 1455 of yacc.c  */
-#line 460 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '+'; ;}
+#line 473 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '&'; ;}
     break;
 
   case 78:
 
 /* Line 1455 of yacc.c  */
-#line 461 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '-'; ;}
+#line 474 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '*'; ;}
     break;
 
   case 79:
 
 /* Line 1455 of yacc.c  */
-#line 462 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '~'; ;}
+#line 475 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '+'; ;}
     break;
 
   case 80:
 
 /* Line 1455 of yacc.c  */
-#line 463 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '!'; ;}
+#line 476 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '-'; ;}
     break;
 
   case 81:
 
 /* Line 1455 of yacc.c  */
-#line 464 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '/'; ;}
+#line 477 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '~'; ;}
     break;
 
   case 82:
 
 /* Line 1455 of yacc.c  */
-#line 465 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '%'; ;}
+#line 478 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '!'; ;}
     break;
 
   case 83:
 
 /* Line 1455 of yacc.c  */
-#line 466 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = LEFT_SHIFT; ;}
+#line 479 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '/'; ;}
     break;
 
   case 84:
 
 /* Line 1455 of yacc.c  */
-#line 467 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = RIGHT_SHIFT; ;}
+#line 480 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '%'; ;}
     break;
 
   case 85:
 
 /* Line 1455 of yacc.c  */
-#line 468 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '<'; ;}
+#line 481 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = LEFT_SHIFT; ;}
     break;
 
   case 86:
 
 /* Line 1455 of yacc.c  */
-#line 469 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '>'; ;}
+#line 482 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = RIGHT_SHIFT; ;}
     break;
 
   case 87:
 
 /* Line 1455 of yacc.c  */
-#line 470 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = LESS_OR_EQUAL; ;}
+#line 483 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '<'; ;}
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 471 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = GREATER_OR_EQUAL; ;}
+#line 484 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '>'; ;}
     break;
 
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 472 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = EQUAL; ;}
+#line 485 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = LESS_OR_EQUAL; ;}
     break;
 
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 473 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = NOT_EQUAL; ;}
+#line 486 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = GREATER_OR_EQUAL; ;}
     break;
 
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 474 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '^'; ;}
+#line 487 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = EQUAL; ;}
     break;
 
   case 92:
 
 /* Line 1455 of yacc.c  */
-#line 475 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '|'; ;}
+#line 488 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = NOT_EQUAL; ;}
     break;
 
   case 93:
 
 /* Line 1455 of yacc.c  */
-#line 476 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = AND; ;}
+#line 489 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '^'; ;}
     break;
 
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 477 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = OR; ;}
+#line 490 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '|'; ;}
     break;
 
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 478 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = ';'; ;}
+#line 491 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = AND; ;}
     break;
 
   case 96:
 
 /* Line 1455 of yacc.c  */
-#line 479 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = ','; ;}
+#line 492 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = OR; ;}
     break;
 
   case 97:
 
 /* Line 1455 of yacc.c  */
-#line 480 "glcpp/glcpp-parse.y"
-    { (yyval.ival) = '='; ;}
+#line 493 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = ';'; ;}
     break;
 
   case 98:
 
 /* Line 1455 of yacc.c  */
-#line 481 "glcpp/glcpp-parse.y"
+#line 494 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = ','; ;}
+    break;
+
+  case 99:
+
+/* Line 1455 of yacc.c  */
+#line 495 "glcpp/glcpp-parse.y"
+    { (yyval.ival) = '='; ;}
+    break;
+
+  case 100:
+
+/* Line 1455 of yacc.c  */
+#line 496 "glcpp/glcpp-parse.y"
     { (yyval.ival) = PASTE; ;}
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 2570 "glcpp/glcpp-parse.c"
+#line 2582 "glcpp/glcpp-parse.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2785,7 +2797,7 @@
 
 
 /* Line 1675 of yacc.c  */
-#line 484 "glcpp/glcpp-parse.y"
+#line 499 "glcpp/glcpp-parse.y"
 
 
 string_list_t *
@@ -3196,12 +3208,26 @@
 	glcpp_error(locp, parser, "%s", error);
 }
 
+static void add_builtin_define(glcpp_parser_t *parser,
+			       const char *name, int value)
+{
+   token_t *tok;
+   token_list_t *list;
+
+   tok = _token_create_ival (parser, INTEGER, value);
+
+   list = _token_list_create(parser);
+   _token_list_append(list, tok);
+   _define_object_macro(parser, NULL, name, list);
+
+   talloc_unlink(parser, tok);
+}
+
 glcpp_parser_t *
 glcpp_parser_create (const struct gl_extensions *extensions)
 {
 	glcpp_parser_t *parser;
-	token_t *tok;
-	token_list_t *list;
+	int language_version;
 
 	parser = xtalloc (NULL, glcpp_parser_t);
 
@@ -3225,32 +3251,24 @@
 	parser->error = 0;
 
 	/* Add pre-defined macros. */
-	tok = _token_create_ival (parser, INTEGER, 1);
+	add_builtin_define(parser, "GL_ARB_draw_buffers", 1);
+	add_builtin_define(parser, "GL_ARB_texture_rectangle", 1);
 
-	list = _token_list_create(parser);
-	_token_list_append(list, tok);
-	_define_object_macro(parser, NULL, "GL_ARB_draw_buffers", list);
+	if (extensions != NULL) {
+	   if (extensions->EXT_texture_array) {
+	      add_builtin_define(parser, "GL_EXT_texture_array", 1);
+	   }
 
-	list = _token_list_create(parser);
-	_token_list_append(list, tok);
-	_define_object_macro(parser, NULL, "GL_ARB_texture_rectangle", list);
-
-	if ((extensions != NULL) && extensions->EXT_texture_array) {
-		list = _token_list_create(parser);
-		_token_list_append(list, tok);
-		_define_object_macro(parser, NULL,
-				     "GL_EXT_texture_array", list);
+	   if (extensions->ARB_fragment_coord_conventions)
+	      add_builtin_define(parser, "GL_ARB_fragment_coord_conventions",
+				 1);
 	}
 
-	if ((extensions != NULL) &&
-	    extensions->ARB_fragment_coord_conventions) {
-		list = _token_list_create(parser);
-		_token_list_append(list, tok);
-		_define_object_macro(parser, NULL,
-				     "GL_ARB_fragment_coord_conventions", list);
+	language_version = 110;
+	if (extensions && extensions->ARB_shading_language_120) {
+	   language_version = 120;
 	}
-
-	talloc_unlink(parser, tok);
+	add_builtin_define(parser, "__VERSION__", language_version);
 
 	return parser;
 }