parser: consolidate tokens
[m6w6/ext-psi] / src / parser_proc.c
index e2a58b068d5a74ff943eacd7b1fb7948250c2efe..f9f607ddb889c373f5b17e5b5ed63f96909aaf60 100644 (file)
@@ -279,7 +279,7 @@ static inline void psi_parser_proc_add_impl(struct psi_parser *P, struct psi_imp
 #define YYLAST   3793
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  128
+#define YYNTOKENS  140
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  135
 /* YYNRULES -- Number of rules.  */
@@ -294,7 +294,7 @@ static inline void psi_parser_proc_add_impl(struct psi_parser *P, struct psi_imp
 
 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   382
+#define YYMAXUTOK   394
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -340,76 +340,77 @@ static const unsigned char yytranslate[] =
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-     125,   126,   127
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
+     135,   136,   137,   138,   139
 };
 
 #if YYDEBUG
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short int yyrline[] =
 {
-       0,   379,   379,   379,   379,   379,   379,   379,   379,   379,
-     379,   379,   379,   379,   379,   379,   379,   379,   379,   379,
-     380,   380,   380,   380,   381,   381,   381,   381,   381,   381,
-     381,   381,   381,   381,   381,   381,   381,   381,   381,   381,
-     381,   381,   381,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   382,   382,   382,   382,   382,   382,   382,   382,   382,
-     382,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   383,   383,   383,
-     383,   383,   383,   383,   383,   383,   383,   387,   388,   391,
-     392,   395,   396,   397,   398,   404,   412,   415,   418,   419,
-     420,   423,   426,   429,   432,   438,   444,   447,   453,   476,
-     480,   484,   489,   493,   497,   501,   508,   509,   513,   514,
-     518,   519,   520,   524,   525,   529,   530,   534,   535,   536,
-     540,   541,   545,   546,   547,   548,   549,   550,   551,   555,
-     560,   568,   571,   574,   575,   581,   586,   594,   597,   601,
-     605,   612,   616,   620,   624,   629,   639,   649,   654,   659,
-     663,   669,   678,   681,   685,   689,   695,   702,   708,   709,
-     710,   711,   715,   718,   749,   756,   757,   758,   759,   763,
-     766,   775,   781,   784,   790,   793,   799,   800,   808,   819,
-     828,   840,   841,   845,   855,   864,   876,   879,   882,   886,
-     890,   894,   899,   904,   912,   913,   914,   920,   923,   926,
-     932,   933,   937,   940,   943,   949,   952,   955,   963,   975,
-     978,   981,   984,   991,   994,  1004,  1007,  1010,  1013,  1014,
-    1015,  1019,  1022,  1025,  1036,  1039,  1045,  1046,  1050,  1051,
-    1055,  1059,  1065,  1066,  1072,  1075,  1081,  1084,  1087,  1093,
-    1097,  1098,  1102,  1103,  1107,  1108,  1115,  1116,  1120,  1127,
-    1138,  1145,  1156,  1163,  1174,  1185,  1199,  1200,  1212,  1215,
-    1218,  1221,  1228,  1231,  1237,  1246,  1258,  1266,  1269,  1279,
-    1292,  1297,  1305,  1315,  1325,  1328,  1332,  1338,  1352,  1369,
-    1372,  1378,  1385,  1395,  1402,  1405,  1411,  1416,  1424,  1428,
-    1432,  1436,  1440,  1444,  1451,  1455,  1459,  1463,  1467,  1471,
-    1477,  1481,  1488,  1491,  1502,  1506,  1510,  1516,  1529,  1542,
-    1555,  1558,  1565,  1568,  1571,  1574,  1580,  1584,  1591,  1594,
-    1597,  1607,  1610,  1616,  1617,  1623,  1626,  1632,  1633,  1643,
-    1646,  1653,  1658,  1663,  1673,  1676,  1682,  1685,  1691,  1698,
-    1705,  1706,  1707,  1708,  1709,  1710,  1711,  1712,  1713,  1717,
-    1720,  1726,  1729,  1732,  1735,  1738,  1744,  1748,  1756,  1757,
-    1761,  1768,  1771,  1774,  1777,  1781,  1784,  1790,  1794,  1802,
-    1809,  1817,  1825,  1826,  1827,  1828,  1829,  1830,  1831,  1832,
-    1833,  1834,  1838,  1841,  1847,  1850,  1856,  1857,  1861,  1864,
-    1870,  1873,  1879,  1886,  1890,  1897,  1900,  1903,  1909,  1916,
-    1919,  1922,  1929,  1934,  1942,  1943,  1944,  1945,  1946,  1947,
-    1948,  1949,  1953,  1956,  1962,  1965,  1971,  1978,  1979,  1983,
-    1990,  1993,  1999,  2007,  2010,  2016
+       0,   399,   399,   399,   399,   399,   399,   399,   399,   399,
+     399,   399,   399,   399,   399,   399,   399,   399,   399,   399,
+     400,   400,   400,   400,   401,   401,   401,   401,   401,   401,
+     401,   401,   401,   401,   401,   401,   401,   401,   401,   401,
+     401,   401,   401,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   402,   402,   402,   402,   402,   402,   402,   402,   402,
+     402,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   403,   403,   403,
+     403,   403,   403,   403,   403,   403,   403,   407,   408,   411,
+     412,   415,   416,   417,   418,   424,   432,   435,   438,   439,
+     440,   443,   446,   449,   452,   458,   464,   467,   473,   496,
+     500,   504,   509,   513,   517,   521,   528,   529,   533,   534,
+     538,   539,   540,   544,   545,   549,   550,   554,   555,   556,
+     560,   561,   565,   566,   567,   568,   569,   570,   571,   575,
+     580,   588,   591,   594,   595,   601,   606,   614,   617,   621,
+     625,   632,   636,   640,   644,   649,   659,   669,   674,   679,
+     683,   689,   698,   701,   705,   709,   715,   722,   728,   729,
+     730,   731,   735,   738,   769,   776,   777,   778,   779,   783,
+     786,   795,   801,   804,   810,   813,   819,   820,   828,   839,
+     848,   860,   861,   865,   875,   884,   896,   899,   902,   906,
+     910,   914,   919,   924,   932,   933,   934,   940,   943,   946,
+     952,   953,   957,   960,   963,   969,   972,   975,   983,   995,
+     998,  1001,  1004,  1011,  1014,  1024,  1027,  1030,  1033,  1034,
+    1035,  1039,  1042,  1045,  1056,  1059,  1065,  1066,  1070,  1071,
+    1075,  1079,  1085,  1086,  1092,  1095,  1101,  1104,  1107,  1113,
+    1117,  1118,  1122,  1123,  1127,  1128,  1135,  1136,  1140,  1147,
+    1158,  1165,  1176,  1183,  1194,  1205,  1219,  1220,  1232,  1235,
+    1238,  1241,  1248,  1251,  1257,  1266,  1278,  1286,  1289,  1299,
+    1312,  1317,  1325,  1335,  1345,  1348,  1352,  1358,  1372,  1389,
+    1392,  1398,  1405,  1415,  1422,  1425,  1431,  1436,  1444,  1448,
+    1452,  1456,  1460,  1464,  1471,  1475,  1479,  1483,  1487,  1491,
+    1497,  1501,  1508,  1511,  1522,  1526,  1530,  1536,  1549,  1562,
+    1575,  1578,  1585,  1588,  1591,  1594,  1600,  1604,  1611,  1614,
+    1617,  1627,  1630,  1636,  1637,  1643,  1646,  1652,  1653,  1663,
+    1666,  1673,  1678,  1683,  1693,  1696,  1702,  1705,  1711,  1718,
+    1725,  1726,  1727,  1728,  1729,  1730,  1731,  1732,  1733,  1737,
+    1740,  1746,  1749,  1752,  1755,  1758,  1764,  1768,  1776,  1777,
+    1781,  1788,  1791,  1794,  1797,  1801,  1804,  1810,  1814,  1822,
+    1829,  1837,  1845,  1846,  1847,  1848,  1849,  1850,  1851,  1852,
+    1853,  1854,  1858,  1861,  1867,  1870,  1876,  1877,  1881,  1884,
+    1890,  1893,  1899,  1906,  1910,  1917,  1920,  1923,  1929,  1936,
+    1939,  1942,  1949,  1954,  1962,  1963,  1964,  1965,  1966,  1967,
+    1968,  1969,  1973,  1976,  1982,  1985,  1991,  1998,  1999,  2003,
+    2010,  2013,  2019,  2027,  2030,  2036
 };
 #endif
 
@@ -437,18 +438,19 @@ static const char *const yytname[] =
   "TO_STRING", "TO_FLOAT", "TO_ARRAY", "TO_OBJECT", "COMMENT",
   "WHITESPACE", "NO_WHITESPACE", "CPP_HEADER", "CPP_ATTRIBUTE",
   "CPP_EXTENSION", "CPP_PASTE", "CPP_INLINE", "CPP_RESTRICT", "CPP_ASM",
-  "BINARY", "UNARY", "$accept", "binary_op_token", "unary_op_token",
-  "name_token", "any_noeol_token", "any_nobrace_token", "file", "blocks",
-  "block", "lib", "cpp", "cpp_exp", "cpp_ignored_token",
-  "cpp_message_token", "cpp_include_token", "cpp_header_token",
-  "cpp_no_arg_token", "cpp_name_arg_token", "cpp_exp_arg_token",
-  "cpp_special_name_token", "cpp_macro_decl", "cpp_macro_sig",
-  "cpp_macro_sig_args", "cpp_macro_decl_tokens",
-  "cpp_macro_decl_token_list", "cpp_macro_exp", "cpp_macro_call_args",
-  "cpp_macro_call_arg_list", "constant", "constant_type",
-  "constant_type_token", "impl_def_val", "impl_def_val_token",
-  "decl_typedef", "typedef", "typedef_anon", "typedef_decl",
-  "typedef_anon_decl", "qualified_decl_type", "decl_type",
+  "BSLASH", "LONG_DOUBLE", "INT8", "UINT8", "INT16", "UINT16", "INT32",
+  "UINT32", "INT64", "UINT64", "INT128", "UINT128", "BINARY", "UNARY",
+  "$accept", "binary_op_token", "unary_op_token", "name_token",
+  "any_noeol_token", "any_nobrace_token", "file", "blocks", "block", "lib",
+  "cpp", "cpp_exp", "cpp_ignored_token", "cpp_message_token",
+  "cpp_include_token", "cpp_header_token", "cpp_no_arg_token",
+  "cpp_name_arg_token", "cpp_exp_arg_token", "cpp_special_name_token",
+  "cpp_macro_decl", "cpp_macro_sig", "cpp_macro_sig_args",
+  "cpp_macro_decl_tokens", "cpp_macro_decl_token_list", "cpp_macro_exp",
+  "cpp_macro_call_args", "cpp_macro_call_arg_list", "constant",
+  "constant_type", "constant_type_token", "impl_def_val",
+  "impl_def_val_token", "decl_typedef", "typedef", "typedef_anon",
+  "typedef_decl", "typedef_anon_decl", "qualified_decl_type", "decl_type",
   "decl_type_complex", "decl_type_simple", "decl_real_type", "int_signed",
   "int_width", "decl_int_type", "int_signed_types", "signed_short_types",
   "signed_long_types", "int_width_types", "decl_stmt", "decl_asm",
@@ -1482,26 +1484,26 @@ static const unsigned short int yystos[] =
 {
        0,     4,     5,     6,     7,     8,     9,    10,    11,    17,
       22,    29,    30,    31,    41,    83,    84,    85,    86,    87,
-      88,    89,    91,   116,   121,   123,   134,   135,   136,   137,
-     138,   156,   161,   166,   167,   168,   169,   170,   171,   172,
-     173,   178,   181,   182,   185,   189,   190,   191,   192,   193,
-     194,   197,   199,   200,   206,   214,   225,   226,     9,    11,
+      88,    89,    91,   116,   121,   123,   146,   147,   148,   149,
+     150,   168,   173,   178,   179,   180,   181,   182,   183,   184,
+     185,   190,   193,   194,   197,   201,   202,   203,   204,   205,
+     206,   209,   211,   212,   218,   226,   237,   238,     9,    11,
        3,    12,    17,    18,    22,    32,    49,    66,    67,    68,
       69,    70,    88,    90,    91,    92,    93,    94,    95,    97,
      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
-     110,   111,   112,   113,   114,   115,   131,   222,   223,   224,
-     241,   253,    22,    84,    85,    86,    87,   190,   197,   167,
+     110,   111,   112,   113,   114,   115,   143,   234,   235,   236,
+     253,   265,    22,    84,    85,    86,    87,   202,   209,   179,
       30,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    79,    80,    81,    82,   139,   140,   141,
-     142,   144,   145,   146,    17,    84,    85,   121,   162,   164,
-     191,   192,   197,   206,   215,   216,   131,   131,   131,   217,
-       3,     6,    10,    12,    17,   157,   158,   167,    26,   123,
-     190,   226,    44,   261,   262,    22,    83,   189,   190,     0,
-     136,   131,   198,   221,   222,     4,     5,     6,     9,    22,
-     174,     6,   171,   177,    31,   125,   179,    32,    32,    36,
-      36,   221,   222,    87,    32,   131,   124,   224,   131,   131,
-     131,    34,   183,    19,    20,    21,   121,   123,   124,   131,
-     147,   148,    30,     0,     3,     4,     5,     6,     7,     8,
+      75,    76,    77,    79,    80,    81,    82,   151,   152,   153,
+     154,   156,   157,   158,    17,    84,    85,   121,   174,   176,
+     203,   204,   209,   218,   227,   228,   143,   143,   143,   229,
+       3,     6,    10,    12,    17,   169,   170,   179,    26,   123,
+     202,   238,    44,   273,   274,    22,    83,   201,   202,     0,
+     148,   143,   210,   233,   234,     4,     5,     6,     9,    22,
+     186,     6,   183,   189,    31,   125,   191,    32,    32,    36,
+      36,   233,   234,    87,    32,   143,   124,   236,   143,   143,
+     143,    34,   195,    19,    20,    21,   121,   123,   124,   143,
+     159,   160,    30,     0,     3,     4,     5,     6,     7,     8,
        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
       29,    31,    32,    33,    34,    35,    36,    37,    38,    39,
@@ -1513,20 +1515,20 @@ static const unsigned short int yystos[] =
       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   119,   121,   122,   123,   124,
-     125,   132,   151,   152,   151,    26,   119,   143,   131,   147,
-      25,    27,    28,    32,    47,    48,    60,    61,    78,   130,
-     131,   153,   211,   131,   131,   217,   131,   217,   164,    31,
-     131,    35,   219,   219,   219,   219,   222,    23,    31,   190,
-      36,   186,    36,    23,   162,   179,   186,    38,   220,    32,
-     131,     6,   175,     6,     9,   176,   174,    32,    31,    17,
-      87,   166,   195,   196,   197,   195,   131,   207,   208,    92,
-      93,    94,    95,    96,    98,    99,   232,   233,   234,   247,
-     250,   256,   257,   258,   131,   221,   184,   198,   222,   118,
-     151,   132,    26,    27,    32,    44,   213,   153,    32,   131,
-     153,    32,    42,    43,    44,    45,    46,    47,    48,    49,
+     125,   144,   163,   164,   163,    26,   119,   155,   143,   159,
+      25,    27,    28,    32,    47,    48,    60,    61,    78,   142,
+     143,   165,   223,   143,   143,   229,   143,   229,   176,    31,
+     143,    35,   231,   231,   231,   231,   234,    23,    31,   202,
+      36,   198,    36,    23,   174,   191,   198,    38,   232,    32,
+     143,     6,   187,     6,     9,   188,   186,    32,    31,    17,
+      87,   178,   207,   208,   209,   207,   143,   219,   220,    92,
+      93,    94,    95,    96,    98,    99,   244,   245,   246,   259,
+     262,   268,   269,   270,   143,   233,   196,   210,   234,   118,
+     163,   144,    26,    27,    32,    44,   225,   165,    32,   143,
+     165,    32,    42,    43,    44,    45,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
-      65,   129,    31,    35,    36,   202,   202,    31,   201,   202,
-     201,    32,   131,    40,   186,     0,     3,     4,     5,     6,
+      65,   141,    31,    35,    36,   214,   214,    31,   213,   214,
+     213,    32,   143,    40,   198,     0,     3,     4,     5,     6,
        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    31,    32,    33,    34,    35,    38,    39,
@@ -1538,104 +1540,104 @@ static const unsigned short int yystos[] =
       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
      112,   113,   114,   115,   116,   119,   121,   122,   123,   124,
-     125,   133,   186,   187,   188,   232,    32,    31,    31,    19,
-      23,    25,    27,    32,    39,   130,   198,   209,   210,   211,
-     221,   220,     6,    26,   180,   222,    17,   221,    33,    34,
-      33,    34,    40,    34,    37,   198,   237,   209,   229,   251,
-     252,   253,   261,   198,   131,   259,   260,   198,   248,   252,
-      37,   233,   209,    33,   131,    34,    32,   167,   212,   213,
-      22,    33,   131,   153,   154,   155,   153,   153,    32,   121,
-     163,   164,   165,   166,   203,   206,   215,   216,   198,   198,
-     221,    19,    20,    21,    26,   159,   160,   209,    37,   188,
+     125,   145,   198,   199,   200,   244,    32,    31,    31,    19,
+      23,    25,    27,    32,    39,   142,   210,   221,   222,   223,
+     233,   232,     6,    26,   192,   234,    17,   233,    33,    34,
+      33,    34,    40,    34,    37,   210,   249,   221,   241,   263,
+     264,   265,   273,   210,   143,   271,   272,   210,   260,   264,
+      37,   245,   221,    33,   143,    34,    32,   179,   224,   225,
+      22,    33,   143,   165,   166,   167,   165,   165,    32,   121,
+     175,   176,   177,   178,   215,   218,   227,   228,   210,   210,
+     233,    19,    20,    21,    26,   171,   172,   221,    37,   200,
       37,     3,     6,    10,    12,    13,    14,    15,    16,    17,
-      33,   227,   228,   230,   231,    22,    87,   166,   209,   209,
-      39,    65,   129,   131,    26,    33,   222,   220,    17,    64,
-     196,   220,    64,   209,   208,    40,    31,    40,    31,    32,
-      24,    40,    32,    31,    34,    32,    31,    31,    33,   198,
-      64,   131,   149,   150,   221,    33,    33,    33,    34,    35,
-      25,   165,    35,   218,    37,   163,   219,   219,   131,    31,
-      35,    33,    34,   229,    33,    33,   209,   209,    33,    33,
-      33,    19,    89,    90,   109,   209,   236,   238,   239,   240,
-     241,   262,   251,   198,   261,   184,   260,    17,   184,   249,
-      33,    34,   153,   153,    34,    25,    35,    34,   204,   218,
-     202,   202,    33,   230,    35,   228,   230,    40,   209,    35,
-     220,   220,   109,   238,    17,    18,   241,   244,    32,    32,
-     236,    34,   254,   198,    33,    33,   151,    64,   131,    25,
-      35,    32,   198,   205,    31,   204,   230,   261,   159,   209,
-      32,   209,   229,    64,   251,   255,    33,    31,    97,    33,
-      35,    25,   218,    34,    31,    64,   229,    34,    34,   242,
-      33,    34,    18,   252,   253,    32,    34,   198,    24,    32,
-     209,   198,   235,   236,   237,   243,   262,    33,   251,    25,
-      25,   218,    33,   245,   246,   251,    33,    34,   236,    34,
-      33,    35,    33,    34,   235,    25,   230,    33,   251,    33
+      33,   239,   240,   242,   243,    22,    87,   178,   221,   221,
+      39,    65,   141,   143,    26,    33,   234,   232,    17,    64,
+     208,   232,    64,   221,   220,    40,    31,    40,    31,    32,
+      24,    40,    32,    31,    34,    32,    31,    31,    33,   210,
+      64,   143,   161,   162,   233,    33,    33,    33,    34,    35,
+      25,   177,    35,   230,    37,   175,   231,   231,   143,    31,
+      35,    33,    34,   241,    33,    33,   221,   221,    33,    33,
+      33,    19,    89,    90,   109,   221,   248,   250,   251,   252,
+     253,   274,   263,   210,   273,   196,   272,    17,   196,   261,
+      33,    34,   165,   165,    34,    25,    35,    34,   216,   230,
+     214,   214,    33,   242,    35,   240,   242,    40,   221,    35,
+     232,   232,   109,   250,    17,    18,   253,   256,    32,    32,
+     248,    34,   266,   210,    33,    33,   163,    64,   143,    25,
+      35,    32,   210,   217,    31,   216,   242,   273,   171,   221,
+      32,   221,   241,    64,   263,   267,    33,    31,    97,    33,
+      35,    25,   230,    34,    31,    64,   241,    34,    34,   254,
+      33,    34,    18,   264,   265,    32,    34,   210,    24,    32,
+     221,   210,   247,   248,   249,   255,   274,    33,   263,    25,
+      25,   230,    33,   257,   258,   263,    33,    34,   248,    34,
+      33,    35,    33,    34,   247,    25,   242,    33,   263,    33
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const unsigned short int yyr1[] =
 {
-       0,   128,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     130,   130,   130,   130,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   133,   133,   133,   133,   134,   134,   135,
-     135,   136,   136,   136,   136,   136,   136,   136,   136,   136,
-     136,   136,   136,   136,   136,   137,   138,   138,   139,   139,
-     139,   139,   139,   139,   139,   139,   140,   140,   141,   141,
-     142,   142,   142,   143,   143,   144,   144,   145,   145,   145,
-     146,   146,   147,   147,   147,   147,   147,   147,   147,   148,
-     148,   149,   149,   149,   149,   150,   150,   151,   151,   152,
-     152,   153,   153,   153,   153,   153,   153,   153,   153,   153,
-     153,   153,   154,   154,   155,   155,   156,   157,   158,   158,
-     158,   158,   159,   159,   159,   160,   160,   160,   160,   161,
-     161,   161,   162,   162,   163,   163,   164,   164,   164,   164,
-     164,   165,   165,   165,   165,   165,   166,   166,   166,   167,
-     167,   168,   168,   168,   169,   169,   169,   170,   170,   170,
-     171,   171,   172,   172,   172,   173,   173,   173,   173,   174,
-     174,   174,   174,   174,   174,   175,   175,   176,   176,   176,
-     176,   177,   177,   177,   178,   178,   179,   179,   180,   180,
-     181,   182,   183,   183,   184,   184,   185,   185,   185,   186,
-     187,   187,   188,   188,   189,   189,   190,   190,   191,   191,
-     192,   192,   193,   193,   193,   193,   194,   194,   195,   195,
-     195,   195,   196,   196,   196,   196,   197,   197,   197,   197,
-     198,   198,   199,   200,   201,   201,   202,   203,   203,   204,
-     204,   205,   205,   206,   207,   207,   208,   208,   209,   209,
-     209,   209,   209,   209,   210,   210,   210,   210,   210,   210,
-     211,   211,   212,   212,   213,   213,   213,   214,   215,   216,
-     217,   217,   218,   218,   218,   218,   219,   219,   220,   220,
-     220,   221,   221,   222,   222,   223,   223,   224,   224,   225,
-     225,   226,   226,   226,   227,   227,   228,   228,   229,   230,
-     231,   231,   231,   231,   231,   231,   231,   231,   231,   232,
-     232,   233,   233,   233,   233,   233,   234,   234,   235,   235,
-     235,   236,   236,   236,   236,   236,   236,   237,   237,   238,
-     239,   240,   241,   241,   241,   241,   241,   241,   241,   241,
-     241,   241,   242,   242,   243,   243,   244,   244,   245,   245,
-     246,   246,   247,   248,   248,   249,   249,   249,   250,   251,
-     251,   251,   252,   252,   253,   253,   253,   253,   253,   253,
-     253,   253,   254,   254,   255,   255,   256,   257,   257,   258,
-     259,   259,   260,   261,   261,   262
+       0,   140,   141,   141,   141,   141,   141,   141,   141,   141,
+     141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
+     142,   142,   142,   142,   143,   143,   143,   143,   143,   143,
+     143,   143,   143,   143,   143,   143,   143,   143,   143,   143,
+     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
+     144,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   145,   145,   145,
+     145,   145,   145,   145,   145,   145,   145,   146,   146,   147,
+     147,   148,   148,   148,   148,   148,   148,   148,   148,   148,
+     148,   148,   148,   148,   148,   149,   150,   150,   151,   151,
+     151,   151,   151,   151,   151,   151,   152,   152,   153,   153,
+     154,   154,   154,   155,   155,   156,   156,   157,   157,   157,
+     158,   158,   159,   159,   159,   159,   159,   159,   159,   160,
+     160,   161,   161,   161,   161,   162,   162,   163,   163,   164,
+     164,   165,   165,   165,   165,   165,   165,   165,   165,   165,
+     165,   165,   166,   166,   167,   167,   168,   169,   170,   170,
+     170,   170,   171,   171,   171,   172,   172,   172,   172,   173,
+     173,   173,   174,   174,   175,   175,   176,   176,   176,   176,
+     176,   177,   177,   177,   177,   177,   178,   178,   178,   179,
+     179,   180,   180,   180,   181,   181,   181,   182,   182,   182,
+     183,   183,   184,   184,   184,   185,   185,   185,   185,   186,
+     186,   186,   186,   186,   186,   187,   187,   188,   188,   188,
+     188,   189,   189,   189,   190,   190,   191,   191,   192,   192,
+     193,   194,   195,   195,   196,   196,   197,   197,   197,   198,
+     199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
+     204,   204,   205,   205,   205,   205,   206,   206,   207,   207,
+     207,   207,   208,   208,   208,   208,   209,   209,   209,   209,
+     210,   210,   211,   212,   213,   213,   214,   215,   215,   216,
+     216,   217,   217,   218,   219,   219,   220,   220,   221,   221,
+     221,   221,   221,   221,   222,   222,   222,   222,   222,   222,
+     223,   223,   224,   224,   225,   225,   225,   226,   227,   228,
+     229,   229,   230,   230,   230,   230,   231,   231,   232,   232,
+     232,   233,   233,   234,   234,   235,   235,   236,   236,   237,
+     237,   238,   238,   238,   239,   239,   240,   240,   241,   242,
+     243,   243,   243,   243,   243,   243,   243,   243,   243,   244,
+     244,   245,   245,   245,   245,   245,   246,   246,   247,   247,
+     247,   248,   248,   248,   248,   248,   248,   249,   249,   250,
+     251,   252,   253,   253,   253,   253,   253,   253,   253,   253,
+     253,   253,   254,   254,   255,   255,   256,   256,   257,   257,
+     258,   258,   259,   260,   260,   261,   261,   261,   262,   263,
+     263,   263,   264,   264,   265,   265,   265,   265,   265,   265,
+     265,   265,   266,   266,   267,   267,   268,   269,   269,   270,
+     271,   271,   272,   273,   273,   274
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -2762,18 +2764,18 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
   switch (yyn)
     {
         case 284:
-#line 398 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 418 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                psi_cpp_exp_exec((*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), P->preproc, PSI_DATA(P));
                psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        }
 }
-#line 2773 "src/parser_proc.c" /* glr.c:816  */
+#line 2775 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 285:
-#line 404 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 424 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if (P->file.ln) {
                P->error(PSI_DATA(P), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), PSI_WARNING,
@@ -2782,91 +2784,91 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                P->file.ln = strndup((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->size);
        }
 }
-#line 2786 "src/parser_proc.c" /* glr.c:816  */
+#line 2788 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 286:
-#line 412 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 432 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_const(P, (*(struct psi_const **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2794 "src/parser_proc.c" /* glr.c:816  */
+#line 2796 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 287:
-#line 415 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 435 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_decl(P, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2802 "src/parser_proc.c" /* glr.c:816  */
+#line 2804 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 290:
-#line 420 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 440 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_typedef(P, (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2810 "src/parser_proc.c" /* glr.c:816  */
+#line 2812 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 291:
-#line 423 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 443 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_struct(P, (*(struct psi_decl_struct **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2818 "src/parser_proc.c" /* glr.c:816  */
+#line 2820 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 292:
-#line 426 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 446 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_union(P, (*(struct psi_decl_union **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2826 "src/parser_proc.c" /* glr.c:816  */
+#line 2828 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 293:
-#line 429 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 449 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2834 "src/parser_proc.c" /* glr.c:816  */
+#line 2836 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 294:
-#line 432 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 452 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_parser_proc_add_impl(P, (*(struct psi_impl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2842 "src/parser_proc.c" /* glr.c:816  */
+#line 2844 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 295:
-#line 438 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 458 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 2850 "src/parser_proc.c" /* glr.c:816  */
+#line 2852 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 296:
-#line 444 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 464 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = NULL;
 }
