fix leak
authorMichael Wallner <mike@php.net>
Mon, 29 Oct 2018 07:54:36 +0000 (08:54 +0100)
committerMichael Wallner <mike@php.net>
Mon, 29 Oct 2018 07:54:36 +0000 (08:54 +0100)
src/parser.c
src/parser_proc.c
src/parser_proc_grammar.y

index 3eb6aa3..07c5cbe 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.1.1 on Wed Oct 24 11:47:33 2018 */
+/* Generated by re2c 1.1.1 on Mon Oct 29 07:42:47 2018 */
 #line 1 "src/parser.re"
 /*******************************************************************************
  Copyright (c) 2016, Michael Wallner <mike@php.net>.
index c5524a2..c9bb1e9 100644 (file)
@@ -425,26 +425,26 @@ static const unsigned short yyrline[] =
     1045,  1046,  1050,  1053,  1056,  1067,  1074,  1084,  1087,  1093,
     1096,  1103,  1134,  1137,  1143,  1146,  1152,  1158,  1159,  1160,
     1161,  1162,  1163,  1167,  1171,  1172,  1176,  1177,  1181,  1182,
-    1189,  1190,  1194,  1201,  1212,  1219,  1227,  1251,  1279,  1286,
-    1297,  1343,  1384,  1399,  1402,  1405,  1411,  1414,  1420,  1435,
-    1438,  1467,  1475,  1503,  1508,  1516,  1526,  1536,  1539,  1543,
-    1549,  1563,  1580,  1583,  1589,  1596,  1606,  1613,  1616,  1622,
-    1627,  1635,  1639,  1643,  1647,  1651,  1655,  1662,  1666,  1670,
-    1674,  1678,  1682,  1688,  1692,  1699,  1702,  1714,  1718,  1722,
-    1729,  1742,  1755,  1768,  1771,  1778,  1779,  1783,  1786,  1789,
-    1792,  1798,  1802,  1809,  1812,  1815,  1830,  1831,  1832,  1833,
-    1837,  1840,  1846,  1847,  1853,  1856,  1862,  1863,  1867,  1868,
-    1878,  1881,  1888,  1893,  1898,  1908,  1911,  1917,  1920,  1926,
-    1933,  1940,  1947,  1948,  1952,  1953,  1954,  1955,  1959,  1960,
-    1961,  1962,  1963,  1967,  1970,  1976,  1979,  1982,  1985,  1988,
-    1994,  1998,  2006,  2007,  2011,  2018,  2021,  2024,  2027,  2031,
-    2034,  2040,  2044,  2052,  2059,  2064,  2072,  2080,  2081,  2082,
-    2083,  2084,  2085,  2086,  2087,  2088,  2089,  2093,  2096,  2102,
-    2105,  2111,  2112,  2116,  2119,  2125,  2128,  2134,  2141,  2145,
-    2152,  2155,  2158,  2164,  2171,  2174,  2177,  2184,  2189,  2197,
-    2198,  2199,  2200,  2201,  2202,  2203,  2204,  2208,  2211,  2217,
-    2220,  2226,  2233,  2234,  2238,  2245,  2248,  2254,  2262,  2265,
-    2271
+    1189,  1190,  1194,  1201,  1212,  1219,  1227,  1251,  1280,  1287,
+    1298,  1344,  1385,  1400,  1403,  1406,  1412,  1415,  1421,  1436,
+    1439,  1468,  1476,  1504,  1509,  1517,  1527,  1537,  1540,  1544,
+    1550,  1564,  1581,  1584,  1590,  1597,  1607,  1614,  1617,  1623,
+    1628,  1636,  1640,  1644,  1648,  1652,  1656,  1663,  1667,  1671,
+    1675,  1679,  1683,  1689,  1693,  1700,  1703,  1715,  1719,  1723,
+    1730,  1743,  1756,  1769,  1772,  1779,  1780,  1784,  1787,  1790,
+    1793,  1799,  1803,  1810,  1813,  1816,  1831,  1832,  1833,  1834,
+    1838,  1841,  1847,  1848,  1854,  1857,  1863,  1864,  1868,  1869,
+    1879,  1882,  1889,  1894,  1899,  1909,  1912,  1918,  1921,  1927,
+    1934,  1941,  1948,  1949,  1953,  1954,  1955,  1956,  1960,  1961,
+    1962,  1963,  1964,  1968,  1971,  1977,  1980,  1983,  1986,  1989,
+    1995,  1999,  2007,  2008,  2012,  2019,  2022,  2025,  2028,  2032,
+    2035,  2041,  2045,  2053,  2060,  2065,  2073,  2081,  2082,  2083,
+    2084,  2085,  2086,  2087,  2088,  2089,  2090,  2094,  2097,  2103,
+    2106,  2112,  2113,  2117,  2120,  2126,  2129,  2135,  2142,  2146,
+    2153,  2156,  2159,  2165,  2172,  2175,  2178,  2185,  2190,  2198,
+    2199,  2200,  2201,  2202,  2203,  2204,  2205,  2209,  2212,  2218,
+    2221,  2227,  2234,  2235,  2239,  2246,  2249,  2255,  2263,  2266,
+    2272
 };
 #endif
 
@@ -4785,7 +4785,7 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
 #line 771 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)));
+       (*(struct psi_impl_def_val **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
 #line 4791 "src/parser_proc.c" /* glr.c:817  */
     break;
@@ -5452,14 +5452,15 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        type->real.func = rval_decl;
        func->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval)));
        func->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval)));
+       type->token = type_token;
        
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(func, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)));
 }
