Add %space (extension syntax) origin/master
authorNick Downing <downing.nick@gmail.com>
Thu, 27 Sep 2018 05:14:39 +0000 (15:14 +1000)
committerNick Downing <downing.nick@gmail.com>
Thu, 27 Sep 2018 05:14:39 +0000 (15:14 +1000)
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
src/scan-gram.c
src/scan-gram.l

index cabc21b..4d9cd0d 100644 (file)
@@ -129,7 +129,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 899 "src/parse-gram.y" /* yacc.c:355  */
+#line 906 "src/parse-gram.y" /* yacc.c:355  */
 #include "muscle-tab.h"
 
 #line 136 "src/parse-gram.c" /* yacc.c:355  */
@@ -194,7 +194,8 @@ extern int gram_debug;
     INT = 309,
     PERCENT_PARAM = 310,
     PERCENT_UNION = 311,
-    PERCENT_EMPTY = 312
+    PERCENT_EMPTY = 312,
+    PERCENT_SPACE = 313
   };
 #endif
 
@@ -223,7 +224,7 @@ named_ref *named_ref;
 param_type param;
 #line 565 "src/parse-gram.y" /* yacc.c:355  */
 code_props_type code_type;
-#line 901 "src/parse-gram.y" /* yacc.c:355  */
+#line 908 "src/parse-gram.y" /* yacc.c:355  */
 
   struct
   {
@@ -231,7 +232,7 @@ code_props_type code_type;
     muscle_kind kind;
   } value;
 
-#line 235 "src/parse-gram.c" /* yacc.c:355  */
+#line 236 "src/parse-gram.c" /* yacc.c:355  */
 };
 
 typedef union GRAM_STYPE GRAM_STYPE;
@@ -261,7 +262,7 @@ int gram_parse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 265 "src/parse-gram.c" /* yacc.c:358  */
+#line 266 "src/parse-gram.c" /* yacc.c:358  */
 /* Unqualified %code blocks.  */
 #line 33 "src/parse-gram.y" /* yacc.c:359  */
 
@@ -364,7 +365,7 @@ int gram_parse (void);
   static void add_param (param_type type, char *decl, location loc);
   static param_type current_param = param_none;
 
-#line 368 "src/parse-gram.c" /* yacc.c:359  */
+#line 369 "src/parse-gram.c" /* yacc.c:359  */
 
 #ifdef short
 # undef short
@@ -585,21 +586,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   183
+#define YYLAST   211
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  60
+#define YYNTOKENS  61
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  38
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  112
+#define YYNRULES  113
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  148
+#define YYNSTATES  149
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   312
+#define YYMAXUTOK   313
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -612,7 +613,7 @@ static const yytype_uint8 yytranslate[] =
        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,
-      58,    59,     2,     2,     2,     2,     2,     2,     2,     2,
+      59,    60,     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,     2,     2,     2,     2,     2,
@@ -639,7 +640,7 @@ static const yytype_uint8 yytranslate[] =
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57
+      55,    56,    57,    58
 };
 
 #if GRAM_DEBUG
@@ -654,10 +655,10 @@ static const yytype_uint16 yyrline[] =
      632,   650,   651,   652,   653,   657,   658,   663,   665,   670,
      677,   690,   695,   703,   704,   708,   712,   716,   717,   718,
      723,   728,   735,   744,   752,   766,   767,   776,   777,   783,
-     784,   785,   792,   792,   805,   809,   813,   818,   835,   841,
-     850,   852,   857,   864,   870,   876,   876,   883,   884,   894,
-     895,   920,   921,   922,   923,   935,   937,   946,   951,   952,
-     957,   965,   966
+     784,   785,   792,   792,   805,   809,   813,   820,   837,   843,
+     852,   854,   859,   866,   872,   878,   878,   883,   890,   891,
+     901,   902,   927,   928,   929,   930,   942,   944,   953,   958,
+     959,   964,   972,   973
 };
 #endif
 
@@ -679,15 +680,16 @@ static const char *const yytname[] =
   "\"%yacc\"", "\"{...}\"", "\"%?{...}\"", "\"[identifier]\"", "\"char\"",
   "\"epilogue\"", "\"=\"", "\"identifier\"", "\"identifier:\"", "\"%%\"",
   "\"|\"", "\"%{...%}\"", "\";\"", "\"<tag>\"", "\"<*>\"", "\"<>\"",
-  "\"integer\"", "\"%param\"", "\"%union\"", "\"%empty\"", "'('", "')'",
-  "$accept", "input", "prologue_declarations", "prologue_declaration",
-  "$@1", "params", "grammar_declaration", "code_props_type", "union_name",
-  "symbol_declaration", "$@2", "$@3", "precedence_declaration",
-  "precedence_declarator", "tag.opt", "symbols.prec", "symbol.prec",
-  "symbols.1", "generic_symlist", "generic_symlist_item", "tag",
-  "symbol_def", "symbol_defs.1", "grammar", "rules_or_grammar_declaration",
-  "rules", "$@4", "rhses.1", "rhs", "$@5", "named_ref.opt", "variable",
-  "value", "id", "id_colon", "symbol", "string_as_id", "epilogue.opt", YY_NULLPTR
+  "\"integer\"", "\"%param\"", "\"%union\"", "\"%empty\"", "\"%space\"",
+  "'('", "')'", "$accept", "input", "prologue_declarations",
+  "prologue_declaration", "$@1", "params", "grammar_declaration",
+  "code_props_type", "union_name", "symbol_declaration", "$@2", "$@3",
+  "precedence_declaration", "precedence_declarator", "tag.opt",
+  "symbols.prec", "symbol.prec", "symbols.1", "generic_symlist",
+  "generic_symlist_item", "tag", "symbol_def", "symbol_defs.1", "grammar",
+  "rules_or_grammar_declaration", "rules", "$@4", "rhses.1", "rhs", "$@5",
+  "named_ref.opt", "variable", "value", "id", "id_colon", "symbol",
+  "string_as_id", "epilogue.opt", YY_NULLPTR
 };
 #endif
 
@@ -701,7 +703,8 @@ static const yytype_uint16 yytoknum[] =
      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
-     305,   306,   307,   308,   309,   310,   311,   312,    40,    41
+     305,   306,   307,   308,   309,   310,   311,   312,   313,    40,
+      41
 };
 # endif
 
@@ -710,30 +713,30 @@ static const yytype_uint16 yytoknum[] =
 #define yypact_value_is_default(Yystate) \
   (!!((Yystate) == (-127)))
 
-#define YYTABLE_NINF -112
+#define YYTABLE_NINF -113
 
 #define yytable_value_is_error(Yytable_value) \
   0
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
-static const yytype_int8 yypact[] =
+static const yytype_int16 yypact[] =
 {
-    -127,    14,   127,  -127,  -127,  -127,   -22,  -127,  -127,  -127,
-    -127,  -127,  -127,   -37,  -127,     8,    27,  -127,   -19,   -18,
-    -127,    39,  -127,    19,    56,    63,  -127,  -127,  -127,    73,
-      83,    94,     1,  -127,  -127,  -127,    84,  -127,  -127,  -127,
-      42,  -127,  -127,    59,  -127,  -127,    51,    18,    18,     1,
-    -127,    64,  -127,  -127,     2,  -127,  -127,  -127,  -127,  -127,
+    -127,    20,   155,  -127,  -127,  -127,     4,  -127,  -127,  -127,
+    -127,  -127,  -127,    -6,  -127,     3,    47,  -127,     8,     9,
+    -127,    51,  -127,    30,    68,    76,  -127,  -127,  -127,    77,
+      80,    84,     0,  -127,  -127,  -127,   112,  -127,  -127,  -127,
+      43,  -127,  -127,    50,  -127,  -127,    39,    31,    31,     0,
+    -127,    52,  -127,  -127,    -1,  -127,  -127,  -127,  -127,  -127,
     -127,  -127,  -127,  -127,  -127,  -127,  -127,  -127,  -127,  -127,
-    -127,    58,  -127,    61,    15,  -127,  -127,    68,    67,  -127,
-      75,     3,  -127,     1,  -127,  -127,    18,    -2,    18,     1,
-    -127,  -127,  -127,  -127,  -127,  -127,  -127,  -127,    69,  -127,
-    -127,  -127,  -127,  -127,    76,  -127,  -127,  -127,  -127,     3,
-    -127,  -127,  -127,     1,  -127,    62,  -127,   114,  -127,  -127,
-    -127,  -127,  -127,  -127,  -127,  -127,  -127,   -38,    65,  -127,
-    -127,     1,    66,    70,    68,  -127,  -127,  -127,    68,    65,
-    -127,  -127,  -127,  -127,  -127,  -127,    25,  -127
+    -127,    44,  -127,    46,    18,  -127,  -127,    56,    61,  -127,
+      62,    33,  -127,     0,  -127,  -127,    31,    -2,    31,     0,
+    -127,  -127,  -127,  -127,  -127,  -127,  -127,  -127,    59,  -127,
+    -127,  -127,  -127,  -127,    64,  -127,  -127,  -127,  -127,    33,
+    -127,  -127,  -127,     0,  -127,    54,  -127,   101,  -127,  -127,
+    -127,  -127,  -127,  -127,  -127,  -127,  -127,   -39,    53,  -127,
+    -127,     0,    55,    63,    56,  -127,  -127,  -127,  -127,    56,
+      53,  -127,  -127,  -127,  -127,  -127,  -127,     1,  -127
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -746,25 +749,25 @@ static const yytype_uint8 yydefact[] =
        7,     0,    15,     0,     0,     0,    37,    19,    20,     0,
        0,     0,     0,    26,    27,    28,     0,     6,    29,    22,
       42,     4,     5,     0,    33,    32,    55,     0,     0,     0,
-      38,     0,   100,    99,   101,    10,    12,    13,    14,    16,
-      17,    18,    21,    24,    25,   110,   106,   105,   108,    34,
-     109,     0,   107,     0,     0,    77,    79,    97,     0,    43,
+      38,     0,   101,   100,   102,    10,    12,    13,    14,    16,
+      17,    18,    21,    24,    25,   111,   107,   106,   109,    34,
+     110,     0,   108,     0,     0,    77,    79,    98,     0,    43,
        0,     0,    56,     0,    70,    75,    48,    71,    46,    49,
-      61,    39,   103,   104,   102,     8,    81,    80,     0,    78,
-       2,    98,    82,    31,    23,    44,    67,    68,    69,    35,
+      61,    39,   104,   105,   103,     8,    81,    80,     0,    78,
+       2,    99,    82,    31,    23,    44,    67,    68,    69,    35,
       63,    66,    65,    50,    57,    59,    76,    72,    73,    62,
-     112,    87,    30,    64,    58,    60,    74,    83,    84,    87,
-      86,     0,     0,     0,    97,    90,    91,    95,    97,    85,
-      92,    93,    94,    89,    87,    88,     0,    96
+     113,    87,    30,    64,    58,    60,    74,    83,    84,    87,
+      86,     0,     0,     0,    98,    90,    91,    97,    95,    98,
+      85,    92,    93,    94,    89,    87,    88,     0,    96
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int8 yypgoto[] =
 {
-    -127,  -127,  -127,  -127,  -127,  -127,   116,  -127,  -127,  -127,
-    -127,  -127,  -127,  -127,  -127,  -127,    11,  -127,  -127,    16,
-    -127,   -13,    78,  -127,    53,  -127,  -127,  -127,  -126,  -127,
-    -125,  -127,  -127,   -14,  -127,   -32,   -80,  -127
+    -127,  -127,  -127,  -127,  -127,  -127,   103,  -127,  -127,  -127,
+    -127,  -127,  -127,  -127,  -127,  -127,    -7,  -127,  -127,     6,
+    -127,   -76,    78,  -127,    57,  -127,  -127,  -127,  -124,  -127,
+    -126,  -127,  -127,   -16,  -127,   -32,   -80,  -127
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -772,8 +775,8 @@ static const yytype_int16 yydefgoto[] =
 {
       -1,     1,     2,    41,    78,   104,    73,    43,    80,    44,
       48,    47,    45,    46,    83,   113,   114,    89,   109,   110,
-     111,    85,    86,    74,    75,    76,   121,   127,   128,   144,
-     102,    54,    95,    68,    77,   138,    70,   100
+     111,    85,    86,    74,    75,    76,   121,   127,   128,   145,
+     102,    54,    95,    68,    77,   139,    70,   100
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -781,86 +784,92 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      69,    65,    50,   139,    65,    92,    65,   118,    51,   143,
-     129,    52,   130,   145,     3,  -111,    71,    90,   146,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,    65,    49,
-      55,    13,    14,    87,    87,    56,    57,   126,   131,   132,
-     133,    93,    58,    66,    26,    66,    67,    94,    67,   112,
-      32,   115,   117,    53,   106,   107,   108,   119,    59,    60,
-      66,    72,    98,    67,   134,   135,    61,    66,    65,    84,
-      67,    40,    87,   116,    87,   116,    62,   112,   131,   132,
-     133,   115,   136,   137,   147,    71,    63,    79,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,    64,    81,   140,
-      13,    14,    82,    91,   134,   135,   103,    66,    96,   101,
-      67,    97,   120,    26,   105,   122,   125,    65,    42,    32,
-     141,   142,   136,   137,   124,   123,    88,    99,     0,     0,
-      72,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      40,     0,     0,    13,    14,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,     0,     0,     0,     0,
-       0,     0,     0,     0,    36,     0,    37,    38,     0,     0,
-       0,     0,    39,    40
+      69,    65,    92,    65,    65,   140,    52,   118,   144,   129,
+     116,   130,   116,   146,   131,   132,   133,    90,  -112,    71,
+       3,   147,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    87,    87,    50,    13,    14,    65,   126,    93,    51,
+     134,   135,    66,    66,    94,    67,    67,    26,    53,   112,
+      55,   115,   117,    32,    58,    49,    65,   119,   136,   137,
+     138,   148,    56,    57,    72,    98,   131,   132,   133,    59,
+      87,    60,    87,    66,    40,    66,    67,   112,    67,    61,
+      62,   115,    84,    63,   106,   107,   108,    64,    79,    81,
+      82,    91,   134,   135,    96,    66,    97,   101,    67,   141,
+     103,   105,   120,   122,    65,    42,   124,     0,   125,   142,
+     136,   137,   138,    71,   143,   123,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,     0,    88,     0,    13,    14,
+       0,    99,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    26,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    72,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    40,     0,
+       0,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,     0,     0,     0,     0,     0,     0,
+       0,     0,    36,     0,    37,    38,     0,     0,     0,     0,
+      39,    40
 };
 
 static const yytype_int16 yycheck[] =
 {
-      32,     3,    39,   129,     3,     3,     3,    87,    45,   134,
-      48,     3,    50,   138,     0,     0,     1,    49,   144,     4,
-       5,     6,     7,     8,     9,    10,    11,    12,     3,    51,
-       3,    16,    17,    47,    48,    54,    54,   117,    13,    14,
-      15,    39,     3,    42,    29,    42,    45,    45,    45,    81,
-      35,    83,    54,    45,    51,    52,    53,    89,    39,     3,
-      42,    46,    47,    45,    39,    40,     3,    42,     3,    51,
-      45,    56,    86,    86,    88,    88,     3,   109,    13,    14,
-      15,   113,    57,    58,    59,     1,     3,    45,     4,     5,
-       6,     7,     8,     9,    10,    11,    12,     3,    39,   131,
-      16,    17,    51,    39,    39,    40,    39,    42,    50,    41,
-      45,    50,    43,    29,    39,    39,    54,     3,     2,    35,
-      54,    51,    57,    58,   113,   109,    48,    74,    -1,    -1,
-      46,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-      56,    -1,    -1,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    47,    -1,    49,    50,    -1,    -1,
-      -1,    -1,    55,    56
+      32,     3,     3,     3,     3,   129,     3,    87,   134,    48,
+      86,    50,    88,   139,    13,    14,    15,    49,     0,     1,
+       0,   145,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    47,    48,    39,    16,    17,     3,   117,    39,    45,
+      39,    40,    42,    42,    45,    45,    45,    29,    45,    81,
+       3,    83,    54,    35,     3,    51,     3,    89,    57,    58,
+      59,    60,    54,    54,    46,    47,    13,    14,    15,    39,
+      86,     3,    88,    42,    56,    42,    45,   109,    45,     3,
+       3,   113,    51,     3,    51,    52,    53,     3,    45,    39,
+      51,    39,    39,    40,    50,    42,    50,    41,    45,   131,
+      39,    39,    43,    39,     3,     2,   113,    -1,    54,    54,
+      57,    58,    59,     1,    51,   109,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    -1,    48,    -1,    16,    17,
+      -1,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    29,    -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    56,    -1,
+      -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    47,    -1,    49,    50,    -1,    -1,    -1,    -1,
+      55,    56
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    61,    62,     0,     4,     5,     6,     7,     8,     9,
+       0,    62,    63,     0,     4,     5,     6,     7,     8,     9,
       10,    11,    12,    16,    17,    18,    19,    20,    21,    22,
       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
       33,    34,    35,    36,    37,    38,    47,    49,    50,    55,
-      56,    63,    66,    67,    69,    72,    73,    71,    70,    51,
-      39,    45,     3,    45,    91,     3,    54,    54,     3,    39,
-       3,     3,     3,     3,     3,     3,    42,    45,    93,    95,
-      96,     1,    46,    66,    83,    84,    85,    94,    64,    45,
-      68,    39,    51,    74,    51,    81,    82,    93,    82,    77,
-      95,    39,     3,    39,    45,    92,    50,    50,    47,    84,
-      97,    41,    90,    39,    65,    39,    51,    52,    53,    78,
-      79,    80,    95,    75,    76,    95,    81,    54,    96,    95,
-      43,    86,    39,    79,    76,    54,    96,    87,    88,    48,
-      50,    13,    14,    15,    39,    40,    57,    58,    95,    88,
-      95,    54,    51,    90,    89,    90,    88,    59
+      56,    64,    67,    68,    70,    73,    74,    72,    71,    51,
+      39,    45,     3,    45,    92,     3,    54,    54,     3,    39,
+       3,     3,     3,     3,     3,     3,    42,    45,    94,    96,
+      97,     1,    46,    67,    84,    85,    86,    95,    65,    45,
+      69,    39,    51,    75,    51,    82,    83,    94,    83,    78,
+      96,    39,     3,    39,    45,    93,    50,    50,    47,    85,
+      98,    41,    91,    39,    66,    39,    51,    52,    53,    79,
+      80,    81,    96,    76,    77,    96,    82,    54,    97,    96,
+      43,    87,    39,    80,    77,    54,    97,    88,    89,    48,
+      50,    13,    14,    15,    39,    40,    57,    58,    59,    96,
+      89,    96,    54,    51,    91,    90,    91,    89,    60
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    60,    61,    62,    62,    63,    63,    63,    63,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      63,    63,    64,    63,    63,    63,    63,    63,    63,    63,
-      65,    65,    66,    66,    66,    66,    66,    66,    66,    66,
-      67,    67,    68,    68,    66,    70,    69,    71,    69,    69,
-      72,    73,    73,    73,    73,    74,    74,    75,    75,    76,
-      76,    77,    77,    78,    78,    79,    79,    80,    80,    80,
-      81,    81,    81,    81,    81,    82,    82,    83,    83,    84,
-      84,    84,    86,    85,    87,    87,    87,    88,    88,    88,
-      88,    88,    88,    88,    88,    89,    88,    90,    90,    91,
-      91,    92,    92,    92,    92,    93,    93,    94,    95,    95,
-      96,    97,    97
+       0,    61,    62,    63,    63,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
+      64,    64,    65,    64,    64,    64,    64,    64,    64,    64,
+      66,    66,    67,    67,    67,    67,    67,    67,    67,    67,
+      68,    68,    69,    69,    67,    71,    70,    72,    70,    70,
+      73,    74,    74,    74,    74,    75,    75,    76,    76,    77,
+      77,    78,    78,    79,    79,    80,    80,    81,    81,    81,
+      82,    82,    82,    82,    82,    83,    83,    84,    84,    85,
+      85,    85,    87,    86,    88,    88,    88,    89,    89,    89,
+      89,    89,    89,    89,    89,    90,    89,    89,    91,    91,
+      92,    92,    93,    93,    93,    93,    94,    94,    95,    96,
+      96,    97,    98,    98
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -875,9 +884,9 @@ static const yytype_uint8 yyr2[] =
        2,     1,     2,     1,     2,     1,     1,     1,     1,     1,
        1,     1,     2,     2,     3,     1,     2,     1,     2,     1,
        2,     2,     0,     4,     1,     3,     2,     0,     3,     3,
-       2,     2,     3,     3,     3,     0,     5,     0,     1,     1,
-       1,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     2
+       2,     2,     3,     3,     3,     0,     5,     2,     0,     1,
+       1,     1,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     2
 };
 
 
@@ -1035,73 +1044,73 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
           case 3: /* "string"  */
 #line 215 "src/parse-gram.y" /* yacc.c:684  */
       { fputs (quotearg_style (c_quoting_style, ((*yyvaluep).code)), yyo); }
-#line 1039 "src/parse-gram.c" /* yacc.c:684  */
+#line 1048 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 23: /* "%<flag>"  */
 #line 223 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%%%s", ((*yyvaluep).uniqstr)); }
-#line 1045 "src/parse-gram.c" /* yacc.c:684  */
+#line 1054 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 39: /* "{...}"  */
 #line 216 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1051 "src/parse-gram.c" /* yacc.c:684  */
+#line 1060 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 40: /* "%?{...}"  */
 #line 216 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1057 "src/parse-gram.c" /* yacc.c:684  */
+#line 1066 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 41: /* "[identifier]"  */
 #line 221 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "[%s]", ((*yyvaluep).uniqstr)); }
-#line 1063 "src/parse-gram.c" /* yacc.c:684  */
+#line 1072 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 42: /* "char"  */
 #line 211 "src/parse-gram.y" /* yacc.c:684  */
       { fputs (char_name (((*yyvaluep).character)), yyo); }
-#line 1069 "src/parse-gram.c" /* yacc.c:684  */
+#line 1078 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 43: /* "epilogue"  */
 #line 216 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1075 "src/parse-gram.c" /* yacc.c:684  */
+#line 1084 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 45: /* "identifier"  */
 #line 220 "src/parse-gram.y" /* yacc.c:684  */
       { fputs (((*yyvaluep).uniqstr), yyo); }
-#line 1081 "src/parse-gram.c" /* yacc.c:684  */
+#line 1090 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 46: /* "identifier:"  */
 #line 222 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s:", ((*yyvaluep).uniqstr)); }
-#line 1087 "src/parse-gram.c" /* yacc.c:684  */
+#line 1096 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 49: /* "%{...%}"  */
 #line 216 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "{\n%s\n}", ((*yyvaluep).code)); }
-#line 1093 "src/parse-gram.c" /* yacc.c:684  */
+#line 1102 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 51: /* "<tag>"  */
 #line 224 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "<%s>", ((*yyvaluep).uniqstr)); }
-#line 1099 "src/parse-gram.c" /* yacc.c:684  */
+#line 1108 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 54: /* "integer"  */
 #line 228 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%d", ((*yyvaluep).integer)); }
-#line 1105 "src/parse-gram.c" /* yacc.c:684  */
+#line 1114 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
     case 55: /* "%param"  */
@@ -1118,35 +1127,35 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
       case param_none: aver (false); break;
     }
 }