-#line 2858 "src/parser_proc.c" /* glr.c:816  */
+#line 2860 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 297:
-#line 447 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 467 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = (*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 2866 "src/parser_proc.c" /* glr.c:816  */
+#line 2868 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 298:
-#line 453 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 473 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                struct psi_token *msg = NULL;
@@ -2890,201 +2892,201 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        }
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 2894 "src/parser_proc.c" /* glr.c:816  */
+#line 2896 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 299:
-#line 476 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 496 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 2903 "src/parser_proc.c" /* glr.c:816  */
+#line 2905 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 300:
-#line 480 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 500 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, NULL);
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2912 "src/parser_proc.c" /* glr.c:816  */
+#line 2914 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 301:
-#line 484 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 504 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 2922 "src/parser_proc.c" /* glr.c:816  */
+#line 2924 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 302:
-#line 489 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 509 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_cpp_macro_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 2931 "src/parser_proc.c" /* glr.c:816  */
+#line 2933 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 303:
-#line 493 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 513 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 2940 "src/parser_proc.c" /* glr.c:816  */
+#line 2942 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 304:
-#line 497 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 517 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, NULL);
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 2949 "src/parser_proc.c" /* glr.c:816  */
+#line 2951 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 305:
-#line 501 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 521 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_plist_free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = NULL;
 }