-#line 5459 "src/parser_proc.c" /* glr.c:817  */
+#line 5460 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 448:
-#line 1279 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1280 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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))) {
@@ -5467,11 +5468,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 5471 "src/parser_proc.c" /* glr.c:817  */
+#line 5472 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 449:
-#line 1286 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1287 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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;
@@ -5480,11 +5481,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 5484 "src/parser_proc.c" /* glr.c:817  */
+#line 5485 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 450:
-#line 1297 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1298 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (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;
@@ -5492,62 +5493,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 (-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 5496 "src/parser_proc.c" /* glr.c:817  */
+#line 5497 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 451:
-#line 1343 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1344 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), psi_decl_var_init(NULL, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 5507 "src/parser_proc.c" /* glr.c:817  */
+#line 5508 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 453:
-#line 1399 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1400 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5515 "src/parser_proc.c" /* glr.c:817  */
+#line 5516 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 454:
-#line 1402 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1403 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5523 "src/parser_proc.c" /* glr.c:817  */
+#line 5524 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 455:
-#line 1405 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1406 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5531 "src/parser_proc.c" /* glr.c:817  */
+#line 5532 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 456:
-#line 1411 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1412 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5539 "src/parser_proc.c" /* glr.c:817  */
+#line 5540 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 457:
-#line 1414 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1415 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5547 "src/parser_proc.c" /* glr.c:817  */
+#line 5548 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 458:
-#line 1420 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1421 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        char digest[17];
        struct psi_token *name;
@@ -5563,30 +5564,30 @@ 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 5567 "src/parser_proc.c" /* glr.c:817  */
+#line 5568 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 459:
-#line 1435 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1436 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5575 "src/parser_proc.c" /* glr.c:817  */
+#line 5576 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 460:
-#line 1438 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1439 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5586 "src/parser_proc.c" /* glr.c:817  */
+#line 5587 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 461:
-#line 1467 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1468 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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),
@@ -5595,39 +5596,39 @@ 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 5599 "src/parser_proc.c" /* glr.c:817  */
+#line 5600 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 462:
-#line 1475 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1476 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5607 "src/parser_proc.c" /* glr.c:817  */
+#line 5608 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 463:
-#line 1503 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1504 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5617 "src/parser_proc.c" /* glr.c:817  */
+#line 5618 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 464:
-#line 1508 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1509 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5627 "src/parser_proc.c" /* glr.c:817  */
+#line 5628 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 465:
-#line 1516 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1517 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)));
@@ -5635,11 +5636,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 5639 "src/parser_proc.c" /* glr.c:817  */
+#line 5640 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 466:
-#line 1526 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1527 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)));
@@ -5647,27 +5648,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 5651 "src/parser_proc.c" /* glr.c:817  */
+#line 5652 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 467:
-#line 1536 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1537 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5659 "src/parser_proc.c" /* glr.c:817  */
+#line 5660 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 469:
-#line 1543 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1544 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5667 "src/parser_proc.c" /* glr.c:817  */
+#line 5668 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 470:
-#line 1549 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1550 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)));
@@ -5682,11 +5683,11 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5686 "src/parser_proc.c" /* glr.c:817  */
+#line 5687 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 471:
-#line 1563 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1564 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)));
@@ -5701,27 +5702,27 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
                free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5705 "src/parser_proc.c" /* glr.c:817  */
+#line 5706 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 472:
-#line 1580 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1581 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5713 "src/parser_proc.c" /* glr.c:817  */
+#line 5714 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 473:
-#line 1583 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1584 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5721 "src/parser_proc.c" /* glr.c:817  */
+#line 5722 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 474:
-#line 1589 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1590 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        {
                struct psi_decl_arg *arg = psi_decl_arg_init(NULL, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
@@ -5729,11 +5730,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 5733 "src/parser_proc.c" /* glr.c:817  */
+#line 5734 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 475:
-#line 1596 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1597 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        {
                struct psi_decl_arg *arg = psi_decl_arg_init(NULL, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
@@ -5741,189 +5742,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 5745 "src/parser_proc.c" /* glr.c:817  */
+#line 5746 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 476:
-#line 1606 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1607 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_decl_enum **)(&(*yyvalp))) = psi_decl_enum_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_enum **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval));
 }
-#line 5754 "src/parser_proc.c" /* glr.c:817  */
+#line 5755 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 477:
-#line 1613 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1614 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5762 "src/parser_proc.c" /* glr.c:817  */
+#line 5763 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 478:
-#line 1616 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1617 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5770 "src/parser_proc.c" /* glr.c:817  */
+#line 5771 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 479:
-#line 1622 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1623 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5780 "src/parser_proc.c" /* glr.c:817  */
+#line 5781 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 480:
-#line 1627 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1628 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5790 "src/parser_proc.c" /* glr.c:817  */
+#line 5791 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 481:
-#line 1635 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1636 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5799 "src/parser_proc.c" /* glr.c:817  */
+#line 5800 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 482:
-#line 1639 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1640 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5808 "src/parser_proc.c" /* glr.c:817  */
+#line 5809 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 483:
-#line 1643 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1644 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5817 "src/parser_proc.c" /* glr.c:817  */
+#line 5818 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 484:
-#line 1647 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1648 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5826 "src/parser_proc.c" /* glr.c:817  */
+#line 5827 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 485:
-#line 1651 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1652 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5835 "src/parser_proc.c" /* glr.c:817  */
+#line 5836 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 486:
-#line 1655 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1656 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5844 "src/parser_proc.c" /* glr.c:817  */
+#line 5845 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 487:
-#line 1662 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1663 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5853 "src/parser_proc.c" /* glr.c:817  */
+#line 5854 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 488:
-#line 1666 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1667 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5862 "src/parser_proc.c" /* glr.c:817  */
+#line 5863 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 489:
-#line 1670 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1671 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5871 "src/parser_proc.c" /* glr.c:817  */
+#line 5872 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 490:
-#line 1674 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1675 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5880 "src/parser_proc.c" /* glr.c:817  */
+#line 5881 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 491:
-#line 1678 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1679 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5889 "src/parser_proc.c" /* glr.c:817  */
+#line 5890 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 492:
-#line 1682 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1683 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5897 "src/parser_proc.c" /* glr.c:817  */
+#line 5898 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 493:
-#line 1688 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1689 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5906 "src/parser_proc.c" /* glr.c:817  */
+#line 5907 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 494:
-#line 1692 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1693 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 5915 "src/parser_proc.c" /* glr.c:817  */
+#line 5916 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 495:
-#line 1699 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1700 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5923 "src/parser_proc.c" /* glr.c:817  */
+#line 5924 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 496:
-#line 1702 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1703 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                int8_t sizeof_void_p = sizeof(void *);
@@ -5933,38 +5934,38 @@ 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 5937 "src/parser_proc.c" /* glr.c:817  */
+#line 5938 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 497:
-#line 1714 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1715 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        int8_t sizeof_void_p = sizeof(void *);
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT8, &sizeof_void_p, 0);
 }