-#line 1122 "src/parse-gram.c" /* yacc.c:684  */
+#line 1131 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 67: /* code_props_type  */
+    case 68: /* code_props_type  */
 #line 566 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", code_props_type_string (((*yyvaluep).code_type))); }
-#line 1128 "src/parse-gram.c" /* yacc.c:684  */
+#line 1137 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 76: /* symbol.prec  */
+    case 77: /* symbol.prec  */
 #line 232 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1134 "src/parse-gram.c" /* yacc.c:684  */
+#line 1143 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 80: /* tag  */
+    case 81: /* tag  */
 #line 224 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "<%s>", ((*yyvaluep).uniqstr)); }
-#line 1140 "src/parse-gram.c" /* yacc.c:684  */
+#line 1149 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 91: /* variable  */
+    case 92: /* variable  */
 #line 220 "src/parse-gram.y" /* yacc.c:684  */
       { fputs (((*yyvaluep).uniqstr), yyo); }
-#line 1146 "src/parse-gram.c" /* yacc.c:684  */
+#line 1155 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 92: /* value  */
-#line 910 "src/parse-gram.y" /* yacc.c:684  */
+    case 93: /* value  */
+#line 917 "src/parse-gram.y" /* yacc.c:684  */
       {
   switch (((*yyvaluep).value).kind)
     {
@@ -1155,31 +1164,31 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue
     case muscle_string:  fprintf (yyo, "\"%s\"", ((*yyvaluep).value).chars); break;
     }
 }
-#line 1159 "src/parse-gram.c" /* yacc.c:684  */
+#line 1168 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 93: /* id  */
+    case 94: /* id  */
 #line 232 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1165 "src/parse-gram.c" /* yacc.c:684  */
+#line 1174 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 94: /* id_colon  */
+    case 95: /* id_colon  */
 #line 233 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s:", ((*yyvaluep).symbol)->tag); }
-#line 1171 "src/parse-gram.c" /* yacc.c:684  */
+#line 1180 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 95: /* symbol  */
+    case 96: /* symbol  */
 #line 232 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1177 "src/parse-gram.c" /* yacc.c:684  */
+#line 1186 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
-    case 96: /* string_as_id  */
+    case 97: /* string_as_id  */
 #line 232 "src/parse-gram.y" /* yacc.c:684  */
       { fprintf (yyo, "%s", ((*yyvaluep).symbol)->tag); }
-#line 1183 "src/parse-gram.c" /* yacc.c:684  */
+#line 1192 "src/parse-gram.c" /* yacc.c:684  */
         break;
 
 
@@ -1882,7 +1891,7 @@ YYLTYPE yylloc = yyloc_default;
   boundary_set (&yylloc.end, current_file, 1, 1);
 }
 
-#line 1886 "src/parse-gram.c" /* yacc.c:1430  */
+#line 1895 "src/parse-gram.c" /* yacc.c:1430  */
   yylsp[0] = yylloc;
   goto yysetstate;
 
@@ -2095,7 +2104,7 @@ yyreduce:
  insert_after(0, "</AST_Section1>");
  insert_before(0, "<AST_Section1>");
  }
-#line 2088 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2097 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 3:
@@ -2110,7 +2119,7 @@ yyreduce:
  gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
  gram_piece[gram_piece2 - 1] = temp;
  }
-#line 2103 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2112 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 6:
@@ -2126,7 +2135,7 @@ yyreduce:
  free(gram_piece[gram_piece2]);
  gram_piece[gram_piece2] = strdup(code_piece[code_piece0 - 1]);
     }
-#line 2119 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2128 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 7:
@@ -2148,7 +2157,7 @@ yyreduce:
  else
   abort();
     }
-#line 2141 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2150 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 8:
@@ -2159,7 +2168,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Define>");
  insert_before(0, "<AST_Section1_Define>");
     }
-#line 2152 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2161 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 9:
@@ -2168,7 +2177,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_Defines>");
  insert_before(0, "<AST_Section1_Defines>");
  }
-#line 2161 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2170 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 10:
@@ -2179,7 +2188,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_Defines>");
  insert_before(0, "<AST_Section1_Defines>");
     }
-#line 2172 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2181 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 11:
@@ -2191,7 +2200,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_ErrorVerbose>");
  insert_before(0, "<AST_Section1_ErrorVerbose>");
     }
-#line 2184 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2193 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 12:
@@ -2201,7 +2210,7 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_Section1_Expect value=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
  }
-#line 2194 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2203 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 13:
@@ -2211,7 +2220,7 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_Section1_ExpectRR value=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
  }
-#line 2204 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2213 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 14:
@@ -2220,7 +2229,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_FilePrefix>");
  insert_before(0, "<AST_Section1_FilePrefix>");
  }
-#line 2213 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2222 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 15:
@@ -2231,7 +2240,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_GLRParser>");
  insert_before(0, "<AST_Section1_GLRParser>");
     }
-#line 2224 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2233 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 16:
@@ -2248,7 +2257,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_InitialAction>");
  insert_before(0, "<AST_Section1_InitialAction>");
     }
-#line 2241 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2250 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 17:
@@ -2257,7 +2266,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_Language>");
  insert_before(0, "<AST_Section1_Language>");
  }
-#line 2250 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2259 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 18:
@@ -2266,7 +2275,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_NamePrefix>");
  insert_before(0, "<AST_Section1_NamePrefix>");
  }
-#line 2259 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2268 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 19:
@@ -2275,7 +2284,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_Lines>");
  insert_before(0, "<AST_Section1_Lines value=\"false\">");
  }
-#line 2268 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2277 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 20:
@@ -2284,7 +2293,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_NonDeterministicParser>");
  insert_before(0, "<AST_Section1_NonDeterministicParser>");
  }
-#line 2277 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2286 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 21:
@@ -2293,13 +2302,13 @@ yyreduce:
  insert_after(1, "</AST_Section1_Output>");
  insert_before(0, "<AST_Section1_Output>");
  }
-#line 2286 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2295 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 22:
 #line 432 "src/parse-gram.y" /* yacc.c:1648  */
     { current_param = (yyvsp[0].param); }
-#line 2292 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2301 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 23:
@@ -2308,7 +2317,7 @@ yyreduce:
  insert_after(2, "</AST_Section1_Param>");
  insert_before(0, "<AST_Section1_Param>");
  }
-#line 2301 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2310 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 24:
@@ -2317,7 +2326,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_Require>");
  insert_before(0, "<AST_Section1_Require>");
  }
-#line 2310 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2319 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 25:
@@ -2347,7 +2356,7 @@ yyreduce:
  insert_after(1, "</AST_Section1_Skeleton>");
  insert_before(0, "<AST_Section1_Skeleton>");
     }
-#line 2340 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2349 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 26:
@@ -2356,7 +2365,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_TokenTable>");
  insert_before(0, "<AST_Section1_TokenTable>");
  }
-#line 2349 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2358 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 27:
@@ -2365,7 +2374,7 @@ yyreduce:
  insert_after(0, "</AST_Section1_Verbose>");
  insert_before(0, "<AST_Section1_Verbose>");
  }
-#line 2358 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2367 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 28:
@@ -2374,19 +2383,19 @@ yyreduce:
  insert_after(0, "</AST_Section1_YACC>");
  insert_before(0, "<AST_Section1_YACC>");
  }
-#line 2367 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2376 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 30:
 #line 482 "src/parse-gram.y" /* yacc.c:1648  */
     { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2373 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2382 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 31:
 #line 483 "src/parse-gram.y" /* yacc.c:1648  */
     { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
-#line 2379 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2388 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 34:
@@ -2398,7 +2407,7 @@ yyreduce:
  insert_before(1, "<AST_SymbolRef>");
  insert_before(0, "<AST_Section1Or2_Start>");
     }
-#line 2391 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2400 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 35:
@@ -2423,7 +2432,7 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_Section1Or2_CodeProps _type=\"%d\">", (yyvsp[-2].code_type));
  insert_before(0, gram_piece_temp);
     }