-#line 2958 "src/parser_proc.c" /* glr.c:816  */
+#line 2960 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 329:
-#line 555 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 575 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
 }
-#line 2968 "src/parser_proc.c" /* glr.c:816  */
+#line 2970 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 330:
-#line 560 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 580 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init(NULL, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 2978 "src/parser_proc.c" /* glr.c:816  */
+#line 2980 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 331:
-#line 568 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 588 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_init(NULL);
 }
-#line 2986 "src/parser_proc.c" /* glr.c:816  */
+#line 2988 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 332:
-#line 571 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 591 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_init(NULL); /* FIXME */
 }
-#line 2994 "src/parser_proc.c" /* glr.c:816  */
+#line 2996 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 334:
-#line 575 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 595 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 3002 "src/parser_proc.c" /* glr.c:816  */
+#line 3004 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 335:
-#line 581 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 601 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_token_free), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3012 "src/parser_proc.c" /* glr.c:816  */
+#line 3014 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 336:
-#line 586 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 606 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3022 "src/parser_proc.c" /* glr.c:816  */
+#line 3024 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 337:
-#line 594 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 614 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 3030 "src/parser_proc.c" /* glr.c:816  */
+#line 3032 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 339:
-#line 601 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 621 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_token_free), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3039 "src/parser_proc.c" /* glr.c:816  */
+#line 3041 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 340:
-#line 605 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 625 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3048 "src/parser_proc.c" /* glr.c:816  */
+#line 3050 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 341:
-#line 612 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 632 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 3057 "src/parser_proc.c" /* glr.c:816  */
+#line 3059 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 342:
-#line 616 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 636 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3066 "src/parser_proc.c" /* glr.c:816  */
+#line 3068 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 343:
-#line 620 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 640 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_binary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3075 "src/parser_proc.c" /* glr.c:816  */
+#line 3077 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 344:
-#line 624 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 644 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_ternary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 3084 "src/parser_proc.c" /* glr.c:816  */
+#line 3086 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 345:
-#line 629 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 649 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        {
                uint8_t exists;
@@ -3095,11 +3097,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        }
 }
-#line 3099 "src/parser_proc.c" /* glr.c:816  */
+#line 3101 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 346:
-#line 639 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 659 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        {
                uint8_t exists;
@@ -3110,112 +3112,112 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 3114 "src/parser_proc.c" /* glr.c:816  */
+#line 3116 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 347:
-#line 649 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 669 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->flags));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3124 "src/parser_proc.c" /* glr.c:816  */
+#line 3126 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 348:
-#line 654 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 674 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3134 "src/parser_proc.c" /* glr.c:816  */
+#line 3136 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 349:
-#line 659 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 679 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 3143 "src/parser_proc.c" /* glr.c:816  */
+#line 3145 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 350:
-#line 663 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 683 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_DEFINE, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3154 "src/parser_proc.c" /* glr.c:816  */
+#line 3156 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 351:
-#line 669 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 689 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_FUNCTION,
                psi_cpp_macro_call_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 0));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 3165 "src/parser_proc.c" /* glr.c:816  */
+#line 3167 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 352:
-#line 678 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 698 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 3173 "src/parser_proc.c" /* glr.c:816  */
+#line 3175 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 354:
-#line 685 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 705 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_num_exp_free), 
                &(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3182 "src/parser_proc.c" /* glr.c:816  */
+#line 3184 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 355:
-#line 689 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 709 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3190 "src/parser_proc.c" /* glr.c:816  */
+#line 3192 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 356:
-#line 695 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 715 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_const **)(&(*yyvalp))) = psi_const_init((*(struct psi_const_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_def_val **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_const **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 3199 "src/parser_proc.c" /* glr.c:816  */
+#line 3201 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 357:
-#line 702 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 722 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_const_type **)(&(*yyvalp))) = psi_const_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
 }
-#line 3207 "src/parser_proc.c" /* glr.c:816  */
+#line 3209 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 362:
-#line 715 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 735 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_def_val **)(&(*yyvalp))) = NULL;
 }
-#line 3215 "src/parser_proc.c" /* glr.c:816  */
+#line 3217 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 363:
-#line 718 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 738 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if (psi_num_exp_validate(PSI_DATA(P), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL, NULL, NULL, NULL, NULL)) {
                impl_val res = {0};
