build administrativa
authorMichael Wallner <mike@php.net>
Mon, 3 Dec 2018 15:57:38 +0000 (16:57 +0100)
committerMichael Wallner <mike@php.net>
Tue, 4 Dec 2018 11:13:50 +0000 (12:13 +0100)
71 files changed:
m4/ax/ax_check_compile_flag.m4 [new file with mode: 0644]
m4/psi/psi.m4
php_psi_cpp.h.in [deleted file]
php_psi_stdinc.h.in [deleted file]
src/builtin.c
src/calc/bin.h
src/calc/bool.h
src/calc/cast.h
src/calc/cmp.h
src/calc/oper.h
src/calc/unary.h
src/call.c
src/context.c
src/cpp.c
src/cpp_tokiter.c
src/data.c
src/data.h
src/error.c
src/libffi.c
src/libffi_compat.h
src/libjit.c
src/marshal.c
src/module.c
src/parser.c
src/parser.h
src/parser_proc.c
src/parser_proc.h
src/parser_proc_grammar.y
src/parser_scan.c
src/parser_scan.re
src/plist.c
src/plist.h
src/token.c
src/types.h
src/types/const.c
src/types/cpp_exp.c
src/types/cpp_macro_call.c
src/types/cpp_macro_decl.c
src/types/decl.c
src/types/decl_abi.c
src/types/decl_arg.c
src/types/decl_enum.c
src/types/decl_enum_item.c
src/types/decl_extvar.c
src/types/decl_file.c
src/types/decl_struct.c
src/types/decl_type.c
src/types/decl_union.c
src/types/decl_var.c
src/types/free_exp.c
src/types/free_stmt.c
src/types/impl.c
src/types/impl_arg.c
src/types/impl_def_val.c
src/types/impl_func.c
src/types/impl_type.c
src/types/impl_var.c
src/types/layout.c
src/types/let_callback.c
src/types/let_calloc.c
src/types/let_exp.c
src/types/let_func.c
src/types/let_stmt.c
src/types/num_exp.c
src/types/number.c
src/types/return_exp.c
src/types/return_stmt.c
src/types/set_exp.c
src/types/set_func.c
src/types/set_stmt.c
src/validate.c

diff --git a/m4/ax/ax_check_compile_flag.m4 b/m4/ax/ax_check_compile_flag.m4
new file mode 100644 (file)
index 0000000..bd753b3
--- /dev/null
@@ -0,0 +1,53 @@
+# ===========================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   Check whether the given FLAG works with the current language's compiler
+#   or gives an error.  (Warnings, however, are ignored)
+#
+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+#   success/failure.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 6
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+    [AS_VAR_SET(CACHEVAR,[yes])],
+    [AS_VAR_SET(CACHEVAR,[no])])
+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+  [m4_default([$2], :)],
+  [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
index 9c2c6d2..0c8b9df 100644 (file)
@@ -138,7 +138,7 @@ AC_DEFUN([PSI_CHECK_MAINTAINER_MODE], [
        if test "$PHP_PSI_MAINTAINER_MODE" = "yes"; then
                PSI_DEPS=true
                PHP_SUBST(PSI_DEPS)
-               CFLAGS="$CFLAGS -Wall -Wextra"
+               CFLAGS="$CFLAGS -Wall"
                m4_foreach(flag, [
                        [fstack-protector],
                        [Wduplicate-decl-specifier],
@@ -155,11 +155,7 @@ AC_DEFUN([PSI_CHECK_MAINTAINER_MODE], [
                        [Wcast-align],
                        [Wmissing-prototypes],
                        [Wmissing-declarations],
-                       [Wredundant-decls],
-                       [Wdisabled-optimization],
-                       [Wno-sign-compare],
-                       [Wno-unused-parameter],
-                       [Wno-cast-function-type]], 
+                       [Wdisabled-optimization]], 
                [
                        AX_CHECK_COMPILE_FLAG([-][flag], [CFLAGS="$CFLAGS -"]flag)
                ])
diff --git a/php_psi_cpp.h.in b/php_psi_cpp.h.in
deleted file mode 100644 (file)
index c1554b6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- Copyright (c) 2016, Michael Wallner <mike@php.net>.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
-     * Redistributions of source code must retain the above copyright notice,
-       this list of conditions and the following disclaimer.
-     * Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*******************************************************************************/
-
-/* generated by configure */
-
-#ifdef PSI_CPP_SEARCH
-static const char psi_cpp_search[] = ""
-@PSI_CPP_SEARCH@
-;
-#endif
-
-#ifdef PSI_CPP_PREDEF
-static const char psi_cpp_predef[] = ""
-@PSI_CPP_PREDEF@
-;
-#endif
diff --git a/php_psi_stdinc.h.in b/php_psi_stdinc.h.in
deleted file mode 100644 (file)
index 7bf0bd8..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- Copyright (c) 2016, Michael Wallner <mike@php.net>.
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
-     * Redistributions of source code must retain the above copyright notice,
-       this list of conditions and the following disclaimer.
-     * Redistributions in binary form must reproduce the above copyright
-       notice, this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*******************************************************************************/
-
-/* generated by configure */
-
-#ifndef PSI_STDINC_H
-#define PSI_STDINC_H
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#else
-# include "php_config.h"
-#endif
-
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE
-#endif
-#ifndef _REENTRANT
-# define _REENTRANT
-#endif
-
-@PSI_INCLUDES@
-
-#endif
\ No newline at end of file
index 2d92432..6c767b9 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
+
+#include <stdbool.h>
+#include <stdarg.h>
 
 #include "php_psi.h"
 #include "builtin.h"
 #include "parser.h"
 #include "cpp.h"
 
-#include <stdarg.h>
-
 HashTable psi_builtins;
 
 static bool has_include(struct psi_cpp *cpp, struct psi_token *target, struct psi_plist **args, struct psi_plist **res);
@@ -76,6 +81,7 @@ static void free_builtin(zval *p)
        }
 }
 
+PHP_MINIT_FUNCTION(psi_builtin);
 PHP_MINIT_FUNCTION(psi_builtin)
 {
 #define PSI_BUILTIN(builtin, ...) do { \
@@ -101,6 +107,7 @@ PHP_MINIT_FUNCTION(psi_builtin)
        return SUCCESS;
 }
 
+PHP_MSHUTDOWN_FUNCTION(psi_builtin);
 PHP_MSHUTDOWN_FUNCTION(psi_builtin)
 {
        zend_hash_destroy(&psi_builtins);
index ab79f21..7f9e381 100644 (file)
@@ -23,7 +23,6 @@
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
 #include <assert.h>
 
 #include "token.h"
index 7560021..13a6154 100644 (file)
@@ -23,7 +23,6 @@
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
 #include <assert.h>
 
 #include "token.h"
index 2d6f3f6..4922616 100644 (file)
@@ -23,7 +23,6 @@
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
 #include <assert.h>
 
 #include "token.h"
index 5eaa648..6bb67de 100644 (file)
@@ -23,7 +23,6 @@
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
 #include <assert.h>
 
 #include "token.h"
index 4a31cfb..757ecdb 100644 (file)
@@ -23,7 +23,6 @@
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
 #include <assert.h>
 
 #include "token.h"
index 358f65f..263c7c3 100644 (file)
@@ -23,7 +23,6 @@
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
 #include <assert.h>
 
 #include "token.h"
index ec9d49b..9aa0bd8 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "context.h"
 #include "data.h"
 #include "call.h"
index ebe4e08..9d508de 100644 (file)
@@ -63,6 +63,7 @@
 #include "token.h"
 #include "parser.h"
 
+PHP_MINIT_FUNCTION(psi_context);
 PHP_MINIT_FUNCTION(psi_context)
 {
        unsigned flags = 0;
@@ -100,6 +101,7 @@ PHP_MINIT_FUNCTION(psi_context)
        return SUCCESS;
 }
 
+PHP_MSHUTDOWN_FUNCTION(psi_context);
 PHP_MSHUTDOWN_FUNCTION(psi_context)
 {
        if (psi_check_env("PSI_DUMP")) {
index 49cf041..6b7bb53 100644 (file)
--- a/src/cpp.c
+++ b/src/cpp.c
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include <libgen.h>
 
@@ -38,6 +42,7 @@
 
 HashTable psi_cpp_defaults;
 
+PHP_MINIT_FUNCTION(psi_cpp);
 PHP_MINIT_FUNCTION(psi_cpp)
 {
        struct psi_parser parser;
@@ -70,6 +75,7 @@ PHP_MINIT_FUNCTION(psi_cpp)
        return SUCCESS;
 }
 
+PHP_MSHUTDOWN_FUNCTION(psi_cpp);
 PHP_MSHUTDOWN_FUNCTION(psi_cpp)
 {
        struct psi_cpp_macro_decl *macro;
index 4f9eee3..c09c670 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "cpp.h"
 #include "parser.h"
index 57b6f4d..6ce20a7 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "php_psi.h"
 #include "data.h"
 
index 37658cc..57ef1d6 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <stdarg.h>
 #include <dlfcn.h>
+#include <unistd.h>
 
 #define PSI_DEBUG 0x1
 #define PSI_SILENT 0x2
index 48a41ac..c130e71 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 /* zend_error_cb */
index fe2bc61..84f019b 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "context.h"
 #include "call.h"
 #include "php.h"
@@ -31,6 +35,7 @@
 #ifdef HAVE_LIBFFI
 
 #include "libffi_compat.h"
+#include "libffi.h"
 
 #if HAVE_INT128
 static ffi_type *ffi_type_sint128;
index f939c86..4394531 100644 (file)
 #ifndef PSI_LIBFFI_COMPAT_H
 #define PSI_LIBFFI_COMPAT_H
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #undef PACKAGE
 #undef PACKAGE_BUGREPORT
@@ -102,6 +106,7 @@ static inline void psi_ffi_prep_va(ffi_cif *base, ffi_cif *signature, size_t arg
 #endif
 
        assert(FFI_OK == rc);
+       (void) rc;
 }
 
 
index 37703e4..9426966 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "context.h"
 #include "call.h"
 #include "php.h"
 
 #ifdef HAVE_LIBJIT
 
+#include "libjit.h"
 #include <jit/jit.h>
 
 #if HAVE_INT128
index ff1ddcc..d0c7f12 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 #include "calc.h"
 
@@ -294,7 +298,7 @@ static inline impl_val *psi_val_intval(impl_val *tmp, token_t real_type, zend_lo
 }
 
 #if HAVE_INT128
-void psi_strto_i128(char *ptr, char *end, token_t real_type, impl_val *val) {
+static void psi_strto_i128(char *ptr, char *end, token_t real_type, impl_val *val) {
        unsigned __int128 i = 0;
        bool oct = false, hex = false, sign = false;
 
index c369dc6..7332474 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "php.h"
 #include "php_ini.h"
index cf06f6a..91a47d8 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include <sys/mman.h>
 #include <assert.h>
 #include <errno.h>
index 0650ef5..31bd5b5 100644 (file)
@@ -67,6 +67,7 @@ struct psi_parser_input *psi_parser_open_string(struct psi_parser *P, const char
 size_t psi_parser_maxfill(void);
 struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input *I);
 struct psi_plist *psi_parser_preprocess(struct psi_parser *P, struct psi_plist **tokens);
+void psi_parser_postprocess(struct psi_parser *P);
 bool psi_parser_process(struct psi_parser *P, struct psi_plist *tokens, size_t *processed);
 bool psi_parser_parse(struct psi_parser *P, struct psi_parser_input *I);
 void psi_parser_dtor(struct psi_parser *P);
index 986490e..8f97f88 100644 (file)
@@ -51,9 +51,8 @@
 /* "%code top" blocks.  */
 #line 1 "src/parser_proc_grammar.y" /* glr.c:221  */
 
-#include "php_psi_stdinc.h"
 
-#line 57 "src/parser_proc.c" /* glr.c:221  */
+#line 56 "src/parser_proc.c" /* glr.c:221  */
 
 
 /* Substitute the variable and function names.  */
@@ -95,7 +94,7 @@ static YYSTYPE yyval_default;
 
 
 /* Unqualified %code blocks.  */
-#line 5 "src/parser_proc_grammar.y" /* glr.c:261  */
+#line 4 "src/parser_proc_grammar.y" /* glr.c:261  */
 
 #include <assert.h>
 #include <stdarg.h>
@@ -180,7 +179,7 @@ static inline void psi_parser_proc_add_impl(struct psi_parser *P, struct psi_imp
 
 /* end code */
 
-#line 184 "src/parser_proc.c" /* glr.c:261  */
+#line 183 "src/parser_proc.c" /* glr.c:261  */
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -366,11 +365,23 @@ static const unsigned char yytranslate[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,   408,   408,   408,   408,   408,   408,   408,   408,   408,
-     408,   408,   408,   408,   408,   408,   408,   408,   408,   408,
-     409,   409,   409,   409,   410,   410,   410,   410,   410,   410,
+       0,   407,   407,   407,   407,   407,   407,   407,   407,   407,
+     407,   407,   407,   407,   407,   407,   407,   407,   407,   407,
+     408,   408,   408,   408,   409,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   409,   409,   409,   409,   409,   409,
+     409,   409,   409,   409,   409,   409,   410,   410,   410,   410,
      410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
-     410,   410,   410,   410,   410,   410,   411,   411,   411,   411,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   410,   410,   410,   410,   410,   410,
+     410,   410,   410,   410,   411,   411,   411,   411,   411,   411,
      411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
      411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
      411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
@@ -382,54 +393,42 @@ static const unsigned short yyrline[] =
      411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
      411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
      411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
-     411,   411,   411,   411,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     412,   412,   412,   412,   412,   412,   412,   412,   412,   412,
-     416,   417,   420,   421,   424,   425,   426,   427,   433,   437,
-     440,   443,   446,   452,   455,   458,   461,   464,   470,   476,
-     479,   485,   508,   512,   516,   521,   525,   529,   533,   540,
-     541,   545,   546,   550,   551,   552,   556,   557,   561,   562,
-     566,   567,   568,   572,   573,   577,   582,   587,   592,   601,
-     604,   607,   608,   614,   619,   627,   630,   634,   638,   645,
-     649,   653,   657,   662,   673,   684,   689,   694,   698,   704,
-     715,   718,   722,   730,   734,   740,   744,   751,   755,   759,
-     766,   767,   768,   772,   786,   792,   795,   801,   804,   810,
-     811,   819,   830,   839,   851,   852,   856,   866,   875,   887,
-     888,   891,   897,   898,   902,   906,   910,   915,   920,   928,
-     929,   930,   933,   939,   942,   945,   951,   952,   956,   959,
-     962,   968,   971,   974,   982,   994,   997,  1000,  1003,  1010,
-    1013,  1023,  1026,  1029,  1032,  1033,  1034,  1038,  1041,  1044,
-    1055,  1062,  1072,  1075,  1081,  1084,  1091,  1127,  1130,  1136,
-    1139,  1145,  1151,  1152,  1153,  1154,  1155,  1156,  1160,  1164,
-    1165,  1169,  1170,  1174,  1175,  1182,  1183,  1187,  1194,  1205,
-    1212,  1220,  1244,  1273,  1280,  1291,  1337,  1378,  1393,  1396,
-    1399,  1405,  1408,  1414,  1429,  1432,  1461,  1469,  1497,  1502,
-    1510,  1520,  1530,  1533,  1537,  1543,  1557,  1574,  1577,  1583,
-    1590,  1597,  1605,  1616,  1623,  1626,  1632,  1637,  1645,  1649,
-    1653,  1657,  1661,  1665,  1672,  1676,  1680,  1684,  1688,  1692,
-    1698,  1702,  1709,  1712,  1724,  1728,  1732,  1739,  1752,  1765,
-    1778,  1781,  1788,  1789,  1793,  1796,  1799,  1802,  1808,  1812,
-    1819,  1822,  1825,  1840,  1841,  1842,  1843,  1847,  1850,  1856,
-    1857,  1863,  1866,  1872,  1873,  1877,  1878,  1888,  1891,  1898,
-    1903,  1908,  1918,  1921,  1927,  1930,  1936,  1943,  1950,  1957,
-    1958,  1962,  1963,  1964,  1965,  1966,  1970,  1971,  1972,  1973,
-    1977,  1980,  1986,  1989,  1992,  1995,  1998,  2004,  2008,  2016,
-    2017,  2021,  2028,  2031,  2034,  2037,  2041,  2044,  2050,  2054,
-    2062,  2069,  2074,  2082,  2090,  2091,  2092,  2093,  2094,  2095,
-    2096,  2097,  2098,  2099,  2103,  2106,  2112,  2115,  2121,  2122,
-    2126,  2129,  2135,  2138,  2144,  2151,  2155,  2162,  2165,  2168,
-    2174,  2181,  2184,  2187,  2194,  2199,  2207,  2208,  2209,  2210,
-    2211,  2212,  2213,  2214,  2218,  2221,  2227,  2230,  2236,  2243,
-    2244,  2248,  2255,  2258,  2264,  2272,  2275,  2281
+     415,   416,   419,   420,   423,   424,   425,   426,   432,   436,
+     439,   442,   445,   451,   454,   457,   460,   463,   469,   475,
+     478,   484,   507,   511,   515,   520,   524,   528,   532,   539,
+     540,   544,   545,   549,   550,   551,   555,   556,   560,   561,
+     565,   566,   567,   571,   572,   576,   581,   586,   591,   600,
+     603,   606,   607,   613,   618,   626,   629,   633,   637,   644,
+     648,   652,   656,   661,   672,   683,   688,   693,   697,   703,
+     714,   717,   721,   729,   733,   739,   743,   750,   754,   758,
+     765,   766,   767,   771,   785,   791,   794,   800,   803,   809,
+     810,   818,   829,   838,   850,   851,   855,   865,   874,   886,
+     887,   890,   896,   897,   901,   905,   909,   914,   919,   927,
+     928,   929,   932,   938,   941,   944,   950,   951,   955,   958,
+     961,   967,   970,   973,   981,   993,   996,   999,  1002,  1009,
+    1012,  1022,  1025,  1028,  1031,  1032,  1033,  1037,  1040,  1043,
+    1054,  1061,  1071,  1074,  1080,  1083,  1090,  1126,  1129,  1135,
+    1138,  1144,  1150,  1151,  1152,  1153,  1154,  1155,  1159,  1163,
+    1164,  1168,  1169,  1173,  1174,  1181,  1182,  1186,  1193,  1204,
+    1211,  1219,  1243,  1272,  1279,  1290,  1336,  1377,  1392,  1395,
+    1398,  1404,  1407,  1413,  1428,  1431,  1460,  1468,  1496,  1501,
+    1509,  1519,  1529,  1532,  1536,  1542,  1556,  1573,  1576,  1582,
+    1589,  1596,  1604,  1615,  1622,  1625,  1631,  1636,  1644,  1648,
+    1652,  1656,  1660,  1664,  1671,  1675,  1679,  1683,  1687,  1691,
+    1697,  1701,  1708,  1711,  1723,  1727,  1731,  1738,  1751,  1764,
+    1777,  1780,  1787,  1788,  1792,  1795,  1798,  1801,  1807,  1811,
+    1818,  1821,  1824,  1839,  1840,  1841,  1842,  1846,  1849,  1855,
+    1856,  1862,  1865,  1871,  1872,  1876,  1877,  1887,  1890,  1897,
+    1902,  1907,  1917,  1920,  1926,  1929,  1935,  1942,  1949,  1956,
+    1957,  1961,  1962,  1963,  1964,  1965,  1969,  1970,  1971,  1972,
+    1976,  1979,  1985,  1988,  1991,  1994,  1997,  2003,  2007,  2015,
+    2016,  2020,  2027,  2030,  2033,  2036,  2040,  2043,  2049,  2053,
+    2061,  2068,  2073,  2081,  2089,  2090,  2091,  2092,  2093,  2094,
+    2095,  2096,  2097,  2098,  2102,  2105,  2111,  2114,  2120,  2121,
+    2125,  2128,  2134,  2137,  2143,  2150,  2154,  2161,  2164,  2167,
+    2173,  2180,  2183,  2186,  2193,  2198,  2206,  2207,  2208,  2209,
+    2210,  2211,  2212,  2213,  2217,  2220,  2226,  2229,  2235,  2242,
+    2243,  2247,  2254,  2257,  2263,  2271,  2274,  2280
 };
 #endif
 
@@ -4484,126 +4483,126 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
   switch (yyn)
     {
   case 287:
-#line 427 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 426 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                psi_cpp_exp_exec((*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), P->preproc, PSI_DATA(P));
                psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        }
 }
-#line 4495 "src/parser_proc.c" /* glr.c:821  */
+#line 4494 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 288:
-#line 433 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 432 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        char *libname = strdup((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text->val);
        P->file.libnames = psi_plist_add(P->file.libnames, &libname);
 }
-#line 4504 "src/parser_proc.c" /* glr.c:821  */
+#line 4503 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 289:
-#line 437 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 436 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_const(P, (*(struct psi_const **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4512 "src/parser_proc.c" /* glr.c:821  */
+#line 4511 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 290:
-#line 440 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 439 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_decl(P, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4520 "src/parser_proc.c" /* glr.c:821  */
+#line 4519 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 291:
-#line 443 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 442 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_decl_extvars(P, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4528 "src/parser_proc.c" /* glr.c:821  */
+#line 4527 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 292:
-#line 446 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 445 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if (P->flags & PSI_DEBUG) {
                P->error(PSI_DATA(P), (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->token, PSI_NOTICE, "Ignored decl: %s", (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var->name->val);
        }
        psi_decl_free(&(*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4539 "src/parser_proc.c" /* glr.c:821  */
+#line 4538 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 293:
-#line 452 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 451 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_typedef(P, (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4547 "src/parser_proc.c" /* glr.c:821  */
+#line 4546 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 294:
-#line 455 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 454 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_struct(P, (*(struct psi_decl_struct **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4555 "src/parser_proc.c" /* glr.c:821  */
+#line 4554 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 295:
-#line 458 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 457 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_union(P, (*(struct psi_decl_union **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4563 "src/parser_proc.c" /* glr.c:821  */
+#line 4562 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 296:
-#line 461 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 460 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4571 "src/parser_proc.c" /* glr.c:821  */
+#line 4570 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 297:
-#line 464 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 463 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_parser_proc_add_impl(P, (*(struct psi_impl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4579 "src/parser_proc.c" /* glr.c:821  */
+#line 4578 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 298:
-#line 470 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 469 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 4587 "src/parser_proc.c" /* glr.c:821  */
+#line 4586 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 299:
-#line 476 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 475 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = NULL;
 }
-#line 4595 "src/parser_proc.c" /* glr.c:821  */
+#line 4594 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 300:
-#line 479 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 478 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = (*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 4603 "src/parser_proc.c" /* glr.c:821  */
+#line 4602 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 301:
-#line 485 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 484 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                struct psi_token *msg = NULL;
@@ -4627,222 +4626,222 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        }
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4631 "src/parser_proc.c" /* glr.c:821  */
+#line 4630 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 302:
-#line 508 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 507 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4640 "src/parser_proc.c" /* glr.c:821  */
+#line 4639 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 303:
-#line 512 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 511 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, NULL);
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4649 "src/parser_proc.c" /* glr.c:821  */
+#line 4648 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 304:
-#line 516 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 515 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4659 "src/parser_proc.c" /* glr.c:821  */
+#line 4658 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 305:
-#line 521 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 520 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_cpp_macro_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4668 "src/parser_proc.c" /* glr.c:821  */
+#line 4667 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 306:
-#line 525 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 524 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4677 "src/parser_proc.c" /* glr.c:821  */
+#line 4676 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 307:
-#line 529 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 528 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, NULL);
        (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4686 "src/parser_proc.c" /* glr.c:821  */
+#line 4685 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 308:
-#line 533 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 532 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        psi_plist_free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_exp **)(&(*yyvalp))) = NULL;
 }
-#line 4695 "src/parser_proc.c" /* glr.c:821  */
+#line 4694 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 325:
-#line 577 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 576 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init(NULL, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4705 "src/parser_proc.c" /* glr.c:821  */
+#line 4704 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 326:
-#line 582 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 581 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
 }
-#line 4715 "src/parser_proc.c" /* glr.c:821  */
+#line 4714 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 327:
-#line 587 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 586 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init(NULL, psi_num_exp_tokens((*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4725 "src/parser_proc.c" /* glr.c:821  */
+#line 4724 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 328:
-#line 592 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 591 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        struct psi_plist *list = psi_plist_init((psi_plist_dtor) psi_token_free);
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init(NULL, psi_plist_add(list, &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))), NULL);
        (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 4736 "src/parser_proc.c" /* glr.c:821  */
+#line 4735 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 329:
-#line 601 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 600 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_init(NULL);
 }
-#line 4744 "src/parser_proc.c" /* glr.c:821  */
+#line 4743 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 330:
-#line 604 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 603 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_init(NULL); /* FIXME */
 }
-#line 4752 "src/parser_proc.c" /* glr.c:821  */
+#line 4751 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 332:
-#line 608 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 607 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
 }
-#line 4760 "src/parser_proc.c" /* glr.c:821  */
+#line 4759 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 333:
-#line 614 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 613 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_token_free), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4770 "src/parser_proc.c" /* glr.c:821  */
+#line 4769 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 334:
-#line 619 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 618 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4780 "src/parser_proc.c" /* glr.c:821  */
+#line 4779 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 335:
-#line 627 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 626 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4788 "src/parser_proc.c" /* glr.c:821  */
+#line 4787 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 337:
-#line 634 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 633 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_token_free), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4797 "src/parser_proc.c" /* glr.c:821  */
+#line 4796 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 338:
-#line 638 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 637 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4806 "src/parser_proc.c" /* glr.c:821  */
+#line 4805 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 339:
-#line 645 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 644 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
 }
-#line 4815 "src/parser_proc.c" /* glr.c:821  */
+#line 4814 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 340:
-#line 649 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 648 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 4824 "src/parser_proc.c" /* glr.c:821  */
+#line 4823 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 341:
-#line 653 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 652 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 4833 "src/parser_proc.c" /* glr.c:821  */
+#line 4832 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 342:
-#line 657 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 656 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 4842 "src/parser_proc.c" /* glr.c:821  */
+#line 4841 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 343:
-#line 662 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 661 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        {
                uint8_t exists;
@@ -4854,11 +4853,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        }
 }