-#line 2416 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2425 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 36:
@@ -2433,7 +2442,7 @@ yyreduce:
  insert_after(0, "</AST_Section1Or2_DefaultPrec>");
  insert_before(0, "<AST_Section1Or2_DefaultPrec value=\"true\">");
    }
-#line 2426 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2435 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 37:
@@ -2443,7 +2452,7 @@ yyreduce:
  insert_after(0, "</AST_Section1Or2_DefaultPrec>");
  insert_before(0, "<AST_Section1Or2_DefaultPrec>");
     }
-#line 2436 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2445 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 38:
@@ -2462,7 +2471,7 @@ yyreduce:
  insert_after(1, "</AST_Section1Or2_Code>");
  insert_before(0, "<AST_Section1Or2_Code><AST_ID />");
     }
-#line 2455 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2464 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 39:
@@ -2478,25 +2487,25 @@ yyreduce:
  insert_after(2, "</AST_Section1Or2_Code>");
  insert_before(0, "<AST_Section1Or2_Code>");
     }
-#line 2471 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2480 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 40:
 #line 568 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = destructor; }
-#line 2477 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2486 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 41:
 #line 569 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.code_type) = printer; }
-#line 2483 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2492 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 42:
 #line 579 "src/parse-gram.y" /* yacc.c:1648  */
     { insert_before(0, "<AST_ID />"); }
-#line 2489 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2498 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 43:
@@ -2504,7 +2513,7 @@ yyreduce:
     { muscle_percent_define_insert ("api.value.union.name",
                                          (yylsp[0]), muscle_keyword, (yyvsp[0].uniqstr),
                                          MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE); }
-#line 2497 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2506 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 44:
@@ -2521,13 +2530,13 @@ yyreduce:
  insert_after(2, "</AST_Section1Or2_Union>");
  insert_before(0, "<AST_Section1Or2_Union>");
     }
-#line 2514 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2523 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 45:
 #line 605 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = nterm_sym; }
-#line 2520 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2529 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 46:
@@ -2538,13 +2547,13 @@ yyreduce:
  insert_after(2, "</AST_Section1Or2_NTerm>");
  insert_before(0, "<AST_Section1Or2_NTerm>");
     }
-#line 2531 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2540 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 47:
 #line 612 "src/parse-gram.y" /* yacc.c:1648  */
     { current_class = token_sym; }
-#line 2537 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2546 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 48:
@@ -2555,7 +2564,7 @@ yyreduce:
  insert_after(2, "</AST_Section1Or2_Token>");
  insert_before(0, "<AST_Section1Or2_Token>");
     }
-#line 2548 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2557 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 49:
@@ -2569,7 +2578,7 @@ yyreduce:
  insert_after(2, "</AST_Section1Or2_Type>");
  insert_before(0, "<AST_Section1Or2_Type>");
     }
-#line 2562 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2571 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 50:
@@ -2588,55 +2597,55 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_Section1Or2_Precedence _type=\"%d\">", ((yyvsp[-2].assoc) & 3) - 1); /* -1 precedence, 0 right, 1 left, 2 nonassoc */
  insert_before(0, gram_piece_temp);
     }
-#line 2581 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2590 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 51:
 #line 650 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = left_assoc; }
-#line 2587 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2596 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 52:
 #line 651 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = right_assoc;  }
-#line 2593 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2602 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 53:
 #line 652 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = non_assoc; }
-#line 2599 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2608 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 54:
 #line 653 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.assoc) = precedence_assoc; }
-#line 2605 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2614 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 55:
 #line 657 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = NULL; }
-#line 2611 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2620 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 56:
 #line 658 "src/parse-gram.y" /* yacc.c:1648  */
     { current_type = (yyvsp[0].uniqstr); tag_seen = true; }
-#line 2617 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2626 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 57:
 #line 664 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
-#line 2623 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2632 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 58:
 #line 666 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); }
-#line 2629 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2638 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 59:
@@ -2647,7 +2656,7 @@ yyreduce:
  insert_after(0, "</AST_SymbolRef>");
  insert_before(0, "<AST_SymbolRef>");
     }
-#line 2640 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2649 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 60:
@@ -2660,7 +2669,7 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_SymbolRef user_token=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2653 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2662 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 61:
@@ -2669,7 +2678,7 @@ yyreduce:
  insert_after(0, "</AST_SymbolRef>");
  insert_before(0, "<AST_SymbolRef>");
  }
-#line 2662 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2671 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 62:
@@ -2678,19 +2687,19 @@ yyreduce:
  insert_after(1, "</AST_SymbolRef>");
  insert_before(1, "<AST_SymbolRef>");
  }
-#line 2671 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2680 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 63:
 #line 703 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = (yyvsp[0].list); }
-#line 2677 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2686 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 64:
 #line 704 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_append ((yyvsp[-1].list), (yyvsp[0].list)); }
-#line 2683 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2692 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 65:
@@ -2699,25 +2708,25 @@ yyreduce:
  insert_after(0, "</AST_SymbolRef>");
  insert_before(0, "<AST_SymbolRef>");
  }
-#line 2692 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2701 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 66:
 #line 712 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.list) = symbol_list_type_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2698 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2707 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 68:
 #line 717 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ("*"); }
-#line 2704 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2713 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 69:
 #line 718 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new (""); }
-#line 2710 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2719 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 70:
@@ -2726,7 +2735,7 @@ yyreduce:
       current_type = (yyvsp[0].uniqstr);
       tag_seen = true;
     }
-#line 2719 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2728 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 71:
@@ -2737,7 +2746,7 @@ yyreduce:
  insert_after(0, "</AST_SymbolRef>");
  insert_before(0, "<AST_SymbolRef>");
     }
-#line 2730 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2739 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 72:
@@ -2750,7 +2759,7 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_SymbolRef user_token=\"%d\">", (yyvsp[0].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2743 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2752 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 73:
@@ -2762,7 +2771,7 @@ yyreduce:
  insert_after(1, "</AST_SymbolRef>");
  insert_before(0, "<AST_SymbolRef>");
     }
-#line 2755 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2764 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 74:
@@ -2776,7 +2785,7 @@ yyreduce:
  sprintf(gram_piece_temp, "<AST_SymbolRef user_token=\"%d\">", (yyvsp[-1].integer));
  insert_before(0, gram_piece_temp);
     }
-#line 2769 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2778 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 81:
@@ -2784,13 +2793,13 @@ yyreduce:
     {
       yyerrok;
     }
-#line 2777 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2786 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 82:
 #line 792 "src/parse-gram.y" /* yacc.c:1648  */
     { current_lhs ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); }
-#line 2783 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2792 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 83:
@@ -2804,7 +2813,7 @@ yyreduce:
  insert_before(0, "<AST_SymbolRef>");
  insert_before(0, "<AST_Section2_Rules>");
   }
-#line 2797 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2806 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 84:
@@ -2813,7 +2822,7 @@ yyreduce:
  insert_after(0, "</AST_Production>");
  insert_before(0, "<AST_Production>");
  }
-#line 2806 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2815 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 85:
@@ -2822,11 +2831,11 @@ yyreduce:
  insert_after(2, "</AST_Production>");
  insert_before(2, "<AST_Production>");
  }
-#line 2815 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2824 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 87:
-#line 819 "src/parse-gram.y" /* yacc.c:1648  */
+#line 821 "src/parse-gram.y" /* yacc.c:1648  */
     {
  /* Nick extra rules for element groups */
  if (nested_rhs)
@@ -2843,21 +2852,21 @@ yyreduce:
  gram_piece[gram_piece2] = gram_piece[gram_piece2 - 1]; /* empty */
  gram_piece[gram_piece2 - 1] = temp;
  }
-#line 2836 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2845 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 88:
-#line 836 "src/parse-gram.y" /* yacc.c:1648  */
+#line 838 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_symbol_append ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); /*}*/
  insert_after(2, "</AST_Production_SymbolRef>");
  insert_after(1, "</AST_SymbolRef>");
  insert_before(1, "<AST_Production_SymbolRef><AST_SymbolRef>");
  }
-#line 2846 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2855 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 89:
-#line 842 "src/parse-gram.y" /* yacc.c:1648  */
+#line 844 "src/parse-gram.y" /* yacc.c:1648  */
     { /* should be BracedCode, but too hard to put AST_Text inside braces */ code_piece_append("<AST_Text>"); grammar_current_rule_action_append ((yyvsp[-1].code), (yylsp[-1]), (yyvsp[0].named_ref), false); /*}*/
  code_piece_append("</AST_Text>");
  code_piece_pack();
@@ -2866,144 +2875,153 @@ yyreduce:
  insert_after(2, "</AST_Production_Action>");
  insert_before(1, "<AST_Production_Action>");
  }
-#line 2859 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2868 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 90:
-#line 851 "src/parse-gram.y" /* yacc.c:1648  */
+#line 853 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_action_append ((yyvsp[0].code), (yylsp[0]), NULL, true); }
-#line 2865 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2874 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 91:
-#line 853 "src/parse-gram.y" /* yacc.c:1648  */
+#line 855 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_empty_set ((yylsp[0])); /*}*/
  insert_after(1, "</AST_Production_Empty>");
  insert_before(1, "<AST_Production_Empty>");
  }
-#line 2874 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2883 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 92:
-#line 858 "src/parse-gram.y" /* yacc.c:1648  */
+#line 860 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); /*}*/
  insert_after(2, "</AST_Production_Prec>");
  insert_after(2, "</AST_SymbolRef>");
  insert_before(2, "<AST_SymbolRef>");
  insert_before(1, "<AST_Production_Prec>");
  }
-#line 2885 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2894 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 93:
-#line 865 "src/parse-gram.y" /* yacc.c:1648  */
+#line 867 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); /*}*/
  insert_after(2, "</AST_Production_DPrec>");
  sprintf(gram_piece_temp, "<AST_Production_DPrec value=\"%d\">", (yyvsp[0].integer));
  insert_before(1, gram_piece_temp);
  }
-#line 2895 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2904 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 94:
-#line 871 "src/parse-gram.y" /* yacc.c:1648  */
+#line 873 "src/parse-gram.y" /* yacc.c:1648  */
     { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); /*}*/
  insert_after(2, "</AST_Production_Merge>");
  insert_before(1, "<AST_Production_Merge>");
  }
-#line 2904 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2913 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 95:
-#line 876 "src/parse-gram.y" /* yacc.c:1648  */
+#line 878 "src/parse-gram.y" /* yacc.c:1648  */
     { ++nested_rhs; }
-#line 2910 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2919 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 96:
-#line 876 "src/parse-gram.y" /* yacc.c:1648  */
+#line 878 "src/parse-gram.y" /* yacc.c:1648  */
     {
  insert_after(3, "</AST_Production_GroupElement>");
  insert_before(1, "<AST_Production_GroupElement>");
  }
-#line 2919 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2928 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 97:
 #line 883 "src/parse-gram.y" /* yacc.c:1648  */
-    { (yyval.named_ref) = 0; }
-#line 2925 "src/parse-gram.c" /* yacc.c:1648  */
+    {
+ insert_after(1, "</AST_Production_Space>");
+ insert_before(1, "<AST_Production_Space>");
+ }
+#line 2937 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
   case 98:
-#line 884 "src/parse-gram.y" /* yacc.c:1648  */
+#line 890 "src/parse-gram.y" /* yacc.c:1648  */
+    { (yyval.named_ref) = 0; }
+#line 2943 "src/parse-gram.c" /* yacc.c:1648  */
+    break;
+
+  case 99:
+#line 891 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.named_ref) = named_ref_new ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2931 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2949 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 100:
-#line 895 "src/parse-gram.y" /* yacc.c:1648  */
+  case 101:
+#line 902 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[0].code)); }
-#line 2937 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2955 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 101:
-#line 920 "src/parse-gram.y" /* yacc.c:1648  */
+  case 102:
+#line 927 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = ""; }
-#line 2943 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2961 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 102:
-#line 921 "src/parse-gram.y" /* yacc.c:1648  */
+  case 103:
+#line 928 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_keyword; (yyval.value).chars = (yyvsp[0].uniqstr); }
-#line 2949 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2967 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 103:
-#line 922 "src/parse-gram.y" /* yacc.c:1648  */
+  case 104:
+#line 929 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_string;  (yyval.value).chars = (yyvsp[0].code); }
-#line 2955 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2973 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 104:
-#line 923 "src/parse-gram.y" /* yacc.c:1648  */
+  case 105:
+#line 930 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.value).kind = muscle_code;    (yyval.value).chars = strip_braces ((yyvsp[0].code)); }
-#line 2961 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2979 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 105:
-#line 936 "src/parse-gram.y" /* yacc.c:1648  */
+  case 106:
+#line 943 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2967 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2985 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 106:
-#line 938 "src/parse-gram.y" /* yacc.c:1648  */
+  case 107:
+#line 945 "src/parse-gram.y" /* yacc.c:1648  */
     {
       (yyval.symbol) = symbol_get (char_name ((yyvsp[0].character)), (yylsp[0]));
       symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]), false);
       symbol_user_token_number_set ((yyval.symbol), (yyvsp[0].character), (yylsp[0]));
     }
-#line 2977 "src/parse-gram.c" /* yacc.c:1648  */
+#line 2995 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 107:
-#line 946 "src/parse-gram.y" /* yacc.c:1648  */
+  case 108:
+#line 953 "src/parse-gram.y" /* yacc.c:1648  */
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
-#line 2983 "src/parse-gram.c" /* yacc.c:1648  */
+#line 3001 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 110:
-#line 958 "src/parse-gram.y" /* yacc.c:1648  */
+  case 111:
+#line 965 "src/parse-gram.y" /* yacc.c:1648  */
     {
       (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].code)), (yylsp[0]));
       symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]), false);
     }
-#line 2992 "src/parse-gram.c" /* yacc.c:1648  */
+#line 3010 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
-  case 112:
-#line 967 "src/parse-gram.y" /* yacc.c:1648  */
+  case 113:
+#line 974 "src/parse-gram.y" /* yacc.c:1648  */
     {
 #if 0
  int gram_piece0_save = gram_piece0, gram_piece1_save = gram_piece1;
@@ -3024,11 +3042,11 @@ yyreduce:
  insert_after(1, "</AST_Section3>");
  insert_after(0, "<AST_Section3>");
     }
-#line 3017 "src/parse-gram.c" /* yacc.c:1648  */
+#line 3035 "src/parse-gram.c" /* yacc.c:1648  */
     break;
 
 
-#line 3021 "src/parse-gram.c" /* yacc.c:1648  */
+#line 3039 "src/parse-gram.c" /* yacc.c:1648  */
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3291,7 +3309,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 989 "src/parse-gram.y" /* yacc.c:1907  */
+#line 996 "src/parse-gram.y" /* yacc.c:1907  */
 
 
 /* Return the location of the left-hand side of a rule whose
index 3677998..0fec12b 100644 (file)
@@ -61,7 +61,7 @@ extern int gram_debug;
     param_parse  = 1 << 1,
     param_both   = param_lex | param_parse
   } param_type;
-#line 899 "src/parse-gram.y" /* yacc.c:1910  */
+#line 906 "src/parse-gram.y" /* yacc.c:1910  */
 #include "muscle-tab.h"
 
 #line 68 "src/parse-gram.h" /* yacc.c:1910  */