@@ -3247,28 +3249,28 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        }
        psi_num_exp_free(&(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3251 "src/parser_proc.c" /* glr.c:816  */
+#line 3253 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 364:
-#line 749 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 769 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_def_val **)(&(*yyvalp))) = psi_impl_def_val_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_impl_def_val **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3260 "src/parser_proc.c" /* glr.c:816  */
+#line 3262 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 369:
-#line 763 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 783 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 3268 "src/parser_proc.c" /* glr.c:816  */
+#line 3270 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 370:
-#line 766 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 786 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init(PSI_T_VOID, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text),
@@ -3278,51 +3280,51 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3282 "src/parser_proc.c" /* glr.c:816  */
+#line 3284 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 371:
-#line 775 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 795 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 3290 "src/parser_proc.c" /* glr.c:816  */
+#line 3292 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 372:
-#line 781 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 801 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3298 "src/parser_proc.c" /* glr.c:816  */
+#line 3300 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 373:
-#line 784 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 804 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3306 "src/parser_proc.c" /* glr.c:816  */
+#line 3308 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 374:
-#line 790 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 810 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3314 "src/parser_proc.c" /* glr.c:816  */
+#line 3316 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 375:
-#line 793 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 813 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3322 "src/parser_proc.c" /* glr.c:816  */
+#line 3324 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 377:
-#line 800 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 820 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init(PSI_T_FUNCTION, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var->name),
@@ -3331,11 +3333,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->token);
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.func = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3335 "src/parser_proc.c" /* glr.c:816  */
+#line 3337 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 378:
-#line 808 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 828 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
@@ -3347,11 +3349,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.enm = (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
        psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3351 "src/parser_proc.c" /* glr.c:816  */
+#line 3353 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 379:
-#line 819 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 839 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
@@ -3361,11 +3363,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_struct(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct);
 }
-#line 3365 "src/parser_proc.c" /* glr.c:816  */
+#line 3367 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 380:
-#line 828 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 848 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
@@ -3375,20 +3377,20 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_union(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn);
 }
-#line 3379 "src/parser_proc.c" /* glr.c:816  */
+#line 3381 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 382:
-#line 841 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 861 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), psi_decl_var_init(NULL, 0, 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 3388 "src/parser_proc.c" /* glr.c:816  */
+#line 3390 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 383:
-#line 845 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 865 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init(PSI_T_ENUM, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->name),
@@ -3399,11 +3401,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.enm = (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3403 "src/parser_proc.c" /* glr.c:816  */
+#line 3405 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 384:
-#line 855 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 875 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text), psi_decl_var_init(NULL, 0, 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
@@ -3413,11 +3415,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_struct(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct);
 }
-#line 3417 "src/parser_proc.c" /* glr.c:816  */
+#line 3419 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 385:
-#line 864 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 884 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text), psi_decl_var_init(NULL, 0, 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
@@ -3427,138 +3429,138 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_union(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn);
 }
-#line 3431 "src/parser_proc.c" /* glr.c:816  */
+#line 3433 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 386:
-#line 876 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 896 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_type **)(&(*yyvalp))) = (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3439 "src/parser_proc.c" /* glr.c:816  */
+#line 3441 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 387:
-#line 879 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 899 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_type **)(&(*yyvalp))) = (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3447 "src/parser_proc.c" /* glr.c:816  */
+#line 3449 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 389:
-#line 886 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 906 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3456 "src/parser_proc.c" /* glr.c:816  */
+#line 3458 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 391:
-#line 894 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 914 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3466 "src/parser_proc.c" /* glr.c:816  */
+#line 3468 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 392:
-#line 899 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 919 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3476 "src/parser_proc.c" /* glr.c:816  */
+#line 3478 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 393:
-#line 904 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 924 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3486 "src/parser_proc.c" /* glr.c:816  */
+#line 3488 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 396:
-#line 914 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 934 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3494 "src/parser_proc.c" /* glr.c:816  */
+#line 3496 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 397:
-#line 920 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 940 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3502 "src/parser_proc.c" /* glr.c:816  */
+#line 3504 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 398:
-#line 923 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 943 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3510 "src/parser_proc.c" /* glr.c:816  */
+#line 3512 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 399:
-#line 926 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 946 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3518 "src/parser_proc.c" /* glr.c:816  */
+#line 3520 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 402:
-#line 937 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 957 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3526 "src/parser_proc.c" /* glr.c:816  */
+#line 3528 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 403:
-#line 940 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 960 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3534 "src/parser_proc.c" /* glr.c:816  */
+#line 3536 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 404:
-#line 943 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 963 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3542 "src/parser_proc.c" /* glr.c:816  */
+#line 3544 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 405:
-#line 949 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 969 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3550 "src/parser_proc.c" /* glr.c:816  */
+#line 3552 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 406:
-#line 952 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 972 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3558 "src/parser_proc.c" /* glr.c:816  */
+#line 3560 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 407:
-#line 955 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 975 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -3567,11 +3569,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 3571 "src/parser_proc.c" /* glr.c:816  */
+#line 3573 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 408:
-#line 963 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 983 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -3581,35 +3583,35 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
        }
 }
-#line 3585 "src/parser_proc.c" /* glr.c:816  */
+#line 3587 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 409:
-#line 975 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 995 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 3593 "src/parser_proc.c" /* glr.c:816  */
+#line 3595 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 410:
-#line 978 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 998 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3601 "src/parser_proc.c" /* glr.c:816  */
+#line 3603 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 411:
-#line 981 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1001 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3609 "src/parser_proc.c" /* glr.c:816  */
+#line 3611 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 412:
-#line 984 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1004 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -3617,19 +3619,19 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 3621 "src/parser_proc.c" /* glr.c:816  */
+#line 3623 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 413:
-#line 991 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1011 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3629 "src/parser_proc.c" /* glr.c:816  */
+#line 3631 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 414:
-#line 994 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1014 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -3637,43 +3639,43 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 3641 "src/parser_proc.c" /* glr.c:816  */
+#line 3643 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 415:
-#line 1004 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1024 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 3649 "src/parser_proc.c" /* glr.c:816  */
+#line 3651 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 417:
-#line 1010 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1030 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 3657 "src/parser_proc.c" /* glr.c:816  */
+#line 3659 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 421:
-#line 1019 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1039 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 3665 "src/parser_proc.c" /* glr.c:816  */
+#line 3667 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 422:
-#line 1022 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1042 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3673 "src/parser_proc.c" /* glr.c:816  */
+#line 3675 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 423:
-#line 1025 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1045 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -3682,92 +3684,92 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 3686 "src/parser_proc.c" /* glr.c:816  */
+#line 3688 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 424:
-#line 1036 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1056 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 3694 "src/parser_proc.c" /* glr.c:816  */
+#line 3696 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 425:
-#line 1039 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1059 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 3702 "src/parser_proc.c" /* glr.c:816  */
+#line 3704 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 431:
-#line 1059 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1079 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_decl_arg_free(&(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3710 "src/parser_proc.c" /* glr.c:816  */
+#line 3712 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 433:
-#line 1066 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1086 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_plist_free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3718 "src/parser_proc.c" /* glr.c:816  */
+#line 3720 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 434:
-#line 1072 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1092 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), &(*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3726 "src/parser_proc.c" /* glr.c:816  */
+#line 3728 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 435:
-#line 1075 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1095 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3734 "src/parser_proc.c" /* glr.c:816  */
+#line 3736 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 436:
-#line 1081 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1101 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_decl_free(&(*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3742 "src/parser_proc.c" /* glr.c:816  */
+#line 3744 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 437:
-#line 1084 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1104 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_decl_free(&(*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3750 "src/parser_proc.c" /* glr.c:816  */
+#line 3752 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 438:
-#line 1087 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1107 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        psi_decl_free(&(*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3758 "src/parser_proc.c" /* glr.c:816  */
+#line 3760 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 445:
-#line 1108 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1128 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_decl **)(&(*yyvalp)))->abi = psi_decl_abi_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
 }
-#line 3767 "src/parser_proc.c" /* glr.c:816  */
+#line 3769 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 448:
-#line 1120 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1140 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init((*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
@@ -3775,11 +3777,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 3779 "src/parser_proc.c" /* glr.c:816  */
+#line 3781 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 449:
-#line 1127 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1147 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init((*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
        (*(struct psi_decl **)(&(*yyvalp)))->varargs = 1;
@@ -3788,11 +3790,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 3792 "src/parser_proc.c" /* glr.c:816  */
+#line 3794 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 450:
-#line 1138 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1158 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init((*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
@@ -3800,11 +3802,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 3804 "src/parser_proc.c" /* glr.c:816  */
+#line 3806 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 451:
-#line 1145 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1165 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init((*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
        (*(struct psi_decl **)(&(*yyvalp)))->varargs = 1;
@@ -3813,11 +3815,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 3817 "src/parser_proc.c" /* glr.c:816  */
+#line 3819 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 452:
-#line 1156 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1176 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
@@ -3825,11 +3827,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3829 "src/parser_proc.c" /* glr.c:816  */
+#line 3831 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 453:
-#line 1163 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1183 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
@@ -3841,11 +3843,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3845 "src/parser_proc.c" /* glr.c:816  */
+#line 3847 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 454:
-#line 1174 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1194 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
@@ -3857,11 +3859,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3861 "src/parser_proc.c" /* glr.c:816  */
+#line 3863 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 455:
-#line 1185 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1205 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
@@ -3873,11 +3875,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3877 "src/parser_proc.c" /* glr.c:816  */
+#line 3879 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 457:
-#line 1200 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1220 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text),
@@ -3887,62 +3889,62 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3891 "src/parser_proc.c" /* glr.c:816  */
+#line 3893 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 458:
-#line 1212 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1232 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 3899 "src/parser_proc.c" /* glr.c:816  */
+#line 3901 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 459:
-#line 1215 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1235 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 3907 "src/parser_proc.c" /* glr.c:816  */
+#line 3909 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 460:
-#line 1218 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1238 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3915 "src/parser_proc.c" /* glr.c:816  */
+#line 3917 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 461:
-#line 1221 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1241 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3923 "src/parser_proc.c" /* glr.c:816  */
+#line 3925 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 462:
-#line 1228 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1248 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3931 "src/parser_proc.c" /* glr.c:816  */
+#line 3933 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 463:
-#line 1231 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1251 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), 
                psi_decl_var_init(NULL, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), 0)
        );
 }