-#line 4858 "src/parser_proc.c" /* glr.c:821  */
+#line 4857 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 344:
-#line 673 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 672 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        {
                uint8_t exists;
@@ -4870,51 +4869,51 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 4874 "src/parser_proc.c" /* glr.c:821  */
+#line 4873 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 345:
-#line 684 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 683 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->flags));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4884 "src/parser_proc.c" /* glr.c:821  */
+#line 4883 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 346:
-#line 689 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 688 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4894 "src/parser_proc.c" /* glr.c:821  */
+#line 4893 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 347:
-#line 694 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 693 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 4903 "src/parser_proc.c" /* glr.c:821  */
+#line 4902 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 348:
-#line 698 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 697 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_DEFINE, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0));
        (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4914 "src/parser_proc.c" /* glr.c:821  */
+#line 4913 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 349:
-#line 704 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 703 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_FUNCTION,
@@ -4923,19 +4922,19 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
        (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->data.call->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 4927 "src/parser_proc.c" /* glr.c:821  */
+#line 4926 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 350:
-#line 715 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 714 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 4935 "src/parser_proc.c" /* glr.c:821  */
+#line 4934 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 352:
-#line 722 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 721 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        /* TODO: clang include test macros */
        uint8_t no = 1;
@@ -4944,121 +4943,121 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        exp->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_num_exp_free), &exp);
 }
-#line 4948 "src/parser_proc.c" /* glr.c:821  */
+#line 4947 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 353:
-#line 730 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 729 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_num_exp_free),
                &(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4957 "src/parser_proc.c" /* glr.c:821  */
+#line 4956 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 354:
-#line 734 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 733 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4965 "src/parser_proc.c" /* glr.c:821  */
+#line 4964 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 355:
-#line 740 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 739 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_const **)(&(*yyvalp))) = psi_const_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_def_val **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_const **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 4974 "src/parser_proc.c" /* glr.c:821  */
+#line 4973 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 356:
-#line 744 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 743 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_const **)(&(*yyvalp))) = psi_const_init(NULL, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_def_val **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        (*(struct psi_const **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
 }
-#line 4983 "src/parser_proc.c" /* glr.c:821  */
+#line 4982 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 357:
-#line 751 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 750 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_impl_def_val **)(&(*yyvalp))) = psi_impl_def_val_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_impl_def_val **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 4992 "src/parser_proc.c" /* glr.c:821  */
+#line 4991 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 358:
-#line 755 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 754 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_impl_def_val **)(&(*yyvalp))) = psi_impl_def_val_init(PSI_T_NUMBER, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_impl_def_val **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 5001 "src/parser_proc.c" /* glr.c:821  */
+#line 5000 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 359:
-#line 759 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 758 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5010 "src/parser_proc.c" /* glr.c:821  */
+#line 5009 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 363:
-#line 772 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 771 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5018 "src/parser_proc.c" /* glr.c:821  */
+#line 5017 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 364:
-#line 786 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 785 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5026 "src/parser_proc.c" /* glr.c:821  */
+#line 5025 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 365:
-#line 792 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 791 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5034 "src/parser_proc.c" /* glr.c:821  */
+#line 5033 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 366:
-#line 795 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 794 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5042 "src/parser_proc.c" /* glr.c:821  */
+#line 5041 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 367:
-#line 801 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 800 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5050 "src/parser_proc.c" /* glr.c:821  */
+#line 5049 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 368:
-#line 804 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 803 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5058 "src/parser_proc.c" /* glr.c:821  */
+#line 5057 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 370:
-#line 811 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 810 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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),
@@ -5067,11 +5066,11 @@ yyuserAction (yyRuleNum yyn, int 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 5071 "src/parser_proc.c" /* glr.c:821  */
+#line 5070 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 371:
-#line 819 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 818 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
@@ -5083,11 +5082,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.enm = (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
        psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 5087 "src/parser_proc.c" /* glr.c:821  */
+#line 5086 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 372:
-#line 830 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 829 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
@@ -5097,11 +5096,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_struct(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct);
 }
-#line 5101 "src/parser_proc.c" /* glr.c:821  */
+#line 5100 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 373:
-#line 839 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 838 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
@@ -5111,20 +5110,20 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_union(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn);
 }
-#line 5115 "src/parser_proc.c" /* glr.c:821  */
+#line 5114 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 375:
-#line 852 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 851 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), psi_decl_var_init(NULL, 0, 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
 }
-#line 5124 "src/parser_proc.c" /* glr.c:821  */
+#line 5123 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 376:
-#line 856 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 855 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                psi_decl_type_init(PSI_T_ENUM, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->name),
@@ -5135,11 +5134,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.enm = (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5139 "src/parser_proc.c" /* glr.c:821  */
+#line 5138 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 377:
-#line 866 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 865 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text), psi_decl_var_init(NULL, 0, 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
@@ -5149,11 +5148,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_struct(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct);
 }