@@ -126,7 +126,8 @@ extern int gram_debug;
     INT = 309,
     PERCENT_PARAM = 310,
     PERCENT_UNION = 311,
-    PERCENT_EMPTY = 312
+    PERCENT_EMPTY = 312,
+    PERCENT_SPACE = 313
   };
 #endif
 
@@ -155,7 +156,7 @@ named_ref *named_ref;
 param_type param;
 #line 565 "src/parse-gram.y" /* yacc.c:1910  */
 code_props_type code_type;
-#line 901 "src/parse-gram.y" /* yacc.c:1910  */
+#line 908 "src/parse-gram.y" /* yacc.c:1910  */
 
   struct
   {
@@ -163,7 +164,7 @@ code_props_type code_type;
     muscle_kind kind;
   } value;
 
-#line 167 "src/parse-gram.h" /* yacc.c:1910  */
+#line 168 "src/parse-gram.h" /* yacc.c:1910  */
 };
 
 typedef union GRAM_STYPE GRAM_STYPE;
index c9cb7c1..162143d 100644 (file)
@@ -814,6 +814,8 @@ rhses.1:
 ;
 
 %token PERCENT_EMPTY "%empty";
+/* Nick added %space */
+%token PERCENT_SPACE "%space";
 rhs:
   %empty
     {
@@ -877,6 +879,11 @@ rhs:
  insert_after(3, "</AST_Production_GroupElement>");
  insert_before(1, "<AST_Production_GroupElement>");
  }
+/* Nick added %space */
+| rhs "%space" {
+ insert_after(1, "</AST_Production_Space>");
+ insert_before(1, "<AST_Production_Space>");
+ }
 ;
 
 named_ref.opt:
index c66f7e5..35255d8 100644 (file)
@@ -482,8 +482,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        (yy_c_buf_p) = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 133
-#define YY_END_OF_BUFFER 134
+#define YY_NUM_RULES 134
+#define YY_END_OF_BUFFER 135
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -491,72 +491,72 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[587] =
+static yyconst flex_int16_t yy_accept[591] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   95,   95,  115,  115,  115,  115,    0,    0,
-        0,    0,    0,    0,  134,   82,    2,    2,   71,   82,
-       70,   82,   76,   82,    1,   66,   82,   67,   67,   65,
-       79,   63,   66,   81,   73,   64,   82,   92,   92,  131,
-       97,   96,  131,   83,   99,   98,   86,    2,    1,   86,
-       85,   84,   86,  101,  101,  102,  100,   83,  132,  121,
-      131,  120,  131,  131,  131,  124,  127,  128,  131,   94,
-      131,  119,  118,  131,  117,  116,   89,    2,    1,   87,
-
-       89,   89,   88,   89,   90,    2,    1,   90,   90,  129,
-       82,   80,   62,    0,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   72,   82,   66,   66,    4,    3,   69,   67,
-       69,    0,   78,    0,   91,  114,  112,  103,  114,  105,
-      106,  107,  108,  109,  110,  114,  111,  114,  101,  101,
-      102,  130,  122,  123,    0,  125,    0,  124,  126,    0,
-       93,    0,    0,   95,  115,  115,  115,  115,   89,   87,
-       62,    0,   74,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,    0,    3,   69,   68,   77,    0,
-      103,    0,    0,  104,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   75,    0,  103,    0,    0,
-       62,    7,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   23,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       36,   62,   62,   62,   62,   62,   62,   44,   62,   47,
-       62,   62,   50,    0,    0,    0,   62,    8,   62,   62,
-       62,   13,   14,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   26,   62,   62,   62,   62,   62,   62,   62,
-       62,   32,   62,   34,   62,   62,   62,   62,   62,   62,
-       41,   62,   43,   45,   48,   62,    0,    0,  113,    6,
-       62,   10,   62,   62,   62,   16,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   33,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   62,   62,    0,   62,   11,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,    0,   59,   62,
-       62,   38,   62,   62,   40,   62,   62,   62,   49,    5,
-        0,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   22,   62,   62,   62,   62,   62,   29,
-       62,   58,   30,   62,   62,   62,   62,   62,   42,   62,
-       62,    0,   62,   62,   62,   62,   62,   17,   53,   62,
-       62,   62,   62,   62,   24,   25,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,    0,    0,   62,
-
-       62,   12,   62,   62,   62,   62,   62,   21,   62,   62,
-       62,   62,   62,   62,   62,   37,   62,   62,   62,   62,
-       62,   62,   62,   62,   18,   62,   62,   62,   27,   56,
-       62,   62,   62,   35,   39,   60,   46,   61,    9,   51,
-       62,   62,    0,   54,   62,   62,   62,    0,   56,   62,
-       62,   62,   15,   52,   62,   62,   62,   62,   62,   62,
-       62,   62,   20,   62,   62,   62,   62,   62,   28,   57,
-       62,   62,   62,   62,   62,   62,   62,   19,   55,   62,
-       62,   62,   62,   62,   31,    0
+        0,    0,   96,   96,  116,  116,  116,  116,    0,    0,
+        0,    0,    0,    0,  135,   83,    2,    2,   72,   83,
+       71,   83,   77,   83,    1,   67,   83,   68,   68,   66,
+       80,   64,   67,   82,   74,   65,   83,   93,   93,  132,
+       98,   97,  132,   84,  100,   99,   87,    2,    1,   87,
+       86,   85,   87,  102,  102,  103,  101,   84,  133,  122,
+      132,  121,  132,  132,  132,  125,  128,  129,  132,   95,
+      132,  120,  119,  132,  118,  117,   90,    2,    1,   88,
+
+       90,   90,   89,   90,   91,    2,    1,   91,   91,  130,
+       83,   81,   63,    0,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   73,   83,   67,   67,    4,    3,   70,   68,
+       70,    0,   79,    0,   92,  115,  113,  104,  115,  106,
+      107,  108,  109,  110,  111,  115,  112,  115,  102,  102,
+      103,  131,  123,  124,    0,  126,    0,  125,  127,    0,
+       94,    0,    0,   96,  116,  116,  116,  116,   90,   88,
+       63,    0,   75,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,    0,    3,   70,   69,   78,
+        0,  104,    0,    0,  105,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   76,    0,  104,
+        0,    0,   63,    7,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   23,   63,   63,
+
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   36,   63,   63,   63,   63,   63,   63,   63,
+       45,   63,   48,   63,   63,   51,    0,    0,    0,   63,
+        8,   63,   63,   63,   13,   14,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   26,   63,   63,   63,   63,
+       63,   63,   63,   63,   32,   63,   34,   63,   63,   63,
+       63,   63,   63,   41,   63,   43,   44,   46,   49,   63,
+        0,    0,  114,    6,   63,   10,   63,   63,   63,   16,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   33,   63,   63,   63,
+
+       63,   63,   63,   63,   63,   63,   63,    0,   63,   11,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+       63,    0,   60,   63,   63,   38,   63,   63,   40,   63,
+       63,   63,   50,    5,    0,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   63,   22,   63,   63,
+       63,   63,   63,   29,   63,   59,   30,   63,   63,   63,
+       63,   63,   42,   63,   63,    0,   63,   63,   63,   63,
+       63,   17,   54,   63,   63,   63,   63,   63,   24,   25,
+       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
+
+       63,    0,    0,   63,   63,   12,   63,   63,   63,   63,
+       63,   21,   63,   63,   63,   63,   63,   63,   63,   37,
+       63,   63,   63,   63,   63,   63,   63,   63,   18,   63,
+       63,   63,   27,   57,   63,   63,   63,   35,   39,   61,
+       47,   62,    9,   52,   63,   63,    0,   55,   63,   63,
+       63,    0,   57,   63,   63,   63,   15,   53,   63,   63,
+       63,   63,   63,   63,   63,   63,   20,   63,   63,   63,
+       63,   63,   28,   58,   63,   63,   63,   63,   63,   63,
+       63,   19,   56,   63,   63,   63,   63,   63,   31,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -602,151 +602,151 @@ static yyconst flex_int32_t yy_meta[62] =
         1
     } ;
 
-static yyconst flex_int16_t yy_base[613] =
+static yyconst flex_int16_t yy_base[617] =
     {   0,
-        0, 1034, 1028, 1027,   59,   60,   61,   64,   66,   82,
+        0, 1038, 1032, 1031,   59,   60,   61,   64,   66,   82,
        66,   85,  102,  120,  129,  141,  149,  150,  161,  170,
-       69,   71,   72,   74,  109,  111,  130,  139,  230, 1031,
-      191,  195,  289,  293, 1037,    0, 1042, 1042, 1042,  346,
-     1042, 1011,    0, 1042, 1042,  404,  118,  289,  163, 1042,
-      107, 1042,  465, 1042, 1042, 1042,  990, 1042, 1018, 1042,
-     1042, 1042,  521, 1042, 1042, 1042, 1042, 1042, 1042,  156,
-     1042, 1042,  988, 1018,  160, 1009, 1042, 1016, 1042, 1042,
-      969, 1042,  193,   92,  153, 1042, 1042, 1042,   62, 1042,
-       98, 1042, 1042,  311, 1042, 1042,    0, 1042,    0,    0,
-
-      179, 1042, 1042,  983, 1042, 1042, 1042,  194,  982, 1042,
-        0, 1042,    0,  319,  983,  977,  164,  166,  981,  978,
-      975,  179,  982,  275,  966,  282,  177,  171,  255,  972,
-      979,  982, 1042,  989,  577,    0, 1042,    0,    0,  308,
-      622,  991, 1042,  971, 1042, 1042, 1042,  312,    0, 1042,
-     1042, 1042, 1042, 1042, 1042,    0, 1042,    0,  999,  317,
-      990, 1042, 1042, 1042,  332, 1042,  337, 1042, 1042,  353,
-     1042,  357,  361,  979, 1042,  365,  978,  404,    0,    0,
-        0,  420, 1042,  962,  970,  376,  956,  957,  954,  955,
-      248,  952,  959,  954,  292,  963,  948,  952,  396,  958,
-
-      943,  944,  307,  943,  943,  951,  952,  955,  938,  944,
-      938,  943,  934,  947,  925,    0,    0,    0, 1042,  935,
-      361,    0,    0,    0,  429,  401,  436,  320,  442,  418,
-      446,  426,  450,  454,  458,  465,  432,  946,  941,  925,
-      322,  925,  938,  923,  927,  935,  934,  933,  957,  917,
-      928,  915,  953,  931,  924,  925,  382,  435,  188,  912,
-      913,  419,  924,  913,  920,  904,  915,  911,  904,  908,
-      914,  913,  903,  914,  912, 1042,  909, 1042,    0,    0,
-      896,    0,  905,  891,  897,  892,  905,  884,  889,  902,
-      924,  899,  887,  892,  880,    0,  884,  879,  892,  126,
-
-      891,  886,  889,  884,  874,  886,  878,  869,  876,  882,
-      881,  866,  286,  875,  864,  877,  862,    0,  867,    0,
-      866,  864,    0,  906,    0,    0,  853,    0,  864,  869,
-      853,    0,    0,  304,  853,  856,  448,  869,  868,  867,
-      866,  857,    0,  850,  849,  857,  849,  855,  847,  841,
-      839,    0,  838,    0,  876,  851,  849,  838,  837,  834,
-        0,  831,    0,  460,    0,  831,  469,    0, 1042,    0,
-      829,  829,  843,  824,  823,  465,  826,  828,  827,  823,
-      828,  831,  820,  822,  818,  817,  832,  827,  830,  825,
-      815,  823,  498,  812,  821,  808,  823,  822,  817,  807,
-
-      801,  800,  813,  488,  470,    0,  798,  811,  810,  797,
-      796,  807,  791,  790,  791,  828,  802,  805,  792,  799,
-      798,  782,  783,  780,  781,  795,  780,  506, 1042,  795,
-      782,    0,  777,  776,    0,  779,  790,  789,    0, 1042,
-      817,  773,  764,  761,  746,  742,  737,  732,  741,  727,
-      724,  737,  727,    0,  696,  686,  696,  692,  686,    0,
-      685,    0,    0,  681,  675,  688,  672,  669,    0,  684,
-      683,  650,  604,  603,  602,  616,  615,    0,    0,  607,
-      598,  597,  594,  607,    0,    0,  600,  599,  584,  583,
-      592,  599,  594,  593,  592,  585,  584,  622,  486,  588,
-
-      587,    0,  577,  576,  567,  568,  567,    0,  567,  562,
-      561,  481,  482,  569,  569,    0,  562,  561,  572,  569,
-      570,  569,  553,  552,  520,  550,  537,  546,  529,  560,
-      537,  536,  539,    0,    0,    0,    0,    0,    0,    0,
-      541,  540,  591, 1042,  503,  506,  525,  596, 1042,  520,
-      519,  517,    0,    0,  527,  526,  513,  520,  519,  502,
-      511,  508,    0,  512,  511,  504,  500,  499,    0,    0,
-      505,  502,  497,  521,  476,  467,  469,    0,    0,  479,
-      462,  460,  444,  430,    0, 1042,  662,  673,  684,  695,
-      706,  717,  728,  734,  743,  754,  765,  774,  780,  785,
-
-      794,  801,  470,  439,  414,  362,  222,  183,  181,  147,
-       69,  810
+       69,   71,   72,   74,  109,  111,  130,  139,  230, 1035,
+      191,  195,  289,  293, 1041,    0, 1046, 1046, 1046,  346,
+     1046, 1015,    0, 1046, 1046,  404,  118,  289,  163, 1046,
+      107, 1046,  465, 1046, 1046, 1046,  994, 1046, 1022, 1046,
+     1046, 1046,  521, 1046, 1046, 1046, 1046, 1046, 1046,  156,
+     1046, 1046,  992, 1022,  160, 1013, 1046, 1020, 1046, 1046,
+      973, 1046,  193,   92,  153, 1046, 1046, 1046,   62, 1046,
+       98, 1046, 1046,  311, 1046, 1046,    0, 1046,    0,    0,
+
+      179, 1046, 1046,  987, 1046, 1046, 1046,  194,  986, 1046,
+        0, 1046,    0,  319,  987,  981,  164,  166,  985,  982,
+      979,  179,  986,  275,  970,  282,  177,  276,  255,  976,
+      983,  986, 1046,  993,  577,    0, 1046,    0,    0,  313,
+      622,  995, 1046,  975, 1046, 1046, 1046,  206,    0, 1046,
+     1046, 1046, 1046, 1046, 1046,    0, 1046,    0, 1003,  313,
+      994, 1046, 1046, 1046,  336, 1046,  353, 1046, 1046,  357,
+     1046,  361,  365,  983, 1046,  404,  982,  418,    0,    0,
+        0,  423, 1046,  966,  974,  391,  960,  961,  958,  959,
+      170,  956,  963,  958,  278,  967,  952,  956,  398,  962,
+
+      947,  948,  261,  947,  947,  955,  956,  959,  958,  941,
+      947,  941,  946,  937,  950,  928,    0,    0,    0, 1046,
+      938,  361,    0,    0,    0,  436,  401,  444,  316,  448,
+      408,  452,  310,  456,  465,  475,  481,  431,  949,  944,
+      928,  309,  928,  941,  926,  930,  938,  937,  936,  960,
+      920,  931,  918,  956,  934,  927,  928,  312,  397,  436,
+      915,  916,  421,  927,  916,  923,  907,  918,  914,  921,
+      906,  910,  916,  915,  905,  916,  914, 1046,  911, 1046,
+        0,    0,  898,    0,  907,  893,  899,  894,  907,  886,
+      891,  904,  926,  901,  889,  894,  882,    0,  886,  881,
+
+      894,  126,  893,  888,  891,  886,  876,  888,  880,  871,
+      878,  884,  883,  868,  430,  877,  866,  879,  878,  863,
+        0,  868,    0,  867,  865,    0,  907,    0,    0,  854,
+        0,  865,  870,  854,    0,    0,  448,  854,  857,  465,
+      870,  869,  868,  867,  858,    0,  851,  850,  858,  850,
+      856,  848,  842,  840,    0,  839,    0,  877,  852,  850,
+      839,  838,  835,    0,  832,    0,    0,  473,    0,  832,
+      474,    0, 1046,    0,  830,  830,  844,  825,  824,  474,
+      827,  829,  828,  824,  829,  832,  821,  823,  819,  818,
+      833,  828,  831,  826,  816,  824,  498,  813,  822,  809,
+
+      824,  823,  818,  808,  802,  801,  814,  501,  475,    0,
+      799,  812,  811,  798,  797,  808,  792,  791,  792,  829,
+      803,  806,  793,  800,  799,  783,  784,  781,  782,  796,
+      781,  508, 1046,  796,  783,    0,  778,  777,    0,  780,
+      791,  790,    0, 1046,  818,  774,  773,  765,  758,  746,
+      742,  737,  743,  728,  727,  738,  741,    0,  716,  690,
+      698,  696,  687,    0,  686,    0,    0,  684,  676,  689,
+      673,  672,    0,  685,  684,  713,  605,  604,  603,  617,
+      616,    0,    0,  608,  601,  598,  595,  608,    0,    0,
+      601,  600,  589,  584,  593,  600,  595,  594,  593,  586,
+
+      585,  623,  511,  589,  588,    0,  578,  577,  568,  569,
+      568,    0,  568,  564,  562,  481,  482,  570,  570,    0,
+      564,  562,  573,  572,  571,  570,  554,  553,  520,  551,
+      550,  547,  531,  560,  540,  537,  542,    0,    0,    0,
+        0,    0,    0,    0,  543,  541,  591, 1046,  514,  515,
+      531,  596, 1046,  522,  520,  518,    0,    0,  529,  527,
+      519,  521,  520,  505,  512,  509,    0,  514,  510,  502,
+      499,  497,    0,    0,  504,  501,  498,  518,  453,  442,
+      411,    0,    0,  417,  397,  370,  371,  318,    0, 1046,
+      662,  673,  684,  695,  706,  717,  728,  734,  743,  754,
+
+      765,  774,  780,  785,  794,  801,  358,  339,  328,  286,
+      222,  183,  181,  147,   69,  810
     } ;
 