-#line 3942 "src/parser_proc.c" /* glr.c:816  */
+#line 3944 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 464:
-#line 1237 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1257 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text),
@@ -3952,11 +3954,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3956 "src/parser_proc.c" /* glr.c:816  */
+#line 3958 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 465:
-#line 1246 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1266 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text),
@@ -3966,11 +3968,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 3970 "src/parser_proc.c" /* glr.c:816  */
+#line 3972 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 466:
-#line 1258 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1278 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init(PSI_T_FUNCTION, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var->name),
@@ -3979,19 +3981,19 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->token);
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.func = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 3983 "src/parser_proc.c" /* glr.c:816  */
+#line 3985 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 467:
-#line 1266 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1286 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 3991 "src/parser_proc.c" /* glr.c:816  */
+#line 3993 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 468:
-#line 1269 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1289 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
@@ -4002,11 +4004,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4006 "src/parser_proc.c" /* glr.c:816  */
+#line 4008 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 469:
-#line 1279 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1299 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
@@ -4017,31 +4019,31 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4021 "src/parser_proc.c" /* glr.c:816  */
+#line 4023 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 470:
-#line 1292 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1312 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_var **)(&(*yyvalp))) = psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)) + !! (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4031 "src/parser_proc.c" /* glr.c:816  */
+#line 4033 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 471:
-#line 1297 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1317 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_var **)(&(*yyvalp))) = psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, !! (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4041 "src/parser_proc.c" /* glr.c:816  */
+#line 4043 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 472:
-#line 1305 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1325 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_union **)(&(*yyvalp))) = psi_decl_union_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -4049,11 +4051,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_union **)(&(*yyvalp)))->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
        (*(struct psi_decl_union **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4053 "src/parser_proc.c" /* glr.c:816  */
+#line 4055 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 473:
-#line 1315 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1335 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_struct **)(&(*yyvalp))) = psi_decl_struct_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -4061,27 +4063,27 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_struct **)(&(*yyvalp)))->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
        (*(struct psi_decl_struct **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4065 "src/parser_proc.c" /* glr.c:816  */
+#line 4067 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 474:
-#line 1325 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1345 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4073 "src/parser_proc.c" /* glr.c:816  */
+#line 4075 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 476:
-#line 1332 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1352 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 4081 "src/parser_proc.c" /* glr.c:816  */
+#line 4083 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 477:
-#line 1338 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1358 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->layout = (*(struct psi_layout **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
@@ -4096,11 +4098,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 4100 "src/parser_proc.c" /* glr.c:816  */
+#line 4102 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 478:
-#line 1352 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1372 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->layout = (*(struct psi_layout **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
@@ -4115,27 +4117,27 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 4119 "src/parser_proc.c" /* glr.c:816  */
+#line 4121 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 479:
-#line 1369 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1389 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4127 "src/parser_proc.c" /* glr.c:816  */
+#line 4129 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 480:
-#line 1372 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1392 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4135 "src/parser_proc.c" /* glr.c:816  */
+#line 4137 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 481:
-#line 1378 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1398 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        {
                struct psi_decl_arg *arg = psi_decl_arg_init(NULL, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
@@ -4143,11 +4145,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &arg);
        }
 }
-#line 4147 "src/parser_proc.c" /* glr.c:816  */
+#line 4149 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 482:
-#line 1385 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1405 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        {
                struct psi_decl_arg *arg = psi_decl_arg_init(NULL, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
@@ -4155,189 +4157,189 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), &arg);
        }
 }
-#line 4159 "src/parser_proc.c" /* glr.c:816  */
+#line 4161 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 483:
-#line 1395 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1415 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_decl_enum **)(&(*yyvalp))) = psi_decl_enum_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_enum **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
 }
-#line 4168 "src/parser_proc.c" /* glr.c:816  */
+#line 4170 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 484:
-#line 1402 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1422 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_enum_item_free), &(*(struct psi_decl_enum_item **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4176 "src/parser_proc.c" /* glr.c:816  */
+#line 4178 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 485:
-#line 1405 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1425 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_enum_item **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4184 "src/parser_proc.c" /* glr.c:816  */
+#line 4186 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 486:
-#line 1411 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1431 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_enum_item **)(&(*yyvalp))) = psi_decl_enum_item_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, NULL);
        (*(struct psi_decl_enum_item **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4194 "src/parser_proc.c" /* glr.c:816  */
+#line 4196 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 487:
-#line 1416 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1436 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_enum_item **)(&(*yyvalp))) = psi_decl_enum_item_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_enum_item **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4204 "src/parser_proc.c" /* glr.c:816  */
+#line 4206 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 488:
-#line 1424 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1444 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 4213 "src/parser_proc.c" /* glr.c:816  */
+#line 4215 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 489:
-#line 1428 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1448 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_cast((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->token);
 }
-#line 4222 "src/parser_proc.c" /* glr.c:816  */
+#line 4224 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 490:
-#line 1432 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1452 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary(PSI_T_LPAREN, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4231 "src/parser_proc.c" /* glr.c:816  */
+#line 4233 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 491:
-#line 1436 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1456 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_binary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4240 "src/parser_proc.c" /* glr.c:816  */
+#line 4242 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 492:
-#line 1440 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1460 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4249 "src/parser_proc.c" /* glr.c:816  */
+#line 4251 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 493:
-#line 1444 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1464 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_ternary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 4258 "src/parser_proc.c" /* glr.c:816  */
+#line 4260 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 494:
-#line 1451 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1471 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->flags);
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4267 "src/parser_proc.c" /* glr.c:816  */
+#line 4269 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 495:
-#line 1455 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1475 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0);
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4276 "src/parser_proc.c" /* glr.c:816  */
+#line 4278 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 496:
-#line 1459 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1479 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0);
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4285 "src/parser_proc.c" /* glr.c:816  */
+#line 4287 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 497:
-#line 1463 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1483 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0);
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4294 "src/parser_proc.c" /* glr.c:816  */
+#line 4296 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 498:
-#line 1467 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1487 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_NAME, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), 0);
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 4303 "src/parser_proc.c" /* glr.c:816  */
+#line 4305 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 499:
-#line 1471 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1491 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4311 "src/parser_proc.c" /* glr.c:816  */
+#line 4313 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 500:
-#line 1477 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1497 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 4320 "src/parser_proc.c" /* glr.c:816  */
+#line 4322 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 501:
-#line 1481 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1501 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4329 "src/parser_proc.c" /* glr.c:816  */
+#line 4331 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 502:
-#line 1488 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1508 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4337 "src/parser_proc.c" /* glr.c:816  */
+#line 4339 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 503:
-#line 1491 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1511 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                int8_t sizeof_void_p = sizeof(void *);
@@ -4346,37 +4348,37 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_SIZEOF, (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), 0);
        }
 }
-#line 4350 "src/parser_proc.c" /* glr.c:816  */
+#line 4352 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 504:
-#line 1502 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1522 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        int8_t sizeof_void_p = sizeof(void *);
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT8, &sizeof_void_p, 0);
 }
-#line 4359 "src/parser_proc.c" /* glr.c:816  */
+#line 4361 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 505:
-#line 1506 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1526 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        int8_t sizeof_a = sizeof('a');
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT8, &sizeof_a, 0);
 }
-#line 4368 "src/parser_proc.c" /* glr.c:816  */
+#line 4370 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 506:
-#line 1510 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1530 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT64, &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->size, 0);
 }
-#line 4376 "src/parser_proc.c" /* glr.c:816  */
+#line 4378 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 507:
-#line 1516 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1536 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -4387,11 +4389,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
        }
 }
-#line 4391 "src/parser_proc.c" /* glr.c:816  */
+#line 4393 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 508:
-#line 1529 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1549 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -4402,11 +4404,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
        }
 }
-#line 4406 "src/parser_proc.c" /* glr.c:816  */
+#line 4408 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 509:
-#line 1542 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1562 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -4417,94 +4419,94 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
        }
 }
-#line 4421 "src/parser_proc.c" /* glr.c:816  */
+#line 4423 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 510:
-#line 1555 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1575 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 4429 "src/parser_proc.c" /* glr.c:816  */
+#line 4431 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 511:
-#line 1558 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1578 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&(*yyvalp)))->type = PSI_T_NAME;
 }
-#line 4438 "src/parser_proc.c" /* glr.c:816  */
+#line 4440 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 512:
-#line 1565 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1585 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = NULL;
 }
-#line 4446 "src/parser_proc.c" /* glr.c:816  */
+#line 4448 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 513:
-#line 1568 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1588 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = psi_layout_init(0, 0, psi_layout_init(0, atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text), NULL));
 }
-#line 4454 "src/parser_proc.c" /* glr.c:816  */
+#line 4456 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 514:
-#line 1571 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1591 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = psi_layout_init(atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text), NULL);
 }
-#line 4462 "src/parser_proc.c" /* glr.c:816  */
+#line 4464 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 515:
-#line 1574 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1594 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = psi_layout_init(atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text), psi_layout_init(0, atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval))->text), NULL));
 }
-#line 4470 "src/parser_proc.c" /* glr.c:816  */
+#line 4472 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 516:
-#line 1580 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1600 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_layout*)(&(*yyvalp))).pos = 0;
        (*(struct psi_layout*)(&(*yyvalp))).len = 0;
 }
-#line 4479 "src/parser_proc.c" /* glr.c:816  */
+#line 4481 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 517:
-#line 1584 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1604 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_layout*)(&(*yyvalp))).pos = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text);
        (*(struct psi_layout*)(&(*yyvalp))).len = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
 }
-#line 4488 "src/parser_proc.c" /* glr.c:816  */
+#line 4490 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 518:
-#line 1591 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1611 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 4496 "src/parser_proc.c" /* glr.c:816  */
+#line 4498 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 519:
-#line 1594 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1614 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 4504 "src/parser_proc.c" /* glr.c:816  */
+#line 4506 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 520:
-#line 1597 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1617 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        if (psi_num_exp_validate(PSI_DATA(P), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), NULL, NULL, NULL, NULL, NULL)) {
                (*(size_t*)(&(*yyvalp))) = psi_long_num_exp((*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), NULL, &P->preproc->defs);
@@ -4512,88 +4514,88 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                (*(size_t*)(&(*yyvalp))) = 0;
        }
 }
-#line 4516 "src/parser_proc.c" /* glr.c:816  */
+#line 4518 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 521:
-#line 1607 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1627 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 4524 "src/parser_proc.c" /* glr.c:816  */
+#line 4526 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 522:
-#line 1610 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1630 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4532 "src/parser_proc.c" /* glr.c:816  */
+#line 4534 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 524:
-#line 1617 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1637 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 4540 "src/parser_proc.c" /* glr.c:816  */
+#line 4542 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 525:
-#line 1623 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1643 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = 1;
 }
-#line 4548 "src/parser_proc.c" /* glr.c:816  */
+#line 4550 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 526:
-#line 1626 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1646 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)) + 1;
 }
-#line 4556 "src/parser_proc.c" /* glr.c:816  */
+#line 4558 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 529:
-#line 1643 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1663 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl **)(&(*yyvalp))) = psi_impl_init((*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4564 "src/parser_proc.c" /* glr.c:816  */
+#line 4566 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 530:
-#line 1646 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1666 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl **)(&(*yyvalp))) = psi_impl_init((*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->static_memory = 1;
 }
-#line 4573 "src/parser_proc.c" /* glr.c:816  */
+#line 4575 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 531:
-#line 1653 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1673 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_func **)(&(*yyvalp))) = psi_impl_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, NULL, (*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval));
 }
-#line 4583 "src/parser_proc.c" /* glr.c:816  */
+#line 4585 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 532:
-#line 1658 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1678 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_func **)(&(*yyvalp))) = psi_impl_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval));
 }
-#line 4593 "src/parser_proc.c" /* glr.c:816  */
+#line 4595 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 533:
-#line 1663 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1683 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_func **)(&(*yyvalp))) = psi_impl_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval)), (*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval)));
@@ -4601,512 +4603,512 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_impl_func **)(&(*yyvalp)))->vararg = psi_impl_arg_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)), psi_impl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))), NULL);
        (*(struct psi_impl_func **)(&(*yyvalp)))->vararg->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 4605 "src/parser_proc.c" /* glr.c:816  */
+#line 4607 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 534:
-#line 1673 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1693 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_arg_free), &(*(struct psi_impl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4613 "src/parser_proc.c" /* glr.c:816  */
+#line 4615 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 535:
-#line 1676 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1696 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_impl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4621 "src/parser_proc.c" /* glr.c:816  */
+#line 4623 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 536:
-#line 1682 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1702 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_arg **)(&(*yyvalp))) = psi_impl_arg_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
 }