-#line 5153 "src/parser_proc.c" /* glr.c:821  */
+#line 5152 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 378:
-#line 875 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 874 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text), psi_decl_var_init(NULL, 0, 0));
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
@@ -5163,146 +5162,146 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
        (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
        psi_parser_proc_add_union(P, (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn);
 }
-#line 5167 "src/parser_proc.c" /* glr.c:821  */
+#line 5166 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 380:
-#line 888 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 887 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_type **)(&(*yyvalp))) = (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5175 "src/parser_proc.c" /* glr.c:821  */
+#line 5174 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 381:
-#line 891 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 890 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_type **)(&(*yyvalp))) = (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5183 "src/parser_proc.c" /* glr.c:821  */
+#line 5182 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 384:
-#line 902 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 901 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5192 "src/parser_proc.c" /* glr.c:821  */
+#line 5191 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 386:
-#line 910 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 909 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5202 "src/parser_proc.c" /* glr.c:821  */
+#line 5201 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 387:
-#line 915 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 914 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5212 "src/parser_proc.c" /* glr.c:821  */
+#line 5211 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 388:
-#line 920 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 919 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
        (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
        (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5222 "src/parser_proc.c" /* glr.c:821  */
+#line 5221 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 391:
-#line 930 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 929 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5230 "src/parser_proc.c" /* glr.c:821  */
+#line 5229 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 392:
-#line 933 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 932 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5238 "src/parser_proc.c" /* glr.c:821  */
+#line 5237 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 393:
-#line 939 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 938 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5246 "src/parser_proc.c" /* glr.c:821  */
+#line 5245 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 394:
-#line 942 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 941 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5254 "src/parser_proc.c" /* glr.c:821  */
+#line 5253 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 395:
-#line 945 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 944 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5262 "src/parser_proc.c" /* glr.c:821  */
+#line 5261 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 398:
-#line 956 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 955 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5270 "src/parser_proc.c" /* glr.c:821  */
+#line 5269 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 399:
-#line 959 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 958 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5278 "src/parser_proc.c" /* glr.c:821  */
+#line 5277 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 400:
-#line 962 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 961 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5286 "src/parser_proc.c" /* glr.c:821  */
+#line 5285 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 401:
-#line 968 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 967 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5294 "src/parser_proc.c" /* glr.c:821  */
+#line 5293 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 402:
-#line 971 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 970 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5302 "src/parser_proc.c" /* glr.c:821  */
+#line 5301 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 403:
-#line 974 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 973 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -5311,11 +5310,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5315 "src/parser_proc.c" /* glr.c:821  */
+#line 5314 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 404:
-#line 982 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 981 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -5325,35 +5324,35 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
        }
 }
-#line 5329 "src/parser_proc.c" /* glr.c:821  */
+#line 5328 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 405:
-#line 994 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 993 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 5337 "src/parser_proc.c" /* glr.c:821  */
+#line 5336 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 406:
-#line 997 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 996 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5345 "src/parser_proc.c" /* glr.c:821  */
+#line 5344 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 407:
-#line 1000 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 999 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5353 "src/parser_proc.c" /* glr.c:821  */
+#line 5352 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 408:
-#line 1003 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1002 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -5361,19 +5360,19 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5365 "src/parser_proc.c" /* glr.c:821  */
+#line 5364 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 409:
-#line 1010 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1009 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5373 "src/parser_proc.c" /* glr.c:821  */
+#line 5372 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 410:
-#line 1013 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1012 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -5381,43 +5380,43 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5385 "src/parser_proc.c" /* glr.c:821  */
+#line 5384 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 411:
-#line 1023 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1022 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 5393 "src/parser_proc.c" /* glr.c:821  */
+#line 5392 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 413:
-#line 1029 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1028 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 5401 "src/parser_proc.c" /* glr.c:821  */
+#line 5400 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 417:
-#line 1038 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1037 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 5409 "src/parser_proc.c" /* glr.c:821  */
+#line 5408 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 418:
-#line 1041 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1040 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5417 "src/parser_proc.c" /* glr.c:821  */
+#line 5416 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 419:
-#line 1044 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1043 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
@@ -5426,11 +5425,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5430 "src/parser_proc.c" /* glr.c:821  */
+#line 5429 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 420:
-#line 1055 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1054 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))) {
@@ -5438,11 +5437,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                psi_token_free(&(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5442 "src/parser_proc.c" /* glr.c:821  */
+#line 5441 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 421:
-#line 1062 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1061 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
        if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))) {
@@ -5450,44 +5449,44 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                psi_token_free(&(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5454 "src/parser_proc.c" /* glr.c:821  */
+#line 5453 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 422:
-#line 1072 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1071 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 5462 "src/parser_proc.c" /* glr.c:821  */
+#line 5461 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 423:
-#line 1075 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1074 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5470 "src/parser_proc.c" /* glr.c:821  */
+#line 5469 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 424:
-#line 1081 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1080 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5478 "src/parser_proc.c" /* glr.c:821  */
+#line 5477 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 425:
-#line 1084 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1083 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat("", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
        psi_token_free(&(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
 }
-#line 5487 "src/parser_proc.c" /* glr.c:821  */
+#line 5486 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 426:
-#line 1091 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1090 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        struct psi_plist *list = psi_plist_init((psi_plist_dtor) psi_decl_extvar_free);
 
@@ -5521,60 +5520,60 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
 
        (*(struct psi_plist **)(&(*yyvalp))) = list;
 }
-#line 5525 "src/parser_proc.c" /* glr.c:821  */
+#line 5524 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 427:
-#line 1127 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1126 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5533 "src/parser_proc.c" /* glr.c:821  */
+#line 5532 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 428:
-#line 1130 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1129 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5541 "src/parser_proc.c" /* glr.c:821  */
+#line 5540 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 429:
-#line 1136 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1135 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), &(*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5549 "src/parser_proc.c" /* glr.c:821  */
+#line 5548 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 430:
-#line 1139 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1138 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
 }
-#line 5557 "src/parser_proc.c" /* glr.c:821  */
+#line 5556 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 431:
-#line 1145 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1144 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5565 "src/parser_proc.c" /* glr.c:821  */
+#line 5564 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 444:
-#line 1175 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1174 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_decl **)(&(*yyvalp)))->abi = psi_decl_abi_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
 }
-#line 5574 "src/parser_proc.c" /* glr.c:821  */
+#line 5573 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 447:
-#line 1187 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1186 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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))) {
@@ -5582,11 +5581,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 5586 "src/parser_proc.c" /* glr.c:821  */
+#line 5585 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 448:
-#line 1194 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1193 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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;
@@ -5595,11 +5594,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 5599 "src/parser_proc.c" /* glr.c:821  */
+#line 5598 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 449:
-#line 1205 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1204 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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))) {
@@ -5607,11 +5606,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 5611 "src/parser_proc.c" /* glr.c:821  */
+#line 5610 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 450:
-#line 1212 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1211 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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;
@@ -5620,11 +5619,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 5624 "src/parser_proc.c" /* glr.c:821  */
+#line 5623 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 451:
-#line 1220 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1219 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
@@ -5649,11 +5648,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
 
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(func, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)));
 }
-#line 5653 "src/parser_proc.c" /* glr.c:821  */
+#line 5652 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 452:
-#line 1244 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1243 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-12)].yystate.yysemantics.yysval));
        (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval));
@@ -5680,11 +5679,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
 
        (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(func, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)));
 }
-#line 5684 "src/parser_proc.c" /* glr.c:821  */
+#line 5683 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 453:
-#line 1273 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1272 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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))) {
@@ -5692,11 +5691,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 5696 "src/parser_proc.c" /* glr.c:821  */
+#line 5695 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 454:
-#line 1280 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1279 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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;
@@ -5705,11 +5704,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        }
 }
-#line 5709 "src/parser_proc.c" /* glr.c:821  */
+#line 5708 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 455:
-#line 1291 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1290 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (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;
@@ -5717,62 +5716,62 @@ yyuserAction (yyRuleNum yyn, int 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 5721 "src/parser_proc.c" /* glr.c:821  */
+#line 5720 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 456:
-#line 1337 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1336 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (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 5732 "src/parser_proc.c" /* glr.c:821  */
+#line 5731 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 458:
-#line 1393 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1392 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5740 "src/parser_proc.c" /* glr.c:821  */
+#line 5739 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 459:
-#line 1396 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1395 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5748 "src/parser_proc.c" /* glr.c:821  */
+#line 5747 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 460:
-#line 1399 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1398 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5756 "src/parser_proc.c" /* glr.c:821  */
+#line 5755 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 461:
-#line 1405 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1404 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 5764 "src/parser_proc.c" /* glr.c:821  */
+#line 5763 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 462:
-#line 1408 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1407 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 5772 "src/parser_proc.c" /* glr.c:821  */
+#line 5771 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 463:
-#line 1414 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1413 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        char digest[17];
        struct psi_token *name;
@@ -5788,30 +5787,30 @@ yyuserAction (yyRuleNum yyn, int 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 5792 "src/parser_proc.c" /* glr.c:821  */
+#line 5791 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 464:
-#line 1429 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1428 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5800 "src/parser_proc.c" /* glr.c:821  */
+#line 5799 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 465:
-#line 1432 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1431 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
                (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)),
                psi_decl_var_init(NULL, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)))
        );
 }
-#line 5811 "src/parser_proc.c" /* glr.c:821  */
+#line 5810 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 466:
-#line 1461 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1460 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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),
@@ -5820,39 +5819,39 @@ yyuserAction (yyRuleNum yyn, int 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 5824 "src/parser_proc.c" /* glr.c:821  */
+#line 5823 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 467:
-#line 1469 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1468 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 5832 "src/parser_proc.c" /* glr.c:821  */
+#line 5831 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 468:
-#line 1497 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1496 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 5842 "src/parser_proc.c" /* glr.c:821  */
+#line 5841 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 469:
-#line 1502 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1501 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 5852 "src/parser_proc.c" /* glr.c:821  */
+#line 5851 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 470:
-#line 1510 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1509 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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)));
@@ -5860,11 +5859,11 @@ yyuserAction (yyRuleNum yyn, int 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 5864 "src/parser_proc.c" /* glr.c:821  */
+#line 5863 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 471:
-#line 1520 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1519 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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)));
@@ -5872,27 +5871,27 @@ yyuserAction (yyRuleNum yyn, int 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 5876 "src/parser_proc.c" /* glr.c:821  */
+#line 5875 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 472:
-#line 1530 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1529 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5884 "src/parser_proc.c" /* glr.c:821  */
+#line 5883 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 474:
-#line 1537 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1536 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 5892 "src/parser_proc.c" /* glr.c:821  */
+#line 5891 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 475:
-#line 1543 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1542 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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)));
@@ -5907,11 +5906,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5911 "src/parser_proc.c" /* glr.c:821  */
+#line 5910 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 476:
-#line 1557 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1556 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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)));
@@ -5926,27 +5925,27 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
        }
 }
-#line 5930 "src/parser_proc.c" /* glr.c:821  */
+#line 5929 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 477:
-#line 1574 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1573 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 5938 "src/parser_proc.c" /* glr.c:821  */
+#line 5937 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 478:
-#line 1577 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1576 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 5946 "src/parser_proc.c" /* glr.c:821  */
+#line 5945 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 479:
-#line 1583 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1582 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        {
                struct psi_decl_arg *arg = psi_decl_arg_init(NULL, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
@@ -5954,11 +5953,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &arg);
        }
 }
-#line 5958 "src/parser_proc.c" /* glr.c:821  */
+#line 5957 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 480:
-#line 1590 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1589 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        {
                struct psi_decl_arg *arg = psi_decl_arg_init(NULL, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
@@ -5966,11 +5965,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), &arg);
        }
 }
-#line 5970 "src/parser_proc.c" /* glr.c:821  */
+#line 5969 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 481:
-#line 1597 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1596 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        {
                struct psi_decl_var *var = psi_decl_var_init(NULL, 0, 0);
@@ -5979,11 +5978,11 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &arg);
        }
 }
-#line 5983 "src/parser_proc.c" /* glr.c:821  */
+#line 5982 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 482:
-#line 1605 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1604 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        {
                struct psi_decl_var *var = psi_decl_var_init(NULL, 0, 0);
@@ -5992,189 +5991,189 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
                (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &arg);
        }
 }
-#line 5996 "src/parser_proc.c" /* glr.c:821  */
+#line 5995 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 483:
-#line 1616 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1615 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6005 "src/parser_proc.c" /* glr.c:821  */
+#line 6004 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 484:
-#line 1623 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1622 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6013 "src/parser_proc.c" /* glr.c:821  */
+#line 6012 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 485:
-#line 1626 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1625 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6021 "src/parser_proc.c" /* glr.c:821  */
+#line 6020 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 486:
-#line 1632 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1631 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6031 "src/parser_proc.c" /* glr.c:821  */
+#line 6030 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 487:
-#line 1637 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1636 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6041 "src/parser_proc.c" /* glr.c:821  */
+#line 6040 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 488:
-#line 1645 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1644 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6050 "src/parser_proc.c" /* glr.c:821  */
+#line 6049 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 489:
-#line 1649 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1648 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6059 "src/parser_proc.c" /* glr.c:821  */
+#line 6058 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 490:
-#line 1653 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1652 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6068 "src/parser_proc.c" /* glr.c:821  */
+#line 6067 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 491:
-#line 1657 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1656 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6077 "src/parser_proc.c" /* glr.c:821  */
+#line 6076 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 492:
-#line 1661 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1660 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6086 "src/parser_proc.c" /* glr.c:821  */
+#line 6085 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 493:
-#line 1665 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1664 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6095 "src/parser_proc.c" /* glr.c:821  */
+#line 6094 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 494:
-#line 1672 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1671 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6104 "src/parser_proc.c" /* glr.c:821  */
+#line 6103 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 495:
-#line 1676 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1675 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6113 "src/parser_proc.c" /* glr.c:821  */
+#line 6112 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 496:
-#line 1680 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1679 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6122 "src/parser_proc.c" /* glr.c:821  */
+#line 6121 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 497:
-#line 1684 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1683 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6131 "src/parser_proc.c" /* glr.c:821  */
+#line 6130 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 498:
-#line 1688 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1687 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6140 "src/parser_proc.c" /* glr.c:821  */
+#line 6139 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 499:
-#line 1692 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1691 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6148 "src/parser_proc.c" /* glr.c:821  */
+#line 6147 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 500:
-#line 1698 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1697 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6157 "src/parser_proc.c" /* glr.c:821  */
+#line 6156 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 501:
-#line 1702 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1701 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6166 "src/parser_proc.c" /* glr.c:821  */
+#line 6165 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 502:
-#line 1709 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1708 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_number **)(&(*yyvalp))) = (*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6174 "src/parser_proc.c" /* glr.c:821  */
+#line 6173 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 503:
-#line 1712 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1711 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
                int8_t sizeof_void_p = sizeof(void *);
@@ -6184,38 +6183,38 @@ yyuserAction (yyRuleNum yyn, int 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 6188 "src/parser_proc.c" /* glr.c:821  */
+#line 6187 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 504:
-#line 1724 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1723 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        int8_t sizeof_void_p = sizeof(void *);
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT8, &sizeof_void_p, 0);
 }
-#line 6197 "src/parser_proc.c" /* glr.c:821  */
+#line 6196 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 505:
-#line 1728 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1727 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        int8_t sizeof_a = sizeof('a');
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_INT8, &sizeof_a, 0);
 }
-#line 6206 "src/parser_proc.c" /* glr.c:821  */
+#line 6205 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 506:
-#line 1732 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1731 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        uint64_t len = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text->len + 1;
        (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_UINT64, &len, 0);
 }
-#line 6215 "src/parser_proc.c" /* glr.c:821  */
+#line 6214 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 507:
-#line 1739 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1738 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        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)));
@@ -6226,11 +6225,11 @@ yyuserAction (yyRuleNum yyn, int 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 6230 "src/parser_proc.c" /* glr.c:821  */
+#line 6229 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 508:
-#line 1752 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1751 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        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)));
@@ -6241,11 +6240,11 @@ yyuserAction (yyRuleNum yyn, int 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 6245 "src/parser_proc.c" /* glr.c:821  */
+#line 6244 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 509:
-#line 1765 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1764 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        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)));
@@ -6256,94 +6255,94 @@ yyuserAction (yyRuleNum yyn, int 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 6260 "src/parser_proc.c" /* glr.c:821  */
+#line 6259 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 510:
-#line 1778 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1777 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = NULL;
 }
-#line 6268 "src/parser_proc.c" /* glr.c:821  */
+#line 6267 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 511:
-#line 1781 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1780 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
        (*(struct psi_token **)(&(*yyvalp)))->type = PSI_T_NAME;
 }
-#line 6277 "src/parser_proc.c" /* glr.c:821  */
+#line 6276 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 514:
-#line 1793 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1792 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = NULL;
 }
-#line 6285 "src/parser_proc.c" /* glr.c:821  */
+#line 6284 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 515:
-#line 1796 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1795 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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->val), NULL));
 }
-#line 6293 "src/parser_proc.c" /* glr.c:821  */
+#line 6292 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 516:
-#line 1799 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1798 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = psi_layout_init(atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text->val), atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text->val), NULL);
 }
-#line 6301 "src/parser_proc.c" /* glr.c:821  */
+#line 6300 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 517:
-#line 1802 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1801 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_layout **)(&(*yyvalp))) = psi_layout_init(atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text->val), atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text->val), psi_layout_init(0, atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval))->text->val), NULL));
 }
-#line 6309 "src/parser_proc.c" /* glr.c:821  */
+#line 6308 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 518:
-#line 1808 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1807 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_layout*)(&(*yyvalp))).pos = 0;
        (*(struct psi_layout*)(&(*yyvalp))).len = 0;
 }
-#line 6318 "src/parser_proc.c" /* glr.c:821  */
+#line 6317 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 519:
-#line 1812 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1811 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_layout*)(&(*yyvalp))).pos = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text->val);
        (*(struct psi_layout*)(&(*yyvalp))).len = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text->val);
 }
-#line 6327 "src/parser_proc.c" /* glr.c:821  */
+#line 6326 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 520:
-#line 1819 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1818 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 6335 "src/parser_proc.c" /* glr.c:821  */
+#line 6334 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 521:
-#line 1822 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1821 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 6343 "src/parser_proc.c" /* glr.c:821  */
+#line 6342 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 522:
-#line 1825 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1824 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        struct psi_validate_scope scope = {0};
        psi_validate_scope_ctor(&scope);
@@ -6356,88 +6355,88 @@ yyuserAction (yyRuleNum yyn, int 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 6360 "src/parser_proc.c" /* glr.c:821  */
+#line 6359 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 527:
-#line 1847 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1846 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = 0;
 }
-#line 6368 "src/parser_proc.c" /* glr.c:821  */
+#line 6367 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 528:
-#line 1850 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1849 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6376 "src/parser_proc.c" /* glr.c:821  */
+#line 6375 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 530:
-#line 1857 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1856 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
 }
-#line 6384 "src/parser_proc.c" /* glr.c:821  */
+#line 6383 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 531:
-#line 1863 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1862 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = 1;
 }
-#line 6392 "src/parser_proc.c" /* glr.c:821  */
+#line 6391 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 532:
-#line 1866 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1865 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)) + 1;
 }