-#line 5946 "src/parser_proc.c" /* glr.c:817  */
+#line 5947 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 498:
-#line 1718 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1719 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        int8_t sizeof_a = sizeof('a');
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT8, &sizeof_a, 0);
 }
-#line 5955 "src/parser_proc.c" /* glr.c:817  */
+#line 5956 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 499:
-#line 1722 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1723 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        uint64_t len = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->size + 1;
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_UINT64, &len, 0);
 }
-#line 5964 "src/parser_proc.c" /* glr.c:817  */
+#line 5965 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 500:
-#line 1729 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1730 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        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)));
@@ -5975,11 +5976,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 5979 "src/parser_proc.c" /* glr.c:817  */
+#line 5980 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 501:
-#line 1742 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1743 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        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)));
@@ -5990,11 +5991,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 5994 "src/parser_proc.c" /* glr.c:817  */
+#line 5995 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 502:
-#line 1755 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1756 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        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)));
@@ -6005,94 +6006,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 6009 "src/parser_proc.c" /* glr.c:817  */
+#line 6010 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 503:
-#line 1768 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1769 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 6017 "src/parser_proc.c" /* glr.c:817  */
+#line 6018 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 504:
-#line 1771 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1772 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&(*yyvalp)))->type = PSI_T_NAME;
 }
-#line 6026 "src/parser_proc.c" /* glr.c:817  */
+#line 6027 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 507:
-#line 1783 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1784 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = NULL;
 }
-#line 6034 "src/parser_proc.c" /* glr.c:817  */
+#line 6035 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 508:
-#line 1786 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1787 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6042 "src/parser_proc.c" /* glr.c:817  */
+#line 6043 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 509:
-#line 1789 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1790 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6050 "src/parser_proc.c" /* glr.c:817  */
+#line 6051 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 510:
-#line 1792 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1793 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6058 "src/parser_proc.c" /* glr.c:817  */
+#line 6059 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 511:
-#line 1798 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1799 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_layout*)(&(*yyvalp))).pos = 0;
        (*(struct psi_layout*)(&(*yyvalp))).len = 0;
 }
-#line 6067 "src/parser_proc.c" /* glr.c:817  */
+#line 6068 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 512:
-#line 1802 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1803 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6076 "src/parser_proc.c" /* glr.c:817  */
+#line 6077 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 513:
-#line 1809 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1810 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 6084 "src/parser_proc.c" /* glr.c:817  */
+#line 6085 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 514:
-#line 1812 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1813 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 6092 "src/parser_proc.c" /* glr.c:817  */
+#line 6093 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 515:
-#line 1815 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1816 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        struct psi_validate_scope scope = {0};
        psi_validate_scope_ctor(&scope);
@@ -6105,88 +6106,88 @@ yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
        psi_num_exp_free(&(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        psi_validate_scope_dtor(&scope);
 }
-#line 6109 "src/parser_proc.c" /* glr.c:817  */
+#line 6110 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 520:
-#line 1837 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1838 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 6117 "src/parser_proc.c" /* glr.c:817  */
+#line 6118 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 521:
-#line 1840 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1841 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6125 "src/parser_proc.c" /* glr.c:817  */
+#line 6126 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 523:
-#line 1847 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1848 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 6133 "src/parser_proc.c" /* glr.c:817  */
+#line 6134 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 524:
-#line 1853 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1854 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = 1;
 }
-#line 6141 "src/parser_proc.c" /* glr.c:817  */
+#line 6142 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 525:
-#line 1856 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1857 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)) + 1;
 }