-static yyconst flex_int16_t yy_def[613] =
+static yyconst flex_int16_t yy_def[617] =
     {   0,
-      586,    1,  587,  587,  588,  588,  588,  588,  589,  589,
-      590,  590,  588,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  588,  588,  588,  588,  586,   29,
-      591,  591,  588,  588,  586,  592,  586,  586,  586,  586,
-      586,  592,  592,  586,  586,  593,  586,  594,  594,  586,
-      586,  586,  593,  586,  586,  586,  592,  586,  586,  586,
-      586,  586,  595,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  596,  596,  586,  586,  596,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  597,  586,  586,  598,  586,  598,  599,
-
-      586,  586,  586,  598,  586,  586,  586,  586,  586,  586,
-      592,  586,  600,  586,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  586,  592,  593,   53,  586,  601,  602,  594,
-      602,  586,  586,  586,  586,  586,  586,  586,  603,  586,
-      586,  586,  586,  586,  586,  604,  586,  605,  596,  596,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  598,  599,
-      600,  586,  586,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  586,  601,  602,  141,  586,  586,
-      586,  606,  607,  605,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  597,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  586,  586,  586,  608,  609,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  586,  610,  611,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  586,  604,  586,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-
-      600,  600,  600,  586,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  586,  586,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  586,
-      586,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  612,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  612,  612,  600,
-
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  586,  586,  600,  600,  600,  586,  586,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,  600,  600,  600,  600,  600,
-      600,  600,  600,  600,  600,    0,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586
+      590,    1,  591,  591,  592,  592,  592,  592,  593,  593,
+      594,  594,  592,  592,  592,  592,  592,  592,  592,  592,
+      592,  592,  592,  592,  592,  592,  592,  592,  590,   29,
+      595,  595,  592,  592,  590,  596,  590,  590,  590,  590,
+      590,  596,  596,  590,  590,  597,  590,  598,  598,  590,
+      590,  590,  597,  590,  590,  590,  596,  590,  590,  590,
+      590,  590,  599,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  600,  600,  590,  590,  600,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  601,  590,  590,  602,  590,  602,  603,
+
+      590,  590,  590,  602,  590,  590,  590,  590,  590,  590,
+      596,  590,  604,  590,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  590,  596,  597,   53,  590,  605,  606,  598,
+      606,  590,  590,  590,  590,  590,  590,  590,  607,  590,
+      590,  590,  590,  590,  590,  608,  590,  609,  600,  600,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  602,  603,
+      604,  590,  590,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  590,  605,  606,  141,  590,
+      590,  590,  610,  611,  609,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  601,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  590,  590,  590,
+      612,  613,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  590,  614,  615,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      590,  608,  590,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+
+      604,  604,  604,  604,  604,  604,  604,  590,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  590,  590,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  590,  590,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  616,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+
+      604,  616,  616,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  590,  590,  604,  604,
+      604,  590,  590,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
+      604,  604,  604,  604,  604,  604,  604,  604,  604,    0,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590
     } ;
 
-static yyconst flex_int16_t yy_nxt[1104] =
+static yyconst flex_int16_t yy_nxt[1108] =
     {   0,
        36,   37,   38,   36,   37,   39,   36,   40,   41,   42,
        43,   44,   45,   36,   46,   47,   48,   49,   49,   36,
@@ -755,124 +755,124 @@ static yyconst flex_int16_t yy_nxt[1104] =
        53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
        53,   53,   53,   53,   53,   53,   53,   55,   56,   44,
        36,   61,   61,   65,   62,   62,   65,   68,   38,   66,
-       68,   79,   66,   79,   90,  369,   90,  171,   69,   75,
+       68,   79,   66,   79,   90,  373,   90,  171,   69,   75,
        89,   70,   89,   68,   38,   71,   68,   76,   73,   77,
        63,   63,   63,  172,   69,   63,   72,   70,   75,  173,
 
       174,   71,  173,   91,   79,   91,   76,   80,   77,   81,
        82,   92,   72,   92,   93,  166,   93,   83,  142,   64,
        64,   64,   79,  167,   64,   80,   78,   81,   82,  137,
-      143,   79,   95,  138,   80,   83,   84,   82,   96,  344,
+      143,   79,   95,  138,   80,   83,   84,   82,   96,  347,
        94,   95,   94,   79,   83,   78,   80,   96,   84,   82,
-       85,   79,   79,  368,   80,   80,   83,   82,   82,  345,
+       85,   79,   79,  372,   80,   80,   83,   82,   82,  348,
       168,   94,   85,   79,   83,   83,   80,  137,   84,   82,
        94,  138,   79,  160,  169,   80,   83,   84,   82,  140,
-      140,  140,   85,  159,  170,   83,   86,  326,   87,  325,
+      140,  140,   85,  159,  170,   83,   86,  329,   87,  328,
       137,   85,  106,   38,  138,  106,  106,   38,   86,  106,
 
        87,  109,  186,  107,  163,  137,  108,  107,  164,  138,
-      108,  188,  187,  194,  207,  205,  189,  195,   86,  206,
-       88,  190,  305,  208,  165,  306,  196,   86,  280,   88,
+      108,  188,  187,  194,  248,  205,  189,  195,   86,  206,
+       88,  190,  222,  222,  165,  249,  196,   86,  282,   88,
        97,   98,   38,   97,   98,   97,   97,   97,   97,   97,
        97,   97,   99,   97,  100,  101,  102,  102,  102,   97,
        97,   97,   97,   97,   97,  100,  100,  100,  100,  100,
        97,   97,  103,  100,  100,  100,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,   97,   97,   97,
-       97,   79,  247,  209,   80,   79,   84,   82,   80,  358,
-
-       84,   82,  210,  248,   83,  140,  140,  140,   83,  198,
-       85,  211,  176,  177,   85,  176,  202,  374,  141,  359,
-      182,  182,  199,  182,  140,  140,  140,  200,  221,  221,
-      160,  252,  203,  225,  226,  204,  225,  375,  227,  228,
-      159,  227,  178,  166,  141,  263,   86,  253,  110,  264,
-       86,  167,  110,  112,  229,  230,  284,  229,  231,  232,
-      113,  231,  173,  174,  285,  173,  234,  177,  279,  234,
-      114,  113,  113,  113,  113,  113,  183,  278,  278,  113,
+       97,   79,  281,  210,   80,   79,   84,   82,   80,  264,
+
+       84,   82,  211,  265,   83,  140,  140,  140,   83,  198,
+       85,  212,  176,  177,   85,  176,  202,  253,  141,  207,
+      182,  182,  199,  182,  208,  171,  160,  200,  209,  140,
+      140,  140,  203,  254,  225,  204,  159,  226,  227,  166,
+      226,  172,  178,  286,  141,  224,   86,  167,  110,  303,
+       86,  287,  110,  112,  228,  229,  304,  228,  230,  231,
+      113,  230,  232,  233,  223,  232,  173,  174,  589,  173,
+      114,  113,  113,  113,  113,  113,  183,  280,  280,  113,
       113,  115,  116,  117,  118,  119,  120,  113,  121,  113,
       122,  123,  124,  125,  126,  113,  127,  128,  129,  130,
 
-      131,  113,  132,  133,  111,  236,  237,  111,  236,  257,
-      111,  240,  163,  111,  111,  241,  164,  135,  135,  301,
-      224,  182,  182,  111,  182,  168,  302,  242,  111,  258,
-      225,  226,  165,  225,  586,  111,  111,  227,  228,  169,
-      227,  171,  259,  229,  230,  223,  229,  231,  232,  170,
-      231,  173,  174,  309,  173,  234,  177,  172,  234,  234,
-      177,  378,  234,  178,  111,  586,  236,  237,  586,  236,
-      310,  586,  303,  401,  586,  586,  222,  183,  410,  304,
-      585,  379,  584,  442,  586,  404,  404,  404,  440,  586,
-      440,  499,  441,  402,  531,  532,  586,  586,  411,  428,
-
-      428,  428,  428,  443,  404,  404,  404,  428,  428,  428,
-      428,  583,  582,  581,  532,  532,  555,  580,  579,  556,
-      429,  543,  543,  543,  543,  586,  147,  578,  429,  147,
-      548,  548,  548,  548,  577,  576,  556,  148,  148,  556,
-      575,  574,  544,  573,  572,  147,  571,  570,  569,  149,
-      568,  549,  147,  567,  566,  150,  151,  565,  564,  563,
-      152,  548,  548,  548,  548,  562,  561,  153,  560,  559,
-      558,  154,  557,  155,  156,  157,  158,  111,  554,  553,
-      111,  552,  549,  111,  551,  550,  111,  111,  547,  546,
-      135,  135,  543,  543,  543,  543,  111,  548,  548,  548,
-
-      548,  111,  545,  542,  541,  540,  539,  538,  111,  111,
-      537,  536,  535,  544,  534,  533,  530,  529,  549,  528,
-      527,  526,  525,  524,  523,  522,  521,  499,  520,  519,
-      518,  517,  516,  515,  514,  513,  512,  111,  218,  218,
-      218,  511,  510,  509,  508,  507,  506,  218,  218,  505,
-      504,  503,  502,  501,  500,  499,  218,  218,  218,  218,
-      218,  218,   58,   58,   58,   58,   58,   58,   58,   58,
+      131,  113,  132,  133,  111,  235,  177,  111,  235,  588,
+      111,  258,  163,  111,  111,  168,  164,  135,  135,  237,
+      238,  587,  237,  111,  182,  182,  241,  182,  111,  169,
+      242,  259,  165,  590,  305,  111,  111,  226,  227,  170,
+      226,  306,  243,  361,  260,  228,  229,  586,  228,  230,
+      231,  585,  230,  232,  233,  311,  232,  173,  174,  584,
+      173,  378,  178,  362,  111,  590,  235,  177,  590,  235,
+      307,  590,  312,  308,  590,  590,  235,  177,  382,  235,
+      183,  379,  237,  238,  590,  237,  405,  414,  446,  590,
+      408,  408,  408,  583,  535,  536,  590,  590,  383,  432,
+
+      432,  432,  432,  444,  582,  445,  406,  415,  447,  432,
+      432,  432,  432,  444,  536,  536,  503,  408,  408,  408,
+      433,  547,  547,  547,  547,  590,  147,  559,  560,  147,
+      433,  581,  552,  552,  552,  552,  580,  148,  148,  579,
+      578,  577,  548,  576,  575,  147,  574,  560,  560,  149,
+      573,  572,  147,  553,  571,  150,  151,  570,  569,  568,
+      152,  552,  552,  552,  552,  567,  566,  153,  565,  564,
+      563,  154,  562,  155,  156,  157,  158,  111,  561,  558,
+      111,  557,  553,  111,  556,  555,  111,  111,  554,  551,
+      135,  135,  547,  547,  547,  547,  111,  552,  552,  552,
+
+      552,  111,  550,  549,  546,  545,  544,  543,  111,  111,
+      542,  541,  540,  548,  539,  538,  537,  534,  553,  533,
+      532,  531,  530,  529,  528,  527,  526,  525,  503,  524,
+      523,  522,  521,  520,  519,  518,  517,  111,  219,  219,
+      219,  516,  515,  514,  513,  512,  511,  219,  219,  510,
+      509,  508,  507,  506,  505,  504,  219,  219,  219,  219,
+      219,  219,   58,   58,   58,   58,   58,   58,   58,   58,
        58,   58,   58,   60,   60,   60,   60,   60,   60,   60,
        60,   60,   60,   60,   67,   67,   67,   67,   67,   67,
        67,   67,   67,   67,   67,   74,   74,   74,   74,   74,
 
        74,   74,   74,   74,   74,   74,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  111,  497,  496,
-      495,  111,  111,  494,  493,  492,  491,  111,  136,  490,
-      489,  488,  136,  136,  136,  487,  136,  486,  136,  139,
-      139,  485,  139,  146,  146,  146,  146,  146,  146,  146,
+      105,  105,  105,  105,  105,  105,  105,  111,  503,  501,
+      500,  111,  111,  499,  498,  497,  496,  111,  136,  495,
+      494,  493,  136,  136,  136,  492,  136,  491,  136,  139,
+      139,  490,  139,  146,  146,  146,  146,  146,  146,  146,
       146,  146,  146,  146,  159,  159,  159,  159,  159,  159,
-      159,  484,  159,  159,  159,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  179,  483,  482,  179,  179,  481,
-      480,  179,  479,  179,  180,  180,  180,  478,  180,  181,
-      181,  181,  477,  181,  216,  216,  476,  216,  216,  216,
-
-      216,  216,  216,  216,  216,  217,  217,  217,  475,  217,
-      498,  498,  474,  498,  498,  498,  498,  498,  498,  498,
-      498,  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,  439,  438,  437,  436,  435,  434,  433,  432,  431,
-      430,  427,  426,  425,  424,  423,  422,  421,  420,  419,
-      418,  417,  416,  415,  414,  413,  412,  409,  408,  407,
-      406,  405,  403,  400,  399,  398,  397,  396,  395,  394,
-      393,  392,  391,  390,  389,  388,  387,  386,  385,  384,
-
-      383,  382,  381,  380,  377,  376,  373,  372,  371,  370,
-      367,  366,  365,  364,  363,  362,  361,  360,  357,  356,
-      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
-      343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
-      333,  332,  331,  330,  329,  328,  327,  324,  323,  322,
-      321,  320,  319,  318,  317,  316,  315,  314,  313,  312,
-      311,  308,  307,  300,  299,  298,  297,  296,  295,  294,
-      293,  292,  291,  290,  289,  288,  287,  286,  283,  282,
-      281,  277,  276,  275,  274,  273,  272,  271,  270,  269,
-      268,  267,  266,  265,  262,  261,  260,  256,  255,  254,
-
-      251,  250,  249,  246,  245,  244,  243,  239,  238,  235,
-      233,  161,  160,  220,  219,  215,  214,  213,  212,  201,
-      197,  193,  192,  191,  185,  184,  144,  144,  162,  160,
-      161,  160,  144,  145,  144,  134,  586,  104,   59,   59,
-       57,   35,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-
-      586,  586,  586
+      159,  489,  159,  159,  159,  175,  175,  175,  175,  175,
+      175,  175,  175,  175,  179,  488,  487,  179,  179,  486,
+      485,  179,  484,  179,  180,  180,  180,  483,  180,  181,
+      181,  181,  482,  181,  217,  217,  481,  217,  217,  217,
+
+      217,  217,  217,  217,  217,  218,  218,  218,  480,  218,
+      502,  502,  479,  502,  502,  502,  502,  502,  502,  502,
+      502,  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,  443,  442,  441,  440,  439,  438,  437,  436,
+      435,  434,  431,  430,  429,  428,  427,  426,  425,  424,
+      423,  422,  421,  420,  419,  418,  417,  416,  413,  412,
+      411,  410,  409,  407,  404,  403,  402,  401,  400,  399,
+      398,  397,  396,  395,  394,  393,  392,  391,  390,  389,
+
+      388,  387,  386,  385,  384,  381,  380,  377,  376,  375,
+      374,  371,  370,  369,  368,  367,  366,  365,  364,  363,
+      360,  359,  358,  357,  356,  355,  354,  353,  352,  351,
+      350,  349,  346,  345,  344,  343,  342,  341,  340,  339,
+      338,  337,  336,  335,  334,  333,  332,  331,  330,  327,
+      326,  325,  324,  323,  322,  321,  320,  319,  318,  317,
+      316,  315,  314,  313,  310,  309,  302,  301,  300,  299,
+      298,  297,  296,  295,  294,  293,  292,  291,  290,  289,
+      288,  285,  284,  283,  279,  278,  277,  276,  275,  274,
+      273,  272,  271,  270,  269,  268,  267,  266,  263,  262,
+
+      261,  257,  256,  255,  252,  251,  250,  247,  246,  245,
+      244,  240,  239,  236,  234,  161,  160,  221,  220,  216,
+      215,  214,  213,  201,  197,  193,  192,  191,  185,  184,
+      144,  144,  162,  160,  161,  160,  144,  145,  144,  134,
+      590,  104,   59,   59,   57,   35,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+
+      590,  590,  590,  590,  590,  590,  590
     } ;
 