-#line 6400 "src/parser_proc.c" /* glr.c:821  */
+#line 6399 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 537:
-#line 1888 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1887 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6408 "src/parser_proc.c" /* glr.c:821  */
+#line 6407 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 538:
-#line 1891 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1890 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6417 "src/parser_proc.c" /* glr.c:821  */
+#line 6416 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 539:
-#line 1898 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1897 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6427 "src/parser_proc.c" /* glr.c:821  */
+#line 6426 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 540:
-#line 1903 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1902 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6437 "src/parser_proc.c" /* glr.c:821  */
+#line 6436 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 541:
-#line 1908 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1907 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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)));
@@ -6445,531 +6444,531 @@ yyuserAction (yyRuleNum yyn, int 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 6449 "src/parser_proc.c" /* glr.c:821  */
+#line 6448 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 542:
-#line 1918 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1917 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6457 "src/parser_proc.c" /* glr.c:821  */
+#line 6456 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 543:
-#line 1921 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1920 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6465 "src/parser_proc.c" /* glr.c:821  */
+#line 6464 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 544:
-#line 1927 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1926 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6473 "src/parser_proc.c" /* glr.c:821  */
+#line 6472 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 545:
-#line 1930 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1929 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6481 "src/parser_proc.c" /* glr.c:821  */
+#line 6480 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 546:
-#line 1936 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1935 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6490 "src/parser_proc.c" /* glr.c:821  */
+#line 6489 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 547:
-#line 1943 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1942 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6499 "src/parser_proc.c" /* glr.c:821  */
+#line 6498 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 548:
-#line 1950 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1949 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6508 "src/parser_proc.c" /* glr.c:821  */
+#line 6507 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 560:
-#line 1977 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1976 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6516 "src/parser_proc.c" /* glr.c:821  */
+#line 6515 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 561:
-#line 1980 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1979 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6524 "src/parser_proc.c" /* glr.c:821  */
+#line 6523 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 562:
-#line 1986 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1985 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_return_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6532 "src/parser_proc.c" /* glr.c:821  */
+#line 6531 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 563:
-#line 1989 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1988 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_let_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6540 "src/parser_proc.c" /* glr.c:821  */
+#line 6539 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 564:
-#line 1992 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1991 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_set_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6548 "src/parser_proc.c" /* glr.c:821  */
+#line 6547 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 565:
-#line 1995 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1994 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_assert_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6556 "src/parser_proc.c" /* glr.c:821  */
+#line 6555 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 566:
-#line 1998 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 1997 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_free_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6564 "src/parser_proc.c" /* glr.c:821  */
+#line 6563 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 567:
-#line 2004 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2003 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6573 "src/parser_proc.c" /* glr.c:821  */
+#line 6572 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 568:
-#line 2008 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2007 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6583 "src/parser_proc.c" /* glr.c:821  */
+#line 6582 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 570:
-#line 2017 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2016 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6592 "src/parser_proc.c" /* glr.c:821  */
+#line 6591 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 571:
-#line 2021 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2020 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6601 "src/parser_proc.c" /* glr.c:821  */
+#line 6600 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 572:
-#line 2028 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2027 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_NULL, NULL);
 }
-#line 6609 "src/parser_proc.c" /* glr.c:821  */
+#line 6608 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 573:
-#line 2031 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2030 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6617 "src/parser_proc.c" /* glr.c:821  */
+#line 6616 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 574:
-#line 2034 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2033 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6625 "src/parser_proc.c" /* glr.c:821  */
+#line 6624 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 575:
-#line 2037 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2036 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6634 "src/parser_proc.c" /* glr.c:821  */
+#line 6633 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 576:
-#line 2041 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2040 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6642 "src/parser_proc.c" /* glr.c:821  */
+#line 6641 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 577:
-#line 2044 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2043 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6650 "src/parser_proc.c" /* glr.c:821  */
+#line 6649 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 578:
-#line 2050 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2049 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6659 "src/parser_proc.c" /* glr.c:821  */
+#line 6658 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 579:
-#line 2054 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2053 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6669 "src/parser_proc.c" /* glr.c:821  */
+#line 6668 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 580:
-#line 2062 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2061 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6678 "src/parser_proc.c" /* glr.c:821  */
+#line 6677 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 581:
-#line 2069 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2068 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6688 "src/parser_proc.c" /* glr.c:821  */
+#line 6687 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 582:
-#line 2074 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2073 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6698 "src/parser_proc.c" /* glr.c:821  */
+#line 6697 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 583:
-#line 2082 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2081 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6708 "src/parser_proc.c" /* glr.c:821  */
+#line 6707 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 594:
-#line 2103 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2102 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6716 "src/parser_proc.c" /* glr.c:821  */
+#line 6715 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 595:
-#line 2106 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2105 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6724 "src/parser_proc.c" /* glr.c:821  */
+#line 6723 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 596:
-#line 2112 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2111 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6732 "src/parser_proc.c" /* glr.c:821  */
+#line 6731 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 597:
-#line 2115 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2114 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6740 "src/parser_proc.c" /* glr.c:821  */
+#line 6739 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 600:
-#line 2126 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2125 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6748 "src/parser_proc.c" /* glr.c:821  */
+#line 6747 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 601:
-#line 2129 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2128 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6756 "src/parser_proc.c" /* glr.c:821  */
+#line 6755 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 602:
-#line 2135 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2134 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6764 "src/parser_proc.c" /* glr.c:821  */
+#line 6763 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 603:
-#line 2138 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2137 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6772 "src/parser_proc.c" /* glr.c:821  */
+#line 6771 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 604:
-#line 2144 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2143 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6781 "src/parser_proc.c" /* glr.c:821  */
+#line 6780 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 605:
-#line 2151 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2150 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6790 "src/parser_proc.c" /* glr.c:821  */
+#line 6789 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 606:
-#line 2155 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2154 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6799 "src/parser_proc.c" /* glr.c:821  */
+#line 6798 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 607:
-#line 2162 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2161 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6807 "src/parser_proc.c" /* glr.c:821  */
+#line 6806 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 608:
-#line 2165 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2164 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6815 "src/parser_proc.c" /* glr.c:821  */
+#line 6814 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 609:
-#line 2168 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2167 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6823 "src/parser_proc.c" /* glr.c:821  */
+#line 6822 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 610:
-#line 2174 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2173 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6832 "src/parser_proc.c" /* glr.c:821  */
+#line 6831 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 611:
-#line 2181 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2180 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6840 "src/parser_proc.c" /* glr.c:821  */
+#line 6839 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 612:
-#line 2184 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2183 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6848 "src/parser_proc.c" /* glr.c:821  */
+#line 6847 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 613:
-#line 2187 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2186 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6857 "src/parser_proc.c" /* glr.c:821  */
+#line 6856 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 614:
-#line 2194 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2193 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6867 "src/parser_proc.c" /* glr.c:821  */
+#line 6866 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 615:
-#line 2199 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2198 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6877 "src/parser_proc.c" /* glr.c:821  */
+#line 6876 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 624:
-#line 2218 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2217 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = NULL;
 }
-#line 6885 "src/parser_proc.c" /* glr.c:821  */
+#line 6884 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 625:
-#line 2221 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2220 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
 }
-#line 6893 "src/parser_proc.c" /* glr.c:821  */
+#line 6892 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 626:
-#line 2227 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2226 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6901 "src/parser_proc.c" /* glr.c:821  */
+#line 6900 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 627:
-#line 2230 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2229 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6909 "src/parser_proc.c" /* glr.c:821  */
+#line 6908 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 628:
-#line 2236 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2235 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6918 "src/parser_proc.c" /* glr.c:821  */
+#line 6917 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 631:
-#line 2248 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2247 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6927 "src/parser_proc.c" /* glr.c:821  */
+#line 6926 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 632:
-#line 2255 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2254 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6935 "src/parser_proc.c" /* glr.c:821  */
+#line 6934 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 633:
-#line 2258 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2257 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6943 "src/parser_proc.c" /* glr.c:821  */
+#line 6942 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 634:
-#line 2264 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2263 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(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 6953 "src/parser_proc.c" /* glr.c:821  */
+#line 6952 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 635:
-#line 2272 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2271 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(bool*)(&(*yyvalp))) = false;
 }
-#line 6961 "src/parser_proc.c" /* glr.c:821  */
+#line 6960 "src/parser_proc.c" /* glr.c:821  */
     break;
 
   case 636:
-#line 2275 "src/parser_proc_grammar.y" /* glr.c:821  */
+#line 2274 "src/parser_proc_grammar.y" /* glr.c:821  */
     {
        (*(bool*)(&(*yyvalp))) = true;
 }
-#line 6969 "src/parser_proc.c" /* glr.c:821  */
+#line 6968 "src/parser_proc.c" /* glr.c:821  */
     break;
 
 
-#line 6973 "src/parser_proc.c" /* glr.c:821  */
+#line 6972 "src/parser_proc.c" /* glr.c:821  */
       default: break;
     }
 