-#line 6149 "src/parser_proc.c" /* glr.c:817  */
+#line 6150 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 530:
-#line 1878 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1879 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6157 "src/parser_proc.c" /* glr.c:817  */
+#line 6158 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 531:
-#line 1881 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1882 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6166 "src/parser_proc.c" /* glr.c:817  */
+#line 6167 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 532:
-#line 1888 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1889 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6176 "src/parser_proc.c" /* glr.c:817  */
+#line 6177 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 533:
-#line 1893 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1894 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6186 "src/parser_proc.c" /* glr.c:817  */
+#line 6187 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 534:
-#line 1898 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1899 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)));
@@ -6194,531 +6195,531 @@ 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 6198 "src/parser_proc.c" /* glr.c:817  */
+#line 6199 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 535:
-#line 1908 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1909 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6206 "src/parser_proc.c" /* glr.c:817  */
+#line 6207 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 536:
-#line 1911 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1912 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6214 "src/parser_proc.c" /* glr.c:817  */
+#line 6215 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 537:
-#line 1917 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1918 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6222 "src/parser_proc.c" /* glr.c:817  */
+#line 6223 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 538:
-#line 1920 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1921 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6230 "src/parser_proc.c" /* glr.c:817  */
+#line 6231 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 539:
-#line 1926 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1927 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6239 "src/parser_proc.c" /* glr.c:817  */
+#line 6240 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 540:
-#line 1933 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1934 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6248 "src/parser_proc.c" /* glr.c:817  */
+#line 6249 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 541:
-#line 1940 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1941 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6257 "src/parser_proc.c" /* glr.c:817  */
+#line 6258 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 553:
-#line 1967 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1968 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6265 "src/parser_proc.c" /* glr.c:817  */
+#line 6266 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 554:
-#line 1970 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1971 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6273 "src/parser_proc.c" /* glr.c:817  */
+#line 6274 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 555:
-#line 1976 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1977 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_return_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6281 "src/parser_proc.c" /* glr.c:817  */
+#line 6282 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 556:
-#line 1979 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1980 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_let_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6289 "src/parser_proc.c" /* glr.c:817  */
+#line 6290 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 557:
-#line 1982 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1983 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_set_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6297 "src/parser_proc.c" /* glr.c:817  */
+#line 6298 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 558:
-#line 1985 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1986 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_assert_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6305 "src/parser_proc.c" /* glr.c:817  */
+#line 6306 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 559:
-#line 1988 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1989 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_free_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6313 "src/parser_proc.c" /* glr.c:817  */
+#line 6314 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 560:
-#line 1994 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1995 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6322 "src/parser_proc.c" /* glr.c:817  */
+#line 6323 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 561:
-#line 1998 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 1999 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6332 "src/parser_proc.c" /* glr.c:817  */
+#line 6333 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 563:
-#line 2007 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2008 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6341 "src/parser_proc.c" /* glr.c:817  */
+#line 6342 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 564:
-#line 2011 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2012 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6350 "src/parser_proc.c" /* glr.c:817  */
+#line 6351 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 565:
-#line 2018 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2019 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_NULL, NULL);
 }
-#line 6358 "src/parser_proc.c" /* glr.c:817  */
+#line 6359 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 566:
-#line 2021 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2022 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6366 "src/parser_proc.c" /* glr.c:817  */
+#line 6367 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 567:
-#line 2024 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2025 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6374 "src/parser_proc.c" /* glr.c:817  */
+#line 6375 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 568:
-#line 2027 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2028 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6383 "src/parser_proc.c" /* glr.c:817  */
+#line 6384 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 569:
-#line 2031 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2032 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6391 "src/parser_proc.c" /* glr.c:817  */
+#line 6392 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 570:
-#line 2034 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2035 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6399 "src/parser_proc.c" /* glr.c:817  */
+#line 6400 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 571:
-#line 2040 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2041 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6408 "src/parser_proc.c" /* glr.c:817  */
+#line 6409 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 572:
-#line 2044 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2045 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6418 "src/parser_proc.c" /* glr.c:817  */
+#line 6419 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 573:
-#line 2052 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2053 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6427 "src/parser_proc.c" /* glr.c:817  */
+#line 6428 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 574:
-#line 2059 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2060 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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)), NULL);
        (*(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 6437 "src/parser_proc.c" /* glr.c:817  */
+#line 6438 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 575:
-#line 2064 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2065 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].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 (-11)].yystate.yysemantics.yysval)));
 }
-#line 6447 "src/parser_proc.c" /* glr.c:817  */
+#line 6448 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 576:
-#line 2072 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2073 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6457 "src/parser_proc.c" /* glr.c:817  */
+#line 6458 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 587:
-#line 2093 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2094 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6465 "src/parser_proc.c" /* glr.c:817  */
+#line 6466 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 588:
-#line 2096 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2097 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6473 "src/parser_proc.c" /* glr.c:817  */
+#line 6474 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 589:
-#line 2102 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2103 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6481 "src/parser_proc.c" /* glr.c:817  */
+#line 6482 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 590:
-#line 2105 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2106 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6489 "src/parser_proc.c" /* glr.c:817  */
+#line 6490 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 593:
-#line 2116 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2117 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6497 "src/parser_proc.c" /* glr.c:817  */
+#line 6498 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 594:
-#line 2119 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2120 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6505 "src/parser_proc.c" /* glr.c:817  */
+#line 6506 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 595:
-#line 2125 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2126 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6513 "src/parser_proc.c" /* glr.c:817  */
+#line 6514 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 596:
-#line 2128 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2129 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6521 "src/parser_proc.c" /* glr.c:817  */
+#line 6522 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 597:
-#line 2134 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2135 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6530 "src/parser_proc.c" /* glr.c:817  */
+#line 6531 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 598:
-#line 2141 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2142 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6539 "src/parser_proc.c" /* glr.c:817  */
+#line 6540 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 599:
-#line 2145 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2146 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6548 "src/parser_proc.c" /* glr.c:817  */
+#line 6549 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 600:
-#line 2152 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2153 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6556 "src/parser_proc.c" /* glr.c:817  */
+#line 6557 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 601:
-#line 2155 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2156 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6564 "src/parser_proc.c" /* glr.c:817  */
+#line 6565 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 602:
-#line 2158 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2159 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6572 "src/parser_proc.c" /* glr.c:817  */
+#line 6573 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 603:
-#line 2164 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2165 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6581 "src/parser_proc.c" /* glr.c:817  */
+#line 6582 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 604:
-#line 2171 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2172 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6589 "src/parser_proc.c" /* glr.c:817  */
+#line 6590 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 605:
-#line 2174 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2175 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6597 "src/parser_proc.c" /* glr.c:817  */
+#line 6598 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 606:
-#line 2177 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2178 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6606 "src/parser_proc.c" /* glr.c:817  */
+#line 6607 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 607:
-#line 2184 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2185 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6616 "src/parser_proc.c" /* glr.c:817  */
+#line 6617 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 608:
-#line 2189 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2190 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6626 "src/parser_proc.c" /* glr.c:817  */
+#line 6627 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 617:
-#line 2208 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2209 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6634 "src/parser_proc.c" /* glr.c:817  */
+#line 6635 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 618:
-#line 2211 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2212 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6642 "src/parser_proc.c" /* glr.c:817  */
+#line 6643 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 619:
-#line 2217 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2218 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6650 "src/parser_proc.c" /* glr.c:817  */
+#line 6651 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 620:
-#line 2220 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2221 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6658 "src/parser_proc.c" /* glr.c:817  */
+#line 6659 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 621:
-#line 2226 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2227 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6667 "src/parser_proc.c" /* glr.c:817  */
+#line 6668 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 624:
-#line 2238 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2239 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6676 "src/parser_proc.c" /* glr.c:817  */
+#line 6677 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 625:
-#line 2245 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2246 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6684 "src/parser_proc.c" /* glr.c:817  */
+#line 6685 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 626:
-#line 2248 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2249 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6692 "src/parser_proc.c" /* glr.c:817  */
+#line 6693 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 627:
-#line 2254 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2255 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(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 6702 "src/parser_proc.c" /* glr.c:817  */
+#line 6703 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 628:
-#line 2262 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2263 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(bool*)(&(*yyvalp))) = false;
 }