-static yyconst flex_int16_t yy_chk[1104] =
+static yyconst flex_int16_t yy_chk[1108] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -881,121 +881,121 @@ static yyconst flex_int16_t yy_chk[1104] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    5,    6,    7,    5,    6,    8,    9,    9,    7,
-        9,   21,    8,   22,   23,  611,   24,   89,    9,   11,
+        9,   21,    8,   22,   23,  615,   24,   89,    9,   11,
        21,    9,   22,   10,   10,    9,   10,   11,   10,   11,
         5,    6,    7,   89,   10,    8,    9,   10,   12,   91,
 
        91,   10,   91,   23,   13,   24,   12,   13,   12,   13,
        13,   25,   10,   26,   25,   84,   26,   13,   51,    5,
         6,    7,   14,   84,    8,   14,   11,   14,   14,   47,
-       51,   15,   27,   47,   15,   14,   15,   15,   27,  300,
+       51,   15,   27,   47,   15,   14,   15,   15,   27,  302,
        25,   28,   26,   16,   15,   12,   16,   28,   16,   16,
-       15,   17,   18,  610,   17,   18,   16,   17,   18,  300,
+       15,   17,   18,  614,   17,   18,   16,   17,   18,  302,
        85,   27,   16,   19,   17,   18,   19,   70,   19,   19,
        28,   70,   20,   75,   85,   20,   19,   20,   20,   49,
-       49,   49,   19,   75,   85,   20,   15,  609,   15,  608,
+       49,   49,   19,   75,   85,   20,   15,  613,   15,  612,
       101,   20,   31,   31,  101,   31,   32,   32,   16,   32,
 
        16,   32,  117,   31,   83,  108,   31,   32,   83,  108,
-       32,  118,  117,  122,  128,  127,  118,  122,   19,  127,
-       19,  118,  259,  128,   83,  259,  122,   20,  607,   20,
+       32,  118,  117,  122,  191,  127,  118,  122,   19,  127,
+       19,  118,  148,  148,   83,  191,  122,   20,  611,   20,
        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
        29,   29,   29,   29,   29,   29,   29,   29,   29,   29,
-       29,   33,  191,  129,   33,   34,   33,   33,   34,  313,
-
-       34,   34,  129,  191,   33,   48,   48,   48,   34,  124,
-       33,  129,   94,   94,   34,   94,  126,  334,   48,  313,
-      114,  114,  124,  114,  140,  140,  140,  124,  148,  148,
-      160,  195,  126,  165,  165,  126,  165,  334,  167,  167,
-      160,  167,   94,  228,   48,  203,   33,  195,   33,  203,
-       34,  228,   34,   40,  170,  170,  241,  170,  172,  172,
-       40,  172,  173,  173,  241,  173,  176,  176,  606,  176,
-       40,   40,   40,   40,   40,   40,  114,  221,  221,   40,
+       29,   33,  610,  129,   33,   34,   33,   33,   34,  203,
+
+       34,   34,  129,  203,   33,   48,   48,   48,   34,  124,
+       33,  129,   94,   94,   34,   94,  126,  195,   48,  128,
+      114,  114,  124,  114,  128,  233,  160,  124,  128,  140,
+      140,  140,  126,  195,  609,  126,  160,  165,  165,  229,
+      165,  233,   94,  242,   48,  608,   33,  229,   33,  258,
+       34,  242,   34,   40,  167,  167,  258,  167,  170,  170,
+       40,  170,  172,  172,  607,  172,  173,  173,  588,  173,
+       40,   40,   40,   40,   40,   40,  114,  222,  222,   40,
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
        40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
 
-       40,   40,   40,   40,   46,  178,  178,   46,  178,  199,
-       46,  186,  226,   46,   46,  186,  226,   46,   46,  257,
-      605,  182,  182,   46,  182,  230,  257,  186,   46,  199,
-      225,  225,  226,  225,  237,   46,   46,  227,  227,  230,
-      227,  232,  199,  229,  229,  604,  229,  231,  231,  230,
-      231,  233,  233,  262,  233,  234,  234,  232,  234,  235,
-      235,  337,  235,  237,   46,   53,  236,  236,   53,  236,
-      262,   53,  258,  364,   53,   53,  603,  182,  376,  258,
-      584,  337,  583,  405,   53,  367,  367,  367,  499,   53,
-      404,  499,  404,  364,  512,  513,   53,   53,  376,  393,
-
-      393,  393,  393,  405,  404,  404,  404,  428,  428,  428,
-      428,  582,  581,  580,  512,  513,  545,  577,  576,  546,
-      393,  525,  525,  525,  525,   53,   63,  575,  428,   63,
-      529,  529,  529,  529,  574,  573,  545,   63,   63,  546,
-      572,  571,  525,  568,  567,   63,  566,  565,  564,   63,
-      562,  529,   63,  561,  560,   63,   63,  559,  558,  557,
-       63,  530,  530,  530,  530,  556,  555,   63,  552,  551,
-      550,   63,  547,   63,   63,   63,   63,  135,  542,  541,
-      135,  533,  530,  135,  532,  531,  135,  135,  528,  527,
-      135,  135,  543,  543,  543,  543,  135,  548,  548,  548,
-
-      548,  135,  526,  524,  523,  522,  521,  520,  135,  135,
-      519,  518,  517,  543,  515,  514,  511,  510,  548,  509,
-      507,  506,  505,  504,  503,  501,  500,  498,  497,  496,
-      495,  494,  493,  492,  491,  490,  489,  135,  141,  141,
-      141,  488,  487,  484,  483,  482,  481,  141,  141,  480,
-      477,  476,  475,  474,  473,  472,  141,  141,  141,  141,
-      141,  141,  587,  587,  587,  587,  587,  587,  587,  587,
-      587,  587,  587,  588,  588,  588,  588,  588,  588,  588,
-      588,  588,  588,  588,  589,  589,  589,  589,  589,  589,
-      589,  589,  589,  589,  589,  590,  590,  590,  590,  590,
-
-      590,  590,  590,  590,  590,  590,  591,  591,  591,  591,
-      591,  591,  591,  591,  591,  591,  591,  592,  471,  470,
-      468,  592,  592,  467,  466,  465,  464,  592,  593,  461,
-      459,  458,  593,  593,  593,  457,  593,  456,  593,  594,
-      594,  455,  594,  595,  595,  595,  595,  595,  595,  595,
-      595,  595,  595,  595,  596,  596,  596,  596,  596,  596,
-      596,  453,  596,  596,  596,  597,  597,  597,  597,  597,
-      597,  597,  597,  597,  598,  452,  451,  598,  598,  450,
-      449,  598,  448,  598,  599,  599,  599,  447,  599,  600,
-      600,  600,  446,  600,  601,  601,  445,  601,  601,  601,
-
-      601,  601,  601,  601,  601,  602,  602,  602,  444,  602,
-      612,  612,  443,  612,  612,  612,  612,  612,  612,  612,
-      612,  442,  441,  438,  437,  436,  434,  433,  431,  430,
-      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
-      417,  416,  415,  414,  413,  412,  411,  410,  409,  408,
-      407,  403,  402,  401,  400,  399,  398,  397,  396,  395,
-      394,  392,  391,  390,  389,  388,  387,  386,  385,  384,
-      383,  382,  381,  380,  379,  378,  377,  375,  374,  373,
-      372,  371,  366,  362,  360,  359,  358,  357,  356,  355,
-      353,  351,  350,  349,  348,  347,  346,  345,  344,  342,
-
-      341,  340,  339,  338,  336,  335,  331,  330,  329,  327,
-      324,  322,  321,  319,  317,  316,  315,  314,  312,  311,
-      310,  309,  308,  307,  306,  305,  304,  303,  302,  301,
-      299,  298,  297,  295,  294,  293,  292,  291,  290,  289,
-      288,  287,  286,  285,  284,  283,  281,  277,  275,  274,
-      273,  272,  271,  270,  269,  268,  267,  266,  265,  264,
-      263,  261,  260,  256,  255,  254,  253,  252,  251,  250,
-      249,  248,  247,  246,  245,  244,  243,  242,  240,  239,
-      238,  220,  215,  214,  213,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  202,  201,  200,  198,  197,  196,
-
-      194,  193,  192,  190,  189,  188,  187,  185,  184,  177,
-      174,  161,  159,  144,  142,  134,  132,  131,  130,  125,
-      123,  121,  120,  119,  116,  115,  109,  104,   81,   78,
-       76,   74,   73,   59,   57,   42,   35,   30,    4,    3,
-        2,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-      586,  586,  586,  586,  586,  586,  586,  586,  586,  586,
-
-      586,  586,  586
+       40,   40,   40,   40,   46,  176,  176,   46,  176,  587,
+       46,  199,  227,   46,   46,  231,  227,   46,   46,  178,
+      178,  586,  178,   46,  182,  182,  186,  182,   46,  231,
+      186,  199,  227,  238,  259,   46,   46,  226,  226,  231,
+      226,  259,  186,  315,  199,  228,  228,  585,  228,  230,
+      230,  584,  230,  232,  232,  263,  232,  234,  234,  581,
+      234,  337,  238,  315,   46,   53,  235,  235,   53,  235,
+      260,   53,  263,  260,   53,   53,  236,  236,  340,  236,
+      182,  337,  237,  237,   53,  237,  368,  380,  409,   53,
+      371,  371,  371,  580,  516,  517,   53,   53,  340,  397,
+
+      397,  397,  397,  408,  579,  408,  368,  380,  409,  432,
+      432,  432,  432,  503,  516,  517,  503,  408,  408,  408,
+      397,  529,  529,  529,  529,   53,   63,  549,  550,   63,
+      432,  578,  533,  533,  533,  533,  577,   63,   63,  576,
+      575,  572,  529,  571,  570,   63,  569,  549,  550,   63,
+      568,  566,   63,  533,  565,   63,   63,  564,  563,  562,
+       63,  534,  534,  534,  534,  561,  560,   63,  559,  556,
+      555,   63,  554,   63,   63,   63,   63,  135,  551,  546,
+      135,  545,  534,  135,  537,  536,  135,  135,  535,  532,
+      135,  135,  547,  547,  547,  547,  135,  552,  552,  552,
+
+      552,  135,  531,  530,  528,  527,  526,  525,  135,  135,
+      524,  523,  522,  547,  521,  519,  518,  515,  552,  514,
+      513,  511,  510,  509,  508,  507,  505,  504,  502,  501,
+      500,  499,  498,  497,  496,  495,  494,  135,  141,  141,
+      141,  493,  492,  491,  488,  487,  486,  141,  141,  485,
+      484,  481,  480,  479,  478,  477,  141,  141,  141,  141,
+      141,  141,  591,  591,  591,  591,  591,  591,  591,  591,
+      591,  591,  591,  592,  592,  592,  592,  592,  592,  592,
+      592,  592,  592,  592,  593,  593,  593,  593,  593,  593,
+      593,  593,  593,  593,  593,  594,  594,  594,  594,  594,
+
+      594,  594,  594,  594,  594,  594,  595,  595,  595,  595,
+      595,  595,  595,  595,  595,  595,  595,  596,  476,  475,
+      474,  596,  596,  472,  471,  470,  469,  596,  597,  468,
+      465,  463,  597,  597,  597,  462,  597,  461,  597,  598,
+      598,  460,  598,  599,  599,  599,  599,  599,  599,  599,
+      599,  599,  599,  599,  600,  600,  600,  600,  600,  600,
+      600,  459,  600,  600,  600,  601,  601,  601,  601,  601,
+      601,  601,  601,  601,  602,  457,  456,  602,  602,  455,
+      454,  602,  453,  602,  603,  603,  603,  452,  603,  604,
+      604,  604,  451,  604,  605,  605,  450,  605,  605,  605,
+
+      605,  605,  605,  605,  605,  606,  606,  606,  449,  606,
+      616,  616,  448,  616,  616,  616,  616,  616,  616,  616,
+      616,  447,  446,  445,  442,  441,  440,  438,  437,  435,
+      434,  431,  430,  429,  428,  427,  426,  425,  424,  423,
+      422,  421,  420,  419,  418,  417,  416,  415,  414,  413,
+      412,  411,  407,  406,  405,  404,  403,  402,  401,  400,
+      399,  398,  396,  395,  394,  393,  392,  391,  390,  389,
+      388,  387,  386,  385,  384,  383,  382,  381,  379,  378,
+      377,  376,  375,  370,  365,  363,  362,  361,  360,  359,
+      358,  356,  354,  353,  352,  351,  350,  349,  348,  347,
+
+      345,  344,  343,  342,  341,  339,  338,  334,  333,  332,
+      330,  327,  325,  324,  322,  320,  319,  318,  317,  316,
+      314,  313,  312,  311,  310,  309,  308,  307,  306,  305,
+      304,  303,  301,  300,  299,  297,  296,  295,  294,  293,
+      292,  291,  290,  289,  288,  287,  286,  285,  283,  279,
+      277,  276,  275,  274,  273,  272,  271,  270,  269,  268,
+      267,  266,  265,  264,  262,  261,  257,  256,  255,  254,
+      253,  252,  251,  250,  249,  248,  247,  246,  245,  244,
+      243,  241,  240,  239,  221,  216,  215,  214,  213,  212,
+      211,  210,  209,  208,  207,  206,  205,  204,  202,  201,
+
+      200,  198,  197,  196,  194,  193,  192,  190,  189,  188,
+      187,  185,  184,  177,  174,  161,  159,  144,  142,  134,
+      132,  131,  130,  125,  123,  121,  120,  119,  116,  115,
+      109,  104,   81,   78,   76,   74,   73,   59,   57,   42,
+       35,   30,    4,    3,    2,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+      590,  590,  590,  590,  590,  590,  590,  590,  590,  590,
+
+      590,  590,  590,  590,  590,  590,  590
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1004,23 +1004,23 @@ static char *yy_last_accepting_cpos;
 extern int gram__flex_debug;
 int gram__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[133] =