@@ -7018,759 +7017,759 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct psi_parser
   switch (yytype)
     {
           case 141: /* binary_op_token  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 289 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7024 "src/parser_proc.c" /* glr.c:851  */
+#line 7023 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 142: /* unary_op_token  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 289 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7030 "src/parser_proc.c" /* glr.c:851  */
+#line 7029 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 143: /* name_token  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 289 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7036 "src/parser_proc.c" /* glr.c:851  */
+#line 7035 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 144: /* any_noeol_token  */
-#line 290 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 289 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7042 "src/parser_proc.c" /* glr.c:851  */
+#line 7041 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 149: /* lib  */
-#line 284 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 283 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7048 "src/parser_proc.c" /* glr.c:851  */
+#line 7047 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 150: /* cpp  */
-#line 299 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 298 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
-#line 7054 "src/parser_proc.c" /* glr.c:851  */
+#line 7053 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 151: /* cpp_exp  */
-#line 299 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 298 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
-#line 7060 "src/parser_proc.c" /* glr.c:851  */
+#line 7059 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 153: /* cpp_message_token  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 286 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7066 "src/parser_proc.c" /* glr.c:851  */
+#line 7065 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 154: /* cpp_include_token  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 286 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7072 "src/parser_proc.c" /* glr.c:851  */
+#line 7071 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 155: /* cpp_header_token  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 286 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7078 "src/parser_proc.c" /* glr.c:851  */
+#line 7077 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 156: /* cpp_no_arg_token  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 286 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7084 "src/parser_proc.c" /* glr.c:851  */
+#line 7083 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 157: /* cpp_name_arg_token  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 286 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7090 "src/parser_proc.c" /* glr.c:851  */
+#line 7089 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 158: /* cpp_exp_arg_token  */
-#line 287 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 286 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7096 "src/parser_proc.c" /* glr.c:851  */
+#line 7095 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 159: /* cpp_macro_decl  */
-#line 301 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 300 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_cpp_macro_decl_free(&(*(struct psi_cpp_macro_decl **)(&(*yyvaluep))));}
-#line 7102 "src/parser_proc.c" /* glr.c:851  */
+#line 7101 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 160: /* cpp_macro_sig  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 302 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7108 "src/parser_proc.c" /* glr.c:851  */
+#line 7107 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 161: /* cpp_macro_sig_args  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 302 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7114 "src/parser_proc.c" /* glr.c:851  */
+#line 7113 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 162: /* cpp_macro_decl_tokens  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 302 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7120 "src/parser_proc.c" /* glr.c:851  */
+#line 7119 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 163: /* cpp_macro_decl_token_list  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 302 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7126 "src/parser_proc.c" /* glr.c:851  */
+#line 7125 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 164: /* cpp_macro_exp  */
-#line 305 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 304 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
-#line 7132 "src/parser_proc.c" /* glr.c:851  */
+#line 7131 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 165: /* cpp_macro_call_args  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 302 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7138 "src/parser_proc.c" /* glr.c:851  */
+#line 7137 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 166: /* cpp_macro_call_arg_list  */
-#line 303 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 302 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7144 "src/parser_proc.c" /* glr.c:851  */
+#line 7143 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 167: /* constant  */
-#line 311 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 310 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_const_free(&(*(struct psi_const **)(&(*yyvaluep))));}
-#line 7150 "src/parser_proc.c" /* glr.c:851  */
+#line 7149 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 168: /* impl_def_val  */
-#line 313 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 312 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_def_val_free(&(*(struct psi_impl_def_val **)(&(*yyvaluep))));}
-#line 7156 "src/parser_proc.c" /* glr.c:851  */
+#line 7155 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 169: /* impl_def_val_token  */
-#line 308 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 307 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7162 "src/parser_proc.c" /* glr.c:851  */
+#line 7161 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 170: /* decl_typedef  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7168 "src/parser_proc.c" /* glr.c:851  */
+#line 7167 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 171: /* typedef  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7174 "src/parser_proc.c" /* glr.c:851  */
+#line 7173 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 172: /* typedef_anon  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7180 "src/parser_proc.c" /* glr.c:851  */
+#line 7179 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 173: /* typedef_decl  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7186 "src/parser_proc.c" /* glr.c:851  */
+#line 7185 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 174: /* typedef_anon_decl  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7192 "src/parser_proc.c" /* glr.c:851  */
+#line 7191 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 175: /* qualified_decl_type  */
-#line 322 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 321 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 7198 "src/parser_proc.c" /* glr.c:851  */
+#line 7197 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 177: /* decl_type  */
-#line 322 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 321 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 7204 "src/parser_proc.c" /* glr.c:851  */
+#line 7203 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 178: /* decl_type_complex  */
-#line 322 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 321 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
-#line 7210 "src/parser_proc.c" /* glr.c:851  */
+#line 7209 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 179: /* decl_type_simple  */
-#line 316 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7216 "src/parser_proc.c" /* glr.c:851  */
+#line 7215 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 180: /* decl_real_type  */
-#line 316 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7222 "src/parser_proc.c" /* glr.c:851  */
+#line 7221 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 181: /* int_signed  */
-#line 296 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7228 "src/parser_proc.c" /* glr.c:851  */
+#line 7227 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 182: /* int_width  */
-#line 293 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 292 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7234 "src/parser_proc.c" /* glr.c:851  */
+#line 7233 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 183: /* decl_int_type  */
-#line 316 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 315 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7240 "src/parser_proc.c" /* glr.c:851  */
+#line 7239 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 184: /* int_signed_types  */
-#line 293 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 292 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7246 "src/parser_proc.c" /* glr.c:851  */
+#line 7245 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 185: /* signed_short_types  */
-#line 296 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7252 "src/parser_proc.c" /* glr.c:851  */
+#line 7251 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 186: /* signed_long_types  */
-#line 296 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 295 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7258 "src/parser_proc.c" /* glr.c:851  */
+#line 7257 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 187: /* int_width_types  */
-#line 293 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 292 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7264 "src/parser_proc.c" /* glr.c:851  */
+#line 7263 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 188: /* decl_stmt  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7270 "src/parser_proc.c" /* glr.c:851  */
+#line 7269 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 189: /* decl_asm  */
-#line 319 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 318 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7276 "src/parser_proc.c" /* glr.c:851  */
+#line 7275 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 190: /* quoted_strings  */
-#line 319 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 318 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7282 "src/parser_proc.c" /* glr.c:851  */
+#line 7281 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 191: /* decl_extvar_stmt  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7288 "src/parser_proc.c" /* glr.c:851  */
+#line 7287 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 192: /* decl_extvar_list  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7294 "src/parser_proc.c" /* glr.c:851  */
+#line 7293 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 193: /* decl_vars  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7300 "src/parser_proc.c" /* glr.c:851  */
+#line 7299 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 194: /* ignored_decl  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7306 "src/parser_proc.c" /* glr.c:851  */
+#line 7305 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 199: /* decl  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7312 "src/parser_proc.c" /* glr.c:851  */
+#line 7311 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 200: /* decl_body  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7318 "src/parser_proc.c" /* glr.c:851  */
+#line 7317 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 201: /* decl_func_body  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7324 "src/parser_proc.c" /* glr.c:851  */
+#line 7323 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 202: /* decl_functor_body  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7330 "src/parser_proc.c" /* glr.c:851  */
+#line 7329 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 203: /* decl_anon_functor_body  */
-#line 324 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 323 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
-#line 7336 "src/parser_proc.c" /* glr.c:851  */
+#line 7335 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 204: /* decl_functor  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7342 "src/parser_proc.c" /* glr.c:851  */
+#line 7341 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 205: /* decl_anon_functor  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7348 "src/parser_proc.c" /* glr.c:851  */
+#line 7347 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 206: /* decl_func  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7354 "src/parser_proc.c" /* glr.c:851  */
+#line 7353 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 207: /* decl_args  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7360 "src/parser_proc.c" /* glr.c:851  */
+#line 7359 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 208: /* decl_arg_list  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7366 "src/parser_proc.c" /* glr.c:851  */
+#line 7365 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 209: /* decl_anon_arg  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7372 "src/parser_proc.c" /* glr.c:851  */
+#line 7371 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 210: /* decl_arg  */
-#line 326 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 325 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
-#line 7378 "src/parser_proc.c" /* glr.c:851  */
+#line 7377 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 211: /* decl_var  */
-#line 328 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 327 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_var_free(&(*(struct psi_decl_var **)(&(*yyvaluep))));}
-#line 7384 "src/parser_proc.c" /* glr.c:851  */
+#line 7383 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 212: /* decl_union  */
-#line 332 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 331 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_union_free(&(*(struct psi_decl_union **)(&(*yyvaluep))));}
-#line 7390 "src/parser_proc.c" /* glr.c:851  */
+#line 7389 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 213: /* decl_struct  */
-#line 330 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 329 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_struct_free(&(*(struct psi_decl_struct **)(&(*yyvaluep))));}
-#line 7396 "src/parser_proc.c" /* glr.c:851  */
+#line 7395 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 214: /* decl_struct_args  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7402 "src/parser_proc.c" /* glr.c:851  */
+#line 7401 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 215: /* struct_args_block  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7408 "src/parser_proc.c" /* glr.c:851  */
+#line 7407 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 216: /* struct_args  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7414 "src/parser_proc.c" /* glr.c:851  */
+#line 7413 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 217: /* struct_arg_var_list  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7420 "src/parser_proc.c" /* glr.c:851  */
+#line 7419 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 218: /* decl_vars_with_layout  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7426 "src/parser_proc.c" /* glr.c:851  */
+#line 7425 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 219: /* decl_enum  */
-#line 334 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 333 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_enum_free(&(*(struct psi_decl_enum **)(&(*yyvaluep))));}
-#line 7432 "src/parser_proc.c" /* glr.c:851  */
+#line 7431 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 220: /* decl_enum_items  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7438 "src/parser_proc.c" /* glr.c:851  */
+#line 7437 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 221: /* decl_enum_item  */
-#line 336 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 335 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_decl_enum_item_free(&(*(struct psi_decl_enum_item **)(&(*yyvaluep))));}
-#line 7444 "src/parser_proc.c" /* glr.c:851  */
+#line 7443 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 222: /* num_exp  */
-#line 394 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 393 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
-#line 7450 "src/parser_proc.c" /* glr.c:851  */
+#line 7449 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 223: /* number  */
-#line 396 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 395 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7456 "src/parser_proc.c" /* glr.c:851  */
+#line 7455 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 224: /* sizeof  */
-#line 346 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 345 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7462 "src/parser_proc.c" /* glr.c:851  */
+#line 7461 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 225: /* sizeof_body  */
-#line 346 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 345 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7468 "src/parser_proc.c" /* glr.c:851  */
+#line 7467 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 226: /* sizeof_body_notypes  */
-#line 346 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 345 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
-#line 7474 "src/parser_proc.c" /* glr.c:851  */
+#line 7473 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 227: /* enum_name  */
-#line 284 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 283 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7480 "src/parser_proc.c" /* glr.c:851  */
+#line 7479 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 228: /* union_name  */
-#line 284 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 283 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7486 "src/parser_proc.c" /* glr.c:851  */
+#line 7485 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 229: /* struct_name  */
-#line 284 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 283 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7492 "src/parser_proc.c" /* glr.c:851  */
+#line 7491 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 230: /* optional_name  */
-#line 284 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 283 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7498 "src/parser_proc.c" /* glr.c:851  */
+#line 7497 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 232: /* decl_layout  */
-#line 343 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 342 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_layout_free(&(*(struct psi_layout **)(&(*yyvaluep))));}
-#line 7504 "src/parser_proc.c" /* glr.c:851  */
+#line 7503 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 233: /* align_and_size  */
-#line 341 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 340 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7510 "src/parser_proc.c" /* glr.c:851  */
+#line 7509 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 234: /* array_size  */
-#line 399 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 398 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7516 "src/parser_proc.c" /* glr.c:851  */
+#line 7515 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 236: /* indirection  */
-#line 399 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 398 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7522 "src/parser_proc.c" /* glr.c:851  */
+#line 7521 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 237: /* pointers  */
-#line 399 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 398 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7528 "src/parser_proc.c" /* glr.c:851  */
+#line 7527 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 238: /* asterisks  */
-#line 399 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 398 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7534 "src/parser_proc.c" /* glr.c:851  */
+#line 7533 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 241: /* impl  */
-#line 349 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 348 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_free(&(*(struct psi_impl **)(&(*yyvaluep))));}
-#line 7540 "src/parser_proc.c" /* glr.c:851  */
+#line 7539 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 242: /* impl_func  */
-#line 351 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 350 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_func_free(&(*(struct psi_impl_func **)(&(*yyvaluep))));}
-#line 7546 "src/parser_proc.c" /* glr.c:851  */
+#line 7545 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 243: /* impl_args  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7552 "src/parser_proc.c" /* glr.c:851  */
+#line 7551 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 244: /* impl_arg  */
-#line 353 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 352 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_arg_free(&(*(struct psi_impl_arg **)(&(*yyvaluep))));}
-#line 7558 "src/parser_proc.c" /* glr.c:851  */
+#line 7557 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 245: /* impl_var  */
-#line 357 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 356 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_var_free(&(*(struct psi_impl_var **)(&(*yyvaluep))));}
-#line 7564 "src/parser_proc.c" /* glr.c:851  */
+#line 7563 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 246: /* impl_type  */
-#line 355 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 354 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
-#line 7570 "src/parser_proc.c" /* glr.c:851  */
+#line 7569 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 247: /* impl_type_restricted  */
-#line 355 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 354 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
-#line 7576 "src/parser_proc.c" /* glr.c:851  */
+#line 7575 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 248: /* impl_type_token  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7582 "src/parser_proc.c" /* glr.c:851  */
+#line 7581 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 249: /* impl_type_restricted_token  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7588 "src/parser_proc.c" /* glr.c:851  */
+#line 7587 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 250: /* impl_type_extended_token  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7594 "src/parser_proc.c" /* glr.c:851  */
+#line 7593 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 251: /* impl_stmts  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7600 "src/parser_proc.c" /* glr.c:851  */
+#line 7599 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 252: /* impl_stmt  */
-#line 387 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 386 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_impl_stmt_free(&(*(struct psi_token ***)(&(*yyvaluep))));}
-#line 7606 "src/parser_proc.c" /* glr.c:851  */
+#line 7605 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 253: /* let_stmt  */
-#line 360 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 359 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_stmt_free(&(*(struct psi_let_stmt **)(&(*yyvaluep))));}
-#line 7612 "src/parser_proc.c" /* glr.c:851  */
+#line 7611 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 254: /* let_exp  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 361 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 7618 "src/parser_proc.c" /* glr.c:851  */
+#line 7617 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 255: /* let_exp_byref  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 361 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 7624 "src/parser_proc.c" /* glr.c:851  */
+#line 7623 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 256: /* let_exp_assign  */
-#line 362 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 361 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
-#line 7630 "src/parser_proc.c" /* glr.c:851  */
+#line 7629 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 257: /* let_calloc  */
-#line 364 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 363 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_calloc_free(&(*(struct psi_let_calloc **)(&(*yyvaluep))));}
-#line 7636 "src/parser_proc.c" /* glr.c:851  */
+#line 7635 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 258: /* let_callback  */
-#line 366 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 365 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_callback_free(&(*(struct psi_let_callback **)(&(*yyvaluep))));}
-#line 7642 "src/parser_proc.c" /* glr.c:851  */
+#line 7641 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 259: /* let_func  */
-#line 368 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 367 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_let_func_free(&(*(struct psi_let_func **)(&(*yyvaluep))));}
-#line 7648 "src/parser_proc.c" /* glr.c:851  */
+#line 7647 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 260: /* let_func_token  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7654 "src/parser_proc.c" /* glr.c:851  */
+#line 7653 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 261: /* let_func_exps  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7660 "src/parser_proc.c" /* glr.c:851  */
+#line 7659 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 262: /* let_exps  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7666 "src/parser_proc.c" /* glr.c:851  */
+#line 7665 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 263: /* callback_rval  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7672 "src/parser_proc.c" /* glr.c:851  */
+#line 7671 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 264: /* callback_arg_list  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7678 "src/parser_proc.c" /* glr.c:851  */
+#line 7677 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 265: /* callback_args  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7684 "src/parser_proc.c" /* glr.c:851  */
+#line 7683 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 266: /* return_stmt  */
-#line 378 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 377 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_return_stmt_free(&(*(struct psi_return_stmt **)(&(*yyvaluep))));}
-#line 7690 "src/parser_proc.c" /* glr.c:851  */
+#line 7689 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 267: /* return_exp  */
-#line 380 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 379 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_return_exp_free(&(*(struct psi_return_exp **)(&(*yyvaluep))));}
-#line 7696 "src/parser_proc.c" /* glr.c:851  */
+#line 7695 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 268: /* call_decl_vars  */
-#line 338 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 337 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7702 "src/parser_proc.c" /* glr.c:851  */
+#line 7701 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 269: /* set_stmt  */
-#line 370 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 369 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_set_stmt_free(&(*(struct psi_set_stmt **)(&(*yyvaluep))));}
-#line 7708 "src/parser_proc.c" /* glr.c:851  */
+#line 7707 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 270: /* set_exp  */
-#line 372 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 371 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_set_exp_free(&(*(struct psi_set_exp **)(&(*yyvaluep))));}
-#line 7714 "src/parser_proc.c" /* glr.c:851  */
+#line 7713 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 271: /* set_func  */
-#line 374 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 373 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_set_func_free(&(*(struct psi_set_func **)(&(*yyvaluep))));}
-#line 7720 "src/parser_proc.c" /* glr.c:851  */
+#line 7719 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 272: /* set_func_token  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7726 "src/parser_proc.c" /* glr.c:851  */
+#line 7725 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 273: /* set_func_exps  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7732 "src/parser_proc.c" /* glr.c:851  */
+#line 7731 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 274: /* set_exps  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7738 "src/parser_proc.c" /* glr.c:851  */
+#line 7737 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 275: /* assert_stmt  */
-#line 376 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 375 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_assert_stmt_free(&(*(struct psi_assert_stmt **)(&(*yyvaluep))));}
-#line 7744 "src/parser_proc.c" /* glr.c:851  */
+#line 7743 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 276: /* assert_stmt_token  */
-#line 389 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 388 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
-#line 7750 "src/parser_proc.c" /* glr.c:851  */
+#line 7749 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 277: /* free_stmt  */
-#line 382 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 381 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_free_stmt_free(&(*(struct psi_free_stmt **)(&(*yyvaluep))));}
-#line 7756 "src/parser_proc.c" /* glr.c:851  */
+#line 7755 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 278: /* free_exps  */
-#line 391 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 390 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
-#line 7762 "src/parser_proc.c" /* glr.c:851  */
+#line 7761 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 279: /* free_exp  */
-#line 384 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 383 "src/parser_proc_grammar.y" /* glr.c:851  */
       {psi_free_exp_free(&(*(struct psi_free_exp **)(&(*yyvaluep))));}
-#line 7768 "src/parser_proc.c" /* glr.c:851  */
+#line 7767 "src/parser_proc.c" /* glr.c:851  */
         break;
 
     case 280: /* reference  */
-#line 401 "src/parser_proc_grammar.y" /* glr.c:851  */
+#line 400 "src/parser_proc_grammar.y" /* glr.c:851  */
       {}
-#line 7774 "src/parser_proc.c" /* glr.c:851  */
+#line 7773 "src/parser_proc.c" /* glr.c:851  */
         break;
 
 
@@ -9119,11 +9118,11 @@ yyparse (struct psi_parser *P, struct psi_plist *tokens, size_t *index)
   yylval = yyval_default;
 
   /* User initialization code.  */
-#line 119 "src/parser_proc_grammar.y" /* glr.c:2265  */
+#line 118 "src/parser_proc_grammar.y" /* glr.c:2265  */
 {
 }
 
-#line 9127 "src/parser_proc.c" /* glr.c:2265  */
+#line 9126 "src/parser_proc.c" /* glr.c:2265  */
 
   if (! yyinitGLRStack (yystackp, YYINITDEPTH))
     goto yyexhaustedlab;
@@ -9426,7 +9425,7 @@ yypdumpstack (yyGLRStack* yystackp)
 #define yydebug psi_parser_proc_debug
 #define yynerrs psi_parser_proc_nerrs
 
-#line 2284 "src/parser_proc_grammar.y" /* glr.c:2578  */
+#line 2283 "src/parser_proc_grammar.y" /* glr.c:2578  */
 
 
 /* epilogue */
index 3aedbd4..6bb9075 100644 (file)
@@ -40,7 +40,7 @@
 extern int psi_parser_proc_debug;
 #endif
 /* "%code requires" blocks.  */
-#line 90 "src/parser_proc_grammar.y" /* glr.c:197  */
+#line 89 "src/parser_proc_grammar.y" /* glr.c:197  */
 
 #include "plist.h"
 #include "types/layout.h"
index cd828e6..fc0b752 100644 (file)
@@ -1,5 +1,4 @@
 %code top {
-#include "php_psi_stdinc.h"
 }
 
 %code {
index 29f6a58..99d07eb 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.1.1 on Mon Dec  3 16:17:20 2018 */
+/* Generated by re2c 1.1.1 on Mon Dec  3 17:01:05 2018 */
 #line 1 "src/parser_scan.re"
 /*******************************************************************************
  Copyright (c) 2016, Michael Wallner <mike@php.net>.
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include <php_psi_stdinc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "parser.h"
 #include "plist.h"
@@ -81,7 +85,7 @@ struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input
                (void) ctxmrk;
 
                
-#line 85 "src/parser_scan.c"
+#line 89 "src/parser_scan.c"
                {
                        unsigned char yych;
                        unsigned int yyaccept = 0;
@@ -206,9 +210,9 @@ struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input
 yy2:
                        ++cur;
 yy3:
-#line 250 "src/parser_scan.re"
+#line 254 "src/parser_scan.re"
                        { CHECKEOF(); NEWTOKEN(-2); goto error; }
-#line 212 "src/parser_scan.c"
+#line 216 "src/parser_scan.c"
 yy4:
                        ++cur;
                        if (lim <= cur) CHECKEOF();;
@@ -220,14 +224,14 @@ yy4:
                        default:        goto yy6;
                        }
 yy6:
-#line 249 "src/parser_scan.re"
+#line 253 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_WHITESPACE); goto start; }
-#line 226 "src/parser_scan.c"
+#line 230 "src/parser_scan.c"
 yy7:
                        ++cur;
-#line 248 "src/parser_scan.re"
+#line 252 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_EOL); NEWLINE(); goto start; }
-#line 231 "src/parser_scan.c"
+#line 235 "src/parser_scan.c"
 yy9:
                        yych = *++cur;
                        switch (yych) {
@@ -235,14 +239,14 @@ yy9:
                        default:        goto yy10;
                        }
 yy10:
-#line 151 "src/parser_scan.re"
+#line 155 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NOT); goto start; }
-#line 241 "src/parser_scan.c"
+#line 245 "src/parser_scan.c"
 yy11:
                        ++cur;
-#line 124 "src/parser_scan.re"
+#line 128 "src/parser_scan.re"
                        { escaped = false; tok += 1; goto string; }
-#line 246 "src/parser_scan.c"
+#line 250 "src/parser_scan.c"
 yy13:
                        yych = *++cur;
                        switch (yych) {
@@ -250,9 +254,9 @@ yy13:
                        default:        goto yy14;
                        }
 yy14:
-#line 134 "src/parser_scan.re"
+#line 138 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_HASH); goto start; }
-#line 256 "src/parser_scan.c"
+#line 260 "src/parser_scan.c"
 yy15:
                        yych = *++cur;
                        switch (yych) {
@@ -325,9 +329,9 @@ yy15:
                        }
 yy16:
                        ++cur;
-#line 152 "src/parser_scan.re"
+#line 156 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_MODULO); goto start; }
-#line 331 "src/parser_scan.c"
+#line 335 "src/parser_scan.c"
 yy18:
                        yych = *++cur;
                        switch (yych) {
@@ -335,44 +339,44 @@ yy18:
                        default:        goto yy19;
                        }
 yy19:
-#line 153 "src/parser_scan.re"
+#line 157 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_AMPERSAND); goto start; }
-#line 341 "src/parser_scan.c"
+#line 345 "src/parser_scan.c"
 yy20:
                        ++cur;
-#line 123 "src/parser_scan.re"
+#line 127 "src/parser_scan.re"
                        { escaped = false; tok += 1; goto character; }
-#line 346 "src/parser_scan.c"
+#line 350 "src/parser_scan.c"
 yy22:
                        ++cur;
-#line 135 "src/parser_scan.re"
+#line 139 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LPAREN); goto start; }
-#line 351 "src/parser_scan.c"
+#line 355 "src/parser_scan.c"
 yy24:
                        ++cur;
-#line 136 "src/parser_scan.re"
+#line 140 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RPAREN); goto start; }
-#line 356 "src/parser_scan.c"
+#line 360 "src/parser_scan.c"
 yy26:
                        ++cur;
-#line 149 "src/parser_scan.re"
+#line 153 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ASTERISK); goto start; }
-#line 361 "src/parser_scan.c"
+#line 365 "src/parser_scan.c"
 yy28:
                        ++cur;
-#line 154 "src/parser_scan.re"
+#line 158 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PLUS); goto start; }
-#line 366 "src/parser_scan.c"
+#line 370 "src/parser_scan.c"
 yy30:
                        ++cur;
-#line 138 "src/parser_scan.re"
+#line 142 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COMMA); goto start; }
-#line 371 "src/parser_scan.c"
+#line 375 "src/parser_scan.c"
 yy32:
                        ++cur;
-#line 155 "src/parser_scan.re"
+#line 159 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_MINUS); goto start; }
-#line 376 "src/parser_scan.c"
+#line 380 "src/parser_scan.c"
 yy34:
                        yyaccept = 0;
                        yych = *(mrk = ++cur);
@@ -391,9 +395,9 @@ yy34:
                        default:        goto yy35;
                        }
 yy35:
-#line 166 "src/parser_scan.re"
+#line 170 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PERIOD); goto start; }
-#line 397 "src/parser_scan.c"
+#line 401 "src/parser_scan.c"
 yy36:
                        yych = *++cur;
                        switch (yych) {
@@ -402,9 +406,9 @@ yy36:
                        default:        goto yy37;
                        }
 yy37:
-#line 156 "src/parser_scan.re"
+#line 160 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SLASH); goto start; }
-#line 408 "src/parser_scan.c"
+#line 412 "src/parser_scan.c"
 yy38:
                        yyaccept = 1;
                        yych = *(mrk = ++cur);
@@ -417,9 +421,9 @@ yy38:
                        default:        goto yy125;
                        }
 yy39:
-#line 110 "src/parser_scan.re"
+#line 114 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT; goto start; }
-#line 423 "src/parser_scan.c"
+#line 427 "src/parser_scan.c"
 yy40:
                        yyaccept = 1;
                        mrk = ++cur;
@@ -447,14 +451,14 @@ yy40:
                        }
 yy42:
                        ++cur;
-#line 139 "src/parser_scan.re"
+#line 143 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COLON); goto start; }
-#line 453 "src/parser_scan.c"
+#line 457 "src/parser_scan.c"
 yy44:
                        ++cur;
-#line 137 "src/parser_scan.re"
+#line 141 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_EOS); goto start; }
-#line 458 "src/parser_scan.c"
+#line 462 "src/parser_scan.c"
 yy46:
                        yyaccept = 2;
                        yych = *(mrk = ++cur);
@@ -530,9 +534,9 @@ yy46:
                        default:        goto yy47;
                        }
 yy47:
-#line 164 "src/parser_scan.re"
+#line 168 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LCHEVR); goto start; }
-#line 536 "src/parser_scan.c"
+#line 540 "src/parser_scan.c"
 yy48:
                        yych = *++cur;
                        switch (yych) {
@@ -540,9 +544,9 @@ yy48:
                        default:        goto yy49;
                        }
 yy49:
-#line 148 "src/parser_scan.re"
+#line 152 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_EQUALS); goto start; }
-#line 546 "src/parser_scan.c"
+#line 550 "src/parser_scan.c"
 yy50:
                        yych = *++cur;
                        switch (yych) {
@@ -551,14 +555,14 @@ yy50:
                        default:        goto yy51;
                        }
 yy51:
-#line 165 "src/parser_scan.re"
+#line 169 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RCHEVR); goto start; }
-#line 557 "src/parser_scan.c"
+#line 561 "src/parser_scan.c"
 yy52:
                        ++cur;
-#line 168 "src/parser_scan.re"
+#line 172 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IIF); goto start; }
-#line 562 "src/parser_scan.c"
+#line 566 "src/parser_scan.c"
 yy54:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -570,9 +574,9 @@ yy54:
                        default:        goto yy62;
                        }
 yy55:
-#line 243 "src/parser_scan.re"
+#line 247 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NAME); goto start; }
-#line 576 "src/parser_scan.c"
+#line 580 "src/parser_scan.c"
 yy56:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -815,9 +819,9 @@ yy74:
                        }
 yy75:
                        ++cur;
-#line 142 "src/parser_scan.re"
+#line 146 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LBRACKET); goto start; }
-#line 821 "src/parser_scan.c"
+#line 825 "src/parser_scan.c"
 yy77:
                        yych = *++cur;
                        switch (yych) {
@@ -899,19 +903,19 @@ yy77:
                        default:        goto yy183;
                        }
 yy78:
-#line 157 "src/parser_scan.re"
+#line 161 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_BSLASH); goto start; }
-#line 905 "src/parser_scan.c"
+#line 909 "src/parser_scan.c"
 yy79:
                        ++cur;
-#line 143 "src/parser_scan.re"
+#line 147 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RBRACKET); goto start; }
-#line 910 "src/parser_scan.c"
+#line 914 "src/parser_scan.c"
 yy81:
                        ++cur;
-#line 159 "src/parser_scan.re"
+#line 163 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CARET); goto start; }
-#line 915 "src/parser_scan.c"
+#line 919 "src/parser_scan.c"
 yy83:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1051,9 +1055,9 @@ yy95:
                        }
 yy96:
                        ++cur;
-#line 140 "src/parser_scan.re"
+#line 144 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LBRACE); goto start; }
-#line 1057 "src/parser_scan.c"
+#line 1061 "src/parser_scan.c"
 yy98:
                        yych = *++cur;
                        switch (yych) {
@@ -1061,29 +1065,29 @@ yy98:
                        default:        goto yy99;
                        }
 yy99:
-#line 158 "src/parser_scan.re"
+#line 162 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PIPE); goto start; }
-#line 1067 "src/parser_scan.c"
+#line 1071 "src/parser_scan.c"
 yy100:
                        ++cur;
-#line 141 "src/parser_scan.re"
+#line 145 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RBRACE); goto start; }
-#line 1072 "src/parser_scan.c"
+#line 1076 "src/parser_scan.c"
 yy102:
                        ++cur;
-#line 150 "src/parser_scan.re"
+#line 154 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TILDE); goto start; }
-#line 1077 "src/parser_scan.c"
+#line 1081 "src/parser_scan.c"
 yy104:
                        ++cur;
-#line 144 "src/parser_scan.re"
+#line 148 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_NE); goto start; }
-#line 1082 "src/parser_scan.c"
+#line 1086 "src/parser_scan.c"
 yy106:
                        ++cur;
-#line 133 "src/parser_scan.re"
+#line 137 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_PASTE); goto start; }
-#line 1087 "src/parser_scan.c"
+#line 1091 "src/parser_scan.c"
 yy108:
                        ++cur;
                        if (lim <= cur) CHECKEOF();;
@@ -1157,14 +1161,14 @@ yy108:
                        default:        goto yy108;
                        }
 yy110:
-#line 245 "src/parser_scan.re"
+#line 249 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DOLLAR_NAME); goto start; }
-#line 1163 "src/parser_scan.c"
+#line 1167 "src/parser_scan.c"
 yy111:
                        ++cur;
-#line 146 "src/parser_scan.re"
+#line 150 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_AND); goto start; }
-#line 1168 "src/parser_scan.c"
+#line 1172 "src/parser_scan.c"
 yy113:
                        yych = *++cur;
                        switch (yych) {
@@ -1281,19 +1285,19 @@ yy115:
                        default:        goto yy117;
                        }
 yy117:
-#line 116 "src/parser_scan.re"
+#line 120 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT; goto start; }
-#line 1287 "src/parser_scan.c"
+#line 1291 "src/parser_scan.c"
 yy118:
                        ++cur;
-#line 130 "src/parser_scan.re"
+#line 134 "src/parser_scan.re"
                        { goto comment; }
-#line 1292 "src/parser_scan.c"
+#line 1296 "src/parser_scan.c"
 yy120:
                        ++cur;
-#line 131 "src/parser_scan.re"
+#line 135 "src/parser_scan.re"
                        { goto comment_sl; }
-#line 1297 "src/parser_scan.c"
+#line 1301 "src/parser_scan.c"
 yy122:
                        yyaccept = 4;
                        mrk = ++cur;
@@ -1369,9 +1373,9 @@ yy127:
                        }
 yy128:
                        cur -= 1;
-#line 112 "src/parser_scan.re"
+#line 116 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_L; cur += 1; goto start; }
-#line 1375 "src/parser_scan.c"
+#line 1379 "src/parser_scan.c"
 yy129:
                        yych = *++cur;
                        switch (yych) {
@@ -1381,9 +1385,9 @@ yy129:
                        }
 yy130:
                        cur -= 1;
-#line 111 "src/parser_scan.re"
+#line 115 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_U; cur += 1; goto start; }
-#line 1387 "src/parser_scan.c"
+#line 1391 "src/parser_scan.c"
 yy131:
                        yych = *++cur;
                        switch (yych) {
@@ -1487,29 +1491,29 @@ yy132:
                        }
 yy134:
                        ++cur;
-#line 160 "src/parser_scan.re"
+#line 164 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LSHIFT); goto start; }
-#line 1493 "src/parser_scan.c"
+#line 1497 "src/parser_scan.c"
 yy136:
                        ++cur;
-#line 162 "src/parser_scan.re"
+#line 166 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_LE); goto start; }
-#line 1498 "src/parser_scan.c"
+#line 1502 "src/parser_scan.c"
 yy138:
                        ++cur;
-#line 145 "src/parser_scan.re"
+#line 149 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_EQ); goto start; }
-#line 1503 "src/parser_scan.c"
+#line 1507 "src/parser_scan.c"
 yy140:
                        ++cur;
-#line 163 "src/parser_scan.re"
+#line 167 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_GE); goto start; }
-#line 1508 "src/parser_scan.c"
+#line 1512 "src/parser_scan.c"
 yy142:
                        ++cur;
-#line 161 "src/parser_scan.re"
+#line 165 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RSHIFT); goto start; }
-#line 1513 "src/parser_scan.c"
+#line 1517 "src/parser_scan.c"
 yy144:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1590,9 +1594,9 @@ yy145:
                        default:        goto yy61;
                        }
 yy146:
-#line 223 "src/parser_scan.re"
+#line 227 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_AS); goto start; }
-#line 1596 "src/parser_scan.c"
+#line 1600 "src/parser_scan.c"
 yy147:
                        ++cur;
                        if (lim <= cur) CHECKEOF();;
@@ -1841,9 +1845,9 @@ yy159:
                        default:        goto yy61;
                        }
 yy160:
-#line 193 "src/parser_scan.re"
+#line 197 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IF); goto start; }
-#line 1847 "src/parser_scan.c"
+#line 1851 "src/parser_scan.c"
 yy161:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1857,9 +1861,9 @@ yy161:
 yy162:
                        ++cur;
                        cur -= 1;
-#line 128 "src/parser_scan.re"
+#line 132 "src/parser_scan.re"
                        { char_width = sizeof(wchar_t)/8; }
-#line 1863 "src/parser_scan.c"
+#line 1867 "src/parser_scan.c"
 yy164:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1976,9 +1980,9 @@ yy177:
 yy178:
                        ++cur;
                        cur -= 1;
-#line 127 "src/parser_scan.re"
+#line 131 "src/parser_scan.re"
                        { char_width = 4; }
-#line 1982 "src/parser_scan.c"
+#line 1986 "src/parser_scan.c"
 yy180:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2077,9 +2081,9 @@ yy183:
                        default:        goto yy183;
                        }
 yy185:
-#line 244 "src/parser_scan.re"
+#line 248 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NSNAME); goto start; }
-#line 2083 "src/parser_scan.c"
+#line 2087 "src/parser_scan.c"
 yy186:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2209,9 +2213,9 @@ yy200:
 yy201:
                        ++cur;
                        cur -= 1;
-#line 126 "src/parser_scan.re"
+#line 130 "src/parser_scan.re"
                        { char_width = 2; }
-#line 2215 "src/parser_scan.c"
+#line 2219 "src/parser_scan.c"
 yy203:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2239,14 +2243,14 @@ yy205:
                        }
 yy206:
                        ++cur;
-#line 147 "src/parser_scan.re"
+#line 151 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_OR); goto start; }
-#line 2245 "src/parser_scan.c"
+#line 2249 "src/parser_scan.c"
 yy208:
                        ++cur;
-#line 167 "src/parser_scan.re"
+#line 171 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ELLIPSIS); goto start; }
-#line 2250 "src/parser_scan.c"
+#line 2254 "src/parser_scan.c"
 yy210:
                        yych = *++cur;
                        switch (yych) {
@@ -2261,15 +2265,15 @@ yy210:
 yy211:
                        ++cur;
                        cur -= 1;
-#line 117 "src/parser_scan.re"
+#line 121 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_F; cur += 1; goto start; }
-#line 2267 "src/parser_scan.c"
+#line 2271 "src/parser_scan.c"
 yy213:
                        ++cur;
                        cur -= 1;
-#line 118 "src/parser_scan.re"
+#line 122 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_L; cur += 1; goto start; }
-#line 2273 "src/parser_scan.c"
+#line 2277 "src/parser_scan.c"
 yy215:
                        yych = *++cur;
                        switch (yych) {
@@ -2296,9 +2300,9 @@ yy217:
                        ++cur;
 yy218:
                        cur -= 2;
-#line 113 "src/parser_scan.re"
+#line 117 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_UL; cur += 2; goto start; }
-#line 2302 "src/parser_scan.c"
+#line 2306 "src/parser_scan.c"
 yy219:
                        yych = *++cur;
                        switch (yych) {
@@ -2345,9 +2349,9 @@ yy220:
                        }
 yy222:
                        ++cur;
-#line 246 "src/parser_scan.re"
+#line 250 "src/parser_scan.re"
                        { tok += 1; cur -= 1; NEWTOKEN(PSI_T_CPP_HEADER); cur += 1; goto start; }
-#line 2351 "src/parser_scan.c"
+#line 2355 "src/parser_scan.c"
 yy224:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2558,9 +2562,9 @@ yy241:
                        default:        goto yy61;
                        }
 yy242:
-#line 218 "src/parser_scan.re"
+#line 222 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LET); goto start; }
-#line 2564 "src/parser_scan.c"
+#line 2568 "src/parser_scan.c"
 yy243:
                        yyaccept = 10;
                        yych = *(mrk = ++cur);
@@ -2633,9 +2637,9 @@ yy243:
                        default:        goto yy61;
                        }
 yy244:
-#line 217 "src/parser_scan.re"
+#line 221 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LIB); goto start; }
-#line 2639 "src/parser_scan.c"
+#line 2643 "src/parser_scan.c"
 yy245:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2765,9 +2769,9 @@ yy252:
                        default:        goto yy61;
                        }
 yy253:
-#line 219 "src/parser_scan.re"
+#line 223 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SET); goto start; }
-#line 2771 "src/parser_scan.c"
+#line 2775 "src/parser_scan.c"
 yy254:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3000,9 +3004,9 @@ yy273:
                        default:        goto yy61;
                        }
 yy274:
-#line 187 "src/parser_scan.re"
+#line 191 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INT); goto start; }
-#line 3006 "src/parser_scan.c"
+#line 3010 "src/parser_scan.c"
 yy275:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3068,9 +3072,9 @@ yy282:
 yy283:
                        ++cur;
                        cur -= 1;
-#line 125 "src/parser_scan.re"
+#line 129 "src/parser_scan.re"
                        { char_width = 1; }
-#line 3074 "src/parser_scan.c"
+#line 3078 "src/parser_scan.c"
 yy285:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3102,27 +3106,27 @@ yy288:
 yy289:
                        ++cur;
                        cur -= 2;
-#line 120 "src/parser_scan.re"
+#line 124 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DD; cur += 2; goto start; }
-#line 3108 "src/parser_scan.c"
+#line 3112 "src/parser_scan.c"
 yy291:
                        ++cur;
                        cur -= 2;
-#line 119 "src/parser_scan.re"
+#line 123 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DF; cur += 2; goto start; }
-#line 3114 "src/parser_scan.c"
+#line 3118 "src/parser_scan.c"
 yy293:
                        ++cur;
                        cur -= 2;
-#line 121 "src/parser_scan.re"
+#line 125 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DL; cur += 2; goto start; }
-#line 3120 "src/parser_scan.c"
+#line 3124 "src/parser_scan.c"
 yy295:
                        ++cur;
                        cur -= 3;
-#line 114 "src/parser_scan.re"
+#line 118 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_ULL; cur += 3; goto start; }
-#line 3126 "src/parser_scan.c"
+#line 3130 "src/parser_scan.c"
 yy297:
                        ++cur;
                        if ((lim - cur) < 3) CHECKEOF();;
@@ -3278,9 +3282,9 @@ yy305:
                        default:        goto yy61;
                        }
 yy306:
-#line 197 "src/parser_scan.re"
+#line 201 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ELIF); goto start; }
-#line 3284 "src/parser_scan.c"
+#line 3288 "src/parser_scan.c"
 yy307:
                        yyaccept = 14;
                        yych = *(mrk = ++cur);
@@ -3353,9 +3357,9 @@ yy307:
                        default:        goto yy61;
                        }
 yy308:
-#line 196 "src/parser_scan.re"
+#line 200 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ELSE); goto start; }
-#line 3359 "src/parser_scan.c"
+#line 3363 "src/parser_scan.c"
 yy309:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3460,9 +3464,9 @@ yy313:
                        default:        goto yy61;
                        }
 yy314:
-#line 224 "src/parser_scan.re"
+#line 228 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FREE); goto start; }
-#line 3466 "src/parser_scan.c"
+#line 3470 "src/parser_scan.c"
 yy315:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3583,9 +3587,9 @@ yy321:
                        default:        goto yy61;
                        }
 yy322:
-#line 208 "src/parser_scan.re"
+#line 212 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NULL); goto start; }
-#line 3589 "src/parser_scan.c"
+#line 3593 "src/parser_scan.c"
 yy323:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3737,9 +3741,9 @@ yy333:
                        default:        goto yy61;
                        }
 yy334:
-#line 225 "src/parser_scan.re"
+#line 229 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TEMP); goto start; }
-#line 3743 "src/parser_scan.c"
+#line 3747 "src/parser_scan.c"
 yy335:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3860,9 +3864,9 @@ yy341:
                        default:        goto yy61;
                        }
 yy342:
-#line 206 "src/parser_scan.re"
+#line 210 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TRUE); goto start; }
-#line 3866 "src/parser_scan.c"
+#line 3870 "src/parser_scan.c"
 yy343:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3951,9 +3955,9 @@ yy345:
                        default:        goto yy61;
                        }
 yy346:
-#line 234 "src/parser_scan.re"
+#line 238 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ZVAL); goto start; }
-#line 3957 "src/parser_scan.c"
+#line 3961 "src/parser_scan.c"
 yy347:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4063,9 +4067,9 @@ yy352:
                        default:        goto yy61;
                        }
 yy353:
-#line 184 "src/parser_scan.re"
+#line 188 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_BOOL); goto start; }
-#line 4069 "src/parser_scan.c"
+#line 4073 "src/parser_scan.c"
 yy354:
                        yyaccept = 21;
                        yych = *(mrk = ++cur);
@@ -4138,9 +4142,9 @@ yy354:
                        default:        goto yy61;
                        }
 yy355:
-#line 185 "src/parser_scan.re"
+#line 189 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CHAR); goto start; }
-#line 4144 "src/parser_scan.c"
+#line 4148 "src/parser_scan.c"
 yy356:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4227,9 +4231,9 @@ yy358:
                        default:        goto yy61;
                        }
 yy359:
-#line 181 "src/parser_scan.re"
+#line 185 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ENUM); goto start; }
-#line 4233 "src/parser_scan.c"
+#line 4237 "src/parser_scan.c"
 yy360:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4317,9 +4321,9 @@ yy362:
                        default:        goto yy61;
                        }
 yy363:
-#line 177 "src/parser_scan.re"
+#line 181 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LINE); goto start; }
-#line 4323 "src/parser_scan.c"
+#line 4327 "src/parser_scan.c"
 yy364:
                        yyaccept = 24;
                        yych = *(mrk = ++cur);
@@ -4392,9 +4396,9 @@ yy364:
                        default:        goto yy61;
                        }
 yy365:
-#line 188 "src/parser_scan.re"
+#line 192 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LONG); goto start; }
-#line 4398 "src/parser_scan.c"
+#line 4402 "src/parser_scan.c"
 yy366:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4523,9 +4527,9 @@ yy374:
                        default:        goto yy61;
                        }
 yy375:
-#line 183 "src/parser_scan.re"
+#line 187 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_VOID); goto start; }
-#line 4529 "src/parser_scan.c"
+#line 4533 "src/parser_scan.c"
 yy376:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4605,9 +4609,9 @@ yy377:
                        default:        goto yy61;
                        }
 yy378:
-#line 212 "src/parser_scan.re"
+#line 216 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ARRAY); goto start; }
-#line 4611 "src/parser_scan.c"
+#line 4615 "src/parser_scan.c"
 yy379:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4720,9 +4724,9 @@ yy384:
                        default:        goto yy61;
                        }
 yy385:
-#line 235 "src/parser_scan.re"
+#line 239 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COUNT); goto start; }
-#line 4726 "src/parser_scan.c"
+#line 4730 "src/parser_scan.c"
 yy386:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4803,9 +4807,9 @@ yy387:
                        default:        goto yy61;
                        }
 yy388:
-#line 198 "src/parser_scan.re"
+#line 202 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ENDIF); goto start; }
-#line 4809 "src/parser_scan.c"
+#line 4813 "src/parser_scan.c"
 yy389:
                        yyaccept = 29;
                        yych = *(mrk = ++cur);
@@ -4878,9 +4882,9 @@ yy389:
                        default:        goto yy61;
                        }
 yy390:
-#line 203 "src/parser_scan.re"
+#line 207 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ERROR); goto start; }
-#line 4884 "src/parser_scan.c"
+#line 4888 "src/parser_scan.c"
 yy391:
                        yyaccept = 30;
                        yych = *(mrk = ++cur);
@@ -4953,9 +4957,9 @@ yy391:
                        default:        goto yy61;
                        }
 yy392:
-#line 207 "src/parser_scan.re"
+#line 211 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FALSE); goto start; }
-#line 4959 "src/parser_scan.c"
+#line 4963 "src/parser_scan.c"
 yy393:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5044,9 +5048,9 @@ yy395:
                        default:        goto yy61;
                        }
 yy396:
-#line 194 "src/parser_scan.re"
+#line 198 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IFDEF); goto start; }
-#line 5050 "src/parser_scan.c"
+#line 5054 "src/parser_scan.c"
 yy397:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5143,9 +5147,9 @@ yy400:
                        default:        goto yy61;
                        }
 yy401:
-#line 209 "src/parser_scan.re"
+#line 213 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_MIXED); goto start; }
-#line 5149 "src/parser_scan.c"
+#line 5153 "src/parser_scan.c"
 yy402:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5346,9 +5350,9 @@ yy418:
                        default:        goto yy61;
                        }
 yy419:
-#line 201 "src/parser_scan.re"
+#line 205 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_UNDEF); goto start; }
-#line 5352 "src/parser_scan.c"
+#line 5356 "src/parser_scan.c"
 yy420:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5430,9 +5434,9 @@ yy421:
                        default:        goto yy61;
                        }
 yy422:
-#line 174 "src/parser_scan.re"
+#line 178 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_ASM); goto start; }
-#line 5436 "src/parser_scan.c"
+#line 5440 "src/parser_scan.c"
 yy423:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5526,9 +5530,9 @@ yy426:
                        default:        goto yy61;
                        }
 yy427:
-#line 182 "src/parser_scan.re"
+#line 186 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CONST); goto start; }
-#line 5532 "src/parser_scan.c"
+#line 5536 "src/parser_scan.c"
 yy428:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5610,9 +5614,9 @@ yy429:
                        default:        goto yy61;
                        }
 yy430:
-#line 189 "src/parser_scan.re"
+#line 193 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FLOAT); goto start; }
-#line 5616 "src/parser_scan.c"
+#line 5620 "src/parser_scan.c"
 yy431:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5699,9 +5703,9 @@ yy433:
                        default:        goto yy61;
                        }
 yy434:
-#line 186 "src/parser_scan.re"
+#line 190 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SHORT); goto start; }
-#line 5705 "src/parser_scan.c"
+#line 5709 "src/parser_scan.c"
 yy435:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5802,9 +5806,9 @@ yy439:
                        default:        goto yy61;
                        }
 yy440:
-#line 180 "src/parser_scan.re"
+#line 184 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_UNION); goto start; }
-#line 5808 "src/parser_scan.c"
+#line 5812 "src/parser_scan.c"
 yy441:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5891,9 +5895,9 @@ yy443:
                        default:        goto yy61;
                        }
 yy444:
-#line 232 "src/parser_scan.re"
+#line 236 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ARRVAL); goto start; }
-#line 5897 "src/parser_scan.c"
+#line 5901 "src/parser_scan.c"
 yy445:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5990,9 +5994,9 @@ yy448:
                        default:        goto yy61;
                        }
 yy449:
-#line 236 "src/parser_scan.re"
+#line 240 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CALLOC); goto start; }
-#line 5996 "src/parser_scan.c"
+#line 6000 "src/parser_scan.c"
 yy450:
                        yyaccept = 41;
                        yych = *(mrk = ++cur);
@@ -6067,9 +6071,9 @@ yy450:
                        default:        goto yy61;
                        }
 yy451:
-#line 199 "src/parser_scan.re"
+#line 203 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DEFINE); goto start; }
-#line 6073 "src/parser_scan.c"
+#line 6077 "src/parser_scan.c"
 yy452:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6158,9 +6162,9 @@ yy454:
                        default:        goto yy61;
                        }
 yy455:
-#line 195 "src/parser_scan.re"
+#line 199 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IFNDEF); goto start; }
-#line 6164 "src/parser_scan.c"
+#line 6168 "src/parser_scan.c"
 yy456:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6241,9 +6245,9 @@ yy457:
                        default:        goto yy61;
                        }
 yy458:
-#line 229 "src/parser_scan.re"
+#line 233 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INTVAL); goto start; }
-#line 6247 "src/parser_scan.c"
+#line 6251 "src/parser_scan.c"
 yy459:
                        yyaccept = 44;
                        yych = *(mrk = ++cur);
@@ -6316,9 +6320,9 @@ yy459:
                        default:        goto yy61;
                        }
 yy460:
-#line 213 "src/parser_scan.re"
+#line 217 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_OBJECT); goto start; }
-#line 6322 "src/parser_scan.c"
+#line 6326 "src/parser_scan.c"
 yy461:
                        yyaccept = 45;
                        yych = *(mrk = ++cur);
@@ -6391,9 +6395,9 @@ yy461:
                        default:        goto yy61;
                        }
 yy462:
-#line 233 "src/parser_scan.re"
+#line 237 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_OBJVAL); goto start; }
-#line 6397 "src/parser_scan.c"
+#line 6401 "src/parser_scan.c"
 yy463:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6490,9 +6494,9 @@ yy466:
                        default:        goto yy61;
                        }
 yy467:
-#line 222 "src/parser_scan.re"
+#line 226 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RETURN); goto start; }
-#line 6496 "src/parser_scan.c"
+#line 6500 "src/parser_scan.c"
 yy468:
                        yyaccept = 47;
                        yych = *(mrk = ++cur);
@@ -6565,9 +6569,9 @@ yy468:
                        default:        goto yy61;
                        }
 yy469:
-#line 215 "src/parser_scan.re"
+#line 219 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STATIC); goto start; }
-#line 6571 "src/parser_scan.c"
+#line 6575 "src/parser_scan.c"
 yy470:
                        yyaccept = 48;
                        yych = *(mrk = ++cur);
@@ -6640,9 +6644,9 @@ yy470:
                        default:        goto yy61;
                        }
 yy471:
-#line 211 "src/parser_scan.re"
+#line 215 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRING); goto start; }
-#line 6646 "src/parser_scan.c"
+#line 6650 "src/parser_scan.c"
 yy472:
                        yyaccept = 49;
                        yych = *(mrk = ++cur);
@@ -6715,9 +6719,9 @@ yy472:
                        default:        goto yy61;
                        }
 yy473:
-#line 226 "src/parser_scan.re"
+#line 230 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRLEN); goto start; }
-#line 6721 "src/parser_scan.c"
+#line 6725 "src/parser_scan.c"
 yy474:
                        yyaccept = 50;
                        yych = *(mrk = ++cur);
@@ -6790,9 +6794,9 @@ yy474:
                        default:        goto yy61;
                        }
 yy475:
-#line 227 "src/parser_scan.re"
+#line 231 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRVAL); goto start; }
-#line 6796 "src/parser_scan.c"
+#line 6800 "src/parser_scan.c"
 yy476:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6889,9 +6893,9 @@ yy479:
                        default:        goto yy61;
                        }
 yy480:
-#line 240 "src/parser_scan.re"
+#line 244 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_INT); goto start; }
-#line 6895 "src/parser_scan.c"
+#line 6899 "src/parser_scan.c"
 yy481:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7016,9 +7020,9 @@ yy488:
                        default:        goto yy61;
                        }
 yy489:
-#line 190 "src/parser_scan.re"
+#line 194 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DOUBLE); goto start; }
-#line 7022 "src/parser_scan.c"
+#line 7026 "src/parser_scan.c"
 yy490:
                        yyaccept = 53;
                        yych = *(mrk = ++cur);
@@ -7091,9 +7095,9 @@ yy490:
                        default:        goto yy61;
                        }
 yy491:
-#line 171 "src/parser_scan.re"
+#line 175 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_INLINE); goto start; }
-#line 7097 "src/parser_scan.c"
+#line 7101 "src/parser_scan.c"
 yy492:
                        yyaccept = 54;
                        yych = *(mrk = ++cur);
@@ -7166,9 +7170,9 @@ yy492:
                        default:        goto yy529;
                        }
 yy493:
-#line 169 "src/parser_scan.re"
+#line 173 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PRAGMA); goto start; }
-#line 7172 "src/parser_scan.c"
+#line 7176 "src/parser_scan.c"
 yy494:
                        yyaccept = 55;
                        yych = *(mrk = ++cur);
@@ -7241,9 +7245,9 @@ yy494:
                        default:        goto yy61;
                        }
 yy495:
-#line 192 "src/parser_scan.re"
+#line 196 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SIGNED); goto start; }
-#line 7247 "src/parser_scan.c"
+#line 7251 "src/parser_scan.c"
 yy496:
                        yyaccept = 56;
                        yych = *(mrk = ++cur);
@@ -7316,9 +7320,9 @@ yy496:
                        default:        goto yy61;
                        }
 yy497:
-#line 176 "src/parser_scan.re"
+#line 180 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SIZEOF); goto start; }
-#line 7322 "src/parser_scan.c"
+#line 7326 "src/parser_scan.c"
 yy498:
                        yyaccept = 57;
                        yych = *(mrk = ++cur);
@@ -7391,9 +7395,9 @@ yy498:
                        default:        goto yy61;
                        }
 yy499:
-#line 179 "src/parser_scan.re"
+#line 183 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRUCT); goto start; }
-#line 7397 "src/parser_scan.c"
+#line 7401 "src/parser_scan.c"
 yy500:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7487,9 +7491,9 @@ yy503:
                        default:        goto yy61;
                        }
 yy504:
-#line 231 "src/parser_scan.re"
+#line 235 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_BOOLVAL); goto start; }
-#line 7493 "src/parser_scan.c"
+#line 7497 "src/parser_scan.c"
 yy505:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7578,9 +7582,9 @@ yy507:
                        default:        goto yy61;
                        }
 yy508:
-#line 200 "src/parser_scan.re"
+#line 204 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DEFINED); goto start; }
-#line 7584 "src/parser_scan.c"
+#line 7588 "src/parser_scan.c"
 yy509:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7670,9 +7674,9 @@ yy511:
                        default:        goto yy61;
                        }
 yy512:
-#line 204 "src/parser_scan.re"
+#line 208 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INCLUDE); goto start; }
-#line 7676 "src/parser_scan.c"
+#line 7680 "src/parser_scan.c"
 yy513:
                        yyaccept = 61;
                        yych = *(mrk = ++cur);
@@ -7745,9 +7749,9 @@ yy513:
                        default:        goto yy61;
                        }
 yy514:
-#line 228 "src/parser_scan.re"
+#line 232 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PATHVAL); goto start; }
-#line 7751 "src/parser_scan.c"
+#line 7755 "src/parser_scan.c"
 yy515:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7844,9 +7848,9 @@ yy518:
                        default:        goto yy61;
                        }
 yy519:
-#line 242 "src/parser_scan.re"
+#line 246 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_BOOL); goto start; }
-#line 7850 "src/parser_scan.c"
+#line 7854 "src/parser_scan.c"
 yy520:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7943,9 +7947,9 @@ yy523:
                        default:        goto yy61;
                        }
 yy524:
-#line 202 "src/parser_scan.re"
+#line 206 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_WARNING); goto start; }
-#line 7949 "src/parser_scan.c"
+#line 7953 "src/parser_scan.c"
 yy525:
                        yyaccept = 34;
                        yych = *(mrk = ++cur);
@@ -8184,9 +8188,9 @@ yy531:
                        default:        goto yy61;
                        }
 yy532:
-#line 178 "src/parser_scan.re"
+#line 182 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TYPEDEF); goto start; }
-#line 8190 "src/parser_scan.c"
+#line 8194 "src/parser_scan.c"
 yy533:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -8273,9 +8277,9 @@ yy535:
                        default:        goto yy61;
                        }
 yy536:
-#line 210 "src/parser_scan.re"
+#line 214 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CALLABLE); goto start; }
-#line 8279 "src/parser_scan.c"
+#line 8283 "src/parser_scan.c"
 yy537:
                        yyaccept = 66;
                        yych = *(mrk = ++cur);
@@ -8348,9 +8352,9 @@ yy537:
                        default:        goto yy61;
                        }
 yy538:
-#line 214 "src/parser_scan.re"
+#line 218 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CALLBACK); goto start; }
-#line 8354 "src/parser_scan.c"
+#line 8358 "src/parser_scan.c"
 yy539:
                        yyaccept = 67;
                        yych = *(mrk = ++cur);
@@ -8423,9 +8427,9 @@ yy539:
                        default:        goto yy61;
                        }
 yy540:
-#line 230 "src/parser_scan.re"
+#line 234 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FLOATVAL); goto start; }
-#line 8429 "src/parser_scan.c"
+#line 8433 "src/parser_scan.c"
 yy541:
                        yyaccept = 68;
                        yych = *(mrk = ++cur);
@@ -8498,9 +8502,9 @@ yy541:
                        default:        goto yy61;
                        }
 yy542:
-#line 216 "src/parser_scan.re"
+#line 220 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FUNCTION); goto start; }
-#line 8504 "src/parser_scan.c"
+#line 8508 "src/parser_scan.c"
 yy543:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -8597,9 +8601,9 @@ yy546:
                        default:        goto yy61;
                        }
 yy547:
-#line 238 "src/parser_scan.re"
+#line 242 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_ARRAY); goto start; }
-#line 8603 "src/parser_scan.c"
+#line 8607 "src/parser_scan.c"
 yy548:
                        yyaccept = 70;
                        yych = *(mrk = ++cur);
@@ -8672,9 +8676,9 @@ yy548:
                        default:        goto yy61;
                        }
 yy549:
-#line 241 "src/parser_scan.re"
+#line 245 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_FLOAT); goto start; }
-#line 8678 "src/parser_scan.c"
+#line 8682 "src/parser_scan.c"
 yy550:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -8859,9 +8863,9 @@ yy557:
                        default:        goto yy61;
                        }
 yy558:
-#line 191 "src/parser_scan.re"
+#line 195 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_UNSIGNED); goto start; }
-#line 8865 "src/parser_scan.c"
+#line 8869 "src/parser_scan.c"
 yy559:
                        yyaccept = 72;
                        yych = *(mrk = ++cur);
@@ -8934,9 +8938,9 @@ yy559:
                        default:        goto yy61;
                        }
 yy560:
-#line 175 "src/parser_scan.re"
+#line 179 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_VOLATILE); goto start; }
-#line 8940 "src/parser_scan.c"
+#line 8944 "src/parser_scan.c"
 yy561:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -9033,9 +9037,9 @@ yy564:
                        default:        goto yy61;
                        }
 yy565:
-#line 237 "src/parser_scan.re"
+#line 241 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_OBJECT); goto start; }
-#line 9039 "src/parser_scan.c"
+#line 9043 "src/parser_scan.c"
 yy566:
                        yyaccept = 74;
                        yych = *(mrk = ++cur);
@@ -9108,9 +9112,9 @@ yy566:
                        default:        goto yy61;
                        }
 yy567:
-#line 239 "src/parser_scan.re"
+#line 243 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_STRING); goto start; }
-#line 9114 "src/parser_scan.c"
+#line 9118 "src/parser_scan.c"
 yy568:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -9295,9 +9299,9 @@ yy574:
                        default:        goto yy61;
                        }
 yy575:
-#line 220 "src/parser_scan.re"
+#line 224 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PRE_ASSERT); goto start; }
-#line 9301 "src/parser_scan.c"
+#line 9305 "src/parser_scan.c"
 yy576:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -9384,9 +9388,9 @@ yy578:
                        default:        goto yy61;
                        }
 yy579:
-#line 172 "src/parser_scan.re"
+#line 176 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_RESTRICT); goto start; }
-#line 9390 "src/parser_scan.c"
+#line 9394 "src/parser_scan.c"
 yy580:
                        yyaccept = 3;
                        mrk = ++cur;
@@ -9542,9 +9546,9 @@ yy582:
                        default:        goto yy61;
                        }
 yy583:
-#line 221 "src/parser_scan.re"
+#line 225 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_POST_ASSERT); goto start; }
-#line 9548 "src/parser_scan.c"
+#line 9552 "src/parser_scan.c"
 yy584:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -9634,9 +9638,9 @@ yy586:
                        default:        goto yy529;
                        }
 yy587:
-#line 170 "src/parser_scan.re"
+#line 174 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PRAGMA_ONCE); goto start; }
-#line 9640 "src/parser_scan.c"
+#line 9644 "src/parser_scan.c"
 yy588:
                        yyaccept = 79;
                        yych = *(mrk = ++cur);
@@ -9709,9 +9713,9 @@ yy588:
                        default:        goto yy61;
                        }
 yy589:
-#line 205 "src/parser_scan.re"
+#line 209 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INCLUDE_NEXT); goto start; }
-#line 9715 "src/parser_scan.c"
+#line 9719 "src/parser_scan.c"
 yy590:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -9808,9 +9812,9 @@ yy593:
                        default:        goto yy61;
                        }
 yy594:
-#line 173 "src/parser_scan.re"
+#line 177 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_EXTENSION); goto start; }
-#line 9814 "src/parser_scan.c"
+#line 9818 "src/parser_scan.c"
 yy595:
                        ++cur;
                        if ((lim - cur) < 2) CHECKEOF();;
@@ -9830,16 +9834,16 @@ yy597:
                        }
 yy598:
                        ++cur;
-#line 247 "src/parser_scan.re"
+#line 251 "src/parser_scan.re"
                        { parens = 2; goto cpp_attribute; }
-#line 9836 "src/parser_scan.c"
+#line 9840 "src/parser_scan.c"
                }
-#line 253 "src/parser_scan.re"
+#line 257 "src/parser_scan.re"
 
 
        character: ;
                
-#line 9843 "src/parser_scan.c"
+#line 9847 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
@@ -9853,17 +9857,17 @@ yy598:
                        }
 yy602:
                        ++cur;
-#line 271 "src/parser_scan.re"
+#line 275 "src/parser_scan.re"
                        { escaped = false; goto character; }
-#line 9859 "src/parser_scan.c"
+#line 9863 "src/parser_scan.c"
 yy604:
                        ++cur;
-#line 258 "src/parser_scan.re"
+#line 262 "src/parser_scan.re"
                        { NEWLINE(); goto character; }
-#line 9864 "src/parser_scan.c"
+#line 9868 "src/parser_scan.c"
 yy606:
                        ++cur;
-#line 260 "src/parser_scan.re"
+#line 264 "src/parser_scan.re"
                        {
                        if (escaped) {
                                escaped = false;
@@ -9875,19 +9879,19 @@ yy606:
                        token->flags = char_width;
                        goto start;
                }
-#line 9879 "src/parser_scan.c"
+#line 9883 "src/parser_scan.c"
 yy608:
                        ++cur;
-#line 259 "src/parser_scan.re"
+#line 263 "src/parser_scan.re"
                        { escaped = !escaped;  goto character; }
-#line 9884 "src/parser_scan.c"
+#line 9888 "src/parser_scan.c"
                }
-#line 273 "src/parser_scan.re"
+#line 277 "src/parser_scan.re"
 
 
        string: ;
                
-#line 9891 "src/parser_scan.c"
+#line 9895 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
@@ -9901,17 +9905,17 @@ yy608:
                        }
 yy612:
                        ++cur;
-#line 291 "src/parser_scan.re"
+#line 295 "src/parser_scan.re"
                        { escaped = false; goto string; }
-#line 9907 "src/parser_scan.c"
+#line 9911 "src/parser_scan.c"
 yy614:
                        ++cur;
-#line 278 "src/parser_scan.re"
+#line 282 "src/parser_scan.re"
                        { NEWLINE(); goto string; }
-#line 9912 "src/parser_scan.c"
+#line 9916 "src/parser_scan.c"
 yy616:
                        ++cur;
-#line 280 "src/parser_scan.re"
+#line 284 "src/parser_scan.re"
                        {
                        if (escaped) {
                                escaped = false;
@@ -9923,19 +9927,19 @@ yy616:
                        token->flags = char_width;
                        goto start;
                }
-#line 9927 "src/parser_scan.c"
+#line 9931 "src/parser_scan.c"
 yy618:
                        ++cur;
-#line 279 "src/parser_scan.re"
+#line 283 "src/parser_scan.re"
                        { escaped = !escaped; goto string; }
-#line 9932 "src/parser_scan.c"
+#line 9936 "src/parser_scan.c"
                }
-#line 293 "src/parser_scan.re"
+#line 297 "src/parser_scan.re"
 
 
        comment: ;
                
-#line 9939 "src/parser_scan.c"
+#line 9943 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if ((lim - cur) < 2) CHECKEOF();;
@@ -9949,14 +9953,14 @@ yy618:
 yy622:
                        ++cur;
 yy623:
-#line 300 "src/parser_scan.re"
+#line 304 "src/parser_scan.re"
                        { goto comment; }
-#line 9955 "src/parser_scan.c"
+#line 9959 "src/parser_scan.c"
 yy624:
                        ++cur;
-#line 298 "src/parser_scan.re"
+#line 302 "src/parser_scan.re"
                        { NEWLINE(); goto comment; }
-#line 9960 "src/parser_scan.c"
+#line 9964 "src/parser_scan.c"
 yy626:
                        yych = *++cur;
                        switch (yych) {
@@ -9965,16 +9969,16 @@ yy626:
                        }
 yy627:
                        ++cur;
-#line 299 "src/parser_scan.re"
+#line 303 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COMMENT); goto start; }
-#line 9971 "src/parser_scan.c"
+#line 9975 "src/parser_scan.c"
                }
-#line 302 "src/parser_scan.re"
+#line 306 "src/parser_scan.re"
 
 
        comment_sl: ;
                
-#line 9978 "src/parser_scan.c"
+#line 9982 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
@@ -9986,22 +9990,22 @@ yy627:
                        }
 yy631:
                        ++cur;
-#line 308 "src/parser_scan.re"
+#line 312 "src/parser_scan.re"
                        { goto comment_sl; }
-#line 9992 "src/parser_scan.c"
+#line 9996 "src/parser_scan.c"
 yy633:
                        ++cur;
-#line 307 "src/parser_scan.re"
+#line 311 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COMMENT); tok = cur - 1; NEWTOKEN(PSI_T_EOL); NEWLINE(); goto start; }
-#line 9997 "src/parser_scan.c"
+#line 10001 "src/parser_scan.c"
                }
-#line 310 "src/parser_scan.re"
+#line 314 "src/parser_scan.re"
 
 
        cpp_attribute: ;
 
                
-#line 10005 "src/parser_scan.c"
+#line 10009 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
@@ -10015,26 +10019,26 @@ yy633:
                        }
 yy637:
                        ++cur;
-#line 319 "src/parser_scan.re"
+#line 323 "src/parser_scan.re"
                        { goto cpp_attribute; }
-#line 10021 "src/parser_scan.c"
+#line 10025 "src/parser_scan.c"
 yy639:
                        ++cur;
-#line 318 "src/parser_scan.re"
+#line 322 "src/parser_scan.re"
                        { NEWLINE(); goto cpp_attribute; }
-#line 10026 "src/parser_scan.c"
+#line 10030 "src/parser_scan.c"
 yy641:
                        ++cur;
-#line 316 "src/parser_scan.re"
+#line 320 "src/parser_scan.re"
                        { ++parens; goto cpp_attribute; }
-#line 10031 "src/parser_scan.c"
+#line 10035 "src/parser_scan.c"
 yy643:
                        ++cur;
-#line 317 "src/parser_scan.re"
+#line 321 "src/parser_scan.re"
                        { if (parens == 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE); goto start; } else { --parens; goto cpp_attribute; } }
-#line 10036 "src/parser_scan.c"
+#line 10040 "src/parser_scan.c"
                }
-#line 321 "src/parser_scan.re"
+#line 325 "src/parser_scan.re"
 
 error: ;
 
index 7ba49b2..043243f 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include <php_psi_stdinc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "parser.h"
 #include "plist.h"
index b749f73..8b38fe0 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "plist.h"
 
index 94fd498..197aa33 100644 (file)
@@ -26,6 +26,9 @@
 #ifndef PSI_PLIST_H
 #define PSI_PLIST_H
 
+#include <stdbool.h>
+#include <stddef.h>
+
 struct psi_plist;
 
 typedef void (*psi_plist_dtor)(void *);
index 832b040..7a61007 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include <ctype.h>
 
index e0c4b07..46a58a5 100644 (file)
@@ -26,6 +26,8 @@
 #ifndef PSI_TYPES_H
 #define PSI_TYPES_H
 
+#include <stdbool.h>
+
 #include "token.h"
 #include "types/impl_val.h"
 #include "types/decl_type.h"
index 6277070..6d44d77 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_const *psi_const_init(struct psi_impl_type *type, zend_string *name,
index aa70c63..2288990 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include <assert.h>
 
index 04e0ea4..2764200 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "cpp.h"
 #include "data.h"
index 25bafd8..40e6c97 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "cpp.h"
 #include "data.h"
index 42eeb43..94f4336 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "php_psi.h"
 
 #include <dlfcn.h>
@@ -34,7 +38,7 @@
 #include "data.h"
 
 #define PSI_FUNC_REDIRS
-#include "php_psi_posix.h"
+#include "php_psi_predef.h"
 
 struct psi_decl *psi_decl_init(struct psi_decl_arg *func, struct psi_plist *args)
 {
index 02fdc50..98721d1 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_decl_abi *psi_decl_abi_init(zend_string *convention)
index 816ab8a..fa5d977 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include <assert.h>
 
 #include "data.h"
index 674dd03..d76bb1c 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_decl_enum *psi_decl_enum_init(zend_string *name, struct psi_plist *l)
index 4992000..b20595b 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_decl_enum_item *psi_decl_enum_item_init(zend_string *name,
index 3427328..85642e3 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include "php_psi.h"
 
index 89c2323..f2f0fc9 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <dlfcn.h>
index d2a211d..5372857 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <assert.h>
index f5086f1..932475f 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "token.h"
 #include "data.h"
 
 #define PSI_STD_TYPES
-#include "php_psi_posix.h"
+#include "php_psi_predef.h"
 
 struct psi_decl_type *psi_decl_type_init(token_t type, zend_string *name)
 {
index 146bc62..2c0b73d 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <assert.h>
index 376bb13..86aa33b 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <assert.h>
index 1a29cd2..b522de5 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 #include "call.h"
 
index b6254b3..de26762 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_free_stmt *psi_free_stmt_init(struct psi_plist *exps)
index c1b9b9a..1c4152a 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <assert.h>
index 12e09b6..598df66 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_impl_arg *psi_impl_arg_init(struct psi_impl_type *type,
index e8d7b46..6347b6e 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include "zend_smart_str.h"
index 56c61d8..a701134 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_impl_func *psi_impl_func_init(zend_string *name,
index 41baf1c..e4ace47 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_impl_type *psi_impl_type_init(token_t type, zend_string *name)
index 7d727af..edf31bf 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <Zend/zend_smart_str.h>
index c462120..a458c77 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 #include <assert.h>
index abe2141..f5c7a46 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_let_callback *psi_let_callback_init(struct psi_let_func *func,
index 46badc0..270e3c5 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_let_calloc *psi_let_calloc_init(struct psi_num_exp *nmemb,
index 55bf576..382fd62 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 #include "call.h"
 #include "calc.h"
index 4a61632..11e5c42 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 #include "call.h"
 #include "marshal.h"
@@ -221,7 +225,7 @@ bool psi_let_func_validate(struct psi_data *data, struct psi_let_func *func,
        return 1;
 }
 
-void exec_let_func_arrval_inner(struct psi_let_func *func,
+static void exec_let_func_arrval_inner(struct psi_let_func *func,
                struct psi_decl_arg *darg, struct psi_decl_arg *inner_decl_arg,
                struct psi_call_frame_argument *frame_arg,
                struct psi_let_exp *inner_let_exp, void *container,
@@ -263,7 +267,7 @@ static void *exec_let_func_arrval(struct psi_let_exp *val,
                struct psi_let_func *func, struct psi_decl_arg *darg,
                struct psi_call_frame *frame);
 
-void exec_let_func_arrval_seq(struct psi_let_func *func,
+static void exec_let_func_arrval_seq(struct psi_let_func *func,
                struct psi_decl_arg *darg,
                struct psi_call_frame_argument *frame_arg,
                struct psi_let_exp *inner_let_exp, void *container,
@@ -305,6 +309,7 @@ void exec_let_func_arrval_seq(struct psi_let_func *func,
                                        inner_let_exp->data.func, darg, frame);
                } else {
                        assert(0);
+                       return;
                }
 
                sub = deref_impl_val(ptr, dvar);
index 776d206..77375e8 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 
 struct psi_let_stmt *psi_let_stmt_init(struct psi_let_exp *exp)
index 0053a23..944b876 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include <assert.h>
 
index 10505df..aeaf386 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 
 #include <assert.h>
 #include <math.h>
@@ -675,7 +679,6 @@ bool psi_number_validate(struct psi_data *data, struct psi_number *exp,
 
        case PSI_T_DEFINE:
                if (scope && scope->cpp && zend_hash_exists(&scope->cpp->defs, exp->data.numb)) {
-       define: ;
                        if (!scope->macro || !zend_string_equals(scope->macro->token->text, exp->data.numb)) {
                                return true;
                        }
index 5d2795a..6a43c8a 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "data.h"
 #include "call.h"
 
index 41a17ee..9dc62f7 100644 (file)
--- a/