-#line 6710 "src/parser_proc.c" /* glr.c:817  */
+#line 6711 "src/parser_proc.c" /* glr.c:817  */
     break;
 
   case 629:
-#line 2265 "src/parser_proc_grammar.y" /* glr.c:817  */
+#line 2266 "src/parser_proc_grammar.y" /* glr.c:817  */
     {
        (*(bool*)(&(*yyvalp))) = true;
 }
-#line 6718 "src/parser_proc.c" /* glr.c:817  */
+#line 6719 "src/parser_proc.c" /* glr.c:817  */
     break;
 
 
-#line 6722 "src/parser_proc.c" /* glr.c:817  */
+#line 6723 "src/parser_proc.c" /* glr.c:817  */
       default: break;
     }
 
@@ -6769,757 +6770,757 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct psi_parser
           case 141: /* binary_op_token  */
 #line 315 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6773 "src/parser_proc.c" /* glr.c:847  */
+#line 6774 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 142: /* unary_op_token  */
 #line 315 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6779 "src/parser_proc.c" /* glr.c:847  */
+#line 6780 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 143: /* name_token  */
 #line 315 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6785 "src/parser_proc.c" /* glr.c:847  */
+#line 6786 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 144: /* any_noeol_token  */
 #line 315 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6791 "src/parser_proc.c" /* glr.c:847  */
+#line 6792 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 149: /* lib  */
 #line 309 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 6797 "src/parser_proc.c" /* glr.c:847  */
+#line 6798 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 150: /* cpp  */
 #line 324 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
-#line 6803 "src/parser_proc.c" /* glr.c:847  */
+#line 6804 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 151: /* cpp_exp  */
 #line 324 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
-#line 6809 "src/parser_proc.c" /* glr.c:847  */
+#line 6810 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 153: /* cpp_message_token  */
 #line 312 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6815 "src/parser_proc.c" /* glr.c:847  */
+#line 6816 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 154: /* cpp_include_token  */
 #line 312 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6821 "src/parser_proc.c" /* glr.c:847  */
+#line 6822 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 155: /* cpp_header_token  */
 #line 312 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6827 "src/parser_proc.c" /* glr.c:847  */
+#line 6828 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 156: /* cpp_no_arg_token  */
 #line 312 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6833 "src/parser_proc.c" /* glr.c:847  */
+#line 6834 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 157: /* cpp_name_arg_token  */
 #line 312 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6839 "src/parser_proc.c" /* glr.c:847  */
+#line 6840 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 158: /* cpp_exp_arg_token  */
 #line 312 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6845 "src/parser_proc.c" /* glr.c:847  */
+#line 6846 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 159: /* cpp_macro_decl  */
 #line 326 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_cpp_macro_decl_free(&(*(struct psi_cpp_macro_decl **)(&(*yyvaluep))));}
-#line 6851 "src/parser_proc.c" /* glr.c:847  */
+#line 6852 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 160: /* cpp_macro_sig  */
 #line 328 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 6857 "src/parser_proc.c" /* glr.c:847  */
+#line 6858 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 161: /* cpp_macro_sig_args  */
 #line 328 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 6863 "src/parser_proc.c" /* glr.c:847  */
+#line 6864 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 162: /* cpp_macro_decl_tokens  */
 #line 328 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 6869 "src/parser_proc.c" /* glr.c:847  */
+#line 6870 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 163: /* cpp_macro_decl_token_list  */
 #line 328 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 6875 "src/parser_proc.c" /* glr.c:847  */
+#line 6876 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 164: /* cpp_macro_exp  */
 #line 330 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
-#line 6881 "src/parser_proc.c" /* glr.c:847  */
+#line 6882 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 165: /* cpp_macro_call_args  */
 #line 328 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 6887 "src/parser_proc.c" /* glr.c:847  */
+#line 6888 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 166: /* cpp_macro_call_arg_list  */
 #line 328 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 6893 "src/parser_proc.c" /* glr.c:847  */
+#line 6894 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 167: /* constant  */
 #line 336 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_const_free(&(*(struct psi_const **)(&(*yyvaluep))));}
-#line 6899 "src/parser_proc.c" /* glr.c:847  */
+#line 6900 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 168: /* impl_def_val  */
 #line 338 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_def_val_free(&(*(struct psi_impl_def_val **)(&(*yyvaluep))));}