+static yyconst flex_int16_t yy_rule_linenum[134] =
     {   0,
       201,  204,  205,  206,  214,  232,  233,  234,  235,  236,
       237,  238,  239,  240,  241,  242,  243,  244,  245,  246,
       247,  248,  249,  250,  251,  252,  253,  254,  255,  256,
       257,  258,  259,  260,  261,  262,  263,  264,  265,  266,
-      267,  268,  269,  270,  271,  272,  273,  274,  275,  276,
-      279,  280,  281,  282,  283,  284,  285,  286,  287,  288,
-      289,  291,  295,  296,  297,  299,  311,  325,  342,  347,
-      350,  353,  356,  368,  379,  388,  393,  394,  395,  405,
-      419,  426,  446,  456,  471,  481,  508,  521,  537,  552,
-      569,  570,  581,  592,  593,  605,  621,  631,  658,  670,
-
-      692,  693,  704,  719,  735,  736,  737,  738,  739,  740,
-      741,  744,  746,  760,  778,  783,  784,  790,  791,  803,
-      809,  815,  821,  838,  839,  843,  850,  875,  901,  929,
-      976,  978
+      267,  268,  270,  271,  272,  273,  274,  275,  276,  277,
+      278,  281,  282,  283,  284,  285,  286,  287,  288,  289,
+      290,  291,  293,  297,  298,  299,  301,  313,  327,  344,
+      349,  352,  355,  358,  370,  381,  390,  395,  396,  397,
+      407,  421,  428,  448,  458,  473,  483,  510,  523,  539,
+      554,  571,  572,  583,  594,  595,  607,  623,  633,  660,
+
+      672,  694,  695,  706,  721,  737,  738,  739,  740,  741,
+      742,  743,  746,  748,  762,  780,  785,  786,  792,  793,
+      805,  811,  817,  823,  840,  841,  845,  852,  877,  903,
+      931,  978,  980
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1549,13 +1549,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 >= 587 )
+                               if ( yy_current_state >= 591 )
                                        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 != 586 );