-#line 4629 "src/parser_proc.c" /* glr.c:816  */
+#line 4631 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 537:
-#line 1685 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1705 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_arg **)(&(*yyvalp))) = psi_impl_arg_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_impl_def_val **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4637 "src/parser_proc.c" /* glr.c:816  */
+#line 4639 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 538:
-#line 1691 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1711 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_var **)(&(*yyvalp))) = psi_impl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4646 "src/parser_proc.c" /* glr.c:816  */
+#line 4648 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 539:
-#line 1698 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1718 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_impl_type **)(&(*yyvalp))) = psi_impl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_impl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4655 "src/parser_proc.c" /* glr.c:816  */
+#line 4657 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 549:
-#line 1717 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1737 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_stmt_free), &(*(struct psi_token ***)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4663 "src/parser_proc.c" /* glr.c:816  */
+#line 4665 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 550:
-#line 1720 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1740 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_token ***)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4671 "src/parser_proc.c" /* glr.c:816  */
+#line 4673 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 551:
-#line 1726 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1746 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_return_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4679 "src/parser_proc.c" /* glr.c:816  */
+#line 4681 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 552:
-#line 1729 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1749 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_let_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4687 "src/parser_proc.c" /* glr.c:816  */
+#line 4689 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 553:
-#line 1732 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1752 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_set_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4695 "src/parser_proc.c" /* glr.c:816  */
+#line 4697 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 554:
-#line 1735 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1755 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_assert_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4703 "src/parser_proc.c" /* glr.c:816  */
+#line 4705 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 555:
-#line 1738 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1758 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_free_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4711 "src/parser_proc.c" /* glr.c:816  */
+#line 4713 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 556:
-#line 1744 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1764 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_stmt **)(&(*yyvalp))) = psi_let_stmt_init((*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_let_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4720 "src/parser_proc.c" /* glr.c:816  */
+#line 4722 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 557:
-#line 1748 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1768 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_stmt **)(&(*yyvalp))) = psi_let_stmt_init(psi_let_exp_init_ex((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), PSI_LET_TMP, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))));
        (*(struct psi_let_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
        (*(struct psi_let_stmt **)(&(*yyvalp)))->exp->is_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 4730 "src/parser_proc.c" /* glr.c:816  */
+#line 4732 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 559:
-#line 1757 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1777 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = true;
 }
-#line 4739 "src/parser_proc.c" /* glr.c:816  */
+#line 4741 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 560:
-#line 1761 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1781 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = false;
 }
-#line 4748 "src/parser_proc.c" /* glr.c:816  */
+#line 4750 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 561:
-#line 1768 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1788 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_NULL, NULL);
 }
-#line 4756 "src/parser_proc.c" /* glr.c:816  */
+#line 4758 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 562:
-#line 1771 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1791 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4764 "src/parser_proc.c" /* glr.c:816  */
+#line 4766 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 563:
-#line 1774 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1794 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLOC, (*(struct psi_let_calloc **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4772 "src/parser_proc.c" /* glr.c:816  */
+#line 4774 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 564:
-#line 1777 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1797 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLOC, (*(struct psi_let_calloc **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_let_calloc **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->static_memory = 1;
 }
-#line 4781 "src/parser_proc.c" /* glr.c:816  */
+#line 4783 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 565:
-#line 1781 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1801 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLBACK, (*(struct psi_let_callback **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4789 "src/parser_proc.c" /* glr.c:816  */
+#line 4791 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 566:
-#line 1784 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1804 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, (*(struct psi_let_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4797 "src/parser_proc.c" /* glr.c:816  */
+#line 4799 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 567:
-#line 1790 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1810 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_let_exp **)(&(*yyvalp)))->var = (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 4806 "src/parser_proc.c" /* glr.c:816  */
+#line 4808 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 568:
-#line 1794 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1814 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = 1;
        (*(struct psi_let_exp **)(&(*yyvalp)))->var = (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
 }
-#line 4816 "src/parser_proc.c" /* glr.c:816  */
+#line 4818 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 569:
-#line 1802 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1822 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_calloc **)(&(*yyvalp))) = psi_let_calloc_init((*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_let_calloc **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
 }
-#line 4825 "src/parser_proc.c" /* glr.c:816  */
+#line 4827 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 570:
-#line 1809 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1829 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_callback **)(&(*yyvalp))) = psi_let_callback_init(psi_let_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        (*(struct psi_let_callback **)(&(*yyvalp)))->func->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)));
        (*(struct psi_let_callback **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval)));
 }
-#line 4835 "src/parser_proc.c" /* glr.c:816  */
+#line 4837 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 571:
-#line 1817 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1837 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_let_func **)(&(*yyvalp))) = psi_let_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        (*(struct psi_let_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
        (*(struct psi_let_func **)(&(*yyvalp)))->inner = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 4845 "src/parser_proc.c" /* glr.c:816  */
+#line 4847 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 582:
-#line 1838 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1858 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4853 "src/parser_proc.c" /* glr.c:816  */
+#line 4855 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 583:
-#line 1841 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1861 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4861 "src/parser_proc.c" /* glr.c:816  */
+#line 4863 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 584:
-#line 1847 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1867 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_let_exp_free), &(*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4869 "src/parser_proc.c" /* glr.c:816  */
+#line 4871 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 585:
-#line 1850 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1870 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4877 "src/parser_proc.c" /* glr.c:816  */
+#line 4879 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 588:
-#line 1861 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1881 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4885 "src/parser_proc.c" /* glr.c:816  */
+#line 4887 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 589:
-#line 1864 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1884 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4893 "src/parser_proc.c" /* glr.c:816  */
+#line 4895 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 590:
-#line 1870 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1890 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4901 "src/parser_proc.c" /* glr.c:816  */
+#line 4903 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 591:
-#line 1873 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1893 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4909 "src/parser_proc.c" /* glr.c:816  */
+#line 4911 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 592:
-#line 1879 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1899 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_return_stmt **)(&(*yyvalp))) = psi_return_stmt_init((*(struct psi_return_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_return_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4918 "src/parser_proc.c" /* glr.c:816  */
+#line 4920 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 593:
-#line 1886 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1906 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_return_exp **)(&(*yyvalp))) = psi_return_exp_init((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), psi_set_exp_init(PSI_SET_FUNC, (*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
        (*(struct psi_return_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->token);
 }