-#line 6905 "src/parser_proc.c" /* glr.c:847  */
+#line 6906 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 169: /* impl_def_val_token  */
 #line 333 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6911 "src/parser_proc.c" /* glr.c:847  */
+#line 6912 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 170: /* decl_typedef  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 6917 "src/parser_proc.c" /* glr.c:847  */
+#line 6918 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 171: /* typedef  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 6923 "src/parser_proc.c" /* glr.c:847  */
+#line 6924 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 172: /* typedef_anon  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 6929 "src/parser_proc.c" /* glr.c:847  */
+#line 6930 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 173: /* typedef_decl  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 6935 "src/parser_proc.c" /* glr.c:847  */
+#line 6936 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 174: /* typedef_anon_decl  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 6941 "src/parser_proc.c" /* glr.c:847  */
+#line 6942 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 175: /* qualified_decl_type  */
 #line 347 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 6947 "src/parser_proc.c" /* glr.c:847  */
+#line 6948 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 177: /* decl_type  */
 #line 347 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 6953 "src/parser_proc.c" /* glr.c:847  */
+#line 6954 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 178: /* decl_type_complex  */
 #line 347 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 6959 "src/parser_proc.c" /* glr.c:847  */
+#line 6960 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 179: /* decl_type_simple  */
 #line 341 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 6965 "src/parser_proc.c" /* glr.c:847  */
+#line 6966 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 180: /* decl_real_type  */
 #line 341 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 6971 "src/parser_proc.c" /* glr.c:847  */
+#line 6972 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 181: /* int_signed  */
 #line 321 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 6977 "src/parser_proc.c" /* glr.c:847  */
+#line 6978 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 182: /* int_width  */
 #line 318 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 6983 "src/parser_proc.c" /* glr.c:847  */
+#line 6984 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 183: /* decl_int_type  */
 #line 341 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 6989 "src/parser_proc.c" /* glr.c:847  */
+#line 6990 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 184: /* int_signed_types  */
 #line 318 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 6995 "src/parser_proc.c" /* glr.c:847  */
+#line 6996 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 185: /* signed_short_types  */
 #line 321 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7001 "src/parser_proc.c" /* glr.c:847  */
+#line 7002 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 186: /* signed_long_types  */
 #line 321 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7007 "src/parser_proc.c" /* glr.c:847  */
+#line 7008 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 187: /* int_width_types  */
 #line 318 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7013 "src/parser_proc.c" /* glr.c:847  */
+#line 7014 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 188: /* decl_stmt  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7019 "src/parser_proc.c" /* glr.c:847  */
+#line 7020 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 189: /* decl_asm  */
 #line 344 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7025 "src/parser_proc.c" /* glr.c:847  */
+#line 7026 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 190: /* quoted_strings  */
 #line 344 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7031 "src/parser_proc.c" /* glr.c:847  */
+#line 7032 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 191: /* decl_extvar_stmt  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7037 "src/parser_proc.c" /* glr.c:847  */
+#line 7038 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 192: /* decl_extvar_list  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7043 "src/parser_proc.c" /* glr.c:847  */
+#line 7044 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 193: /* decl_vars  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7049 "src/parser_proc.c" /* glr.c:847  */
+#line 7050 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 194: /* ignored_decl  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7055 "src/parser_proc.c" /* glr.c:847  */
+#line 7056 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 199: /* decl  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7061 "src/parser_proc.c" /* glr.c:847  */
+#line 7062 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 200: /* decl_body  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7067 "src/parser_proc.c" /* glr.c:847  */
+#line 7068 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 201: /* decl_func_body  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7073 "src/parser_proc.c" /* glr.c:847  */
+#line 7074 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 202: /* decl_functor_body  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7079 "src/parser_proc.c" /* glr.c:847  */
+#line 7080 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 203: /* decl_anon_functor_body  */
 #line 349 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7085 "src/parser_proc.c" /* glr.c:847  */
+#line 7086 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 204: /* decl_functor  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7091 "src/parser_proc.c" /* glr.c:847  */
+#line 7092 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 205: /* decl_anon_functor  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7097 "src/parser_proc.c" /* glr.c:847  */
+#line 7098 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 206: /* decl_func  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7103 "src/parser_proc.c" /* glr.c:847  */
+#line 7104 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 207: /* decl_args  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7109 "src/parser_proc.c" /* glr.c:847  */
+#line 7110 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 208: /* decl_arg_list  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7115 "src/parser_proc.c" /* glr.c:847  */
+#line 7116 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 209: /* decl_anon_arg  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7121 "src/parser_proc.c" /* glr.c:847  */
+#line 7122 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 210: /* decl_arg  */
 #line 351 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7127 "src/parser_proc.c" /* glr.c:847  */
+#line 7128 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 211: /* decl_var  */
 #line 353 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_var_free(&(*(struct psi_decl_var **)(&(*yyvaluep))));}
-#line 7133 "src/parser_proc.c" /* glr.c:847  */
+#line 7134 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 212: /* decl_union  */
 #line 357 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_union_free(&(*(struct psi_decl_union **)(&(*yyvaluep))));}
-#line 7139 "src/parser_proc.c" /* glr.c:847  */
+#line 7140 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 213: /* decl_struct  */
 #line 355 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_struct_free(&(*(struct psi_decl_struct **)(&(*yyvaluep))));}