+               while ( yy_current_state != 590 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1574,13 +1574,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 133 )
+                       else if ( yy_act < 134 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], gram_text );
-                       else if ( yy_act == 133 )
+                       else if ( yy_act == 134 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         gram_text );
-                       else if ( yy_act == 134 )
+                       else if ( yy_act == 135 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1828,130 +1828,136 @@ YY_RULE_SETUP
 #line 268 "src/scan-gram.l"
 return PERCENT_SKELETON;
        YY_BREAK
+/* Nick added %space */
 case 43:
 YY_RULE_SETUP
-#line 269 "src/scan-gram.l"
-return PERCENT_START;
+#line 270 "src/scan-gram.l"
+return PERCENT_SPACE;
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 270 "src/scan-gram.l"
-return PERCENT_TOKEN;
+#line 271 "src/scan-gram.l"
+return PERCENT_START;
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 271 "src/scan-gram.l"
+#line 272 "src/scan-gram.l"
 return PERCENT_TOKEN;
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 272 "src/scan-gram.l"
-return PERCENT_TOKEN_TABLE;
+#line 273 "src/scan-gram.l"
+return PERCENT_TOKEN;
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 273 "src/scan-gram.l"
-return PERCENT_TYPE;
+#line 274 "src/scan-gram.l"
+return PERCENT_TOKEN_TABLE;
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 274 "src/scan-gram.l"
-return PERCENT_UNION;
+#line 275 "src/scan-gram.l"
+return PERCENT_TYPE;
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 275 "src/scan-gram.l"
-return PERCENT_VERBOSE;
+#line 276 "src/scan-gram.l"
+return PERCENT_UNION;
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 276 "src/scan-gram.l"
-return PERCENT_YACC;
+#line 277 "src/scan-gram.l"
+return PERCENT_VERBOSE;
        YY_BREAK
-/* deprecated */
 case 51:
 YY_RULE_SETUP
-#line 279 "src/scan-gram.l"
-DEPRECATED("%default-prec");
+#line 278 "src/scan-gram.l"
+return PERCENT_YACC;
        YY_BREAK
+/* deprecated */
 case 52:
 YY_RULE_SETUP
-#line 280 "src/scan-gram.l"
-DEPRECATED("%define parse.error verbose");
+#line 281 "src/scan-gram.l"
+DEPRECATED("%default-prec");
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 281 "src/scan-gram.l"
-DEPRECATED("%expect-rr");
+#line 282 "src/scan-gram.l"
+DEPRECATED("%define parse.error verbose");
        YY_BREAK
 case 54:
-/* rule 54 can match eol */
 YY_RULE_SETUP
-#line 282 "src/scan-gram.l"
-DEPRECATED("%file-prefix");
+#line 283 "src/scan-gram.l"
+DEPRECATED("%expect-rr");
        YY_BREAK
 case 55:
+/* rule 55 can match eol */
 YY_RULE_SETUP
-#line 283 "src/scan-gram.l"
-DEPRECATED("%fixed-output-files");
+#line 284 "src/scan-gram.l"
+DEPRECATED("%file-prefix");
        YY_BREAK
 case 56:
-/* rule 56 can match eol */
 YY_RULE_SETUP
-#line 284 "src/scan-gram.l"
-DEPRECATED("%name-prefix");
+#line 285 "src/scan-gram.l"
+DEPRECATED("%fixed-output-files");
        YY_BREAK
 case 57:
+/* rule 57 can match eol */
 YY_RULE_SETUP
-#line 285 "src/scan-gram.l"
-DEPRECATED("%no-default-prec");
+#line 286 "src/scan-gram.l"
+DEPRECATED("%name-prefix");
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 286 "src/scan-gram.l"
-DEPRECATED("%no-lines");
+#line 287 "src/scan-gram.l"
+DEPRECATED("%no-default-prec");
        YY_BREAK
 case 59:
-/* rule 59 can match eol */
 YY_RULE_SETUP
-#line 287 "src/scan-gram.l"
-DEPRECATED("%output");
+#line 288 "src/scan-gram.l"
+DEPRECATED("%no-lines");
        YY_BREAK
 case 60:
+/* rule 60 can match eol */
 YY_RULE_SETUP
-#line 288 "src/scan-gram.l"
-DEPRECATED("%pure-parser");
+#line 289 "src/scan-gram.l"
+DEPRECATED("%output");
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 289 "src/scan-gram.l"
-DEPRECATED("%token-table");
+#line 290 "src/scan-gram.l"
+DEPRECATED("%pure-parser");
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 291 "src/scan-gram.l"
+DEPRECATED("%token-table");
+       YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 293 "src/scan-gram.l"
 {
     complain (loc, complaint, _("invalid directive: %s"), quote (gram_text));
   }
        YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 295 "src/scan-gram.l"
+#line 297 "src/scan-gram.l"
 return EQUAL;
        YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 296 "src/scan-gram.l"
+#line 298 "src/scan-gram.l"
 return PIPE;
        YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 297 "src/scan-gram.l"
+#line 299 "src/scan-gram.l"
 return SEMICOLON;
        YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 299 "src/scan-gram.l"
+#line 301 "src/scan-gram.l"
 {
     val->uniqstr = uniqstr_new (gram_text);
     id_loc = *loc;
@@ -1964,9 +1970,9 @@ YY_RULE_SETUP
  gram_piece_pack();
   }
        YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 311 "src/scan-gram.l"
+#line 313 "src/scan-gram.l"
 {
     val->integer = scan_integer (gram_text, 10, *loc);
 #if 0
@@ -1982,9 +1988,9 @@ YY_RULE_SETUP
 #endif
   }
        YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 325 "src/scan-gram.l"
+#line 327 "src/scan-gram.l"
 {
     val->integer = scan_integer (gram_text, 16, *loc);
 #if 0
@@ -2002,35 +2008,35 @@ YY_RULE_SETUP
        YY_BREAK
 /* Identifiers may not start with a digit.  Yet, don't silently
      accept "1FOO" as "1 FOO".  */
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 342 "src/scan-gram.l"
+#line 344 "src/scan-gram.l"
 {
     complain (loc, complaint, _("invalid identifier: %s"), quote (gram_text));
   }
        YY_BREAK
 /* Characters.  */
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 347 "src/scan-gram.l"
+#line 349 "src/scan-gram.l"
 token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER; gram_piece_pack(); gram_piece_append("<AST_Char>"); gram_piece_flush(strlen(gram_text)); gram_piece_append("<AST_Text>");
        YY_BREAK
 /* Strings. */
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 350 "src/scan-gram.l"
+#line 352 "src/scan-gram.l"
 token_start = loc->start; BEGIN SC_ESCAPED_STRING; gram_piece_pack(); gram_piece_append("<AST_String>"); gram_piece_flush(strlen(gram_text)); gram_piece_append("<AST_Text>");
        YY_BREAK
 /* Prologue. */
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 353 "src/scan-gram.l"
+#line 355 "src/scan-gram.l"
 code_start = loc->start; BEGIN SC_PROLOGUE; gram_piece_pack(); gram_piece_append("<AST_Section1_Prologue>"); gram_piece_flush(strlen(gram_text)); gram_piece_append("<AST_Text>");
        YY_BREAK
 /* Code in between braces.  */
-case 73:
+case 74:
 YY_RULE_SETUP
-#line 356 "src/scan-gram.l"
+#line 358 "src/scan-gram.l"
 {
     STRING_GROW;
     nesting = 0;
@@ -2043,10 +2049,10 @@ YY_RULE_SETUP
   }
        YY_BREAK
 /* Semantic predicate. */
-case 74:
-/* rule 74 can match eol */
+case 75:
+/* rule 75 can match eol */
 YY_RULE_SETUP
-#line 368 "src/scan-gram.l"
+#line 370 "src/scan-gram.l"
 {
     nesting = 0;
     code_start = loc->start;
@@ -2058,9 +2064,9 @@ YY_RULE_SETUP
   }
        YY_BREAK
 /* Nick extra rules for element groups */
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 379 "src/scan-gram.l"
+#line 381 "src/scan-gram.l"
 {
     STRING_GROW;
     nesting = 0;
@@ -2071,27 +2077,27 @@ YY_RULE_SETUP
  gram_piece_append("<AST_Text>");
   }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 388 "src/scan-gram.l"
+#line 390 "src/scan-gram.l"
 {
     return ')';
   }
        YY_BREAK
 /* A type. */
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 393 "src/scan-gram.l"
+#line 395 "src/scan-gram.l"
 gram_piece_pack(); gram_piece_append("<AST_TagRef>&lt;<AST_Text>*</AST_Text>&gt;</AST_TagRef>"); return ~TAG_ANY; /*return TAG_ANY;*/
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 394 "src/scan-gram.l"
+#line 396 "src/scan-gram.l"
 gram_piece_pack(); gram_piece_append("<AST_TagRef>&lt;<AST_Text />&gt;</AST_TagRef>"); return ~TAG_NONE; /*return TAG_NONE;*/
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 395 "src/scan-gram.l"
+#line 397 "src/scan-gram.l"
 {
     nesting = 0;
     token_start = loc->start;
@@ -2102,9 +2108,9 @@ YY_RULE_SETUP
  gram_piece_append("<AST_Text>");
   }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 405 "src/scan-gram.l"
+#line 407 "src/scan-gram.l"
 {
     static int percent_percent_count;
     if (++percent_percent_count == 2)
@@ -2119,9 +2125,9 @@ YY_RULE_SETUP
     return PERCENT_PERCENT;
   }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 419 "src/scan-gram.l"
+#line 421 "src/scan-gram.l"
 {
     bracketed_id_str = NULL;
     bracketed_id_start = loc->start;
@@ -2129,9 +2135,9 @@ YY_RULE_SETUP
     BEGIN SC_BRACKETED_ID;
   }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 426 "src/scan-gram.l"
+#line 428 "src/scan-gram.l"
 {
     complain (loc, complaint, "%s: %s",
               ngettext ("invalid character", "invalid characters", gram_leng),
@@ -2139,7 +2145,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 432 "src/scan-gram.l"
+#line 434 "src/scan-gram.l"
 {
     loc->start = loc->end = scanner_cursor;
     yyterminate ();
@@ -2152,9 +2158,9 @@ case YY_STATE_EOF(INITIAL):
   `--------------------------------------------------------------*/
 
 
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 446 "src/scan-gram.l"
+#line 448 "src/scan-gram.l"
 complain (loc, complaint, _("invalid null character"));
        YY_BREAK
 
@@ -2163,9 +2169,9 @@ complain (loc, complaint, _("invalid null character"));
   `-----------------------------------------------------------------*/
 
 
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 456 "src/scan-gram.l"
+#line 458 "src/scan-gram.l"
 {
     if (bracketed_id_str)
       {
@@ -2182,9 +2188,9 @@ YY_RULE_SETUP
       }
   }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 471 "src/scan-gram.l"
+#line 473 "src/scan-gram.l"
 {
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
     *loc = id_loc;
@@ -2196,9 +2202,9 @@ YY_RULE_SETUP
 #endif
   }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 481 "src/scan-gram.l"
+#line 483 "src/scan-gram.l"
 {
     ROLLBACK_CURRENT_TOKEN;
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
@@ -2211,7 +2217,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
-#line 491 "src/scan-gram.l"
+#line 493 "src/scan-gram.l"
 {
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
     *loc = id_loc;
@@ -2228,9 +2234,9 @@ case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
   `--------------------------------*/
 
 
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 508 "src/scan-gram.l"
+#line 510 "src/scan-gram.l"
 {
     if (bracketed_id_str)
       {
@@ -2245,9 +2251,9 @@ YY_RULE_SETUP
       }
   }
        YY_BREAK
-case 88:
+case 89:
 YY_RULE_SETUP
-#line 521 "src/scan-gram.l"
+#line 523 "src/scan-gram.l"
 {
     BEGIN bracketed_id_context_state;
     if (bracketed_id_str)
@@ -2264,9 +2270,9 @@ YY_RULE_SETUP
       complain (loc, complaint, _("an identifier expected"));
   }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 537 "src/scan-gram.l"
+#line 539 "src/scan-gram.l"
 {
     complain (loc, complaint, "%s: %s",
               ngettext ("invalid character in bracketed name",
@@ -2275,7 +2281,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_BRACKETED_ID):
-#line 544 "src/scan-gram.l"
+#line 546 "src/scan-gram.l"
 {
     BEGIN bracketed_id_context_state;
     unexpected_eof (bracketed_id_start, "]");
@@ -2284,9 +2290,9 @@ case YY_STATE_EOF(SC_BRACKETED_ID):
 
 
 
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 552 "src/scan-gram.l"
+#line 554 "src/scan-gram.l"
 {
     ROLLBACK_CURRENT_TOKEN;
     val->uniqstr = bracketed_id_str;
@@ -2302,19 +2308,19 @@ YY_RULE_SETUP
   `---------------------------------------------------------------*/
 
 
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 569 "src/scan-gram.l"
+#line 571 "src/scan-gram.l"
 BEGIN context_state;
        YY_BREAK
-case 92:
-/* rule 92 can match eol */
+case 93:
+/* rule 93 can match eol */
 YY_RULE_SETUP
-#line 570 "src/scan-gram.l"
+#line 572 "src/scan-gram.l"
 continue;
        YY_BREAK
 case YY_STATE_EOF(SC_YACC_COMMENT):
-#line 571 "src/scan-gram.l"
+#line 573 "src/scan-gram.l"
 unexpected_eof (token_start, "*/"); BEGIN context_state;
        YY_BREAK
 
@@ -2323,14 +2329,14 @@ unexpected_eof (token_start, "*/"); BEGIN context_state;
   `------------------------------------------------------------*/
 
 
-case 93:
-/* rule 93 can match eol */
+case 94:
+/* rule 94 can match eol */
 YY_RULE_SETUP
-#line 581 "src/scan-gram.l"
+#line 583 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case YY_STATE_EOF(SC_COMMENT):
-#line 582 "src/scan-gram.l"
+#line 584 "src/scan-gram.l"
 unexpected_eof (token_start, "*/"); BEGIN context_state;
        YY_BREAK
 
@@ -2339,20 +2345,20 @@ unexpected_eof (token_start, "*/"); BEGIN context_state;
   `--------------------------------------------------------------*/
 
 
-case 94:
-/* rule 94 can match eol */
+case 95:
+/* rule 95 can match eol */
 YY_RULE_SETUP
-#line 592 "src/scan-gram.l"
+#line 594 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
-case 95:
-/* rule 95 can match eol */
+case 96:
+/* rule 96 can match eol */
 YY_RULE_SETUP
-#line 593 "src/scan-gram.l"
+#line 595 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_LINE_COMMENT):
-#line 594 "src/scan-gram.l"
+#line 596 "src/scan-gram.l"
 BEGIN context_state;
        YY_BREAK
 
@@ -2362,9 +2368,9 @@ BEGIN context_state;
   `------------------------------------------------*/
 
 
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 605 "src/scan-gram.l"
+#line 607 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = token_start;
@@ -2382,13 +2388,13 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 620 "src/scan-gram.l"
+#line 622 "src/scan-gram.l"
 unexpected_eof (token_start, "\"");
        YY_BREAK
-case 97:
-/* rule 97 can match eol */
+case 98:
+/* rule 98 can match eol */
 YY_RULE_SETUP
-#line 621 "src/scan-gram.l"
+#line 623 "src/scan-gram.l"
 unexpected_newline (token_start, "\"");
        YY_BREAK
 
@@ -2398,9 +2404,9 @@ unexpected_newline (token_start, "\"");
   `----------------------------------------------------------*/
 
 
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 631 "src/scan-gram.l"
+#line 633 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = token_start;
@@ -2429,14 +2435,14 @@ YY_RULE_SETUP
 #endif
   }
        YY_BREAK
-case 99:
-/* rule 99 can match eol */
+case 100:
+/* rule 100 can match eol */
 YY_RULE_SETUP
-#line 658 "src/scan-gram.l"
+#line 660 "src/scan-gram.l"
 unexpected_newline (token_start, "'");
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 659 "src/scan-gram.l"
+#line 661 "src/scan-gram.l"
 unexpected_eof (token_start, "'");
        YY_BREAK
 
@@ -2445,9 +2451,9 @@ unexpected_eof (token_start, "'");
   `--------------------------------------------------------------*/
 
 
-case 100:
+case 101:
 YY_RULE_SETUP
-#line 670 "src/scan-gram.l"
+#line 672 "src/scan-gram.l"
 {
     --nesting;
     if (nesting < 0)
@@ -2470,19 +2476,19 @@ YY_RULE_SETUP
     STRING_GROW;
   }
        YY_BREAK
-case 101:
-/* rule 101 can match eol */
+case 102:
+/* rule 102 can match eol */
 YY_RULE_SETUP
-#line 692 "src/scan-gram.l"
+#line 694 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 693 "src/scan-gram.l"
+#line 695 "src/scan-gram.l"
 STRING_GROW; nesting += gram_leng;
        YY_BREAK
 case YY_STATE_EOF(SC_TAG):
-#line 695 "src/scan-gram.l"
+#line 697 "src/scan-gram.l"
 unexpected_eof (token_start, ">");
        YY_BREAK
 
@@ -2491,9 +2497,9 @@ unexpected_eof (token_start, ">");
   `----------------------------*/
 
 
-case 103:
+case 104:
 YY_RULE_SETUP
-#line 704 "src/scan-gram.l"
+#line 706 "src/scan-gram.l"
 {
     unsigned long int c = strtoul (gram_text + 1, NULL, 8);
     if (!c || UCHAR_MAX < c)
@@ -2509,9 +2515,9 @@ YY_RULE_SETUP
  }
   }
        YY_BREAK
-case 104:
+case 105:
 YY_RULE_SETUP
-#line 719 "src/scan-gram.l"
+#line 721 "src/scan-gram.l"
 {
     verify (UCHAR_MAX < ULONG_MAX);
     unsigned long int c = strtoul (gram_text + 2, NULL, 16);
@@ -2528,50 +2534,50 @@ YY_RULE_SETUP
  }
   }
        YY_BREAK
-case 105:
+case 106:
 YY_RULE_SETUP
-#line 735 "src/scan-gram.l"
+#line 737 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\a'); gram_piece_append("<AST_Text_Escape character=\"7\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
-case 106:
+case 107:
 YY_RULE_SETUP
-#line 736 "src/scan-gram.l"
+#line 738 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\b'); gram_piece_append("<AST_Text_Escape character=\"8\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 737 "src/scan-gram.l"
+#line 739 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\f'); gram_piece_append("<AST_Text_Escape character=\"12\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
-case 108:
+case 109:
 YY_RULE_SETUP
-#line 738 "src/scan-gram.l"
+#line 740 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\n'); gram_piece_append("<AST_Text_Escape character=\"10\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 739 "src/scan-gram.l"
+#line 741 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\r'); gram_piece_append("<AST_Text_Escape character=\"13\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 740 "src/scan-gram.l"
+#line 742 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\t'); gram_piece_append("<AST_Text_Escape character=\"9\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 741 "src/scan-gram.l"
+#line 743 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\v'); gram_piece_append("<AST_Text_Escape character=\"11\">"); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>");
        YY_BREAK
 /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 744 "src/scan-gram.l"
+#line 746 "src/scan-gram.l"
 obstack_1grow (&obstack_for_string, gram_text[1]); sprintf(gram_piece_temp, "<AST_Text_Escape character=\"%d\">", gram_text[1]); gram_piece_append(gram_piece_temp); gram_piece_flush(strlen(gram_text)); gram_piece_append("</AST_Text_Escape>"); 
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 746 "src/scan-gram.l"
+#line 748 "src/scan-gram.l"
 {
     int c = convert_ucn_to_byte (gram_text);
     if (c <= 0)
@@ -2587,10 +2593,10 @@ YY_RULE_SETUP
  }
   }
        YY_BREAK
-case 114:
-/* rule 114 can match eol */
+case 115:
+/* rule 115 can match eol */
 YY_RULE_SETUP
-#line 760 "src/scan-gram.l"
+#line 762 "src/scan-gram.l"
 {
     char const *p = gram_text + 1;
     /* Quote only if escaping won't make the character visible.  */
@@ -2608,46 +2614,46 @@ YY_RULE_SETUP
   `--------------------------------------------*/
 
 
-case 115:
-/* rule 115 can match eol */
+case 116:
+/* rule 116 can match eol */
 YY_RULE_SETUP
-#line 778 "src/scan-gram.l"
+#line 780 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 
 
 
-case 116:
+case 117:
 YY_RULE_SETUP
-#line 783 "src/scan-gram.l"
+#line 785 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
-case 117:
-/* rule 117 can match eol */
+case 118:
+/* rule 118 can match eol */
 YY_RULE_SETUP
-#line 784 "src/scan-gram.l"
+#line 786 "src/scan-gram.l"
 unexpected_newline (token_start, "'");
        YY_BREAK
 case YY_STATE_EOF(SC_CHARACTER):
-#line 785 "src/scan-gram.l"
+#line 787 "src/scan-gram.l"
 unexpected_eof (token_start, "'");
        YY_BREAK
 
 
 
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 790 "src/scan-gram.l"
+#line 792 "src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
-case 119:
-/* rule 119 can match eol */
+case 120:
+/* rule 120 can match eol */
 YY_RULE_SETUP
-#line 791 "src/scan-gram.l"
+#line 793 "src/scan-gram.l"
 unexpected_newline (token_start, "\"");
        YY_BREAK
 case YY_STATE_EOF(SC_STRING):
-#line 792 "src/scan-gram.l"
+#line 794 "src/scan-gram.l"
 unexpected_eof (token_start, "\"");
        YY_BREAK
 
@@ -2657,9 +2663,9 @@ unexpected_eof (token_start, "\"");
 /* Nick added: SC_ELEMENT_GROUP */
 
 
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 803 "src/scan-gram.l"
+#line 805 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2667,9 +2673,9 @@ YY_RULE_SETUP
     BEGIN SC_CHARACTER;
   }
        YY_BREAK
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 809 "src/scan-gram.l"
+#line 811 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2677,10 +2683,10 @@ YY_RULE_SETUP
     BEGIN SC_STRING;
   }
        YY_BREAK
-case 122:
-/* rule 122 can match eol */
+case 123:
+/* rule 123 can match eol */
 YY_RULE_SETUP
-#line 815 "src/scan-gram.l"
+#line 817 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2688,10 +2694,10 @@ YY_RULE_SETUP
     BEGIN SC_COMMENT;
   }
        YY_BREAK
-case 123:
-/* rule 123 can match eol */
+case 124:
+/* rule 124 can match eol */
 YY_RULE_SETUP
-#line 821 "src/scan-gram.l"
+#line 823 "src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2706,38 +2712,38 @@ YY_RULE_SETUP
 /* Nick added: SC_ELEMENT_GROUP */
 
 
-case 124:
-/* rule 124 can match eol */
+case 125:
+/* rule 125 can match eol */
 YY_RULE_SETUP
-#line 838 "src/scan-gram.l"
+#line 840 "src/scan-gram.l"
 STRING_GROW; nesting++;
        YY_BREAK
-case 125:
-/* rule 125 can match eol */
+case 126:
+/* rule 126 can match eol */
 YY_RULE_SETUP
-#line 839 "src/scan-gram.l"
+#line 841 "src/scan-gram.l"
 STRING_GROW; nesting--;
        YY_BREAK
 /* Tokenize '<<%' correctly (as '<<' '%') rather than incorrrectly
      (as '<' '<%').  */
-case 126:
-/* rule 126 can match eol */
+case 127:
+/* rule 127 can match eol */
 YY_RULE_SETUP
-#line 843 "src/scan-gram.l"
+#line 845 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_BRACED_CODE):
 case YY_STATE_EOF(SC_PREDICATE):
 case YY_STATE_EOF(SC_ELEMENT_GROUP):
-#line 845 "src/scan-gram.l"
+#line 847 "src/scan-gram.l"
 unexpected_eof (code_start, "}");
        YY_BREAK
 
 
 
-case 127:
+case 128:
 YY_RULE_SETUP
-#line 850 "src/scan-gram.l"
+#line 852 "src/scan-gram.l"
 {
     obstack_1grow (&obstack_for_string, '}');
 
@@ -2763,9 +2769,9 @@ YY_RULE_SETUP
 
 
 
-case 128:
+case 129:
 YY_RULE_SETUP
-#line 875 "src/scan-gram.l"
+#line 877 "src/scan-gram.l"
 {
     --nesting;
     if (nesting < 0)
@@ -2792,9 +2798,9 @@ YY_RULE_SETUP
 /* Nick extra rules for element groups */
 
 
-case 129:
+case 130:
 YY_RULE_SETUP
-#line 901 "src/scan-gram.l"
+#line 903 "src/scan-gram.l"
 {
     obstack_1grow (&obstack_for_string, '}');
 
@@ -2822,9 +2828,9 @@ YY_RULE_SETUP
   `--------------------------------------------------------------*/
 
 
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 929 "src/scan-gram.l"
+#line 931 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = code_start;
@@ -2842,7 +2848,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_PROLOGUE):
-#line 945 "src/scan-gram.l"
+#line 947 "src/scan-gram.l"
 unexpected_eof (code_start, "%}");
        YY_BREAK
 
@@ -2853,7 +2859,7 @@ unexpected_eof (code_start, "%}");
 
 
 case YY_STATE_EOF(SC_EPILOGUE):
-#line 956 "src/scan-gram.l"
+#line 958 "src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = code_start;
@@ -2872,21 +2878,21 @@ case YY_STATE_EOF(SC_EPILOGUE):
   | By default, grow the string obstack with the input.  |
   `-----------------------------------------------------*/
 /* Nick added: SC_ELEMENT_GROUP */
-case 131:
-#line 977 "src/scan-gram.l"
-/* Nick added: SC_ELEMENT_GROUP */
 case 132:
-/* rule 132 can match eol */
+#line 979 "src/scan-gram.l"
+/* Nick added: SC_ELEMENT_GROUP */
+case 133:
+/* rule 133 can match eol */
 YY_RULE_SETUP
-#line 978 "src/scan-gram.l"
+#line 980 "src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 981 "src/scan-gram.l"
+#line 983 "src/scan-gram.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 2876 "src/scan-gram.c"
+#line 2882 "src/scan-gram.c"
 case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
        yyterminate();
 
@@ -3201,7 +3207,7 @@ static int yy_get_next_buffer (void)
                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 >= 587 )
+                       if ( yy_current_state >= 591 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3234,11 +3240,11 @@ static int yy_get_next_buffer (void)
        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 >= 587 )
+               if ( yy_current_state >= 591 )
                        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 == 586);
+       yy_is_jam = (yy_current_state == 590);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4020,7 +4026,7 @@ void gram_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 981 "src/scan-gram.l"
+#line 983 "src/scan-gram.l"
 
 
 
index f215d9d..c98901a 100644 (file)
@@ -266,6 +266,8 @@ eqopt    ([[:space:]]*=)?
   "%require"                        return PERCENT_REQUIRE;
   "%right"                          return PERCENT_RIGHT;
   "%skeleton"                       return PERCENT_SKELETON;
+  /* Nick added %space */
+  "%space"                          return PERCENT_SPACE;
   "%start"                          return PERCENT_START;
   "%term"                           return PERCENT_TOKEN;
   "%token"                          return PERCENT_TOKEN;