-#line 4927 "src/parser_proc.c" /* glr.c:816  */
+#line 4929 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 594:
-#line 1890 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1910 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_return_exp **)(&(*yyvalp))) = psi_return_exp_init(NULL, NULL, psi_set_exp_init(PSI_SET_FUNC, (*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
        (*(struct psi_return_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 4936 "src/parser_proc.c" /* glr.c:816  */
+#line 4938 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 595:
-#line 1897 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1917 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4944 "src/parser_proc.c" /* glr.c:816  */
+#line 4946 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 596:
-#line 1900 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1920 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4952 "src/parser_proc.c" /* glr.c:816  */
+#line 4954 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 597:
-#line 1903 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1923 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 4960 "src/parser_proc.c" /* glr.c:816  */
+#line 4962 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 598:
-#line 1909 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1929 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_set_stmt **)(&(*yyvalp))) = psi_set_stmt_init((*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_set_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4969 "src/parser_proc.c" /* glr.c:816  */
+#line 4971 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 599:
-#line 1916 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1936 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_set_exp **)(&(*yyvalp))) = psi_set_exp_init(PSI_SET_FUNC, (*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4977 "src/parser_proc.c" /* glr.c:816  */
+#line 4979 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 600:
-#line 1919 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1939 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_set_exp **)(&(*yyvalp))) = psi_set_exp_init(PSI_SET_NUMEXP, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4985 "src/parser_proc.c" /* glr.c:816  */
+#line 4987 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 601:
-#line 1922 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1942 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_set_exp **)(&(*yyvalp))) = (*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_set_exp **)(&(*yyvalp)))->var = (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 4994 "src/parser_proc.c" /* glr.c:816  */
+#line 4996 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 602:
-#line 1929 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1949 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_set_func **)(&(*yyvalp))) = psi_set_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        (*(struct psi_set_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
        (*(struct psi_set_func **)(&(*yyvalp)))->inner = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5004 "src/parser_proc.c" /* glr.c:816  */
+#line 5006 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 603:
-#line 1934 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1954 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_set_func **)(&(*yyvalp))) = psi_set_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
        (*(struct psi_set_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
        (*(struct psi_set_func **)(&(*yyvalp)))->recursive = 1;
 }
-#line 5014 "src/parser_proc.c" /* glr.c:816  */
+#line 5016 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 612:
-#line 1953 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1973 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5022 "src/parser_proc.c" /* glr.c:816  */
+#line 5024 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 613:
-#line 1956 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1976 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5030 "src/parser_proc.c" /* glr.c:816  */
+#line 5032 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 614:
-#line 1962 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1982 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5038 "src/parser_proc.c" /* glr.c:816  */
+#line 5040 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 615:
-#line 1965 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1985 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5046 "src/parser_proc.c" /* glr.c:816  */
+#line 5048 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 616:
-#line 1971 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 1991 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_assert_stmt **)(&(*yyvalp))) = psi_assert_stmt_init((enum psi_assert_kind) (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_assert_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 5055 "src/parser_proc.c" /* glr.c:816  */
+#line 5057 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 619:
-#line 1983 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 2003 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_free_stmt **)(&(*yyvalp))) = psi_free_stmt_init((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_free_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 5064 "src/parser_proc.c" /* glr.c:816  */
+#line 5066 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 620:
-#line 1990 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 2010 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_free_exp_free), &(*(struct psi_free_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5072 "src/parser_proc.c" /* glr.c:816  */
+#line 5074 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 621:
-#line 1993 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 2013 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_free_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5080 "src/parser_proc.c" /* glr.c:816  */
+#line 5082 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 622:
-#line 1999 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 2019 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_free_exp **)(&(*yyvalp))) = psi_free_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_free_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 5090 "src/parser_proc.c" /* glr.c:816  */
+#line 5092 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 623:
-#line 2007 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 2027 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(bool*)(&(*yyvalp))) = false;
 }
-#line 5098 "src/parser_proc.c" /* glr.c:816  */
+#line 5100 "src/parser_proc.c" /* glr.c:816  */
     break;
 
   case 624:
-#line 2010 "src/parser_proc_grammar.y" /* glr.c:816  */
+#line 2030 "src/parser_proc_grammar.y" /* glr.c:816  */
     {
        (*(bool*)(&(*yyvalp))) = true;
 }
-#line 5106 "src/parser_proc.c" /* glr.c:816  */
+#line 5108 "src/parser_proc.c" /* glr.c:816  */
     break;
 
 
-#line 5110 "src/parser_proc.c" /* glr.c:816  */
+#line 5112 "src/parser_proc.c" /* glr.c:816  */
       default: break;
     }
 
@@ -5154,712 +5156,712 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct psi_parser
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   switch (yytype)
     {
-          case 129: /* binary_op_token  */
-#line 262 "src/parser_proc_grammar.y" /* glr.c:846  */
+          case 141: /* binary_op_token  */
+#line 282 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5161 "src/parser_proc.c" /* glr.c:846  */
+#line 5163 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 130: /* unary_op_token  */
-#line 262 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 142: /* unary_op_token  */
+#line 282 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5167 "src/parser_proc.c" /* glr.c:846  */
+#line 5169 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 131: /* name_token  */
-#line 262 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 143: /* name_token  */
+#line 282 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5173 "src/parser_proc.c" /* glr.c:846  */
+#line 5175 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 132: /* any_noeol_token  */
-#line 262 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 144: /* any_noeol_token  */
+#line 282 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5179 "src/parser_proc.c" /* glr.c:846  */
+#line 5181 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 137: /* lib  */
-#line 256 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 149: /* lib  */
+#line 276 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5185 "src/parser_proc.c" /* glr.c:846  */
+#line 5187 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 138: /* cpp  */
-#line 271 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 150: /* cpp  */
+#line 291 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
-#line 5191 "src/parser_proc.c" /* glr.c:846  */
+#line 5193 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 139: /* cpp_exp  */
-#line 271 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 151: /* cpp_exp  */
+#line 291 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
-#line 5197 "src/parser_proc.c" /* glr.c:846  */
+#line 5199 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 141: /* cpp_message_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 153: /* cpp_message_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5203 "src/parser_proc.c" /* glr.c:846  */
+#line 5205 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 142: /* cpp_include_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 154: /* cpp_include_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5209 "src/parser_proc.c" /* glr.c:846  */
+#line 5211 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 143: /* cpp_header_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 155: /* cpp_header_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5215 "src/parser_proc.c" /* glr.c:846  */
+#line 5217 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 144: /* cpp_no_arg_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 156: /* cpp_no_arg_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5221 "src/parser_proc.c" /* glr.c:846  */
+#line 5223 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 145: /* cpp_name_arg_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 157: /* cpp_name_arg_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5227 "src/parser_proc.c" /* glr.c:846  */
+#line 5229 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 146: /* cpp_exp_arg_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 158: /* cpp_exp_arg_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5233 "src/parser_proc.c" /* glr.c:846  */
+#line 5235 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 147: /* cpp_special_name_token  */
-#line 259 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 159: /* cpp_special_name_token  */
+#line 279 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5239 "src/parser_proc.c" /* glr.c:846  */
+#line 5241 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 148: /* cpp_macro_decl  */
-#line 273 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 160: /* cpp_macro_decl  */
+#line 293 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_cpp_macro_decl_free(&(*(struct psi_cpp_macro_decl **)(&(*yyvaluep))));}
-#line 5245 "src/parser_proc.c" /* glr.c:846  */
+#line 5247 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 149: /* cpp_macro_sig  */
-#line 275 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 161: /* cpp_macro_sig  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5251 "src/parser_proc.c" /* glr.c:846  */
+#line 5253 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 150: /* cpp_macro_sig_args  */
-#line 275 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 162: /* cpp_macro_sig_args  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5257 "src/parser_proc.c" /* glr.c:846  */
+#line 5259 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 151: /* cpp_macro_decl_tokens  */
-#line 275 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 163: /* cpp_macro_decl_tokens  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5263 "src/parser_proc.c" /* glr.c:846  */
+#line 5265 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 152: /* cpp_macro_decl_token_list  */
-#line 275 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 164: /* cpp_macro_decl_token_list  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5269 "src/parser_proc.c" /* glr.c:846  */
+#line 5271 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 153: /* cpp_macro_exp  */
-#line 277 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 165: /* cpp_macro_exp  */
+#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
-#line 5275 "src/parser_proc.c" /* glr.c:846  */
+#line 5277 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 154: /* cpp_macro_call_args  */
-#line 275 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 166: /* cpp_macro_call_args  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5281 "src/parser_proc.c" /* glr.c:846  */
+#line 5283 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 155: /* cpp_macro_call_arg_list  */
-#line 275 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 167: /* cpp_macro_call_arg_list  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5287 "src/parser_proc.c" /* glr.c:846  */
+#line 5289 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 156: /* constant  */
-#line 283 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 168: /* constant  */
+#line 303 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_const_free(&(*(struct psi_const **)(&(*yyvaluep))));}
-#line 5293 "src/parser_proc.c" /* glr.c:846  */
+#line 5295 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 157: /* constant_type  */
-#line 285 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 169: /* constant_type  */
+#line 305 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_const_type_free(&(*(struct psi_const_type **)(&(*yyvaluep))));}
-#line 5299 "src/parser_proc.c" /* glr.c:846  */
+#line 5301 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 158: /* constant_type_token  */
-#line 280 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 170: /* constant_type_token  */
+#line 300 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5305 "src/parser_proc.c" /* glr.c:846  */
+#line 5307 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 159: /* impl_def_val  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 171: /* impl_def_val  */
+#line 307 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_def_val_free(&(*(struct psi_impl_def_val **)(&(*yyvaluep))));}
-#line 5311 "src/parser_proc.c" /* glr.c:846  */
+#line 5313 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 160: /* impl_def_val_token  */
-#line 280 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 172: /* impl_def_val_token  */
+#line 300 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5317 "src/parser_proc.c" /* glr.c:846  */
+#line 5319 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 161: /* decl_typedef  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 173: /* decl_typedef  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5323 "src/parser_proc.c" /* glr.c:846  */
+#line 5325 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 162: /* typedef  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 174: /* typedef  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5329 "src/parser_proc.c" /* glr.c:846  */
+#line 5331 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 163: /* typedef_anon  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 175: /* typedef_anon  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5335 "src/parser_proc.c" /* glr.c:846  */
+#line 5337 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 164: /* typedef_decl  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 176: /* typedef_decl  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5341 "src/parser_proc.c" /* glr.c:846  */
+#line 5343 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 165: /* typedef_anon_decl  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 177: /* typedef_anon_decl  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5347 "src/parser_proc.c" /* glr.c:846  */
+#line 5349 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 166: /* qualified_decl_type  */
-#line 293 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 178: /* qualified_decl_type  */
+#line 313 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 5353 "src/parser_proc.c" /* glr.c:846  */
+#line 5355 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 167: /* decl_type  */
-#line 293 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 179: /* decl_type  */
+#line 313 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 5359 "src/parser_proc.c" /* glr.c:846  */
+#line 5361 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 168: /* decl_type_complex  */
-#line 293 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 180: /* decl_type_complex  */
+#line 313 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 5365 "src/parser_proc.c" /* glr.c:846  */
+#line 5367 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 169: /* decl_type_simple  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 181: /* decl_type_simple  */
+#line 310 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5371 "src/parser_proc.c" /* glr.c:846  */
+#line 5373 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 170: /* decl_real_type  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 182: /* decl_real_type  */
+#line 310 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5377 "src/parser_proc.c" /* glr.c:846  */
+#line 5379 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 171: /* int_signed  */
-#line 268 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 183: /* int_signed  */
+#line 288 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5383 "src/parser_proc.c" /* glr.c:846  */
+#line 5385 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 172: /* int_width  */
-#line 265 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 184: /* int_width  */
+#line 285 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5389 "src/parser_proc.c" /* glr.c:846  */
+#line 5391 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 173: /* decl_int_type  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 185: /* decl_int_type  */
+#line 310 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5395 "src/parser_proc.c" /* glr.c:846  */
+#line 5397 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 174: /* int_signed_types  */
-#line 265 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 186: /* int_signed_types  */
+#line 285 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5401 "src/parser_proc.c" /* glr.c:846  */
+#line 5403 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 175: /* signed_short_types  */
-#line 268 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 187: /* signed_short_types  */
+#line 288 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5407 "src/parser_proc.c" /* glr.c:846  */
+#line 5409 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 176: /* signed_long_types  */
-#line 268 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 188: /* signed_long_types  */
+#line 288 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5413 "src/parser_proc.c" /* glr.c:846  */
+#line 5415 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 177: /* int_width_types  */
-#line 265 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 189: /* int_width_types  */
+#line 285 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5419 "src/parser_proc.c" /* glr.c:846  */
+#line 5421 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 178: /* decl_stmt  */
-#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 190: /* decl_stmt  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 5425 "src/parser_proc.c" /* glr.c:846  */
+#line 5427 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 184: /* decl_vars  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 196: /* decl_vars  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5431 "src/parser_proc.c" /* glr.c:846  */
+#line 5433 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 189: /* decl  */
-#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 201: /* decl  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 5437 "src/parser_proc.c" /* glr.c:846  */
+#line 5439 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 190: /* decl_body  */
-#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 202: /* decl_body  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 5443 "src/parser_proc.c" /* glr.c:846  */
+#line 5445 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 191: /* decl_func_body  */
-#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 203: /* decl_func_body  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 5449 "src/parser_proc.c" /* glr.c:846  */
+#line 5451 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 192: /* decl_functor_body  */
-#line 295 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 204: /* decl_functor_body  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 5455 "src/parser_proc.c" /* glr.c:846  */
+#line 5457 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 193: /* decl_functor  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 205: /* decl_functor  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5461 "src/parser_proc.c" /* glr.c:846  */
+#line 5463 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 194: /* decl_func  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 206: /* decl_func  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5467 "src/parser_proc.c" /* glr.c:846  */
+#line 5469 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 195: /* decl_args  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 207: /* decl_args  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5473 "src/parser_proc.c" /* glr.c:846  */
+#line 5475 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 196: /* decl_anon_arg  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 208: /* decl_anon_arg  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5479 "src/parser_proc.c" /* glr.c:846  */
+#line 5481 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 197: /* decl_arg  */
-#line 297 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 209: /* decl_arg  */
+#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 5485 "src/parser_proc.c" /* glr.c:846  */
+#line 5487 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 198: /* decl_var  */
-#line 299 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 210: /* decl_var  */
+#line 319 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_var_free(&(*(struct psi_decl_var **)(&(*yyvaluep))));}
-#line 5491 "src/parser_proc.c" /* glr.c:846  */
+#line 5493 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 199: /* decl_union  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 211: /* decl_union  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_union_free(&(*(struct psi_decl_union **)(&(*yyvaluep))));}
-#line 5497 "src/parser_proc.c" /* glr.c:846  */
+#line 5499 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 200: /* decl_struct  */
-#line 301 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 212: /* decl_struct  */
+#line 321 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_struct_free(&(*(struct psi_decl_struct **)(&(*yyvaluep))));}
-#line 5503 "src/parser_proc.c" /* glr.c:846  */
+#line 5505 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 201: /* decl_struct_args  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 213: /* decl_struct_args  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5509 "src/parser_proc.c" /* glr.c:846  */
+#line 5511 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 202: /* struct_args_block  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 214: /* struct_args_block  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5515 "src/parser_proc.c" /* glr.c:846  */
+#line 5517 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 203: /* struct_args  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 215: /* struct_args  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5521 "src/parser_proc.c" /* glr.c:846  */
+#line 5523 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 204: /* struct_arg_var_list  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 216: /* struct_arg_var_list  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5527 "src/parser_proc.c" /* glr.c:846  */
+#line 5529 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 205: /* decl_vars_with_layout  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 217: /* decl_vars_with_layout  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5533 "src/parser_proc.c" /* glr.c:846  */
+#line 5535 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 206: /* decl_enum  */
-#line 305 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 218: /* decl_enum  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_enum_free(&(*(struct psi_decl_enum **)(&(*yyvaluep))));}
-#line 5539 "src/parser_proc.c" /* glr.c:846  */
+#line 5541 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 207: /* decl_enum_items  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 219: /* decl_enum_items  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5545 "src/parser_proc.c" /* glr.c:846  */
+#line 5547 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 208: /* decl_enum_item  */
-#line 307 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 220: /* decl_enum_item  */
+#line 327 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_decl_enum_item_free(&(*(struct psi_decl_enum_item **)(&(*yyvaluep))));}
-#line 5551 "src/parser_proc.c" /* glr.c:846  */
+#line 5553 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 209: /* num_exp  */
-#line 365 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 221: /* num_exp  */
+#line 385 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
-#line 5557 "src/parser_proc.c" /* glr.c:846  */
+#line 5559 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 210: /* number  */
-#line 367 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 222: /* number  */
+#line 387 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 5563 "src/parser_proc.c" /* glr.c:846  */
+#line 5565 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 211: /* sizeof  */
-#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 223: /* sizeof  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 5569 "src/parser_proc.c" /* glr.c:846  */
+#line 5571 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 212: /* sizeof_body  */
-#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 224: /* sizeof_body  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 5575 "src/parser_proc.c" /* glr.c:846  */
+#line 5577 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 213: /* sizeof_body_notypes  */
-#line 317 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 225: /* sizeof_body_notypes  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 5581 "src/parser_proc.c" /* glr.c:846  */
+#line 5583 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 214: /* enum_name  */
-#line 256 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 226: /* enum_name  */
+#line 276 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5587 "src/parser_proc.c" /* glr.c:846  */
+#line 5589 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 215: /* union_name  */
-#line 256 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 227: /* union_name  */
+#line 276 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5593 "src/parser_proc.c" /* glr.c:846  */
+#line 5595 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 216: /* struct_name  */
-#line 256 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 228: /* struct_name  */
+#line 276 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5599 "src/parser_proc.c" /* glr.c:846  */
+#line 5601 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 217: /* optional_name  */
-#line 256 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 229: /* optional_name  */
+#line 276 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5605 "src/parser_proc.c" /* glr.c:846  */
+#line 5607 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 218: /* decl_layout  */
-#line 314 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 230: /* decl_layout  */
+#line 334 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_layout_free(&(*(struct psi_layout **)(&(*yyvaluep))));}
-#line 5611 "src/parser_proc.c" /* glr.c:846  */
+#line 5613 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 219: /* align_and_size  */
-#line 312 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 231: /* align_and_size  */
+#line 332 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5617 "src/parser_proc.c" /* glr.c:846  */
+#line 5619 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 220: /* array_size  */
-#line 370 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 232: /* array_size  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5623 "src/parser_proc.c" /* glr.c:846  */
+#line 5625 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 221: /* indirection  */
-#line 370 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 233: /* indirection  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5629 "src/parser_proc.c" /* glr.c:846  */
+#line 5631 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 222: /* pointers  */
-#line 370 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 234: /* pointers  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5635 "src/parser_proc.c" /* glr.c:846  */
+#line 5637 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 223: /* asterisks  */
-#line 370 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 235: /* asterisks  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5641 "src/parser_proc.c" /* glr.c:846  */
+#line 5643 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 225: /* impl  */
-#line 320 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 237: /* impl  */
+#line 340 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_free(&(*(struct psi_impl **)(&(*yyvaluep))));}
-#line 5647 "src/parser_proc.c" /* glr.c:846  */
+#line 5649 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 226: /* impl_func  */
-#line 322 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 238: /* impl_func  */
+#line 342 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_func_free(&(*(struct psi_impl_func **)(&(*yyvaluep))));}
-#line 5653 "src/parser_proc.c" /* glr.c:846  */
+#line 5655 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 227: /* impl_args  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 239: /* impl_args  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5659 "src/parser_proc.c" /* glr.c:846  */
+#line 5661 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 228: /* impl_arg  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 240: /* impl_arg  */
+#line 344 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_arg_free(&(*(struct psi_impl_arg **)(&(*yyvaluep))));}
-#line 5665 "src/parser_proc.c" /* glr.c:846  */
+#line 5667 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 229: /* impl_var  */
-#line 328 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 241: /* impl_var  */
+#line 348 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_var_free(&(*(struct psi_impl_var **)(&(*yyvaluep))));}
-#line 5671 "src/parser_proc.c" /* glr.c:846  */
+#line 5673 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 230: /* impl_type  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 242: /* impl_type  */
+#line 346 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
-#line 5677 "src/parser_proc.c" /* glr.c:846  */
+#line 5679 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 231: /* impl_type_token  */
-#line 360 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 243: /* impl_type_token  */
+#line 380 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5683 "src/parser_proc.c" /* glr.c:846  */
+#line 5685 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 232: /* impl_stmts  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 244: /* impl_stmts  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5689 "src/parser_proc.c" /* glr.c:846  */
+#line 5691 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 233: /* impl_stmt  */
-#line 358 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 245: /* impl_stmt  */
+#line 378 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_impl_stmt_free(&(*(struct psi_token ***)(&(*yyvaluep))));}
-#line 5695 "src/parser_proc.c" /* glr.c:846  */
+#line 5697 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 234: /* let_stmt  */
-#line 331 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 246: /* let_stmt  */
+#line 351 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_stmt_free(&(*(struct psi_let_stmt **)(&(*yyvaluep))));}
-#line 5701 "src/parser_proc.c" /* glr.c:846  */
+#line 5703 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 235: /* let_exp  */
-#line 333 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 247: /* let_exp  */
+#line 353 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 5707 "src/parser_proc.c" /* glr.c:846  */
+#line 5709 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 236: /* let_exp_byref  */
-#line 333 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 248: /* let_exp_byref  */
+#line 353 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 5713 "src/parser_proc.c" /* glr.c:846  */
+#line 5715 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 237: /* let_exp_assign  */
-#line 333 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 249: /* let_exp_assign  */
+#line 353 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 5719 "src/parser_proc.c" /* glr.c:846  */
+#line 5721 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 238: /* let_calloc  */
-#line 335 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 250: /* let_calloc  */
+#line 355 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_calloc_free(&(*(struct psi_let_calloc **)(&(*yyvaluep))));}
-#line 5725 "src/parser_proc.c" /* glr.c:846  */
+#line 5727 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 239: /* let_callback  */
-#line 337 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 251: /* let_callback  */
+#line 357 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_callback_free(&(*(struct psi_let_callback **)(&(*yyvaluep))));}
-#line 5731 "src/parser_proc.c" /* glr.c:846  */
+#line 5733 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 240: /* let_func  */
-#line 339 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 252: /* let_func  */
+#line 359 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_let_func_free(&(*(struct psi_let_func **)(&(*yyvaluep))));}
-#line 5737 "src/parser_proc.c" /* glr.c:846  */
+#line 5739 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 241: /* let_func_token  */
-#line 360 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 253: /* let_func_token  */
+#line 380 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5743 "src/parser_proc.c" /* glr.c:846  */
+#line 5745 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 242: /* let_func_exps  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 254: /* let_func_exps  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5749 "src/parser_proc.c" /* glr.c:846  */
+#line 5751 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 243: /* let_exps  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 255: /* let_exps  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5755 "src/parser_proc.c" /* glr.c:846  */
+#line 5757 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 244: /* callback_rval  */
-#line 360 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 256: /* callback_rval  */
+#line 380 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5761 "src/parser_proc.c" /* glr.c:846  */
+#line 5763 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 245: /* callback_arg_list  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 257: /* callback_arg_list  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5767 "src/parser_proc.c" /* glr.c:846  */
+#line 5769 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 246: /* callback_args  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 258: /* callback_args  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5773 "src/parser_proc.c" /* glr.c:846  */
+#line 5775 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 247: /* return_stmt  */
-#line 349 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 259: /* return_stmt  */
+#line 369 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_return_stmt_free(&(*(struct psi_return_stmt **)(&(*yyvaluep))));}
-#line 5779 "src/parser_proc.c" /* glr.c:846  */
+#line 5781 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 248: /* return_exp  */
-#line 351 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 260: /* return_exp  */
+#line 371 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_return_exp_free(&(*(struct psi_return_exp **)(&(*yyvaluep))));}
-#line 5785 "src/parser_proc.c" /* glr.c:846  */
+#line 5787 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 249: /* call_decl_vars  */
-#line 309 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 261: /* call_decl_vars  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5791 "src/parser_proc.c" /* glr.c:846  */
+#line 5793 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 250: /* set_stmt  */
-#line 341 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 262: /* set_stmt  */
+#line 361 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_set_stmt_free(&(*(struct psi_set_stmt **)(&(*yyvaluep))));}
-#line 5797 "src/parser_proc.c" /* glr.c:846  */
+#line 5799 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 251: /* set_exp  */
-#line 343 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 263: /* set_exp  */
+#line 363 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_set_exp_free(&(*(struct psi_set_exp **)(&(*yyvaluep))));}
-#line 5803 "src/parser_proc.c" /* glr.c:846  */
+#line 5805 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 252: /* set_func  */
-#line 345 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 264: /* set_func  */
+#line 365 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_set_func_free(&(*(struct psi_set_func **)(&(*yyvaluep))));}
-#line 5809 "src/parser_proc.c" /* glr.c:846  */
+#line 5811 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 253: /* set_func_token  */
-#line 360 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 265: /* set_func_token  */
+#line 380 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5815 "src/parser_proc.c" /* glr.c:846  */
+#line 5817 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 254: /* set_func_exps  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 266: /* set_func_exps  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5821 "src/parser_proc.c" /* glr.c:846  */
+#line 5823 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 255: /* set_exps  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 267: /* set_exps  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5827 "src/parser_proc.c" /* glr.c:846  */
+#line 5829 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 256: /* assert_stmt  */
-#line 347 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 268: /* assert_stmt  */
+#line 367 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_assert_stmt_free(&(*(struct psi_assert_stmt **)(&(*yyvaluep))));}
-#line 5833 "src/parser_proc.c" /* glr.c:846  */
+#line 5835 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 257: /* assert_stmt_token  */
-#line 360 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 269: /* assert_stmt_token  */
+#line 380 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 5839 "src/parser_proc.c" /* glr.c:846  */
+#line 5841 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 258: /* free_stmt  */
-#line 353 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 270: /* free_stmt  */
+#line 373 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_free_stmt_free(&(*(struct psi_free_stmt **)(&(*yyvaluep))));}
-#line 5845 "src/parser_proc.c" /* glr.c:846  */
+#line 5847 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 259: /* free_exps  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 271: /* free_exps  */
+#line 382 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 5851 "src/parser_proc.c" /* glr.c:846  */
+#line 5853 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 260: /* free_exp  */
-#line 355 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 272: /* free_exp  */
+#line 375 "src/parser_proc_grammar.y" /* glr.c:846  */
       {psi_free_exp_free(&(*(struct psi_free_exp **)(&(*yyvaluep))));}
-#line 5857 "src/parser_proc.c" /* glr.c:846  */
+#line 5859 "src/parser_proc.c" /* glr.c:846  */
         break;
 
-    case 261: /* reference  */
-#line 372 "src/parser_proc_grammar.y" /* glr.c:846  */
+    case 273: /* reference  */
+#line 392 "src/parser_proc_grammar.y" /* glr.c:846  */
       {}
-#line 5863 "src/parser_proc.c" /* glr.c:846  */
+#line 5865 "src/parser_proc.c" /* glr.c:846  */
         break;
 
 
@@ -7208,11 +7210,11 @@ yyparse (struct psi_parser *P, struct psi_plist *tokens, size_t *index)
   yylval = yyval_default;
 
   /* User initialization code.  */
-  #line 106 "src/parser_proc_grammar.y" /* glr.c:2270  */
+  #line 111 "src/parser_proc_grammar.y" /* glr.c:2270  */
 {
 }
 
-#line 7216 "src/parser_proc.c" /* glr.c:2270  */
+#line 7218 "src/parser_proc.c" /* glr.c:2270  */
 
   if (! yyinitGLRStack (yystackp, YYINITDEPTH))
     goto yyexhaustedlab;
@@ -7518,7 +7520,7 @@ yypdumpstack (yyGLRStack* yystackp)
 #define yydebug psi_parser_proc_debug
 #define yynerrs psi_parser_proc_nerrs
 
-#line 2019 "src/parser_proc_grammar.y" /* glr.c:2584  */
+#line 2039 "src/parser_proc_grammar.y" /* glr.c:2584  */
 
 
 /* epilogue */