-#line 7145 "src/parser_proc.c" /* glr.c:847  */
+#line 7146 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 214: /* decl_struct_args  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7151 "src/parser_proc.c" /* glr.c:847  */
+#line 7152 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 215: /* struct_args_block  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7157 "src/parser_proc.c" /* glr.c:847  */
+#line 7158 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 216: /* struct_args  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7163 "src/parser_proc.c" /* glr.c:847  */
+#line 7164 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 217: /* struct_arg_var_list  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7169 "src/parser_proc.c" /* glr.c:847  */
+#line 7170 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 218: /* decl_vars_with_layout  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7175 "src/parser_proc.c" /* glr.c:847  */
+#line 7176 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 219: /* decl_enum  */
 #line 359 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_enum_free(&(*(struct psi_decl_enum **)(&(*yyvaluep))));}
-#line 7181 "src/parser_proc.c" /* glr.c:847  */
+#line 7182 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 220: /* decl_enum_items  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7187 "src/parser_proc.c" /* glr.c:847  */
+#line 7188 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 221: /* decl_enum_item  */
 #line 361 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_decl_enum_item_free(&(*(struct psi_decl_enum_item **)(&(*yyvaluep))));}
-#line 7193 "src/parser_proc.c" /* glr.c:847  */
+#line 7194 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 222: /* num_exp  */
 #line 419 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
-#line 7199 "src/parser_proc.c" /* glr.c:847  */
+#line 7200 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 223: /* number  */
 #line 421 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7205 "src/parser_proc.c" /* glr.c:847  */
+#line 7206 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 224: /* sizeof  */
 #line 371 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7211 "src/parser_proc.c" /* glr.c:847  */
+#line 7212 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 225: /* sizeof_body  */
 #line 371 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7217 "src/parser_proc.c" /* glr.c:847  */
+#line 7218 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 226: /* sizeof_body_notypes  */
 #line 371 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7223 "src/parser_proc.c" /* glr.c:847  */
+#line 7224 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 227: /* enum_name  */
 #line 309 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7229 "src/parser_proc.c" /* glr.c:847  */
+#line 7230 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 228: /* union_name  */
 #line 309 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7235 "src/parser_proc.c" /* glr.c:847  */
+#line 7236 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 229: /* struct_name  */
 #line 309 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7241 "src/parser_proc.c" /* glr.c:847  */
+#line 7242 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 230: /* optional_name  */
 #line 309 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7247 "src/parser_proc.c" /* glr.c:847  */
+#line 7248 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 232: /* decl_layout  */
 #line 368 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_layout_free(&(*(struct psi_layout **)(&(*yyvaluep))));}
-#line 7253 "src/parser_proc.c" /* glr.c:847  */
+#line 7254 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 233: /* align_and_size  */
 #line 366 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7259 "src/parser_proc.c" /* glr.c:847  */
+#line 7260 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 234: /* array_size  */
 #line 424 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7265 "src/parser_proc.c" /* glr.c:847  */
+#line 7266 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 236: /* indirection  */
 #line 424 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7271 "src/parser_proc.c" /* glr.c:847  */
+#line 7272 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 237: /* pointers  */
 #line 424 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7277 "src/parser_proc.c" /* glr.c:847  */
+#line 7278 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 238: /* asterisks  */
 #line 424 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7283 "src/parser_proc.c" /* glr.c:847  */
+#line 7284 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 241: /* impl  */
 #line 374 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_free(&(*(struct psi_impl **)(&(*yyvaluep))));}
-#line 7289 "src/parser_proc.c" /* glr.c:847  */
+#line 7290 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 242: /* impl_func  */
 #line 376 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_func_free(&(*(struct psi_impl_func **)(&(*yyvaluep))));}
-#line 7295 "src/parser_proc.c" /* glr.c:847  */
+#line 7296 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 243: /* impl_args  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7301 "src/parser_proc.c" /* glr.c:847  */
+#line 7302 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 244: /* impl_arg  */
 #line 378 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_arg_free(&(*(struct psi_impl_arg **)(&(*yyvaluep))));}
-#line 7307 "src/parser_proc.c" /* glr.c:847  */
+#line 7308 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 245: /* impl_var  */
 #line 382 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_var_free(&(*(struct psi_impl_var **)(&(*yyvaluep))));}
-#line 7313 "src/parser_proc.c" /* glr.c:847  */
+#line 7314 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 246: /* impl_type  */
 #line 380 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
-#line 7319 "src/parser_proc.c" /* glr.c:847  */
+#line 7320 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 247: /* impl_type_restricted  */
 #line 380 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
-#line 7325 "src/parser_proc.c" /* glr.c:847  */
+#line 7326 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 248: /* impl_type_token  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7331 "src/parser_proc.c" /* glr.c:847  */
+#line 7332 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 249: /* impl_type_restricted_token  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7337 "src/parser_proc.c" /* glr.c:847  */
+#line 7338 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 250: /* impl_type_extended_token  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7343 "src/parser_proc.c" /* glr.c:847  */
+#line 7344 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 251: /* impl_stmts  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7349 "src/parser_proc.c" /* glr.c:847  */
+#line 7350 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 252: /* impl_stmt  */
 #line 412 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_impl_stmt_free(&(*(struct psi_token ***)(&(*yyvaluep))));}
-#line 7355 "src/parser_proc.c" /* glr.c:847  */
+#line 7356 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 253: /* let_stmt  */
 #line 385 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_stmt_free(&(*(struct psi_let_stmt **)(&(*yyvaluep))));}
-#line 7361 "src/parser_proc.c" /* glr.c:847  */
+#line 7362 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 254: /* let_exp  */
 #line 387 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 7367 "src/parser_proc.c" /* glr.c:847  */
+#line 7368 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 255: /* let_exp_byref  */
 #line 387 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 7373 "src/parser_proc.c" /* glr.c:847  */
+#line 7374 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 256: /* let_exp_assign  */
 #line 387 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 7379 "src/parser_proc.c" /* glr.c:847  */
+#line 7380 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 257: /* let_calloc  */
 #line 389 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_calloc_free(&(*(struct psi_let_calloc **)(&(*yyvaluep))));}
-#line 7385 "src/parser_proc.c" /* glr.c:847  */
+#line 7386 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 258: /* let_callback  */
 #line 391 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_callback_free(&(*(struct psi_let_callback **)(&(*yyvaluep))));}
-#line 7391 "src/parser_proc.c" /* glr.c:847  */
+#line 7392 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 259: /* let_func  */
 #line 393 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_let_func_free(&(*(struct psi_let_func **)(&(*yyvaluep))));}
-#line 7397 "src/parser_proc.c" /* glr.c:847  */
+#line 7398 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 260: /* let_func_token  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7403 "src/parser_proc.c" /* glr.c:847  */
+#line 7404 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 261: /* let_func_exps  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7409 "src/parser_proc.c" /* glr.c:847  */
+#line 7410 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 262: /* let_exps  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7415 "src/parser_proc.c" /* glr.c:847  */
+#line 7416 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 263: /* callback_rval  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7421 "src/parser_proc.c" /* glr.c:847  */
+#line 7422 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 264: /* callback_arg_list  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7427 "src/parser_proc.c" /* glr.c:847  */
+#line 7428 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 265: /* callback_args  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7433 "src/parser_proc.c" /* glr.c:847  */
+#line 7434 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 266: /* return_stmt  */
 #line 403 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_return_stmt_free(&(*(struct psi_return_stmt **)(&(*yyvaluep))));}
-#line 7439 "src/parser_proc.c" /* glr.c:847  */
+#line 7440 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 267: /* return_exp  */
 #line 405 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_return_exp_free(&(*(struct psi_return_exp **)(&(*yyvaluep))));}
-#line 7445 "src/parser_proc.c" /* glr.c:847  */
+#line 7446 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 268: /* call_decl_vars  */
 #line 363 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7451 "src/parser_proc.c" /* glr.c:847  */
+#line 7452 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 269: /* set_stmt  */
 #line 395 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_set_stmt_free(&(*(struct psi_set_stmt **)(&(*yyvaluep))));}
-#line 7457 "src/parser_proc.c" /* glr.c:847  */
+#line 7458 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 270: /* set_exp  */
 #line 397 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_set_exp_free(&(*(struct psi_set_exp **)(&(*yyvaluep))));}
-#line 7463 "src/parser_proc.c" /* glr.c:847  */
+#line 7464 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 271: /* set_func  */
 #line 399 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_set_func_free(&(*(struct psi_set_func **)(&(*yyvaluep))));}
-#line 7469 "src/parser_proc.c" /* glr.c:847  */
+#line 7470 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 272: /* set_func_token  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7475 "src/parser_proc.c" /* glr.c:847  */
+#line 7476 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 273: /* set_func_exps  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7481 "src/parser_proc.c" /* glr.c:847  */
+#line 7482 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 274: /* set_exps  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7487 "src/parser_proc.c" /* glr.c:847  */
+#line 7488 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 275: /* assert_stmt  */
 #line 401 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_assert_stmt_free(&(*(struct psi_assert_stmt **)(&(*yyvaluep))));}
-#line 7493 "src/parser_proc.c" /* glr.c:847  */
+#line 7494 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 276: /* assert_stmt_token  */
 #line 414 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7499 "src/parser_proc.c" /* glr.c:847  */
+#line 7500 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 277: /* free_stmt  */
 #line 407 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_free_stmt_free(&(*(struct psi_free_stmt **)(&(*yyvaluep))));}
-#line 7505 "src/parser_proc.c" /* glr.c:847  */
+#line 7506 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 278: /* free_exps  */
 #line 416 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7511 "src/parser_proc.c" /* glr.c:847  */
+#line 7512 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 279: /* free_exp  */
 #line 409 "src/parser_proc_grammar.y" /* glr.c:847  */
       {psi_free_exp_free(&(*(struct psi_free_exp **)(&(*yyvaluep))));}
-#line 7517 "src/parser_proc.c" /* glr.c:847  */
+#line 7518 "src/parser_proc.c" /* glr.c:847  */
         break;
 
     case 280: /* reference  */
 #line 426 "src/parser_proc_grammar.y" /* glr.c:847  */
       {}
-#line 7523 "src/parser_proc.c" /* glr.c:847  */
+#line 7524 "src/parser_proc.c" /* glr.c:847  */
         break;
 
 
@@ -8873,7 +8874,7 @@ yyparse (struct psi_parser *P, struct psi_plist *tokens, size_t *index)
 {
 }
 
-#line 8877 "src/parser_proc.c" /* glr.c:2261  */
+#line 8878 "src/parser_proc.c" /* glr.c:2261  */
 
   if (! yyinitGLRStack (yystackp, YYINITDEPTH))
     goto yyexhaustedlab;
@@ -9176,7 +9177,7 @@ yypdumpstack (yyGLRStack* yystackp)
 #define yydebug psi_parser_proc_debug
 #define yynerrs psi_parser_proc_nerrs
 
-#line 2274 "src/parser_proc_grammar.y" /* glr.c:2575  */
+#line 2275 "src/parser_proc_grammar.y" /* glr.c:2575  */
 
 
 /* epilogue */
index 38194e9..6e07b5f 100644 (file)
@@ -770,7 +770,7 @@ impl_def_val[val]:
 }
 |      quoted_strings[token] {
        $val = psi_impl_def_val_init($token->type, $token->text);
-       $val->token = psi_token_copy($token);
+       $val->token = $token;
 }
 ;
 
@@ -1270,6 +1270,7 @@ decl_functor_body[decl]:
        type->real.func = rval_decl;
        func->var->token = psi_token_copy($NAME);
        func->token = psi_token_copy($NAME);
+       type->token = type_token;
        
        $decl = psi_decl_init(func, $args);
 }