From e11280a7b6ed67a4d79b14569ca06131ea2338bd Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Thu, 9 Feb 2017 14:40:22 +0100 Subject: [PATCH] calc: boolean expressions --- Makefile.frag | 6 + scripts/gen_cmp.php | 27 + scripts/gen_int.php | 35 + scripts/gen_oper.php | 63 + src/calc.c | 348 ++++- src/calc.h | 10 + src/parser.c | 2524 ++++++++++++++++++------------------ src/parser.re | 8 + src/parser_def.h | 19 +- src/parser_proc.c | 2726 ++++++++++++++++++++------------------- src/parser_proc.h | 120 +- src/parser_proc.y | 11 +- src/token.h | 46 +- src/token_oper_cmp.h | 531 ++++++++ src/types/num_exp.c | 112 ++ tests/calc/calc.psi | 47 +- tests/calc/calc001.phpt | 2 +- 17 files changed, 3909 insertions(+), 2726 deletions(-) create mode 100644 scripts/gen_cmp.php create mode 100644 scripts/gen_int.php create mode 100644 scripts/gen_oper.php create mode 100644 src/token_oper_cmp.h diff --git a/Makefile.frag b/Makefile.frag index 78a3a33..06a56ee 100644 --- a/Makefile.frag +++ b/Makefile.frag @@ -35,6 +35,10 @@ $(PHP_PSI_SRCDIR)/src/parser.re: $(PHP_PSI_SRCDIR)/src/parser_proc.h $(PHP_PSI_SRCDIR)/src/parser.c: $(PHP_PSI_SRCDIR)/src/parser.re $(RE2C) -o $@ $< +$(PHP_PSI_SRCDIR)/src/token.h: $(PHP_PSI_SRCDIR)/src/token_oper_cmp.h +$(PHP_PSI_SRCDIR)/src/token_oper_cmp.h: $(PHP_PSI_SRCDIR)/scripts/gen_oper.php + $(PHP_EXECUTABLE) $< >$@ + PHP_PSI_DEPEND = $(patsubst $(PHP_PSI_SRCDIR)/%,$(PHP_PSI_BUILDDIR)/%,$(PHP_PSI_SOURCES:.c=.dep)) $(PHP_PSI_BUILDDIR)/%.dep: $(PHP_PSI_SRCDIR)/%.c @@ -42,7 +46,9 @@ $(PHP_PSI_BUILDDIR)/%.dep: $(PHP_PSI_SRCDIR)/%.c $(CPPFLAGS) $(DEFS) $(INCLUDES) $< \ || touch $@ +token_oper_cmp.h: $(PHP_PSI_SRCDIR)/src/token_oper_cmp.h php_psi_stdinc.h: +php_psi_posix.h: ifneq ($(findstring clean,$(MAKECMDGOALS)),clean) ifneq ($(PSI_DEPS),) diff --git a/scripts/gen_cmp.php b/scripts/gen_cmp.php new file mode 100644 index 0000000..89524ee --- /dev/null +++ b/scripts/gen_cmp.php @@ -0,0 +1,27 @@ + "fval", + "DOUBLE" => "dval", + "LONG_DOUBLE" => "ldval", + "INT8" => "i8", + "UINT8" => "u8", + "INT16" => "i16", + "UINT16" => "u16", + "INT32" => "i32", + "UINT32" => "u32", + "INT64" => "i64", + "UINT64" => "u64", +]; + +printf("\tswitch (t1) { \\\n"); +foreach ($types as $t1 => $f1) { + printf("\tcase PSI_T_%s: \\\n", $t1); + printf("\t\tswitch (t2) { \\\n"); + foreach ($types as $t2 => $f2) { + printf("\t\tcase PSI_T_%s:\tPSI_CALC_OP2(u8, %s, %s);\tbreak; \\\n", + $t2, $f1, $f2); + } + printf("\t\tEMPTY_SWITCH_DEFAULT_CASE(); \\\n\t\t} \\\n\t\tbreak; \\\n"); +} +printf("\tEMPTY_SWITCH_DEFAULT_CASE(); \\\n\t} \\\n"); \ No newline at end of file diff --git a/scripts/gen_int.php b/scripts/gen_int.php new file mode 100644 index 0000000..2df05ed --- /dev/null +++ b/scripts/gen_int.php @@ -0,0 +1,35 @@ + "i8", + "UINT8" => "u8", + "INT16" => "i16", + "UINT16" => "u16", + "INT32" => "i32", + "UINT32" => "u32", + "INT64" => "i64", + "UINT64" => "u64", +]; + +printf("\tswitch (t1) { \\\n"); +foreach ($types as $t1 => $f1) { + $s1 = substr($f1, 1); + $u1 = $f1{0} == "u"; + printf("\tcase PSI_T_%s: \\\n", $t1); + printf("\t\tswitch (t2) { \\\n"); + foreach ($types as $t2 => $f2) { + $s2 = substr($f2, 1); + $u2 = $f2{0} == "u"; + + if ($u1 && $u2) { + $fr = "u".min(64,max($s1*2,$s2*2)); + } else { + $fr = "i".min(64,max($s1*2,$s2*2)); + } + + printf("\t\tcase PSI_T_%s:\tPSI_CALC_OP2(%s, %s, %s);\treturn PSI_T_%s; \\\n", + $t2, $fr, $f1, $f2, str_replace(["u","i"], ["UINT","INT"], $fr)); + } + printf("\t\tEMPTY_SWITCH_DEFAULT_CASE(); \\\n\t\t} \\\n\t\tbreak; \\\n"); +} +printf("\tEMPTY_SWITCH_DEFAULT_CASE(); \\\n\t} \\\n"); \ No newline at end of file diff --git a/scripts/gen_oper.php b/scripts/gen_oper.php new file mode 100644 index 0000000..e35bc4b --- /dev/null +++ b/scripts/gen_oper.php @@ -0,0 +1,63 @@ +/******************************************************************************* + Copyright (c) 2016, Michael Wallner . + 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. +*******************************************************************************/ + +static inline int psi_token_oper_cmp(token_t op1, token_t op2) { + switch (op1) { + $ops1) { + foreach ($ops1 as $op1) { + printf("\tcase PSI_T_%s:\n", $op1); + printf("\t\tswitch (op2) {\n"); + foreach ($oper as $prec2 => $ops2) { + foreach ($ops2 as $op2) { + printf("\t\t\tcase PSI_T_%s: %sreturn %2d;\n", $op2, + str_repeat(" ", 10 - strlen($op2)), + $prec1==$prec2?0:($prec1>$prec2?1:-1)); + } + } + printf("\t\t}\n\t\tassert(0);\n\t\tbreak;\n"); + } +} +?> + } + assert(0); + return 0; +} diff --git a/src/calc.c b/src/calc.c index f88ab30..2dc85f4 100644 --- a/src/calc.c +++ b/src/calc.c @@ -234,47 +234,112 @@ void psi_calc_cast(token_t in_type, impl_val *in_val, token_t out_type, impl_val } \ return t2; \ } else { \ - int64_t sval1 = v1->i64, sval2 = v2->i64; \ - uint64_t uval1 = v1->u64, uval2 = v2->u64; \ switch (t1) { \ - case PSI_T_INT8: sval1 >>= 8; \ - case PSI_T_INT16: sval1 >>= 8; \ - case PSI_T_INT32: sval1 >>= 8; \ + case PSI_T_INT8: \ + switch (t2) { \ + case PSI_T_INT8: PSI_CALC_OP2(i16, i8, i8); return PSI_T_INT16; \ + case PSI_T_UINT8: PSI_CALC_OP2(i16, i8, u8); return PSI_T_INT16; \ + case PSI_T_INT16: PSI_CALC_OP2(i32, i8, i16); return PSI_T_INT32; \ + case PSI_T_UINT16: PSI_CALC_OP2(i32, i8, u16); return PSI_T_INT32; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, i8, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(i64, i8, u32); return PSI_T_INT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, i8, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(i64, i8, u64); return PSI_T_INT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT8: \ + switch (t2) { \ + case PSI_T_INT8: PSI_CALC_OP2(i16, u8, i8); return PSI_T_INT16; \ + case PSI_T_UINT8: PSI_CALC_OP2(u16, u8, u8); return PSI_T_UINT16; \ + case PSI_T_INT16: PSI_CALC_OP2(i32, u8, i16); return PSI_T_INT32; \ + case PSI_T_UINT16: PSI_CALC_OP2(u32, u8, u16); return PSI_T_UINT32; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, u8, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(u64, u8, u32); return PSI_T_UINT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, u8, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(u64, u8, u64); return PSI_T_UINT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_INT16: \ + switch (t2) { \ + case PSI_T_INT8: PSI_CALC_OP2(i32, i16, i8); return PSI_T_INT32; \ + case PSI_T_UINT8: PSI_CALC_OP2(i32, i16, u8); return PSI_T_INT32; \ + case PSI_T_INT16: PSI_CALC_OP2(i32, i16, i16); return PSI_T_INT32; \ + case PSI_T_UINT16: PSI_CALC_OP2(i32, i16, u16); return PSI_T_INT32; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, i16, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(i64, i16, u32); return PSI_T_INT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, i16, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(i64, i16, u64); return PSI_T_INT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT16: \ + switch (t2) { \ + case PSI_T_INT8: PSI_CALC_OP2(i32, u16, i8); return PSI_T_INT32; \ + case PSI_T_UINT8: PSI_CALC_OP2(u32, u16, u8); return PSI_T_UINT32; \ + case PSI_T_INT16: PSI_CALC_OP2(i32, u16, i16); return PSI_T_INT32; \ + case PSI_T_UINT16: PSI_CALC_OP2(u32, u16, u16); return PSI_T_UINT32; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, u16, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(u64, u16, u32); return PSI_T_UINT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, u16, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(u64, u16, u64); return PSI_T_UINT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_INT32: \ + switch (t2) { \ + case PSI_T_INT8: PSI_CALC_OP2(i64, i32, i8); return PSI_T_INT64; \ + case PSI_T_UINT8: PSI_CALC_OP2(i64, i32, u8); return PSI_T_INT64; \ + case PSI_T_INT16: PSI_CALC_OP2(i64, i32, i16); return PSI_T_INT64; \ + case PSI_T_UINT16: PSI_CALC_OP2(i64, i32, u16); return PSI_T_INT64; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, i32, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(i64, i32, u32); return PSI_T_INT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, i32, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(i64, i32, u64); return PSI_T_INT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT32: \ + switch (t2) { \ + case PSI_T_INT8: PSI_CALC_OP2(i64, u32, i8); return PSI_T_INT64; \ + case PSI_T_UINT8: PSI_CALC_OP2(u64, u32, u8); return PSI_T_UINT64; \ + case PSI_T_INT16: PSI_CALC_OP2(i64, u32, i16); return PSI_T_INT64; \ + case PSI_T_UINT16: PSI_CALC_OP2(u64, u32, u16); return PSI_T_UINT64; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, u32, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(u64, u32, u32); return PSI_T_UINT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, u32, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(u64, u32, u64); return PSI_T_UINT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ case PSI_T_INT64: \ switch (t2) { \ - case PSI_T_INT8: sval2 >>= 8; \ - case PSI_T_INT16: sval2 >>= 8; \ - case PSI_T_INT32: sval2 >>= 8; \ - case PSI_T_INT64: \ - res->i64 = PSI_CALC(sval1 , sval2); \ - return PSI_T_INT64; \ - case PSI_T_UINT8: uval2 >>= 8; \ - case PSI_T_UINT16: uval2 >>= 8; \ - case PSI_T_UINT32: uval2 >>= 8; \ - case PSI_T_UINT64: \ - res->i64 = PSI_CALC(sval1, uval2); \ - return PSI_T_INT64; \ + case PSI_T_INT8: PSI_CALC_OP2(i64, i64, i8); return PSI_T_INT64; \ + case PSI_T_UINT8: PSI_CALC_OP2(i64, i64, u8); return PSI_T_INT64; \ + case PSI_T_INT16: PSI_CALC_OP2(i64, i64, i16); return PSI_T_INT64; \ + case PSI_T_UINT16: PSI_CALC_OP2(i64, i64, u16); return PSI_T_INT64; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, i64, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(i64, i64, u32); return PSI_T_INT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, i64, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(i64, i64, u64); return PSI_T_INT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ } \ break; \ - case PSI_T_UINT8: uval1 >>= 8; \ - case PSI_T_UINT16: uval1 >>= 8; \ - case PSI_T_UINT32: uval1 >>= 8; \ case PSI_T_UINT64: \ switch (t2) { \ - case PSI_T_INT8: sval2 >>= 8; \ - case PSI_T_INT16: sval2 >>= 8; \ - case PSI_T_INT32: sval2 >>= 8; \ - case PSI_T_INT64: \ - res->i64 = PSI_CALC(uval1, sval2); \ - return PSI_T_INT64; \ - case PSI_T_UINT8: uval2 >>= 8; \ - case PSI_T_UINT16: uval2 >>= 8; \ - case PSI_T_UINT32: uval2 >>= 8; \ - case PSI_T_UINT64: \ - res->u64 = PSI_CALC(uval1, uval2); \ - return PSI_T_UINT64; \ + case PSI_T_INT8: PSI_CALC_OP2(i64, u64, i8); return PSI_T_INT64; \ + case PSI_T_UINT8: PSI_CALC_OP2(u64, u64, u8); return PSI_T_UINT64; \ + case PSI_T_INT16: PSI_CALC_OP2(i64, u64, i16); return PSI_T_INT64; \ + case PSI_T_UINT16: PSI_CALC_OP2(u64, u64, u16); return PSI_T_UINT64; \ + case PSI_T_INT32: PSI_CALC_OP2(i64, u64, i32); return PSI_T_INT64; \ + case PSI_T_UINT32: PSI_CALC_OP2(u64, u64, u32); return PSI_T_UINT64; \ + case PSI_T_INT64: PSI_CALC_OP2(i64, u64, i64); return PSI_T_INT64; \ + case PSI_T_UINT64: PSI_CALC_OP2(u64, u64, u64); return PSI_T_UINT64; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ } \ break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ } \ } \ assert(0); \ @@ -332,6 +397,225 @@ PSI_CALC_BIT_FN(bin_xor) PSI_CALC_BIT_FN(bin_or) #undef PSI_CALC +#define PSI_CALC_CMP_FN(op) token_t psi_calc_##op(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res) \ +{ \ + switch (t1) { \ + case PSI_T_FLOAT: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, fval, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, fval, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, fval, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, fval, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, fval, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, fval, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, fval, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, fval, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, fval, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, fval, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, fval, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_DOUBLE: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, dval, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, dval, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, dval, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, dval, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, dval, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, dval, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, dval, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, dval, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, dval, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, dval, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, dval, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_LONG_DOUBLE: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, ldval, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, ldval, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, ldval, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, ldval, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, ldval, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, ldval, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, ldval, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, ldval, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, ldval, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, ldval, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, ldval, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_INT8: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, i8, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, i8, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, i8, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, i8, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, i8, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, i8, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, i8, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, i8, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, i8, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, i8, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, i8, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT8: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, u8, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, u8, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, u8, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, u8, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, u8, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, u8, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, u8, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, u8, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, u8, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, u8, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, u8, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_INT16: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, i16, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, i16, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, i16, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, i16, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, i16, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, i16, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, i16, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, i16, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, i16, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, i16, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, i16, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT16: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, u16, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, u16, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, u16, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, u16, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, u16, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, u16, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, u16, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, u16, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, u16, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, u16, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, u16, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_INT32: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, i32, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, i32, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, i32, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, i32, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, i32, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, i32, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, i32, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, i32, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, i32, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, i32, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, i32, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT32: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, u32, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, u32, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, u32, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, u32, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, u32, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, u32, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, u32, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, u32, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, u32, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, u32, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, u32, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_INT64: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, i64, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, i64, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, i64, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, i64, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, i64, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, i64, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, i64, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, i64, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, i64, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, i64, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, i64, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + case PSI_T_UINT64: \ + switch (t2) { \ + case PSI_T_FLOAT: PSI_CALC_OP2(u8, u64, fval); break; \ + case PSI_T_DOUBLE: PSI_CALC_OP2(u8, u64, dval); break; \ + case PSI_T_LONG_DOUBLE: PSI_CALC_OP2(u8, u64, ldval); break; \ + case PSI_T_INT8: PSI_CALC_OP2(u8, u64, i8); break; \ + case PSI_T_UINT8: PSI_CALC_OP2(u8, u64, u8); break; \ + case PSI_T_INT16: PSI_CALC_OP2(u8, u64, i16); break; \ + case PSI_T_UINT16: PSI_CALC_OP2(u8, u64, u16); break; \ + case PSI_T_INT32: PSI_CALC_OP2(u8, u64, i32); break; \ + case PSI_T_UINT32: PSI_CALC_OP2(u8, u64, u32); break; \ + case PSI_T_INT64: PSI_CALC_OP2(u8, u64, i64); break; \ + case PSI_T_UINT64: PSI_CALC_OP2(u8, u64, u64); break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + break; \ + EMPTY_SWITCH_DEFAULT_CASE(); \ + } \ + return PSI_T_UINT8; \ +} + +#define PSI_CALC(var1, var2) (var1) == (var2) +PSI_CALC_CMP_FN(cmp_eq) +#undef PSI_CALC +#define PSI_CALC(var1, var2) (var1) != (var2) +PSI_CALC_CMP_FN(cmp_ne) +#undef PSI_CALC +#define PSI_CALC(var1, var2) (var1) <= (var2) +PSI_CALC_CMP_FN(cmp_le) +#undef PSI_CALC +#define PSI_CALC(var1, var2) (var1) >= (var2) +PSI_CALC_CMP_FN(cmp_ge) +#undef PSI_CALC +#define PSI_CALC(var1, var2) (var1) < (var2) +PSI_CALC_CMP_FN(cmp_lt) +#undef PSI_CALC +#define PSI_CALC(var1, var2) (var1) > (var2) +PSI_CALC_CMP_FN(cmp_gt) +#undef PSI_CALC + +#define PSI_CALC_BOOL_FN(op) token_t psi_calc_##op(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res) \ +{ \ + impl_val i1, i2; \ + PSI_CALC_CAST(t1, v1, =!!, PSI_T_UINT8, &i1); \ + PSI_CALC_CAST(t2, v2, =!!, PSI_T_UINT8, &i2); \ + res->u8 = PSI_CALC(i1.u8, i2.u8); \ + return PSI_T_UINT8; \ +} + +#define PSI_CALC(var1, var2) (var1) && (var2) +PSI_CALC_BOOL_FN(and) +#undef PSI_CALC +#define PSI_CALC(var1, var2) (var1) || (var2) +PSI_CALC_BOOL_FN(or) +#undef PSI_CALC + token_t psi_calc_not(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res) { (void) t2; diff --git a/src/calc.h b/src/calc.h index 8e1ea6b..dbbb116 100644 --- a/src/calc.h +++ b/src/calc.h @@ -50,6 +50,16 @@ token_t psi_calc_bin_and(token_t t1, impl_val *v1, token_t t2, impl_val *v2, imp token_t psi_calc_bin_xor(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); token_t psi_calc_bin_or(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_and(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_or(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); + +token_t psi_calc_cmp_eq(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_cmp_ne(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_cmp_le(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_cmp_ge(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_cmp_lt(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); +token_t psi_calc_cmp_gt(token_t t1, impl_val *v1, token_t t2, impl_val *v2, impl_val *res); + void psi_calc_cast(token_t in_type, impl_val *in_val, token_t out_type, impl_val *out_val); #endif diff --git a/src/parser.c b/src/parser.c index e4ea9d6..ef1fb85 100644 --- a/src/parser.c +++ b/src/parser.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.16 on Mon Feb 6 11:59:53 2017 */ +/* Generated by re2c 0.16 on Thu Feb 9 14:38:14 2017 */ #line 1 "/home/mike/src/php-master/ext/psi/src/parser.re" #include "php_psi_stdinc.h" #include @@ -268,20 +268,20 @@ token_t psi_parser_scan(struct psi_parser *P) case ':': goto yy36; case ';': goto yy38; case '<': goto yy40; - case '=': goto yy41; - case '>': goto yy43; + case '=': goto yy42; + case '>': goto yy44; case 'A': - case 'a': goto yy44; + case 'a': goto yy46; case 'B': - case 'b': goto yy46; + case 'b': goto yy48; case 'C': - case 'c': goto yy47; + case 'c': goto yy49; case 'D': - case 'd': goto yy48; + case 'd': goto yy50; case 'E': - case 'e': goto yy49; + case 'e': goto yy51; case 'F': - case 'f': goto yy50; + case 'f': goto yy52; case 'G': case 'H': case 'J': @@ -298,45 +298,45 @@ token_t psi_parser_scan(struct psi_parser *P) case 'q': case 'w': case 'x': - case 'y': goto yy51; + case 'y': goto yy53; case 'I': - case 'i': goto yy53; + case 'i': goto yy55; case 'L': - case 'l': goto yy54; + case 'l': goto yy56; case 'M': - case 'm': goto yy55; + case 'm': goto yy57; case 'N': - case 'n': goto yy56; + case 'n': goto yy58; case 'O': - case 'o': goto yy57; + case 'o': goto yy59; case 'P': - case 'p': goto yy58; + case 'p': goto yy60; case 'R': - case 'r': goto yy59; + case 'r': goto yy61; case 'S': - case 's': goto yy60; + case 's': goto yy62; case 'T': - case 't': goto yy61; + case 't': goto yy63; case 'U': - case 'u': goto yy62; + case 'u': goto yy64; case 'V': - case 'v': goto yy63; + case 'v': goto yy65; case 'Z': - case 'z': goto yy64; - case '[': goto yy65; - case '\\': goto yy67; - case ']': goto yy68; - case '^': goto yy70; - case '{': goto yy72; - case '|': goto yy74; - case '}': goto yy76; - case '~': goto yy78; + case 'z': goto yy66; + case '[': goto yy67; + case '\\': goto yy69; + case ']': goto yy70; + case '^': goto yy72; + case '{': goto yy74; + case '|': goto yy76; + case '}': goto yy78; + case '~': goto yy80; default: goto yy2; } yy2: ++P->cur; yy3: -#line 336 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 344 "/home/mike/src/php-master/ext/psi/src/parser.re" {break;} #line 342 "/home/mike/src/php-master/ext/psi/src/parser.c" yy4: @@ -349,30 +349,35 @@ yy4: default: goto yy6; } yy6: -#line 273 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 281 "/home/mike/src/php-master/ext/psi/src/parser.re" { continue; } #line 355 "/home/mike/src/php-master/ext/psi/src/parser.c" yy7: ++P->cur; -#line 272 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 280 "/home/mike/src/php-master/ext/psi/src/parser.re" { NEWLINE(nextline); } #line 360 "/home/mike/src/php-master/ext/psi/src/parser.c" yy9: ++P->cur; -#line 261 "/home/mike/src/php-master/ext/psi/src/parser.re" + switch ((yych = *P->cur)) { + case '=': goto yy82; + default: goto yy10; + } +yy10: +#line 265 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_NOT);} -#line 365 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 370 "/home/mike/src/php-master/ext/psi/src/parser.c" yy11: yyaccept = 0; yych = *(P->mrk = ++P->cur); switch (yych) { case '"': goto yy3; - default: goto yy80; + default: goto yy84; } yy12: yyaccept = 0; yych = *(P->mrk = ++P->cur); - goto yy83; + goto yy87; yy13: yych = *++P->cur; switch (yych) { @@ -438,39 +443,44 @@ yy13: case 'w': case 'x': case 'y': - case 'z': goto yy86; + case 'z': goto yy90; default: goto yy3; } yy14: ++P->cur; -#line 262 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 266 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_MODULO);} -#line 449 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 454 "/home/mike/src/php-master/ext/psi/src/parser.c" yy16: ++P->cur; -#line 263 "/home/mike/src/php-master/ext/psi/src/parser.re" + switch ((yych = *P->cur)) { + case '&': goto yy93; + default: goto yy17; + } +yy17: +#line 267 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_AMPERSAND);} -#line 454 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 464 "/home/mike/src/php-master/ext/psi/src/parser.c" yy18: ++P->cur; #line 249 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LPAREN);} -#line 459 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 469 "/home/mike/src/php-master/ext/psi/src/parser.c" yy20: ++P->cur; #line 250 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_RPAREN);} -#line 464 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 474 "/home/mike/src/php-master/ext/psi/src/parser.c" yy22: ++P->cur; -#line 259 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 263 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_ASTERISK);} -#line 469 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 479 "/home/mike/src/php-master/ext/psi/src/parser.c" yy24: yyaccept = 1; yych = *(P->mrk = ++P->cur); switch (yych) { - case '.': goto yy89; + case '.': goto yy95; case '0': case '1': case '2': @@ -484,19 +494,19 @@ yy24: default: goto yy25; } yy25: -#line 264 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 268 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_PLUS);} -#line 490 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 500 "/home/mike/src/php-master/ext/psi/src/parser.c" yy26: ++P->cur; #line 252 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_COMMA);} -#line 495 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 505 "/home/mike/src/php-master/ext/psi/src/parser.c" yy28: yyaccept = 2; yych = *(P->mrk = ++P->cur); switch (yych) { - case '.': goto yy89; + case '.': goto yy95; case '0': case '1': case '2': @@ -510,14 +520,14 @@ yy28: default: goto yy29; } yy29: -#line 265 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 269 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_MINUS);} -#line 516 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 526 "/home/mike/src/php-master/ext/psi/src/parser.c" yy30: yyaccept = 0; yych = *(P->mrk = ++P->cur); switch (yych) { - case '.': goto yy91; + case '.': goto yy97; case '0': case '1': case '2': @@ -527,28 +537,28 @@ yy30: case '6': case '7': case '8': - case '9': goto yy92; + case '9': goto yy98; default: goto yy3; } yy31: yyaccept = 3; yych = *(P->mrk = ++P->cur); switch (yych) { - case '*': goto yy94; - case '/': goto yy82; + case '*': goto yy100; + case '/': goto yy86; default: goto yy32; } yy32: -#line 266 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 270 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_SLASH);} -#line 545 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 555 "/home/mike/src/php-master/ext/psi/src/parser.c" yy33: yyaccept = 4; P->mrk = ++P->cur; if ((P->lim - P->cur) < 3) { if (!psi_parser_fill(P,3)) RETURN(PSI_T_EOF); }; yych = *P->cur; switch (yych) { - case '.': goto yy89; + case '.': goto yy95; case '0': case '1': case '2': @@ -560,108 +570,123 @@ yy33: case '8': case '9': goto yy33; case 'E': - case 'e': goto yy96; + case 'e': goto yy102; default: goto yy35; } yy35: -#line 331 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 339 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_NUMBER);} -#line 570 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 580 "/home/mike/src/php-master/ext/psi/src/parser.c" yy36: ++P->cur; #line 253 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_COLON);} -#line 575 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 585 "/home/mike/src/php-master/ext/psi/src/parser.c" yy38: ++P->cur; #line 251 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_EOS);} -#line 580 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 590 "/home/mike/src/php-master/ext/psi/src/parser.c" yy40: - yych = *++P->cur; - switch (yych) { - case '<': goto yy97; - default: goto yy3; + ++P->cur; + switch ((yych = *P->cur)) { + case '<': goto yy103; + case '=': goto yy105; + default: goto yy41; } yy41: +#line 277 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_LCHEVR);} +#line 601 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy42: ++P->cur; -#line 258 "/home/mike/src/php-master/ext/psi/src/parser.re" - {RETURN(PSI_T_EQUALS);} -#line 591 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy43: - yych = *++P->cur; - switch (yych) { - case '>': goto yy99; - default: goto yy3; + switch ((yych = *P->cur)) { + case '=': goto yy107; + default: goto yy43; } +yy43: +#line 262 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_EQUALS);} +#line 611 "/home/mike/src/php-master/ext/psi/src/parser.c" yy44: + ++P->cur; + switch ((yych = *P->cur)) { + case '=': goto yy109; + case '>': goto yy111; + default: goto yy45; + } +yy45: +#line 278 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_RCHEVR);} +#line 622 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy46: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy101; - default: goto yy52; + case 'r': goto yy113; + default: goto yy54; } -yy45: -#line 332 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy47: +#line 340 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_NAME);} -#line 609 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy46: +#line 634 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy48: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy103; - default: goto yy52; + case 'o': goto yy115; + default: goto yy54; } -yy47: +yy49: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy104; + case 'a': goto yy116; case 'H': - case 'h': goto yy105; + case 'h': goto yy117; case 'O': - case 'o': goto yy106; - default: goto yy52; + case 'o': goto yy118; + default: goto yy54; } -yy48: +yy50: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy107; - default: goto yy52; + case 'o': goto yy119; + default: goto yy54; } -yy49: +yy51: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy108; - default: goto yy52; + case 'n': goto yy120; + default: goto yy54; } -yy50: +yy52: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy109; + case 'a': goto yy121; case 'L': - case 'l': goto yy110; + case 'l': goto yy122; case 'R': - case 'r': goto yy111; + case 'r': goto yy123; case 'U': - case 'u': goto yy112; - default: goto yy52; + case 'u': goto yy124; + default: goto yy54; } -yy51: +yy53: yyaccept = 5; P->mrk = ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; yych = *P->cur; -yy52: +yy54: switch (yych) { case '0': case '1': @@ -725,130 +750,130 @@ yy52: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy45; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy47; } -yy53: +yy55: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy113; - default: goto yy52; + case 'n': goto yy125; + default: goto yy54; } -yy54: +yy56: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy114; + case 'e': goto yy126; case 'I': - case 'i': goto yy115; + case 'i': goto yy127; case 'O': - case 'o': goto yy116; - default: goto yy52; + case 'o': goto yy128; + default: goto yy54; } -yy55: +yy57: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy117; - default: goto yy52; + case 'i': goto yy129; + default: goto yy54; } -yy56: +yy58: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'U': - case 'u': goto yy118; - default: goto yy52; + case 'u': goto yy130; + default: goto yy54; } -yy57: +yy59: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'B': - case 'b': goto yy119; - default: goto yy52; + case 'b': goto yy131; + default: goto yy54; } -yy58: +yy60: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy120; - default: goto yy52; + case 'a': goto yy132; + default: goto yy54; } -yy59: +yy61: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy121; - default: goto yy52; + case 'e': goto yy133; + default: goto yy54; } -yy60: +yy62: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy122; + case 'e': goto yy134; case 'H': - case 'h': goto yy123; + case 'h': goto yy135; case 'I': - case 'i': goto yy124; + case 'i': goto yy136; case 'T': - case 't': goto yy125; - default: goto yy52; + case 't': goto yy137; + default: goto yy54; } -yy61: +yy63: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy126; + case 'e': goto yy138; case 'O': - case 'o': goto yy127; + case 'o': goto yy139; case 'R': - case 'r': goto yy128; + case 'r': goto yy140; case 'Y': - case 'y': goto yy129; - default: goto yy52; + case 'y': goto yy141; + default: goto yy54; } -yy62: +yy64: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy130; + case 'i': goto yy142; case 'N': - case 'n': goto yy131; - default: goto yy52; + case 'n': goto yy143; + default: goto yy54; } -yy63: +yy65: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy132; - default: goto yy52; + case 'o': goto yy144; + default: goto yy54; } -yy64: +yy66: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'V': - case 'v': goto yy133; - default: goto yy52; + case 'v': goto yy145; + default: goto yy54; } -yy65: +yy67: ++P->cur; #line 256 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LBRACKET);} -#line 851 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy67: +#line 876 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy69: yych = *++P->cur; switch (yych) { case 'A': @@ -903,62 +928,72 @@ yy67: case 'w': case 'x': case 'y': - case 'z': goto yy134; + case 'z': goto yy146; default: goto yy3; } -yy68: +yy70: ++P->cur; #line 257 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_RBRACKET);} -#line 914 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy70: +#line 939 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy72: ++P->cur; -#line 268 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 272 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_CARET);} -#line 919 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy72: +#line 944 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy74: ++P->cur; #line 254 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LBRACE);} -#line 924 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy74: +#line 949 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy76: ++P->cur; -#line 267 "/home/mike/src/php-master/ext/psi/src/parser.re" + switch ((yych = *P->cur)) { + case '|': goto yy149; + default: goto yy77; + } +yy77: +#line 271 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_PIPE);} -#line 929 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy76: +#line 959 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy78: ++P->cur; #line 255 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_RBRACE);} -#line 934 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy78: +#line 964 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy80: ++P->cur; -#line 260 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 264 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TILDE);} -#line 939 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy80: +#line 969 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy82: + ++P->cur; +#line 258 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_CMP_NE);} +#line 974 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy84: ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; yych = *P->cur; switch (yych) { - case '"': goto yy137; - default: goto yy80; + case '"': goto yy151; + default: goto yy84; } -yy82: +yy86: ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; yych = *P->cur; -yy83: +yy87: switch (yych) { - case '\n': goto yy84; - default: goto yy82; + case '\n': goto yy88; + default: goto yy86; } -yy84: +yy88: ++P->cur; #line 248 "/home/mike/src/php-master/ext/psi/src/parser.re" { NEWLINE(nextline); } -#line 961 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy86: +#line 996 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy90: ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; yych = *P->cur; @@ -1025,14 +1060,19 @@ yy86: case 'w': case 'x': case 'y': - case 'z': goto yy86; - default: goto yy88; + case 'z': goto yy90; + default: goto yy92; } -yy88: -#line 334 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy92: +#line 342 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_DOLLAR_NAME);} -#line 1035 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy89: +#line 1070 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy93: + ++P->cur; +#line 260 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_AND);} +#line 1075 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy95: yych = *++P->cur; switch (yych) { case '0': @@ -1044,10 +1084,10 @@ yy89: case '6': case '7': case '8': - case '9': goto yy92; - default: goto yy90; + case '9': goto yy98; + default: goto yy96; } -yy90: +yy96: P->cur = P->mrk; switch (yyaccept) { case 0: goto yy3; @@ -1055,73 +1095,73 @@ yy90: case 2: goto yy29; case 3: goto yy32; case 4: goto yy35; - case 5: goto yy45; - case 6: goto yy136; - case 7: goto yy157; - case 8: goto yy159; - case 9: goto yy161; - case 10: goto yy169; - case 11: goto yy186; - case 12: goto yy189; - case 13: goto yy194; - case 14: goto yy198; - case 15: goto yy206; - case 16: goto yy209; - case 17: goto yy222; - case 18: goto yy230; - case 19: goto yy236; - case 20: goto yy238; - case 21: goto yy240; - case 22: goto yy247; - case 23: goto yy249; - case 24: goto yy252; - case 25: goto yy254; - case 26: goto yy262; - case 27: goto yy268; - case 28: goto yy287; - case 29: goto yy290; - case 30: goto yy295; - case 31: goto yy297; - case 32: goto yy304; - case 33: goto yy306; - case 34: goto yy308; - case 35: goto yy310; - case 36: goto yy313; - case 37: goto yy315; - case 38: goto yy317; - case 39: goto yy319; - case 40: goto yy321; - case 41: goto yy323; - case 42: goto yy325; - case 43: goto yy330; - case 44: goto yy340; - case 45: goto yy346; - case 46: goto yy348; - case 47: goto yy350; - case 48: goto yy352; - case 49: goto yy355; - case 50: goto yy360; - case 51: goto yy365; - case 52: goto yy368; - case 53: goto yy370; - case 54: goto yy372; - case 55: goto yy374; - case 56: goto yy376; - case 57: goto yy378; - case 58: goto yy382; - case 59: goto yy384; - case 60: goto yy386; - case 61: goto yy388; - case 62: goto yy390; - default: goto yy392; + case 5: goto yy47; + case 6: goto yy148; + case 7: goto yy171; + case 8: goto yy173; + case 9: goto yy175; + case 10: goto yy183; + case 11: goto yy200; + case 12: goto yy203; + case 13: goto yy208; + case 14: goto yy212; + case 15: goto yy220; + case 16: goto yy223; + case 17: goto yy236; + case 18: goto yy244; + case 19: goto yy250; + case 20: goto yy252; + case 21: goto yy254; + case 22: goto yy261; + case 23: goto yy263; + case 24: goto yy266; + case 25: goto yy268; + case 26: goto yy276; + case 27: goto yy282; + case 28: goto yy301; + case 29: goto yy304; + case 30: goto yy309; + case 31: goto yy311; + case 32: goto yy318; + case 33: goto yy320; + case 34: goto yy322; + case 35: goto yy324; + case 36: goto yy327; + case 37: goto yy329; + case 38: goto yy331; + case 39: goto yy333; + case 40: goto yy335; + case 41: goto yy337; + case 42: goto yy339; + case 43: goto yy344; + case 44: goto yy354; + case 45: goto yy360; + case 46: goto yy362; + case 47: goto yy364; + case 48: goto yy366; + case 49: goto yy369; + case 50: goto yy374; + case 51: goto yy379; + case 52: goto yy382; + case 53: goto yy384; + case 54: goto yy386; + case 55: goto yy388; + case 56: goto yy390; + case 57: goto yy392; + case 58: goto yy396; + case 59: goto yy398; + case 60: goto yy400; + case 61: goto yy402; + case 62: goto yy404; + default: goto yy406; } -yy91: +yy97: yych = *++P->cur; switch (yych) { - case '.': goto yy139; - default: goto yy90; + case '.': goto yy153; + default: goto yy96; } -yy92: +yy98: yyaccept = 4; P->mrk = ++P->cur; if ((P->lim - P->cur) < 3) { if (!psi_parser_fill(P,3)) RETURN(PSI_T_EOF); }; @@ -1136,21 +1176,21 @@ yy92: case '6': case '7': case '8': - case '9': goto yy92; + case '9': goto yy98; case 'E': - case 'e': goto yy96; + case 'e': goto yy102; default: goto yy35; } -yy94: +yy100: ++P->cur; #line 247 "/home/mike/src/php-master/ext/psi/src/parser.re" { goto comment; } -#line 1149 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy96: +#line 1189 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy102: yych = *++P->cur; switch (yych) { case '+': - case '-': goto yy141; + case '-': goto yy155; case '0': case '1': case '2': @@ -1160,28 +1200,43 @@ yy96: case '6': case '7': case '8': - case '9': goto yy142; - default: goto yy90; + case '9': goto yy156; + default: goto yy96; } -yy97: +yy103: ++P->cur; -#line 269 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 273 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LSHIFT);} -#line 1171 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy99: +#line 1211 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy105: ++P->cur; -#line 270 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 275 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_CMP_LE);} +#line 1216 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy107: + ++P->cur; +#line 259 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_CMP_EQ);} +#line 1221 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy109: + ++P->cur; +#line 276 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_CMP_GE);} +#line 1226 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy111: + ++P->cur; +#line 274 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_RSHIFT);} -#line 1176 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy101: +#line 1231 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy113: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy144; - default: goto yy52; + case 'r': goto yy158; + default: goto yy54; } -yy102: +yy114: ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; yych = *P->cur; @@ -1238,263 +1293,263 @@ yy102: case 'w': case 'x': case 'y': - case 'z': goto yy134; - default: goto yy90; + case 'z': goto yy146; + default: goto yy96; } -yy103: +yy115: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy145; - default: goto yy52; + case 'o': goto yy159; + default: goto yy54; } -yy104: +yy116: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy146; - default: goto yy52; + case 'l': goto yy160; + default: goto yy54; } -yy105: +yy117: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy147; - default: goto yy52; + case 'a': goto yy161; + default: goto yy54; } -yy106: +yy118: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy148; + case 'n': goto yy162; case 'U': - case 'u': goto yy149; - default: goto yy52; + case 'u': goto yy163; + default: goto yy54; } -yy107: +yy119: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'U': - case 'u': goto yy150; - default: goto yy52; + case 'u': goto yy164; + default: goto yy54; } -yy108: +yy120: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'U': - case 'u': goto yy151; - default: goto yy52; + case 'u': goto yy165; + default: goto yy54; } -yy109: +yy121: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy152; - default: goto yy52; + case 'l': goto yy166; + default: goto yy54; } -yy110: +yy122: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy153; - default: goto yy52; + case 'o': goto yy167; + default: goto yy54; } -yy111: +yy123: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy154; - default: goto yy52; + case 'e': goto yy168; + default: goto yy54; } -yy112: +yy124: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy155; - default: goto yy52; + case 'n': goto yy169; + default: goto yy54; } -yy113: +yy125: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy156; - default: goto yy52; + case 't': goto yy170; + default: goto yy54; } -yy114: +yy126: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy158; - default: goto yy52; + case 't': goto yy172; + default: goto yy54; } -yy115: +yy127: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'B': - case 'b': goto yy160; - default: goto yy52; + case 'b': goto yy174; + default: goto yy54; } -yy116: +yy128: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy162; - default: goto yy52; + case 'n': goto yy176; + default: goto yy54; } -yy117: +yy129: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'X': - case 'x': goto yy163; - default: goto yy52; + case 'x': goto yy177; + default: goto yy54; } -yy118: +yy130: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy164; - default: goto yy52; + case 'l': goto yy178; + default: goto yy54; } -yy119: +yy131: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'J': - case 'j': goto yy165; - default: goto yy52; + case 'j': goto yy179; + default: goto yy54; } -yy120: +yy132: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy166; - default: goto yy52; + case 't': goto yy180; + default: goto yy54; } -yy121: +yy133: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy167; - default: goto yy52; + case 't': goto yy181; + default: goto yy54; } -yy122: +yy134: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy168; - default: goto yy52; + case 't': goto yy182; + default: goto yy54; } -yy123: +yy135: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy170; - default: goto yy52; + case 'o': goto yy184; + default: goto yy54; } -yy124: +yy136: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'G': - case 'g': goto yy171; - default: goto yy52; + case 'g': goto yy185; + default: goto yy54; } -yy125: +yy137: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy172; + case 'a': goto yy186; case 'R': - case 'r': goto yy173; - default: goto yy52; + case 'r': goto yy187; + default: goto yy54; } -yy126: +yy138: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'M': - case 'm': goto yy174; - default: goto yy52; + case 'm': goto yy188; + default: goto yy54; } -yy127: +yy139: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy175; - default: goto yy52; + case '_': goto yy189; + default: goto yy54; } -yy128: +yy140: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'U': - case 'u': goto yy176; - default: goto yy52; + case 'u': goto yy190; + default: goto yy54; } -yy129: +yy141: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'P': - case 'p': goto yy177; - default: goto yy52; + case 'p': goto yy191; + default: goto yy54; } -yy130: +yy142: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy178; - default: goto yy52; + case 'n': goto yy192; + default: goto yy54; } -yy131: +yy143: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy179; + case 'i': goto yy193; case 'S': - case 's': goto yy180; - default: goto yy52; + case 's': goto yy194; + default: goto yy54; } -yy132: +yy144: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy181; - default: goto yy52; + case 'i': goto yy195; + default: goto yy54; } -yy133: +yy145: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy182; - default: goto yy52; + case 'a': goto yy196; + default: goto yy54; } -yy134: +yy146: yyaccept = 6; P->mrk = ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; @@ -1562,25 +1617,30 @@ yy134: case 'w': case 'x': case 'y': - case 'z': goto yy134; - case '\\': goto yy102; - default: goto yy136; + case 'z': goto yy146; + case '\\': goto yy114; + default: goto yy148; } -yy136: -#line 333 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy148: +#line 341 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_NSNAME);} -#line 1573 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy137: +#line 1628 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy149: ++P->cur; -#line 335 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 261 "/home/mike/src/php-master/ext/psi/src/parser.re" + {RETURN(PSI_T_OR);} +#line 1633 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy151: + ++P->cur; +#line 343 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_QUOTED_STRING);} -#line 1578 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy139: +#line 1638 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy153: ++P->cur; -#line 271 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 279 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_ELLIPSIS);} -#line 1583 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy141: +#line 1643 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy155: yych = *++P->cur; switch (yych) { case '0': @@ -1592,10 +1652,10 @@ yy141: case '6': case '7': case '8': - case '9': goto yy142; - default: goto yy90; + case '9': goto yy156; + default: goto yy96; } -yy142: +yy156: ++P->cur; if (P->lim <= P->cur) { if (!psi_parser_fill(P,1)) RETURN(PSI_T_EOF); }; yych = *P->cur; @@ -1609,108 +1669,108 @@ yy142: case '6': case '7': case '8': - case '9': goto yy142; + case '9': goto yy156; default: goto yy35; } -yy144: +yy158: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy183; + case 'a': goto yy197; case 'V': - case 'v': goto yy184; - default: goto yy52; + case 'v': goto yy198; + default: goto yy54; } -yy145: +yy159: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy185; - default: goto yy52; + case 'l': goto yy199; + default: goto yy54; } -yy146: +yy160: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy187; - default: goto yy52; + case 'l': goto yy201; + default: goto yy54; } -yy147: +yy161: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy188; - default: goto yy52; + case 'r': goto yy202; + default: goto yy54; } -yy148: +yy162: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'S': - case 's': goto yy190; - default: goto yy52; + case 's': goto yy204; + default: goto yy54; } -yy149: +yy163: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy191; - default: goto yy52; + case 'n': goto yy205; + default: goto yy54; } -yy150: +yy164: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'B': - case 'b': goto yy192; - default: goto yy52; + case 'b': goto yy206; + default: goto yy54; } -yy151: +yy165: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'M': - case 'm': goto yy193; - default: goto yy52; + case 'm': goto yy207; + default: goto yy54; } -yy152: +yy166: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'S': - case 's': goto yy195; - default: goto yy52; + case 's': goto yy209; + default: goto yy54; } -yy153: +yy167: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy196; - default: goto yy52; + case 'a': goto yy210; + default: goto yy54; } -yy154: +yy168: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy197; - default: goto yy52; + case 'e': goto yy211; + default: goto yy54; } -yy155: +yy169: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy199; - default: goto yy52; + case 'c': goto yy213; + default: goto yy54; } -yy156: +yy170: yyaccept = 7; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -1770,21 +1830,21 @@ yy156: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '1': goto yy200; - case '3': goto yy201; - case '6': goto yy202; - case '8': goto yy203; + case 'z': goto yy53; + case '1': goto yy214; + case '3': goto yy215; + case '6': goto yy216; + case '8': goto yy217; case 'V': - case 'v': goto yy204; - case '\\': goto yy102; - default: goto yy157; + case 'v': goto yy218; + case '\\': goto yy114; + default: goto yy171; } -yy157: -#line 283 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy171: +#line 291 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_INT);} -#line 1787 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy158: +#line 1847 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy172: yyaccept = 8; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -1850,15 +1910,15 @@ yy158: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy159; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy173; } -yy159: -#line 309 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy173: +#line 317 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LET);} -#line 1861 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy160: +#line 1921 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy174: yyaccept = 9; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -1924,65 +1984,65 @@ yy160: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy161; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy175; } -yy161: -#line 308 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy175: +#line 316 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LIB);} -#line 1935 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy162: +#line 1995 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy176: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'G': - case 'g': goto yy205; - default: goto yy52; + case 'g': goto yy219; + default: goto yy54; } -yy163: +yy177: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy207; - default: goto yy52; + case 'e': goto yy221; + default: goto yy54; } -yy164: +yy178: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy208; - default: goto yy52; + case 'l': goto yy222; + default: goto yy54; } -yy165: +yy179: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy210; + case 'e': goto yy224; case 'V': - case 'v': goto yy211; - default: goto yy52; + case 'v': goto yy225; + default: goto yy54; } -yy166: +yy180: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'H': - case 'h': goto yy212; - default: goto yy52; + case 'h': goto yy226; + default: goto yy54; } -yy167: +yy181: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'U': - case 'u': goto yy213; - default: goto yy52; + case 'u': goto yy227; + default: goto yy54; } -yy168: +yy182: yyaccept = 10; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2048,151 +2108,151 @@ yy168: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy169; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy183; } -yy169: -#line 310 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy183: +#line 318 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_SET);} -#line 2059 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy170: +#line 2119 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy184: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy214; - default: goto yy52; + case 'r': goto yy228; + default: goto yy54; } -yy171: +yy185: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy215; - default: goto yy52; + case 'n': goto yy229; + default: goto yy54; } -yy172: +yy186: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy216; - default: goto yy52; + case 't': goto yy230; + default: goto yy54; } -yy173: +yy187: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy217; + case 'i': goto yy231; case 'L': - case 'l': goto yy218; + case 'l': goto yy232; case 'U': - case 'u': goto yy219; + case 'u': goto yy233; case 'V': - case 'v': goto yy220; - default: goto yy52; + case 'v': goto yy234; + default: goto yy54; } -yy174: +yy188: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'P': - case 'p': goto yy221; - default: goto yy52; + case 'p': goto yy235; + default: goto yy54; } -yy175: +yy189: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy223; + case 'a': goto yy237; case 'B': - case 'b': goto yy224; + case 'b': goto yy238; case 'F': - case 'f': goto yy225; + case 'f': goto yy239; case 'I': - case 'i': goto yy226; + case 'i': goto yy240; case 'O': - case 'o': goto yy227; + case 'o': goto yy241; case 'S': - case 's': goto yy228; - default: goto yy52; + case 's': goto yy242; + default: goto yy54; } -yy176: +yy190: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy229; - default: goto yy52; + case 'e': goto yy243; + default: goto yy54; } -yy177: +yy191: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy231; - default: goto yy52; + case 'e': goto yy245; + default: goto yy54; } -yy178: +yy192: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy232; - default: goto yy52; + case 't': goto yy246; + default: goto yy54; } -yy179: +yy193: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy233; - default: goto yy52; + case 'o': goto yy247; + default: goto yy54; } -yy180: +yy194: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy234; - default: goto yy52; + case 'i': goto yy248; + default: goto yy54; } -yy181: +yy195: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'D': - case 'd': goto yy235; - default: goto yy52; + case 'd': goto yy249; + default: goto yy54; } -yy182: +yy196: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy237; - default: goto yy52; + case 'l': goto yy251; + default: goto yy54; } -yy183: +yy197: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'Y': - case 'y': goto yy239; - default: goto yy52; + case 'y': goto yy253; + default: goto yy54; } -yy184: +yy198: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy241; - default: goto yy52; + case 'a': goto yy255; + default: goto yy54; } -yy185: +yy199: yyaccept = 11; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2256,29 +2316,29 @@ yy185: case 'w': case 'x': case 'y': - case 'z': goto yy51; + case 'z': goto yy53; case 'V': - case 'v': goto yy242; - case '\\': goto yy102; - default: goto yy186; + case 'v': goto yy256; + case '\\': goto yy114; + default: goto yy200; } -yy186: -#line 280 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy200: +#line 288 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_BOOL);} -#line 2269 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy187: +#line 2329 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy201: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy243; + case 'a': goto yy257; case 'B': - case 'b': goto yy244; + case 'b': goto yy258; case 'O': - case 'o': goto yy245; - default: goto yy52; + case 'o': goto yy259; + default: goto yy54; } -yy188: +yy202: yyaccept = 12; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2344,39 +2404,39 @@ yy188: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy189; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy203; } -yy189: -#line 281 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy203: +#line 289 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_CHAR);} -#line 2355 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy190: +#line 2415 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy204: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy246; - default: goto yy52; + case 't': goto yy260; + default: goto yy54; } -yy191: +yy205: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy248; - default: goto yy52; + case 't': goto yy262; + default: goto yy54; } -yy192: +yy206: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy250; - default: goto yy52; + case 'l': goto yy264; + default: goto yy54; } -yy193: +yy207: yyaccept = 13; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2442,31 +2502,31 @@ yy193: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy194; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy208; } -yy194: -#line 306 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy208: +#line 314 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_ENUM);} -#line 2453 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy195: +#line 2513 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy209: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy251; - default: goto yy52; + case 'e': goto yy265; + default: goto yy54; } -yy196: +yy210: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy253; - default: goto yy52; + case 't': goto yy267; + default: goto yy54; } -yy197: +yy211: yyaccept = 14; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2532,59 +2592,59 @@ yy197: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy198; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy212; } -yy198: -#line 312 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy212: +#line 320 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_FREE);} -#line 2543 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy199: +#line 2603 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy213: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy255; - default: goto yy52; + case 't': goto yy269; + default: goto yy54; } -yy200: +yy214: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '6': goto yy256; - default: goto yy52; + case '6': goto yy270; + default: goto yy54; } -yy201: +yy215: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '2': goto yy257; - default: goto yy52; + case '2': goto yy271; + default: goto yy54; } -yy202: +yy216: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '4': goto yy258; - default: goto yy52; + case '4': goto yy272; + default: goto yy54; } -yy203: +yy217: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy259; - default: goto yy52; + case '_': goto yy273; + default: goto yy54; } -yy204: +yy218: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy260; - default: goto yy52; + case 'a': goto yy274; + default: goto yy54; } -yy205: +yy219: yyaccept = 15; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2650,23 +2710,23 @@ yy205: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy206; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy220; } -yy206: -#line 284 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy220: +#line 292 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_LONG);} -#line 2661 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy207: +#line 2721 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy221: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'D': - case 'd': goto yy261; - default: goto yy52; + case 'd': goto yy275; + default: goto yy54; } -yy208: +yy222: yyaccept = 16; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2732,103 +2792,103 @@ yy208: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy209; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy223; } -yy209: -#line 276 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy223: +#line 284 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_NULL);} -#line 2743 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy210: +#line 2803 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy224: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy263; - default: goto yy52; + case 'c': goto yy277; + default: goto yy54; } -yy211: +yy225: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy264; - default: goto yy52; + case 'a': goto yy278; + default: goto yy54; } -yy212: +yy226: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'V': - case 'v': goto yy265; - default: goto yy52; + case 'v': goto yy279; + default: goto yy54; } -yy213: +yy227: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy266; - default: goto yy52; + case 'r': goto yy280; + default: goto yy54; } -yy214: +yy228: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy267; - default: goto yy52; + case 't': goto yy281; + default: goto yy54; } -yy215: +yy229: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy269; - default: goto yy52; + case 'e': goto yy283; + default: goto yy54; } -yy216: +yy230: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy270; - default: goto yy52; + case 'i': goto yy284; + default: goto yy54; } -yy217: +yy231: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy271; - default: goto yy52; + case 'n': goto yy285; + default: goto yy54; } -yy218: +yy232: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy272; - default: goto yy52; + case 'e': goto yy286; + default: goto yy54; } -yy219: +yy233: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy273; - default: goto yy52; + case 'c': goto yy287; + default: goto yy54; } -yy220: +yy234: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy274; - default: goto yy52; + case 'a': goto yy288; + default: goto yy54; } -yy221: +yy235: yyaccept = 17; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -2894,63 +2954,63 @@ yy221: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy222; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy236; } -yy222: -#line 313 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy236: +#line 321 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TEMP);} -#line 2905 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy223: +#line 2965 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy237: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy275; - default: goto yy52; + case 'r': goto yy289; + default: goto yy54; } -yy224: +yy238: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy276; - default: goto yy52; + case 'o': goto yy290; + default: goto yy54; } -yy225: +yy239: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy277; - default: goto yy52; + case 'l': goto yy291; + default: goto yy54; } -yy226: +yy240: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy278; - default: goto yy52; + case 'n': goto yy292; + default: goto yy54; } -yy227: +yy241: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'B': - case 'b': goto yy279; - default: goto yy52; + case 'b': goto yy293; + default: goto yy54; } -yy228: +yy242: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy280; - default: goto yy52; + case 't': goto yy294; + default: goto yy54; } -yy229: +yy243: yyaccept = 18; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3016,49 +3076,49 @@ yy229: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy230; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy244; } -yy230: -#line 274 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy244: +#line 282 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TRUE);} -#line 3027 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy231: +#line 3087 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy245: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'D': - case 'd': goto yy281; - default: goto yy52; + case 'd': goto yy295; + default: goto yy54; } -yy232: +yy246: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '1': goto yy282; - case '3': goto yy283; - case '6': goto yy284; - case '8': goto yy285; - default: goto yy52; + case '1': goto yy296; + case '3': goto yy297; + case '6': goto yy298; + case '8': goto yy299; + default: goto yy54; } -yy233: +yy247: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy286; - default: goto yy52; + case 'n': goto yy300; + default: goto yy54; } -yy234: +yy248: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'G': - case 'g': goto yy288; - default: goto yy52; + case 'g': goto yy302; + default: goto yy54; } -yy235: +yy249: yyaccept = 19; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3124,15 +3184,15 @@ yy235: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy236; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy250; } -yy236: -#line 279 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy250: +#line 287 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_VOID);} -#line 3135 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy237: +#line 3195 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy251: yyaccept = 20; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3198,15 +3258,15 @@ yy237: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy238; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy252; } -yy238: -#line 322 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy252: +#line 330 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_ZVAL);} -#line 3209 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy239: +#line 3269 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy253: yyaccept = 21; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3272,55 +3332,55 @@ yy239: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy240; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy254; } -yy240: -#line 298 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy254: +#line 306 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_ARRAY);} -#line 3283 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy241: +#line 3343 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy255: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy289; - default: goto yy52; + case 'l': goto yy303; + default: goto yy54; } -yy242: +yy256: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy291; - default: goto yy52; + case 'a': goto yy305; + default: goto yy54; } -yy243: +yy257: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'B': - case 'b': goto yy292; - default: goto yy52; + case 'b': goto yy306; + default: goto yy54; } -yy244: +yy258: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy293; - default: goto yy52; + case 'a': goto yy307; + default: goto yy54; } -yy245: +yy259: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy294; - default: goto yy52; + case 'c': goto yy308; + default: goto yy54; } -yy246: +yy260: yyaccept = 22; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3386,15 +3446,15 @@ yy246: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy247; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy261; } -yy247: -#line 307 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy261: +#line 315 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_CONST);} -#line 3397 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy248: +#line 3457 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy262: yyaccept = 23; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3460,23 +3520,23 @@ yy248: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy249; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy263; } -yy249: -#line 323 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy263: +#line 331 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_COUNT);} -#line 3471 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy250: +#line 3531 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy264: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy296; - default: goto yy52; + case 'e': goto yy310; + default: goto yy54; } -yy251: +yy265: yyaccept = 24; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3542,15 +3602,15 @@ yy251: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy252; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy266; } -yy252: -#line 275 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy266: +#line 283 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_FALSE);} -#line 3553 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy253: +#line 3613 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy267: yyaccept = 25; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3614,62 +3674,62 @@ yy253: case 'w': case 'x': case 'y': - case 'z': goto yy51; + case 'z': goto yy53; case 'V': - case 'v': goto yy298; - case '\\': goto yy102; - default: goto yy254; + case 'v': goto yy312; + case '\\': goto yy114; + default: goto yy268; } -yy254: -#line 285 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy268: +#line 293 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_FLOAT);} -#line 3627 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy255: +#line 3687 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy269: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy299; - default: goto yy52; + case 'i': goto yy313; + default: goto yy54; } -yy256: +yy270: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy300; - default: goto yy52; + case '_': goto yy314; + default: goto yy54; } -yy257: +yy271: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy301; - default: goto yy52; + case '_': goto yy315; + default: goto yy54; } -yy258: +yy272: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy302; - default: goto yy52; + case '_': goto yy316; + default: goto yy54; } -yy259: +yy273: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy303; - default: goto yy52; + case 't': goto yy317; + default: goto yy54; } -yy260: +yy274: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy305; - default: goto yy52; + case 'l': goto yy319; + default: goto yy54; } -yy261: +yy275: yyaccept = 26; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3735,47 +3795,47 @@ yy261: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy262; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy276; } -yy262: -#line 277 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy276: +#line 285 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_MIXED);} -#line 3746 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy263: +#line 3806 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy277: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy307; - default: goto yy52; + case 't': goto yy321; + default: goto yy54; } -yy264: +yy278: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy309; - default: goto yy52; + case 'l': goto yy323; + default: goto yy54; } -yy265: +yy279: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy311; - default: goto yy52; + case 'a': goto yy325; + default: goto yy54; } -yy266: +yy280: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy312; - default: goto yy52; + case 'n': goto yy326; + default: goto yy54; } -yy267: +yy281: yyaccept = 27; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -3841,147 +3901,147 @@ yy267: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy268; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy282; } -yy268: -#line 282 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy282: +#line 290 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_SHORT);} -#line 3852 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy269: +#line 3912 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy283: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'D': - case 'd': goto yy314; - default: goto yy52; + case 'd': goto yy328; + default: goto yy54; } -yy270: +yy284: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy316; - default: goto yy52; + case 'c': goto yy330; + default: goto yy54; } -yy271: +yy285: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'G': - case 'g': goto yy318; - default: goto yy52; + case 'g': goto yy332; + default: goto yy54; } -yy272: +yy286: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy320; - default: goto yy52; + case 'n': goto yy334; + default: goto yy54; } -yy273: +yy287: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy322; - default: goto yy52; + case 't': goto yy336; + default: goto yy54; } -yy274: +yy288: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy324; - default: goto yy52; + case 'l': goto yy338; + default: goto yy54; } -yy275: +yy289: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy326; - default: goto yy52; + case 'r': goto yy340; + default: goto yy54; } -yy276: +yy290: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy327; - default: goto yy52; + case 'o': goto yy341; + default: goto yy54; } -yy277: +yy291: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy328; - default: goto yy52; + case 'o': goto yy342; + default: goto yy54; } -yy278: +yy292: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy329; - default: goto yy52; + case 't': goto yy343; + default: goto yy54; } -yy279: +yy293: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'J': - case 'j': goto yy331; - default: goto yy52; + case 'j': goto yy345; + default: goto yy54; } -yy280: +yy294: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'R': - case 'r': goto yy332; - default: goto yy52; + case 'r': goto yy346; + default: goto yy54; } -yy281: +yy295: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy333; - default: goto yy52; + case 'e': goto yy347; + default: goto yy54; } -yy282: +yy296: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '6': goto yy334; - default: goto yy52; + case '6': goto yy348; + default: goto yy54; } -yy283: +yy297: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '2': goto yy335; - default: goto yy52; + case '2': goto yy349; + default: goto yy54; } -yy284: +yy298: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '4': goto yy336; - default: goto yy52; + case '4': goto yy350; + default: goto yy54; } -yy285: +yy299: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy337; - default: goto yy52; + case '_': goto yy351; + default: goto yy54; } -yy286: +yy300: yyaccept = 28; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4047,23 +4107,23 @@ yy286: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy287; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy301; } -yy287: -#line 305 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy301: +#line 313 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_UNION);} -#line 4058 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy288: +#line 4118 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy302: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy338; - default: goto yy52; + case 'n': goto yy352; + default: goto yy54; } -yy289: +yy303: yyaccept = 29; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4129,39 +4189,39 @@ yy289: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy290; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy304; } -yy290: -#line 320 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy304: +#line 328 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_ARRVAL);} -#line 4140 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy291: +#line 4200 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy305: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy339; - default: goto yy52; + case 'l': goto yy353; + default: goto yy54; } -yy292: +yy306: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy341; - default: goto yy52; + case 'l': goto yy355; + default: goto yy54; } -yy293: +yy307: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy342; - default: goto yy52; + case 'c': goto yy356; + default: goto yy54; } -yy294: +yy308: yyaccept = 30; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4227,15 +4287,15 @@ yy294: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy295; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy309; } -yy295: -#line 324 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy309: +#line 332 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_CALLOC);} -#line 4238 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy296: +#line 4298 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy310: yyaccept = 31; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4301,55 +4361,55 @@ yy296: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy297; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy311; } -yy297: -#line 286 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy311: +#line 294 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_DOUBLE);} -#line 4312 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy298: +#line 4372 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy312: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy343; - default: goto yy52; + case 'a': goto yy357; + default: goto yy54; } -yy299: +yy313: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'O': - case 'o': goto yy344; - default: goto yy52; + case 'o': goto yy358; + default: goto yy54; } -yy300: +yy314: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy345; - default: goto yy52; + case 't': goto yy359; + default: goto yy54; } -yy301: +yy315: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy347; - default: goto yy52; + case 't': goto yy361; + default: goto yy54; } -yy302: +yy316: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy349; - default: goto yy52; + case 't': goto yy363; + default: goto yy54; } -yy303: +yy317: yyaccept = 32; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4415,15 +4475,15 @@ yy303: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy304; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy318; } -yy304: -#line 287 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy318: +#line 295 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_INT8);} -#line 4426 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy305: +#line 4486 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy319: yyaccept = 33; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4489,15 +4549,15 @@ yy305: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy306; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy320; } -yy306: -#line 317 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy320: +#line 325 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_INTVAL);} -#line 4500 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy307: +#line 4560 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy321: yyaccept = 34; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4563,15 +4623,15 @@ yy307: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy308; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy322; } -yy308: -#line 299 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy322: +#line 307 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_OBJECT);} -#line 4574 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy309: +#line 4634 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy323: yyaccept = 35; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4637,23 +4697,23 @@ yy309: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy310; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy324; } -yy310: -#line 321 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy324: +#line 329 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_OBJVAL);} -#line 4648 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy311: +#line 4708 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy325: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy351; - default: goto yy52; + case 'l': goto yy365; + default: goto yy54; } -yy312: +yy326: yyaccept = 36; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4719,15 +4779,15 @@ yy312: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy313; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy327; } -yy313: -#line 311 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy327: +#line 319 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_RETURN);} -#line 4730 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy314: +#line 4790 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy328: yyaccept = 37; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4793,15 +4853,15 @@ yy314: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy315; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy329; } -yy315: -#line 296 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy329: +#line 304 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_SIGNED);} -#line 4804 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy316: +#line 4864 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy330: yyaccept = 38; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4867,15 +4927,15 @@ yy316: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy317; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy331; } -yy317: -#line 301 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy331: +#line 309 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_STATIC);} -#line 4878 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy318: +#line 4938 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy332: yyaccept = 39; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -4941,15 +5001,15 @@ yy318: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy319; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy333; } -yy319: -#line 297 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy333: +#line 305 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_STRING);} -#line 4952 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy320: +#line 5012 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy334: yyaccept = 40; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5015,15 +5075,15 @@ yy320: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy321; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy335; } -yy321: -#line 314 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy335: +#line 322 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_STRLEN);} -#line 5026 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy322: +#line 5086 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy336: yyaccept = 41; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5089,15 +5149,15 @@ yy322: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy323; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy337; } -yy323: -#line 304 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy337: +#line 312 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_STRUCT);} -#line 5100 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy324: +#line 5160 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy338: yyaccept = 42; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5163,39 +5223,39 @@ yy324: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy325; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy339; } -yy325: -#line 315 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy339: +#line 323 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_STRVAL);} -#line 5174 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy326: +#line 5234 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy340: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy353; - default: goto yy52; + case 'a': goto yy367; + default: goto yy54; } -yy327: +yy341: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy354; - default: goto yy52; + case 'l': goto yy368; + default: goto yy54; } -yy328: +yy342: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'A': - case 'a': goto yy356; - default: goto yy52; + case 'a': goto yy370; + default: goto yy54; } -yy329: +yy343: yyaccept = 43; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5261,76 +5321,76 @@ yy329: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy330; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy344; } -yy330: -#line 328 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy344: +#line 336 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TO_INT);} -#line 5272 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy331: +#line 5332 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy345: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy357; - default: goto yy52; + case 'e': goto yy371; + default: goto yy54; } -yy332: +yy346: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'I': - case 'i': goto yy358; - default: goto yy52; + case 'i': goto yy372; + default: goto yy54; } -yy333: +yy347: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'F': - case 'f': goto yy359; - default: goto yy52; + case 'f': goto yy373; + default: goto yy54; } -yy334: +yy348: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy361; - default: goto yy52; + case '_': goto yy375; + default: goto yy54; } -yy335: +yy349: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy362; - default: goto yy52; + case '_': goto yy376; + default: goto yy54; } -yy336: +yy350: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { - case '_': goto yy363; - default: goto yy52; + case '_': goto yy377; + default: goto yy54; } -yy337: +yy351: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy364; - default: goto yy52; + case 't': goto yy378; + default: goto yy54; } -yy338: +yy352: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy366; - default: goto yy52; + case 'e': goto yy380; + default: goto yy54; } -yy339: +yy353: yyaccept = 44; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5396,47 +5456,47 @@ yy339: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy340; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy354; } -yy340: -#line 319 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy354: +#line 327 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_BOOLVAL);} -#line 5407 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy341: +#line 5467 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy355: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'E': - case 'e': goto yy367; - default: goto yy52; + case 'e': goto yy381; + default: goto yy54; } -yy342: +yy356: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'K': - case 'k': goto yy369; - default: goto yy52; + case 'k': goto yy383; + default: goto yy54; } -yy343: +yy357: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'L': - case 'l': goto yy371; - default: goto yy52; + case 'l': goto yy385; + default: goto yy54; } -yy344: +yy358: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy373; - default: goto yy52; + case 'n': goto yy387; + default: goto yy54; } -yy345: +yy359: yyaccept = 45; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5502,15 +5562,15 @@ yy345: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy346; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy360; } -yy346: -#line 289 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy360: +#line 297 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_INT16);} -#line 5513 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy347: +#line 5573 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy361: yyaccept = 46; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5576,15 +5636,15 @@ yy347: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy348; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy362; } -yy348: -#line 291 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy362: +#line 299 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_INT32);} -#line 5587 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy349: +#line 5647 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy363: yyaccept = 47; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5650,15 +5710,15 @@ yy349: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy350; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy364; } -yy350: -#line 293 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy364: +#line 301 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_INT64);} -#line 5661 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy351: +#line 5721 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy365: yyaccept = 48; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5724,23 +5784,23 @@ yy351: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy352; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy366; } -yy352: -#line 316 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy366: +#line 324 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_PATHVAL);} -#line 5735 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy353: +#line 5795 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy367: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'Y': - case 'y': goto yy375; - default: goto yy52; + case 'y': goto yy389; + default: goto yy54; } -yy354: +yy368: yyaccept = 49; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5806,39 +5866,39 @@ yy354: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy355; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy369; } -yy355: -#line 330 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy369: +#line 338 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TO_BOOL);} -#line 5817 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy356: +#line 5877 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy370: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy377; - default: goto yy52; + case 't': goto yy391; + default: goto yy54; } -yy357: +yy371: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'C': - case 'c': goto yy379; - default: goto yy52; + case 'c': goto yy393; + default: goto yy54; } -yy358: +yy372: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'N': - case 'n': goto yy380; - default: goto yy52; + case 'n': goto yy394; + default: goto yy54; } -yy359: +yy373: yyaccept = 50; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -5904,39 +5964,39 @@ yy359: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy360; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy374; } -yy360: -#line 303 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy374: +#line 311 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TYPEDEF);} -#line 5915 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy361: +#line 5975 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy375: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy381; - default: goto yy52; + case 't': goto yy395; + default: goto yy54; } -yy362: +yy376: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy383; - default: goto yy52; + case 't': goto yy397; + default: goto yy54; } -yy363: +yy377: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy385; - default: goto yy52; + case 't': goto yy399; + default: goto yy54; } -yy364: +yy378: yyaccept = 51; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6002,23 +6062,23 @@ yy364: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy365; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy379; } -yy365: -#line 288 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy379: +#line 296 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_UINT8);} -#line 6013 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy366: +#line 6073 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy380: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'D': - case 'd': goto yy387; - default: goto yy52; + case 'd': goto yy401; + default: goto yy54; } -yy367: +yy381: yyaccept = 52; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6084,15 +6144,15 @@ yy367: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy368; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy382; } -yy368: -#line 278 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy382: +#line 286 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_CALLABLE);} -#line 6095 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy369: +#line 6155 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy383: yyaccept = 53; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6158,15 +6218,15 @@ yy369: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy370; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy384; } -yy370: -#line 300 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy384: +#line 308 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_CALLBACK);} -#line 6169 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy371: +#line 6229 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy385: yyaccept = 54; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6232,15 +6292,15 @@ yy371: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy372; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy386; } -yy372: -#line 318 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy386: +#line 326 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_FLOATVAL);} -#line 6243 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy373: +#line 6303 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy387: yyaccept = 55; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6306,15 +6366,15 @@ yy373: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy374; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy388; } -yy374: -#line 302 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy388: +#line 310 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_FUNCTION);} -#line 6317 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy375: +#line 6377 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy389: yyaccept = 56; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6380,15 +6440,15 @@ yy375: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy376; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy390; } -yy376: -#line 326 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy390: +#line 334 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TO_ARRAY);} -#line 6391 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy377: +#line 6451 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy391: yyaccept = 57; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6454,31 +6514,31 @@ yy377: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy378; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy392; } -yy378: -#line 329 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy392: +#line 337 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TO_FLOAT);} -#line 6465 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy379: +#line 6525 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy393: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'T': - case 't': goto yy389; - default: goto yy52; + case 't': goto yy403; + default: goto yy54; } -yy380: +yy394: yyaccept = 5; yych = *(P->mrk = ++P->cur); switch (yych) { case 'G': - case 'g': goto yy391; - default: goto yy52; + case 'g': goto yy405; + default: goto yy54; } -yy381: +yy395: yyaccept = 58; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6544,15 +6604,15 @@ yy381: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy382; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy396; } -yy382: -#line 290 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy396: +#line 298 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_UINT16);} -#line 6555 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy383: +#line 6615 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy397: yyaccept = 59; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6618,15 +6678,15 @@ yy383: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy384; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy398; } -yy384: -#line 292 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy398: +#line 300 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_UINT32);} -#line 6629 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy385: +#line 6689 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy399: yyaccept = 60; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6692,15 +6752,15 @@ yy385: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy386; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy400; } -yy386: -#line 294 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy400: +#line 302 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_UINT64);} -#line 6703 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy387: +#line 6763 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy401: yyaccept = 61; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6766,15 +6826,15 @@ yy387: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy388; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy402; } -yy388: -#line 295 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy402: +#line 303 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_UNSIGNED);} -#line 6777 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy389: +#line 6837 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy403: yyaccept = 62; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6840,15 +6900,15 @@ yy389: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy390; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy404; } -yy390: -#line 325 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy404: +#line 333 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TO_OBJECT);} -#line 6851 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy391: +#line 6911 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy405: yyaccept = 63; yych = *(P->mrk = ++P->cur); switch (yych) { @@ -6914,55 +6974,55 @@ yy391: case 'w': case 'x': case 'y': - case 'z': goto yy51; - case '\\': goto yy102; - default: goto yy392; + case 'z': goto yy53; + case '\\': goto yy114; + default: goto yy406; } -yy392: -#line 327 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy406: +#line 335 "/home/mike/src/php-master/ext/psi/src/parser.re" {RETURN(PSI_T_TO_STRING);} -#line 6925 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 6985 "/home/mike/src/php-master/ext/psi/src/parser.c" } -#line 337 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 345 "/home/mike/src/php-master/ext/psi/src/parser.re" comment: P->tok = P->cur; -#line 6933 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 6993 "/home/mike/src/php-master/ext/psi/src/parser.c" { unsigned char yych; if ((P->lim - P->cur) < 2) { if (!psi_parser_fill(P,2)) RETURN(PSI_T_EOF); }; yych = *P->cur; switch (yych) { - case '\n': goto yy397; - case '*': goto yy399; - default: goto yy395; + case '\n': goto yy411; + case '*': goto yy413; + default: goto yy409; } -yy395: +yy409: ++P->cur; -yy396: -#line 344 "/home/mike/src/php-master/ext/psi/src/parser.re" +yy410: +#line 352 "/home/mike/src/php-master/ext/psi/src/parser.re" { goto comment; } -#line 6948 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy397: +#line 7008 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy411: ++P->cur; -#line 342 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 350 "/home/mike/src/php-master/ext/psi/src/parser.re" { NEWLINE(comment); } -#line 6953 "/home/mike/src/php-master/ext/psi/src/parser.c" -yy399: +#line 7013 "/home/mike/src/php-master/ext/psi/src/parser.c" +yy413: yych = *++P->cur; switch (yych) { - case '/': goto yy400; - default: goto yy396; + case '/': goto yy414; + default: goto yy410; } -yy400: +yy414: ++P->cur; -#line 343 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 351 "/home/mike/src/php-master/ext/psi/src/parser.re" { continue; } -#line 6964 "/home/mike/src/php-master/ext/psi/src/parser.c" +#line 7024 "/home/mike/src/php-master/ext/psi/src/parser.c" } -#line 345 "/home/mike/src/php-master/ext/psi/src/parser.re" +#line 353 "/home/mike/src/php-master/ext/psi/src/parser.re" } return -1; diff --git a/src/parser.re b/src/parser.re index b56385d..1b2aae7 100644 --- a/src/parser.re +++ b/src/parser.re @@ -255,6 +255,10 @@ token_t psi_parser_scan(struct psi_parser *P) "}" {RETURN(PSI_T_RBRACE);} "[" {RETURN(PSI_T_LBRACKET);} "]" {RETURN(PSI_T_RBRACKET);} + "!=" {RETURN(PSI_T_CMP_NE);} + "==" {RETURN(PSI_T_CMP_EQ);} + "&&" {RETURN(PSI_T_AND);} + "||" {RETURN(PSI_T_OR);} "=" {RETURN(PSI_T_EQUALS);} "*" {RETURN(PSI_T_ASTERISK);} "~" {RETURN(PSI_T_TILDE);} @@ -268,6 +272,10 @@ token_t psi_parser_scan(struct psi_parser *P) "^" {RETURN(PSI_T_CARET);} "<<" {RETURN(PSI_T_LSHIFT);} ">>" {RETURN(PSI_T_RSHIFT);} + "<=" {RETURN(PSI_T_CMP_LE);} + ">=" {RETURN(PSI_T_CMP_GE);} + "<" {RETURN(PSI_T_LCHEVR);} + ">" {RETURN(PSI_T_RCHEVR);} "..." {RETURN(PSI_T_ELLIPSIS);} [\r\n] { NEWLINE(nextline); } [\t ]+ { continue; } diff --git a/src/parser_def.h b/src/parser_def.h index ab0ba73..b299c19 100644 --- a/src/parser_def.h +++ b/src/parser_def.h @@ -89,17 +89,20 @@ TOKEN_CLASS(const_type, T(BOOL) T(INT) T(FLOAT) T(STRING)) TOKEN_CLASS(decl_type, T(FLOAT) T(DOUBLE) T(INT8) T(UINT8) T(INT16) T(UINT16) T(INT32) T(UINT32) T(INT64) T(UINT64) T(NAME)) TOKEN_CLASS(impl_def_val, T(NULL) T(NUMBER) T(TRUE) T(FALSE) T(QUOTED_STRING)) TOKEN_CLASS(number, T(NUMBER) T(NSNAME)) -TOKEN_CLASS(num_exp_binary_op, T(PIPE) T(CARET) T(AMPERSAND) T(LSHIFT) T(RSHIFT) T(PLUS) T(MINUS) T(ASTERISK) T(SLASH) T(MODULO)) -TOKEN_CLASS(num_exp_unary_op, T(TILDE) T(NOT) T(PLUS) T(MINUS)) +TOKEN_CLASS(binary_op, T(PIPE) T(CARET) T(AMPERSAND) T(LSHIFT) T(RSHIFT) T(PLUS) T(MINUS) T(ASTERISK) T(SLASH) T(MODULO) T(RCHEVR) T(LCHEVR) T(CMP_GE) T(CMP_LE) T(OR) T(AND) T(CMP_EQ) T(CMP_NE)) +TOKEN_CLASS(unary_op, T(TILDE) T(NOT) T(PLUS) T(MINUS)) TOKEN_CLASS(let_func, T(ZVAL) T(OBJVAL) T(ARRVAL) T(PATHVAL) T(STRLEN) T(STRVAL) T(FLOATVAL) T(INTVAL) T(BOOLVAL) T(COUNT)) TOKEN_CLASS(set_func, T(TO_OBJECT) T(TO_ARRAY) T(TO_STRING) T(TO_INT) T(TO_FLOAT) T(TO_BOOL) T(ZVAL) T(VOID)) TOKEN_CLASS(impl_type, T(VOID) T(MIXED) T(BOOL) T(INT) T(FLOAT) T(STRING) T(ARRAY) T(OBJECT) T(CALLABLE)) DEF(%nonassoc, NAME.) DEF(%right, NOT TILDE.) +DEF(%left, AND OR.) DEF(%left, PIPE.) DEF(%left, CARET.) DEF(%left, AMPERSAND.) +DEF(%left, CMP_EQ CMP_NE.) +DEF(%left, LCHEVR CMP_LE RCHEVR CMP_GE.) DEF(%left, LSHIFT RSHIFT.) DEF(%left, PLUS MINUS.) DEF(%left, ASTERISK SLASH MODULO.) @@ -1426,7 +1429,7 @@ PARSE_TYPED(number, exp, } /* - * num_exp: decl_var + * number: decl_var */ PARSE_TYPED(number, exp, TYPED(decl_var, var)) { @@ -1435,7 +1438,7 @@ PARSE_TYPED(number, exp, } /* - * num_exp: num_exp + * num_exp: number */ PARSE_TYPED(num_exp, exp, TYPED(number, num)) { @@ -1455,21 +1458,21 @@ PARSE_TYPED(num_exp, exp, } /* - * num_exp: num_exp num_exp_binary_op_token num_exp + * num_exp: num_exp binary_op_token num_exp */ PARSE_TYPED(num_exp, exp, TYPED(num_exp, lhs_) - NAMED(num_exp_binary_op_token, OP) + NAMED(binary_op_token, OP) TYPED(num_exp, rhs_)) { exp = psi_num_exp_init_binary(OP->type, lhs_, rhs_); exp->token = OP; } /* - * num_exp: num_exp_unary_op_token num_exp + * num_exp: unary_op_token num_exp */ PARSE_TYPED(num_exp, exp, - NAMED(num_exp_unary_op_token, OP) + NAMED(unary_op_token, OP) TYPED(num_exp, exp_)) { exp = psi_num_exp_init_unary(OP->type, exp_); exp->token = OP; diff --git a/src/parser_proc.c b/src/parser_proc.c index 316805e..07478fa 100644 --- a/src/parser_proc.c +++ b/src/parser_proc.c @@ -118,49 +118,49 @@ void psi_parser_proc_free(void **parser_proc) #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char -#define YYNOCODE 159 +#define YYNOCODE 167 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE struct psi_token * typedef union { int yyinit; ParseTOKENTYPE yy0; - struct psi_let_calloc* yy9; - struct psi_decl_var* yy11; - struct psi_let_exp* yy20; - struct psi_set_func* yy26; - struct psi_let_func* yy27; - struct psi_impl_var* yy37; - struct psi_plist * yy43; - struct psi_decl_enum * yy63; - struct psi_token** yy78; - struct psi_return_stmt* yy90; - struct psi_layout yy91; - struct psi_impl_def_val* yy93; - struct psi_free_exp* yy94; - struct psi_impl* yy97; - struct psi_set_stmt* yy98; - struct psi_decl* yy103; - bool yy121; - struct psi_decl_type* yy132; - struct psi_impl_type* yy138; - struct psi_layout* yy141; - struct psi_set_exp* yy147; - struct psi_const* yy154; - struct psi_plist* yy163; - struct psi_impl_func* yy168; - struct psi_const_type* yy171; - struct psi_decl_arg* yy184; - struct psi_number* yy188; - struct psi_free_stmt* yy192; - unsigned yy202; - struct psi_impl_arg* yy210; - struct psi_decl_enum_item* yy217; - struct psi_decl_abi* yy218; - struct psi_let_callback* yy220; - struct psi_num_exp* yy259; - struct psi_decl_union* yy271; - struct psi_decl_struct* yy275; - struct psi_let_stmt* yy311; + struct psi_const_type* yy7; + struct psi_let_calloc* yy17; + struct psi_decl_union* yy19; + struct psi_impl_def_val* yy21; + struct psi_token** yy38; + struct psi_num_exp* yy39; + struct psi_impl* yy49; + struct psi_set_exp* yy67; + struct psi_decl_enum_item* yy69; + struct psi_decl* yy71; + struct psi_let_func* yy72; + struct psi_free_stmt* yy76; + struct psi_set_func* yy78; + struct psi_layout* yy81; + struct psi_const* yy106; + struct psi_impl_func* yy120; + struct psi_return_stmt* yy130; + struct psi_let_stmt* yy139; + struct psi_impl_type* yy142; + struct psi_let_exp* yy144; + struct psi_decl_type* yy152; + struct psi_number* yy160; + struct psi_let_callback* yy164; + struct psi_impl_var* yy185; + unsigned yy190; + struct psi_free_exp* yy197; + struct psi_decl_var* yy207; + struct psi_set_stmt* yy226; + struct psi_impl_arg* yy238; + struct psi_decl_abi* yy242; + struct psi_decl_arg* yy260; + struct psi_decl_struct* yy271; + bool yy273; + struct psi_decl_enum * yy279; + struct psi_plist * yy287; + struct psi_plist* yy303; + struct psi_layout yy323; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 100 @@ -251,244 +251,258 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (960) +#define YY_ACTTAB_COUNT (1024) static const YYACTIONTYPE yy_action[] = { /* 0 */ 394, 409, 93, 409, 409, 409, 409, 409, 409, 409, - /* 10 */ 409, 409, 409, 93, 436, 430, 478, 164, 116, 430, - /* 20 */ 350, 423, 15, 475, 431, 27, 27, 478, 2, 133, - /* 30 */ 27, 27, 148, 148, 148, 148, 148, 148, 148, 148, - /* 40 */ 148, 148, 432, 100, 48, 440, 442, 83, 29, 29, - /* 50 */ 29, 29, 29, 29, 29, 29, 29, 29, 149, 56, - /* 60 */ 478, 422, 107, 122, 28, 155, 90, 89, 88, 365, - /* 70 */ 348, 397, 35, 470, 410, 43, 70, 390, 81, 67, - /* 80 */ 65, 64, 394, 409, 47, 409, 409, 409, 409, 409, - /* 90 */ 409, 409, 409, 409, 409, 39, 49, 11, 10, 60, - /* 100 */ 93, 437, 430, 349, 352, 411, 430, 417, 417, 417, - /* 110 */ 417, 417, 27, 27, 478, 405, 146, 27, 27, 148, - /* 120 */ 148, 148, 148, 148, 148, 148, 148, 148, 148, 83, - /* 130 */ 374, 108, 394, 409, 376, 409, 409, 409, 409, 409, - /* 140 */ 409, 409, 409, 409, 409, 149, 405, 80, 179, 181, - /* 150 */ 180, 28, 193, 182, 35, 425, 153, 376, 427, 390, - /* 160 */ 81, 67, 65, 64, 359, 166, 428, 494, 77, 122, - /* 170 */ 426, 429, 165, 122, 494, 382, 114, 410, 33, 41, - /* 180 */ 410, 43, 394, 409, 431, 409, 409, 409, 409, 409, - /* 190 */ 409, 409, 409, 409, 409, 158, 115, 416, 90, 89, - /* 200 */ 88, 415, 432, 96, 34, 414, 182, 375, 134, 390, - /* 210 */ 81, 67, 65, 64, 194, 87, 85, 178, 405, 136, - /* 220 */ 421, 405, 167, 122, 169, 79, 137, 4, 384, 83, - /* 230 */ 410, 43, 394, 409, 112, 409, 409, 409, 409, 409, - /* 240 */ 409, 409, 409, 409, 409, 357, 122, 394, 90, 89, - /* 250 */ 88, 382, 117, 182, 35, 119, 410, 43, 122, 390, - /* 260 */ 81, 67, 65, 64, 178, 122, 379, 194, 87, 85, - /* 270 */ 94, 405, 79, 122, 395, 385, 343, 410, 43, 76, - /* 280 */ 479, 366, 394, 409, 122, 409, 409, 409, 409, 409, - /* 290 */ 409, 409, 409, 409, 409, 478, 402, 405, 179, 181, - /* 300 */ 180, 383, 349, 351, 35, 124, 410, 43, 401, 390, - /* 310 */ 81, 67, 65, 64, 194, 87, 85, 53, 405, 131, - /* 320 */ 419, 419, 419, 419, 390, 81, 67, 431, 68, 66, - /* 330 */ 147, 132, 394, 409, 431, 409, 409, 409, 409, 409, - /* 340 */ 409, 409, 409, 409, 409, 432, 97, 405, 179, 181, - /* 350 */ 180, 38, 432, 102, 35, 124, 431, 127, 431, 390, - /* 360 */ 81, 67, 65, 64, 36, 128, 122, 418, 419, 419, - /* 370 */ 419, 419, 419, 122, 432, 98, 432, 104, 20, 83, - /* 380 */ 106, 472, 394, 409, 431, 409, 409, 409, 409, 409, - /* 390 */ 409, 409, 409, 409, 409, 122, 377, 122, 179, 181, - /* 400 */ 180, 368, 432, 103, 35, 353, 353, 353, 353, 390, - /* 410 */ 81, 67, 65, 64, 29, 29, 29, 29, 29, 29, - /* 420 */ 29, 29, 29, 122, 109, 471, 356, 145, 113, 74, - /* 430 */ 157, 161, 394, 409, 105, 409, 409, 409, 409, 409, - /* 440 */ 409, 409, 409, 409, 409, 160, 161, 367, 179, 181, - /* 450 */ 180, 361, 147, 147, 189, 163, 161, 42, 176, 390, - /* 460 */ 81, 67, 65, 64, 92, 122, 177, 458, 458, 458, - /* 470 */ 458, 458, 458, 458, 458, 458, 458, 335, 479, 82, - /* 480 */ 123, 344, 333, 459, 334, 400, 332, 331, 37, 473, - /* 490 */ 398, 329, 393, 19, 8, 451, 391, 118, 179, 181, - /* 500 */ 180, 378, 2, 330, 151, 13, 461, 7, 460, 390, - /* 510 */ 81, 67, 65, 64, 93, 479, 430, 6, 450, 84, - /* 520 */ 430, 86, 120, 475, 44, 342, 27, 27, 478, 23, - /* 530 */ 154, 27, 27, 141, 643, 3, 3, 45, 194, 24, - /* 540 */ 360, 379, 121, 141, 141, 141, 141, 141, 141, 141, - /* 550 */ 341, 183, 46, 340, 192, 479, 345, 337, 93, 373, - /* 560 */ 430, 372, 61, 57, 430, 28, 126, 475, 125, 58, - /* 570 */ 27, 27, 478, 59, 130, 27, 27, 141, 419, 419, - /* 580 */ 419, 419, 31, 16, 32, 469, 631, 141, 141, 141, - /* 590 */ 141, 141, 141, 141, 29, 29, 29, 29, 29, 29, - /* 600 */ 29, 29, 29, 29, 93, 637, 430, 71, 468, 28, - /* 610 */ 430, 447, 446, 475, 462, 12, 27, 27, 478, 369, - /* 620 */ 139, 27, 27, 141, 40, 448, 419, 419, 419, 419, - /* 630 */ 419, 14, 5, 141, 141, 141, 141, 141, 141, 141, - /* 640 */ 449, 143, 418, 50, 129, 51, 26, 364, 369, 9, - /* 650 */ 17, 363, 152, 72, 18, 28, 29, 29, 29, 29, - /* 660 */ 29, 29, 29, 29, 29, 29, 196, 483, 484, 156, - /* 670 */ 93, 52, 430, 95, 190, 170, 430, 73, 159, 63, - /* 680 */ 1, 479, 27, 27, 478, 162, 75, 27, 27, 69, - /* 690 */ 68, 54, 522, 355, 354, 196, 483, 484, 62, 168, - /* 700 */ 78, 25, 95, 190, 170, 389, 335, 171, 63, 1, - /* 710 */ 172, 333, 173, 334, 141, 332, 331, 174, 69, 68, - /* 720 */ 329, 28, 19, 175, 141, 141, 141, 141, 141, 141, - /* 730 */ 141, 387, 330, 151, 150, 29, 29, 29, 29, 29, - /* 740 */ 29, 29, 29, 29, 29, 431, 386, 494, 408, 407, - /* 750 */ 185, 406, 432, 101, 358, 439, 441, 140, 184, 438, - /* 760 */ 452, 110, 339, 432, 99, 482, 186, 194, 144, 142, - /* 770 */ 187, 431, 188, 122, 456, 91, 463, 371, 191, 30, - /* 780 */ 55, 433, 147, 140, 122, 328, 195, 487, 487, 432, - /* 790 */ 99, 487, 487, 150, 487, 39, 49, 11, 10, 60, - /* 800 */ 465, 111, 463, 150, 487, 487, 487, 487, 147, 487, - /* 810 */ 122, 432, 101, 413, 439, 441, 487, 487, 438, 453, - /* 820 */ 487, 432, 101, 487, 439, 441, 150, 487, 438, 445, - /* 830 */ 487, 487, 122, 487, 487, 487, 487, 487, 431, 487, - /* 840 */ 487, 431, 122, 487, 432, 101, 487, 439, 441, 487, - /* 850 */ 140, 438, 138, 140, 487, 487, 432, 99, 487, 432, - /* 860 */ 99, 487, 487, 487, 487, 122, 487, 135, 487, 463, - /* 870 */ 467, 431, 463, 487, 431, 147, 487, 122, 147, 487, - /* 880 */ 122, 487, 487, 140, 487, 487, 140, 487, 487, 432, - /* 890 */ 99, 487, 432, 99, 487, 487, 487, 487, 487, 487, - /* 900 */ 466, 487, 463, 457, 487, 463, 487, 487, 147, 487, - /* 910 */ 122, 147, 487, 122, 487, 21, 424, 487, 487, 427, - /* 920 */ 487, 487, 22, 424, 487, 487, 427, 428, 487, 487, - /* 930 */ 487, 426, 429, 487, 428, 487, 487, 487, 426, 429, - /* 940 */ 487, 39, 49, 11, 10, 60, 487, 487, 487, 487, - /* 950 */ 487, 487, 487, 487, 487, 487, 487, 487, 487, 412, + /* 10 */ 409, 409, 409, 93, 436, 430, 478, 21, 424, 430, + /* 20 */ 425, 427, 15, 427, 411, 27, 27, 478, 475, 428, + /* 30 */ 494, 428, 150, 426, 429, 426, 429, 494, 27, 27, + /* 40 */ 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + /* 50 */ 432, 101, 124, 439, 441, 83, 423, 438, 452, 110, + /* 60 */ 417, 417, 417, 417, 417, 405, 149, 56, 366, 422, + /* 70 */ 107, 122, 28, 376, 90, 89, 88, 147, 348, 48, + /* 80 */ 35, 133, 478, 164, 116, 390, 81, 67, 65, 64, + /* 90 */ 394, 409, 47, 409, 409, 409, 409, 409, 409, 409, + /* 100 */ 409, 409, 409, 39, 49, 11, 10, 60, 93, 437, + /* 110 */ 430, 158, 115, 141, 430, 353, 353, 353, 353, 478, + /* 120 */ 27, 27, 478, 141, 141, 141, 141, 141, 141, 141, + /* 130 */ 375, 193, 136, 27, 27, 148, 148, 148, 148, 148, + /* 140 */ 148, 148, 148, 148, 148, 83, 349, 352, 394, 409, + /* 150 */ 146, 409, 409, 409, 409, 409, 409, 409, 409, 409, + /* 160 */ 409, 149, 349, 351, 179, 181, 180, 28, 134, 122, + /* 170 */ 35, 122, 153, 109, 471, 390, 81, 67, 65, 64, + /* 180 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + /* 190 */ 29, 29, 29, 29, 29, 29, 29, 29, 394, 419, + /* 200 */ 419, 419, 419, 41, 124, 145, 394, 409, 416, 409, + /* 210 */ 409, 409, 409, 409, 409, 409, 409, 409, 409, 415, + /* 220 */ 382, 114, 90, 89, 88, 410, 43, 414, 34, 106, + /* 230 */ 147, 123, 344, 390, 81, 67, 65, 64, 29, 29, + /* 240 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + /* 250 */ 29, 374, 108, 29, 29, 419, 419, 419, 419, 419, + /* 260 */ 421, 83, 113, 397, 394, 409, 405, 409, 409, 409, + /* 270 */ 409, 409, 409, 409, 409, 409, 409, 167, 137, 112, + /* 280 */ 90, 89, 88, 390, 81, 67, 35, 147, 36, 128, + /* 290 */ 122, 390, 81, 67, 65, 64, 458, 458, 458, 458, + /* 300 */ 458, 458, 458, 458, 458, 458, 155, 379, 157, 161, + /* 310 */ 365, 169, 459, 160, 161, 410, 43, 122, 122, 76, + /* 320 */ 119, 479, 394, 409, 431, 409, 409, 409, 409, 409, + /* 330 */ 409, 409, 409, 409, 409, 376, 431, 357, 179, 181, + /* 340 */ 180, 402, 432, 100, 35, 440, 442, 80, 140, 390, + /* 350 */ 81, 67, 65, 64, 432, 99, 405, 163, 161, 144, + /* 360 */ 142, 127, 350, 122, 356, 456, 53, 463, 37, 473, + /* 370 */ 2, 418, 395, 147, 122, 122, 122, 66, 8, 451, + /* 380 */ 394, 409, 431, 409, 409, 409, 409, 409, 409, 409, + /* 390 */ 409, 409, 409, 94, 431, 401, 179, 181, 180, 343, + /* 400 */ 432, 96, 35, 122, 13, 461, 140, 390, 81, 67, + /* 410 */ 65, 64, 432, 99, 39, 49, 11, 10, 60, 470, + /* 420 */ 92, 122, 70, 465, 111, 463, 131, 7, 460, 6, + /* 430 */ 450, 147, 413, 122, 479, 83, 23, 154, 394, 409, + /* 440 */ 431, 409, 409, 409, 409, 409, 409, 409, 409, 409, + /* 450 */ 409, 68, 150, 472, 179, 181, 180, 132, 432, 97, + /* 460 */ 35, 378, 24, 360, 38, 390, 81, 67, 65, 64, + /* 470 */ 432, 101, 20, 439, 441, 479, 383, 438, 453, 122, + /* 480 */ 369, 410, 43, 382, 117, 377, 368, 105, 410, 43, + /* 490 */ 367, 122, 361, 74, 189, 379, 394, 409, 42, 409, + /* 500 */ 409, 409, 409, 409, 409, 409, 409, 409, 409, 479, + /* 510 */ 176, 177, 179, 181, 180, 398, 22, 424, 393, 400, + /* 520 */ 427, 431, 405, 390, 81, 67, 65, 64, 428, 405, + /* 530 */ 44, 391, 426, 429, 118, 196, 483, 484, 2, 432, + /* 540 */ 102, 84, 95, 190, 170, 45, 86, 335, 63, 1, + /* 550 */ 120, 82, 333, 342, 334, 121, 332, 331, 69, 68, + /* 560 */ 122, 329, 183, 19, 46, 341, 340, 192, 345, 337, + /* 570 */ 179, 181, 180, 330, 151, 39, 49, 11, 10, 60, + /* 580 */ 373, 390, 81, 67, 65, 64, 93, 372, 430, 61, + /* 590 */ 57, 126, 430, 412, 125, 475, 182, 58, 27, 27, + /* 600 */ 478, 59, 130, 31, 643, 3, 3, 178, 194, 469, + /* 610 */ 16, 27, 27, 141, 468, 79, 431, 4, 384, 32, + /* 620 */ 410, 43, 447, 141, 141, 141, 141, 141, 141, 141, + /* 630 */ 419, 419, 419, 419, 432, 98, 446, 71, 93, 462, + /* 640 */ 430, 12, 40, 448, 430, 28, 143, 475, 14, 182, + /* 650 */ 27, 27, 478, 5, 50, 122, 418, 194, 87, 85, + /* 660 */ 178, 405, 51, 27, 27, 141, 631, 26, 79, 9, + /* 670 */ 17, 385, 364, 410, 43, 141, 141, 141, 141, 141, + /* 680 */ 141, 141, 152, 363, 18, 72, 419, 419, 419, 419, + /* 690 */ 419, 156, 52, 73, 159, 479, 75, 28, 431, 162, + /* 700 */ 54, 522, 355, 354, 129, 78, 62, 168, 139, 389, + /* 710 */ 194, 87, 85, 171, 405, 172, 432, 104, 173, 29, + /* 720 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + /* 730 */ 29, 29, 29, 29, 29, 29, 29, 122, 174, 408, + /* 740 */ 175, 29, 29, 29, 29, 29, 29, 29, 29, 29, + /* 750 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 387, + /* 760 */ 386, 407, 406, 358, 371, 494, 184, 339, 185, 187, + /* 770 */ 186, 188, 91, 449, 29, 29, 29, 29, 29, 29, + /* 780 */ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + /* 790 */ 29, 29, 191, 93, 25, 430, 637, 30, 55, 430, + /* 800 */ 328, 195, 475, 431, 487, 27, 27, 478, 487, 487, + /* 810 */ 369, 487, 487, 487, 487, 487, 487, 487, 27, 27, + /* 820 */ 141, 432, 103, 487, 487, 487, 487, 487, 433, 182, + /* 830 */ 141, 141, 141, 141, 141, 141, 141, 487, 487, 487, + /* 840 */ 359, 166, 122, 487, 77, 93, 487, 430, 165, 487, + /* 850 */ 487, 430, 28, 410, 33, 487, 487, 27, 27, 478, + /* 860 */ 487, 487, 487, 487, 487, 196, 483, 484, 487, 487, + /* 870 */ 27, 27, 95, 190, 170, 487, 487, 487, 63, 1, + /* 880 */ 487, 487, 487, 487, 487, 487, 487, 487, 69, 68, + /* 890 */ 194, 87, 85, 335, 405, 487, 150, 487, 333, 487, + /* 900 */ 334, 487, 332, 331, 28, 150, 487, 329, 487, 19, + /* 910 */ 487, 487, 487, 487, 432, 101, 487, 439, 441, 330, + /* 920 */ 151, 438, 445, 432, 101, 487, 439, 441, 487, 487, + /* 930 */ 438, 138, 487, 487, 487, 122, 487, 487, 487, 487, + /* 940 */ 487, 487, 487, 431, 122, 487, 431, 487, 487, 487, + /* 950 */ 487, 487, 482, 487, 194, 140, 487, 487, 140, 487, + /* 960 */ 487, 432, 99, 487, 432, 99, 487, 487, 487, 487, + /* 970 */ 487, 487, 135, 487, 463, 467, 487, 463, 487, 431, + /* 980 */ 147, 487, 122, 147, 431, 122, 487, 487, 487, 487, + /* 990 */ 487, 140, 487, 487, 487, 487, 140, 432, 99, 487, + /* 1000 */ 487, 487, 432, 99, 487, 487, 487, 487, 466, 487, + /* 1010 */ 463, 487, 487, 457, 487, 463, 147, 487, 122, 487, + /* 1020 */ 487, 147, 487, 122, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 2, 3, 14, 5, 6, 7, 8, 9, 10, 11, - /* 10 */ 12, 13, 14, 14, 15, 16, 28, 143, 144, 20, - /* 20 */ 63, 118, 23, 23, 105, 26, 27, 28, 71, 14, - /* 30 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - /* 40 */ 41, 42, 123, 124, 141, 126, 127, 49, 21, 22, - /* 50 */ 23, 24, 25, 26, 27, 28, 29, 30, 59, 60, - /* 60 */ 28, 118, 119, 144, 65, 103, 68, 69, 70, 107, - /* 70 */ 72, 5, 74, 63, 112, 113, 66, 79, 80, 81, - /* 80 */ 82, 83, 2, 3, 141, 5, 6, 7, 8, 9, - /* 90 */ 10, 11, 12, 13, 14, 54, 55, 56, 57, 58, - /* 100 */ 14, 15, 16, 91, 92, 112, 20, 15, 16, 17, - /* 110 */ 18, 19, 26, 27, 28, 153, 157, 31, 32, 33, - /* 120 */ 34, 35, 36, 37, 38, 39, 40, 41, 42, 49, - /* 130 */ 105, 106, 2, 3, 105, 5, 6, 7, 8, 9, - /* 140 */ 10, 11, 12, 13, 14, 59, 153, 81, 68, 69, - /* 150 */ 70, 65, 14, 88, 74, 122, 76, 105, 125, 79, - /* 160 */ 80, 81, 82, 83, 99, 100, 133, 64, 103, 144, - /* 170 */ 137, 138, 107, 144, 71, 107, 108, 112, 113, 49, - /* 180 */ 112, 113, 2, 3, 105, 5, 6, 7, 8, 9, - /* 190 */ 10, 11, 12, 13, 14, 143, 144, 141, 68, 69, - /* 200 */ 70, 141, 123, 124, 74, 141, 88, 105, 136, 79, - /* 210 */ 80, 81, 82, 83, 149, 150, 151, 99, 153, 105, - /* 220 */ 116, 153, 116, 144, 96, 107, 105, 109, 110, 49, - /* 230 */ 112, 113, 2, 3, 105, 5, 6, 7, 8, 9, - /* 240 */ 10, 11, 12, 13, 14, 105, 144, 2, 68, 69, - /* 250 */ 70, 107, 108, 88, 74, 144, 112, 113, 144, 79, - /* 260 */ 80, 81, 82, 83, 99, 144, 14, 149, 150, 151, - /* 270 */ 66, 153, 107, 144, 155, 110, 72, 112, 113, 49, - /* 280 */ 28, 14, 2, 3, 144, 5, 6, 7, 8, 9, - /* 290 */ 10, 11, 12, 13, 14, 28, 153, 153, 68, 69, - /* 300 */ 70, 107, 91, 92, 74, 117, 112, 113, 153, 79, - /* 310 */ 80, 81, 82, 83, 149, 150, 151, 65, 153, 142, - /* 320 */ 1, 2, 3, 4, 79, 80, 81, 105, 85, 49, - /* 330 */ 142, 115, 2, 3, 105, 5, 6, 7, 8, 9, - /* 340 */ 10, 11, 12, 13, 14, 123, 124, 153, 68, 69, - /* 350 */ 70, 142, 123, 124, 74, 117, 105, 76, 105, 79, - /* 360 */ 80, 81, 82, 83, 66, 67, 144, 86, 49, 50, - /* 370 */ 51, 52, 53, 144, 123, 124, 123, 124, 65, 49, - /* 380 */ 142, 140, 2, 3, 105, 5, 6, 7, 8, 9, - /* 390 */ 10, 11, 12, 13, 14, 144, 101, 144, 68, 69, - /* 400 */ 70, 101, 123, 124, 74, 1, 2, 3, 4, 79, - /* 410 */ 80, 81, 82, 83, 22, 23, 24, 25, 26, 27, - /* 420 */ 28, 29, 30, 144, 139, 140, 105, 117, 117, 49, - /* 430 */ 143, 144, 2, 3, 144, 5, 6, 7, 8, 9, - /* 440 */ 10, 11, 12, 13, 14, 143, 144, 101, 68, 69, - /* 450 */ 70, 101, 142, 142, 64, 143, 144, 94, 64, 79, - /* 460 */ 80, 81, 82, 83, 14, 144, 111, 33, 34, 35, - /* 470 */ 36, 37, 38, 39, 40, 41, 42, 88, 28, 49, - /* 480 */ 89, 90, 93, 49, 95, 2, 97, 98, 66, 67, - /* 490 */ 156, 102, 2, 104, 66, 67, 154, 144, 68, 69, - /* 500 */ 70, 14, 71, 114, 115, 66, 67, 66, 67, 79, - /* 510 */ 80, 81, 82, 83, 14, 28, 16, 66, 67, 94, - /* 520 */ 20, 94, 14, 23, 91, 148, 26, 27, 28, 66, - /* 530 */ 67, 31, 32, 33, 145, 146, 147, 91, 149, 66, - /* 540 */ 67, 14, 14, 43, 44, 45, 46, 47, 48, 49, - /* 550 */ 148, 14, 94, 148, 77, 28, 90, 14, 14, 152, - /* 560 */ 16, 152, 73, 64, 20, 65, 86, 23, 67, 64, - /* 570 */ 26, 27, 28, 64, 20, 31, 32, 33, 1, 2, - /* 580 */ 3, 4, 65, 71, 65, 63, 86, 43, 44, 45, - /* 590 */ 46, 47, 48, 49, 21, 22, 23, 24, 25, 26, - /* 600 */ 27, 28, 29, 30, 14, 0, 16, 73, 63, 65, - /* 610 */ 20, 63, 63, 23, 67, 73, 26, 27, 28, 14, - /* 620 */ 76, 31, 32, 33, 65, 67, 49, 50, 51, 52, - /* 630 */ 53, 66, 65, 43, 44, 45, 46, 47, 48, 49, - /* 640 */ 67, 67, 86, 65, 67, 65, 65, 63, 14, 73, - /* 650 */ 71, 63, 67, 67, 65, 65, 21, 22, 23, 24, - /* 660 */ 25, 26, 27, 28, 29, 30, 61, 62, 63, 14, - /* 670 */ 14, 65, 16, 68, 69, 70, 20, 67, 14, 74, - /* 680 */ 75, 28, 26, 27, 28, 14, 67, 31, 32, 84, - /* 690 */ 85, 65, 65, 63, 63, 61, 62, 63, 73, 20, - /* 700 */ 14, 66, 68, 69, 70, 67, 88, 16, 74, 75, - /* 710 */ 66, 93, 16, 95, 33, 97, 98, 65, 84, 85, - /* 720 */ 102, 65, 104, 64, 43, 44, 45, 46, 47, 48, - /* 730 */ 49, 63, 114, 115, 105, 21, 22, 23, 24, 25, - /* 740 */ 26, 27, 28, 29, 30, 105, 63, 71, 14, 14, - /* 750 */ 66, 14, 123, 124, 14, 126, 127, 117, 16, 130, - /* 760 */ 131, 132, 67, 123, 124, 147, 16, 149, 128, 129, - /* 770 */ 65, 105, 64, 144, 134, 14, 136, 78, 16, 73, - /* 780 */ 71, 67, 142, 117, 144, 63, 19, 158, 158, 123, - /* 790 */ 124, 158, 158, 105, 158, 54, 55, 56, 57, 58, - /* 800 */ 134, 135, 136, 105, 158, 158, 158, 158, 142, 158, - /* 810 */ 144, 123, 124, 72, 126, 127, 158, 158, 130, 131, - /* 820 */ 158, 123, 124, 158, 126, 127, 105, 158, 130, 131, - /* 830 */ 158, 158, 144, 158, 158, 158, 158, 158, 105, 158, - /* 840 */ 158, 105, 144, 158, 123, 124, 158, 126, 127, 158, - /* 850 */ 117, 130, 131, 117, 158, 158, 123, 124, 158, 123, - /* 860 */ 124, 158, 158, 158, 158, 144, 158, 134, 158, 136, - /* 870 */ 134, 105, 136, 158, 105, 142, 158, 144, 142, 158, - /* 880 */ 144, 158, 158, 117, 158, 158, 117, 158, 158, 123, - /* 890 */ 124, 158, 123, 124, 158, 158, 158, 158, 158, 158, - /* 900 */ 134, 158, 136, 134, 158, 136, 158, 158, 142, 158, - /* 910 */ 144, 142, 158, 144, 158, 121, 122, 158, 158, 125, - /* 920 */ 158, 158, 121, 122, 158, 158, 125, 133, 158, 158, - /* 930 */ 158, 137, 138, 158, 133, 158, 158, 158, 137, 138, - /* 940 */ 158, 54, 55, 56, 57, 58, 158, 158, 158, 158, - /* 950 */ 158, 158, 158, 158, 158, 158, 158, 158, 158, 72, + /* 10 */ 12, 13, 14, 14, 15, 16, 28, 129, 130, 20, + /* 20 */ 130, 133, 23, 133, 120, 26, 27, 28, 23, 141, + /* 30 */ 72, 141, 113, 145, 146, 145, 146, 79, 39, 40, + /* 40 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + /* 50 */ 131, 132, 125, 134, 135, 57, 126, 138, 139, 140, + /* 60 */ 15, 16, 17, 18, 19, 161, 67, 68, 14, 126, + /* 70 */ 127, 152, 73, 113, 76, 77, 78, 150, 80, 149, + /* 80 */ 82, 14, 28, 151, 152, 87, 88, 89, 90, 91, + /* 90 */ 2, 3, 149, 5, 6, 7, 8, 9, 10, 11, + /* 100 */ 12, 13, 14, 62, 63, 64, 65, 66, 14, 15, + /* 110 */ 16, 151, 152, 41, 20, 1, 2, 3, 4, 28, + /* 120 */ 26, 27, 28, 51, 52, 53, 54, 55, 56, 57, + /* 130 */ 113, 14, 113, 39, 40, 41, 42, 43, 44, 45, + /* 140 */ 46, 47, 48, 49, 50, 57, 99, 100, 2, 3, + /* 150 */ 165, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 160 */ 14, 67, 99, 100, 76, 77, 78, 73, 144, 152, + /* 170 */ 82, 152, 84, 147, 148, 87, 88, 89, 90, 91, + /* 180 */ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + /* 190 */ 31, 32, 33, 34, 35, 36, 37, 38, 2, 1, + /* 200 */ 2, 3, 4, 57, 125, 125, 2, 3, 149, 5, + /* 210 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 149, + /* 220 */ 115, 116, 76, 77, 78, 120, 121, 149, 82, 150, + /* 230 */ 150, 97, 98, 87, 88, 89, 90, 91, 22, 23, + /* 240 */ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + /* 250 */ 34, 113, 114, 37, 38, 57, 58, 59, 60, 61, + /* 260 */ 124, 57, 125, 5, 2, 3, 161, 5, 6, 7, + /* 270 */ 8, 9, 10, 11, 12, 13, 14, 124, 113, 113, + /* 280 */ 76, 77, 78, 87, 88, 89, 82, 150, 74, 75, + /* 290 */ 152, 87, 88, 89, 90, 91, 41, 42, 43, 44, + /* 300 */ 45, 46, 47, 48, 49, 50, 111, 14, 151, 152, + /* 310 */ 115, 104, 57, 151, 152, 120, 121, 152, 152, 57, + /* 320 */ 152, 28, 2, 3, 113, 5, 6, 7, 8, 9, + /* 330 */ 10, 11, 12, 13, 14, 113, 113, 113, 76, 77, + /* 340 */ 78, 161, 131, 132, 82, 134, 135, 89, 125, 87, + /* 350 */ 88, 89, 90, 91, 131, 132, 161, 151, 152, 136, + /* 360 */ 137, 84, 71, 152, 113, 142, 73, 144, 74, 75, + /* 370 */ 79, 94, 163, 150, 152, 152, 152, 57, 74, 75, + /* 380 */ 2, 3, 113, 5, 6, 7, 8, 9, 10, 11, + /* 390 */ 12, 13, 14, 74, 113, 161, 76, 77, 78, 80, + /* 400 */ 131, 132, 82, 152, 74, 75, 125, 87, 88, 89, + /* 410 */ 90, 91, 131, 132, 62, 63, 64, 65, 66, 71, + /* 420 */ 14, 152, 74, 142, 143, 144, 150, 74, 75, 74, + /* 430 */ 75, 150, 80, 152, 28, 57, 74, 75, 2, 3, + /* 440 */ 113, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 450 */ 14, 93, 113, 148, 76, 77, 78, 123, 131, 132, + /* 460 */ 82, 14, 74, 75, 150, 87, 88, 89, 90, 91, + /* 470 */ 131, 132, 73, 134, 135, 28, 115, 138, 139, 152, + /* 480 */ 14, 120, 121, 115, 116, 109, 109, 152, 120, 121, + /* 490 */ 109, 152, 109, 57, 72, 14, 2, 3, 102, 5, + /* 500 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 28, + /* 510 */ 72, 119, 76, 77, 78, 164, 129, 130, 2, 2, + /* 520 */ 133, 113, 161, 87, 88, 89, 90, 91, 141, 161, + /* 530 */ 99, 162, 145, 146, 152, 69, 70, 71, 79, 131, + /* 540 */ 132, 102, 76, 77, 78, 99, 102, 96, 82, 83, + /* 550 */ 14, 57, 101, 156, 103, 14, 105, 106, 92, 93, + /* 560 */ 152, 110, 14, 112, 102, 156, 156, 85, 98, 14, + /* 570 */ 76, 77, 78, 122, 123, 62, 63, 64, 65, 66, + /* 580 */ 160, 87, 88, 89, 90, 91, 14, 160, 16, 81, + /* 590 */ 72, 94, 20, 80, 75, 23, 96, 72, 26, 27, + /* 600 */ 28, 72, 20, 73, 153, 154, 155, 107, 157, 71, + /* 610 */ 79, 39, 40, 41, 71, 115, 113, 117, 118, 73, + /* 620 */ 120, 121, 71, 51, 52, 53, 54, 55, 56, 57, + /* 630 */ 1, 2, 3, 4, 131, 132, 71, 81, 14, 75, + /* 640 */ 16, 81, 73, 75, 20, 73, 75, 23, 74, 96, + /* 650 */ 26, 27, 28, 73, 73, 152, 94, 157, 158, 159, + /* 660 */ 107, 161, 73, 39, 40, 41, 94, 73, 115, 81, + /* 670 */ 79, 118, 71, 120, 121, 51, 52, 53, 54, 55, + /* 680 */ 56, 57, 75, 71, 73, 75, 57, 58, 59, 60, + /* 690 */ 61, 14, 73, 75, 14, 28, 75, 73, 113, 14, + /* 700 */ 73, 73, 71, 71, 75, 14, 81, 20, 84, 75, + /* 710 */ 157, 158, 159, 16, 161, 74, 131, 132, 16, 21, + /* 720 */ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + /* 730 */ 32, 33, 34, 35, 36, 37, 38, 152, 73, 14, + /* 740 */ 72, 21, 22, 23, 24, 25, 26, 27, 28, 29, + /* 750 */ 30, 31, 32, 33, 34, 35, 36, 37, 38, 71, + /* 760 */ 71, 14, 14, 14, 86, 79, 16, 75, 74, 73, + /* 770 */ 16, 72, 14, 75, 21, 22, 23, 24, 25, 26, + /* 780 */ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + /* 790 */ 37, 38, 16, 14, 74, 16, 0, 81, 79, 20, + /* 800 */ 71, 19, 23, 113, 166, 26, 27, 28, 166, 166, + /* 810 */ 14, 166, 166, 166, 166, 166, 166, 166, 39, 40, + /* 820 */ 41, 131, 132, 166, 166, 166, 166, 166, 75, 96, + /* 830 */ 51, 52, 53, 54, 55, 56, 57, 166, 166, 166, + /* 840 */ 107, 108, 152, 166, 111, 14, 166, 16, 115, 166, + /* 850 */ 166, 20, 73, 120, 121, 166, 166, 26, 27, 28, + /* 860 */ 166, 166, 166, 166, 166, 69, 70, 71, 166, 166, + /* 870 */ 39, 40, 76, 77, 78, 166, 166, 166, 82, 83, + /* 880 */ 166, 166, 166, 166, 166, 166, 166, 166, 92, 93, + /* 890 */ 157, 158, 159, 96, 161, 166, 113, 166, 101, 166, + /* 900 */ 103, 166, 105, 106, 73, 113, 166, 110, 166, 112, + /* 910 */ 166, 166, 166, 166, 131, 132, 166, 134, 135, 122, + /* 920 */ 123, 138, 139, 131, 132, 166, 134, 135, 166, 166, + /* 930 */ 138, 139, 166, 166, 166, 152, 166, 166, 166, 166, + /* 940 */ 166, 166, 166, 113, 152, 166, 113, 166, 166, 166, + /* 950 */ 166, 166, 155, 166, 157, 125, 166, 166, 125, 166, + /* 960 */ 166, 131, 132, 166, 131, 132, 166, 166, 166, 166, + /* 970 */ 166, 166, 142, 166, 144, 142, 166, 144, 166, 113, + /* 980 */ 150, 166, 152, 150, 113, 152, 166, 166, 166, 166, + /* 990 */ 166, 125, 166, 166, 166, 166, 125, 131, 132, 166, + /* 1000 */ 166, 166, 131, 132, 166, 166, 166, 166, 142, 166, + /* 1010 */ 144, 166, 166, 142, 166, 144, 150, 166, 152, 166, + /* 1020 */ 166, 150, 166, 152, }; -#define YY_SHIFT_USE_DFLT (960) +#define YY_SHIFT_USE_DFLT (1024) #define YY_SHIFT_COUNT (196) -#define YY_SHIFT_MIN (-43) -#define YY_SHIFT_MAX (887) +#define YY_SHIFT_MIN (-42) +#define YY_SHIFT_MAX (831) static const short yy_shift_ofst[] = { - /* 0 */ 634, 130, 180, 605, -2, 500, -1, 544, -1, -1, - /* 10 */ -1, 590, 590, 590, 590, 86, 41, 41, 230, 280, - /* 20 */ 230, 741, 887, 80, 330, 656, 656, 656, 656, 656, - /* 30 */ 656, 577, -12, -12, 380, 430, 319, -12, -12, -12, - /* 40 */ -12, 267, -43, -12, -12, -12, -43, 0, 0, 15, - /* 50 */ 0, 0, 32, 32, 32, 138, 434, 319, 319, 319, - /* 60 */ 681, 92, 92, 404, 245, 245, 267, 66, 0, 243, - /* 70 */ 15, 0, 313, 313, 32, 313, 32, 313, 390, 394, - /* 80 */ 483, 490, 32, 32, 431, 390, 431, 390, 508, 528, - /* 90 */ 537, 390, 477, 477, 138, 543, 573, 635, 714, 27, - /* 100 */ 27, 27, 27, 27, 392, 252, 281, 298, 422, 10, - /* 110 */ 428, 439, 441, 451, 463, 450, 487, 473, 527, 487, - /* 120 */ 103, 103, 450, 204, 489, 499, 501, 480, 505, 509, - /* 130 */ 517, 554, 512, 519, 522, 545, 548, 534, 549, 547, - /* 140 */ 542, 559, 565, 558, 574, 567, 578, 556, 580, 581, - /* 150 */ 576, 579, 584, 585, 588, 589, 586, 655, 606, 610, - /* 160 */ 664, 653, 619, 671, 626, 627, 630, 631, 625, 679, - /* 170 */ 686, 638, 691, 644, 696, 652, 659, 668, 683, 734, - /* 180 */ 735, 737, 740, 676, 695, 742, 684, 750, 705, 708, - /* 190 */ 761, 699, 762, 706, 709, 722, 767, + /* 0 */ 466, 146, 204, 796, -2, 572, -1, 624, -1, -1, + /* 10 */ -1, 779, 779, 779, 779, 94, 41, 41, 262, 320, + /* 20 */ 262, 352, 513, 88, 378, 831, 831, 831, 831, 831, + /* 30 */ 831, 629, -12, -12, 436, 494, 198, -12, -12, -12, + /* 40 */ -12, 54, 291, -12, -12, -12, 291, 5, 5, 67, + /* 50 */ 5, 5, 91, 91, 91, 117, 255, 198, 198, 198, + /* 60 */ 72, 45, 45, 114, 196, 196, 54, 258, 5, 358, + /* 70 */ 67, 5, 399, 399, 91, 399, 91, 399, 422, 438, + /* 80 */ 517, 516, 91, 91, 459, 422, 459, 422, 536, 541, + /* 90 */ 548, 422, 482, 482, 117, 555, 698, 720, 753, 159, + /* 100 */ 159, 159, 159, 159, 216, 293, 277, 214, 294, 348, + /* 110 */ 304, 330, 353, 355, 362, 406, 447, 388, 481, 447, + /* 120 */ -42, -42, 406, 319, 508, 518, 519, 497, 525, 529, + /* 130 */ 530, 582, 531, 546, 538, 543, 551, 556, 565, 564, + /* 140 */ 560, 569, 574, 568, 571, 580, 581, 562, 589, 594, + /* 150 */ 588, 591, 601, 607, 612, 611, 610, 677, 619, 618, + /* 160 */ 680, 667, 621, 685, 627, 628, 631, 632, 625, 687, + /* 170 */ 691, 634, 697, 641, 702, 665, 668, 688, 689, 725, + /* 180 */ 747, 748, 749, 686, 692, 750, 694, 754, 696, 699, + /* 190 */ 758, 678, 776, 716, 719, 729, 782, }; -#define YY_REDUCE_USE_DFLT (-127) +#define YY_REDUCE_USE_DFLT (-113) #define YY_REDUCE_COUNT (95) -#define YY_REDUCE_MIN (-126) -#define YY_REDUCE_MAX (801) +#define YY_REDUCE_MIN (-112) +#define YY_REDUCE_MAX (871) static const short yy_reduce_ofst[] = { - /* 0 */ 389, 65, 118, 618, 165, 640, 629, 666, 688, 698, - /* 10 */ 721, 733, 736, 766, 769, -81, 794, 801, 68, -38, - /* 20 */ 144, 33, 33, 194, 194, 79, 222, 229, 251, 253, - /* 30 */ 279, -57, 25, 52, -7, -7, -97, 102, 114, 121, - /* 40 */ 129, -126, 12, 29, 140, 321, 211, 188, 238, 285, - /* 50 */ 310, 311, 287, 302, 312, 391, -41, 56, 60, 64, - /* 60 */ 72, 104, 106, 128, 143, 155, 111, 119, 177, 216, - /* 70 */ 241, 209, 295, 300, 290, 346, 111, 350, 363, 355, - /* 80 */ 334, 342, 353, 111, 433, 425, 446, 427, 377, 402, - /* 90 */ 405, 458, 407, 409, 466, 405, + /* 0 */ 451, 733, 500, 797, 553, 223, -81, 281, 339, 783, + /* 10 */ 792, 830, 833, 866, 871, 211, -112, 387, 105, 195, + /* 20 */ 368, -110, -110, 361, 361, 269, 327, 408, 503, 585, + /* 30 */ 690, -57, 138, -40, -96, -96, -70, 17, 19, 165, + /* 40 */ 166, -68, 47, 222, 224, 251, 63, -73, 79, 26, + /* 50 */ 80, 137, 157, 162, 206, 134, -15, 59, 70, 78, + /* 60 */ 24, 136, 153, 207, 180, 234, 168, 209, 276, 334, + /* 70 */ 305, 314, 376, 377, 335, 381, 168, 383, 396, 392, + /* 80 */ 351, 369, 382, 168, 431, 439, 446, 444, 397, 409, + /* 90 */ 410, 462, 420, 427, 470, 410, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 642, 642, 642, 642, 642, 611, 642, 631, 642, 642, @@ -561,6 +575,14 @@ static const YYCODETYPE yyFallback[] = { 0, /* ASTERISK => nothing */ 0, /* SLASH => nothing */ 0, /* MODULO => nothing */ + 0, /* RCHEVR => nothing */ + 0, /* LCHEVR => nothing */ + 0, /* CMP_GE => nothing */ + 0, /* CMP_LE => nothing */ + 0, /* OR => nothing */ + 0, /* AND => nothing */ + 0, /* CMP_EQ => nothing */ + 0, /* CMP_NE => nothing */ 0, /* TILDE => nothing */ 0, /* NOT => nothing */ 14, /* ZVAL => NAME */ @@ -684,7 +706,9 @@ static const char *const yyTokenName[] = { "NUMBER", "TRUE", "FALSE", "QUOTED_STRING", "NSNAME", "PIPE", "CARET", "AMPERSAND", "LSHIFT", "RSHIFT", "PLUS", "MINUS", - "ASTERISK", "SLASH", "MODULO", "TILDE", + "ASTERISK", "SLASH", "MODULO", "RCHEVR", + "LCHEVR", "CMP_GE", "CMP_LE", "OR", + "AND", "CMP_EQ", "CMP_NE", "TILDE", "NOT", "ZVAL", "OBJVAL", "ARRVAL", "PATHVAL", "STRLEN", "STRVAL", "FLOATVAL", "INTVAL", "BOOLVAL", "COUNT", "TO_OBJECT", @@ -830,7 +854,7 @@ static const char *const yyRuleName[] = { /* 103 */ "number ::= decl_var", /* 104 */ "num_exp ::= number", /* 105 */ "num_exp ::= LPAREN num_exp RPAREN", - /* 106 */ "num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO num_exp", + /* 106 */ "num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE num_exp", /* 107 */ "num_exp ::= TILDE|NOT|PLUS|MINUS num_exp", /* 108 */ "let_exp ::= NULL", /* 109 */ "let_exp ::= AMPERSAND NULL", @@ -1029,348 +1053,356 @@ static void yy_destructor( case 28: /* ASTERISK */ case 29: /* SLASH */ case 30: /* MODULO */ - case 31: /* TILDE */ - case 32: /* NOT */ - case 33: /* ZVAL */ - case 34: /* OBJVAL */ - case 35: /* ARRVAL */ - case 36: /* PATHVAL */ - case 37: /* STRLEN */ - case 38: /* STRVAL */ - case 39: /* FLOATVAL */ - case 40: /* INTVAL */ - case 41: /* BOOLVAL */ - case 42: /* COUNT */ - case 43: /* TO_OBJECT */ - case 44: /* TO_ARRAY */ - case 45: /* TO_STRING */ - case 46: /* TO_INT */ - case 47: /* TO_FLOAT */ - case 48: /* TO_BOOL */ - case 49: /* VOID */ - case 50: /* MIXED */ - case 51: /* ARRAY */ - case 52: /* OBJECT */ - case 53: /* CALLABLE */ - case 54: /* TEMP */ - case 55: /* FREE */ - case 56: /* SET */ - case 57: /* LET */ - case 58: /* RETURN */ - case 59: /* CALLOC */ - case 60: /* CALLBACK */ - case 61: /* LIB */ - case 62: /* EOF */ - case 63: /* EOS */ - case 64: /* COLON */ - case 65: /* LPAREN */ - case 66: /* COMMA */ - case 67: /* RPAREN */ - case 68: /* ENUM */ - case 69: /* STRUCT */ - case 70: /* UNION */ - case 71: /* LBRACE */ - case 72: /* RBRACE */ - case 73: /* EQUALS */ - case 74: /* CONST */ - case 75: /* TYPEDEF */ - case 76: /* ELLIPSIS */ - case 77: /* LBRACKET */ - case 78: /* RBRACKET */ - case 79: /* CHAR */ - case 80: /* SHORT */ - case 81: /* LONG */ - case 82: /* UNSIGNED */ - case 83: /* SIGNED */ - case 84: /* STATIC */ - case 85: /* FUNCTION */ - case 86: /* DOLLAR_NAME */ + case 31: /* RCHEVR */ + case 32: /* LCHEVR */ + case 33: /* CMP_GE */ + case 34: /* CMP_LE */ + case 35: /* OR */ + case 36: /* AND */ + case 37: /* CMP_EQ */ + case 38: /* CMP_NE */ + case 39: /* TILDE */ + case 40: /* NOT */ + case 41: /* ZVAL */ + case 42: /* OBJVAL */ + case 43: /* ARRVAL */ + case 44: /* PATHVAL */ + case 45: /* STRLEN */ + case 46: /* STRVAL */ + case 47: /* FLOATVAL */ + case 48: /* INTVAL */ + case 49: /* BOOLVAL */ + case 50: /* COUNT */ + case 51: /* TO_OBJECT */ + case 52: /* TO_ARRAY */ + case 53: /* TO_STRING */ + case 54: /* TO_INT */ + case 55: /* TO_FLOAT */ + case 56: /* TO_BOOL */ + case 57: /* VOID */ + case 58: /* MIXED */ + case 59: /* ARRAY */ + case 60: /* OBJECT */ + case 61: /* CALLABLE */ + case 62: /* TEMP */ + case 63: /* FREE */ + case 64: /* SET */ + case 65: /* LET */ + case 66: /* RETURN */ + case 67: /* CALLOC */ + case 68: /* CALLBACK */ + case 69: /* LIB */ + case 70: /* EOF */ + case 71: /* EOS */ + case 72: /* COLON */ + case 73: /* LPAREN */ + case 74: /* COMMA */ + case 75: /* RPAREN */ + case 76: /* ENUM */ + case 77: /* STRUCT */ + case 78: /* UNION */ + case 79: /* LBRACE */ + case 80: /* RBRACE */ + case 81: /* EQUALS */ + case 82: /* CONST */ + case 83: /* TYPEDEF */ + case 84: /* ELLIPSIS */ + case 85: /* LBRACKET */ + case 86: /* RBRACKET */ + case 87: /* CHAR */ + case 88: /* SHORT */ + case 89: /* LONG */ + case 90: /* UNSIGNED */ + case 91: /* SIGNED */ + case 92: /* STATIC */ + case 93: /* FUNCTION */ + case 94: /* DOLLAR_NAME */ { #line 37 "src/parser_proc.y" free((yypminor->yy0)); -#line 1092 "src/parser_proc.c" +#line 1124 "src/parser_proc.c" } break; /* Default NON-TERMINAL Destructor */ - case 87: /* error */ - case 94: /* align_and_size */ - case 142: /* reference */ - case 143: /* indirection */ - case 144: /* pointers */ - case 145: /* file */ - case 146: /* blocks */ - case 147: /* block */ - case 148: /* optional_name */ - case 149: /* enum_name */ - case 150: /* struct_name */ - case 151: /* union_name */ - case 152: /* decl_var_array_size */ - case 153: /* decl_scalar_type */ - case 154: /* decl_scalar_type_short */ - case 155: /* decl_scalar_type_long */ - case 156: /* decl_scalar_type_long_long */ - case 157: /* callback_rval */ + case 95: /* error */ + case 102: /* align_and_size */ + case 150: /* reference */ + case 151: /* indirection */ + case 152: /* pointers */ + case 153: /* file */ + case 154: /* blocks */ + case 155: /* block */ + case 156: /* optional_name */ + case 157: /* enum_name */ + case 158: /* struct_name */ + case 159: /* union_name */ + case 160: /* decl_var_array_size */ + case 161: /* decl_scalar_type */ + case 162: /* decl_scalar_type_short */ + case 163: /* decl_scalar_type_long */ + case 164: /* decl_scalar_type_long_long */ + case 165: /* callback_rval */ { #line 38 "src/parser_proc.y" (void)P; -#line 1117 "src/parser_proc.c" +#line 1149 "src/parser_proc.c" } break; - case 88: /* decl_enum */ + case 96: /* decl_enum */ { -#line 60 "src/parser_proc.y" -psi_decl_enum_free(&(yypminor->yy63)); -#line 1124 "src/parser_proc.c" +#line 63 "src/parser_proc.y" +psi_decl_enum_free(&(yypminor->yy279)); +#line 1156 "src/parser_proc.c" } break; - case 89: /* decl_enum_items */ - case 91: /* decl_struct_args_block */ - case 92: /* decl_struct_args */ - case 101: /* decl_typedef_body_fn_args */ - case 106: /* decl_vars */ - case 108: /* decl_args */ - case 109: /* struct_args */ - case 119: /* impl_args */ - case 121: /* impl_stmts */ - case 132: /* let_exps */ - case 135: /* set_exps */ - case 139: /* free_exps */ -{ -#line 62 "src/parser_proc.y" -psi_plist_free((yypminor->yy163)); -#line 1142 "src/parser_proc.c" + case 97: /* decl_enum_items */ + case 99: /* decl_struct_args_block */ + case 100: /* decl_struct_args */ + case 109: /* decl_typedef_body_fn_args */ + case 114: /* decl_vars */ + case 116: /* decl_args */ + case 117: /* struct_args */ + case 127: /* impl_args */ + case 129: /* impl_stmts */ + case 140: /* let_exps */ + case 143: /* set_exps */ + case 147: /* free_exps */ +{ +#line 65 "src/parser_proc.y" +psi_plist_free((yypminor->yy303)); +#line 1174 "src/parser_proc.c" } break; - case 90: /* decl_enum_item */ + case 98: /* decl_enum_item */ { -#line 64 "src/parser_proc.y" -psi_decl_enum_item_free(&(yypminor->yy217)); -#line 1149 "src/parser_proc.c" +#line 67 "src/parser_proc.y" +psi_decl_enum_item_free(&(yypminor->yy69)); +#line 1181 "src/parser_proc.c" } break; - case 93: /* decl_struct */ + case 101: /* decl_struct */ { -#line 70 "src/parser_proc.y" -psi_decl_struct_free(&(yypminor->yy275)); -#line 1156 "src/parser_proc.c" +#line 73 "src/parser_proc.y" +psi_decl_struct_free(&(yypminor->yy271)); +#line 1188 "src/parser_proc.c" } break; - case 95: /* decl_union */ + case 103: /* decl_union */ { -#line 73 "src/parser_proc.y" -psi_decl_union_free(&(yypminor->yy271)); -#line 1163 "src/parser_proc.c" +#line 76 "src/parser_proc.y" +psi_decl_union_free(&(yypminor->yy19)); +#line 1195 "src/parser_proc.c" } break; - case 96: /* const_type */ + case 104: /* const_type */ { -#line 75 "src/parser_proc.y" -psi_const_type_free(&(yypminor->yy171)); -#line 1170 "src/parser_proc.c" +#line 78 "src/parser_proc.y" +psi_const_type_free(&(yypminor->yy7)); +#line 1202 "src/parser_proc.c" } break; - case 97: /* constant */ + case 105: /* constant */ { -#line 77 "src/parser_proc.y" -psi_const_free(&(yypminor->yy154)); -#line 1177 "src/parser_proc.c" +#line 80 "src/parser_proc.y" +psi_const_free(&(yypminor->yy106)); +#line 1209 "src/parser_proc.c" } break; - case 98: /* decl_typedef */ - case 99: /* decl_typedef_body_ex */ - case 100: /* decl_typedef_body */ - case 103: /* decl_func */ - case 107: /* decl_arg */ - case 110: /* struct_arg */ + case 106: /* decl_typedef */ + case 107: /* decl_typedef_body_ex */ + case 108: /* decl_typedef_body */ + case 111: /* decl_func */ + case 115: /* decl_arg */ + case 118: /* struct_arg */ { -#line 79 "src/parser_proc.y" -psi_decl_arg_free(&(yypminor->yy184)); -#line 1189 "src/parser_proc.c" +#line 82 "src/parser_proc.y" +psi_decl_arg_free(&(yypminor->yy260)); +#line 1221 "src/parser_proc.c" } break; - case 102: /* decl */ + case 110: /* decl */ { -#line 87 "src/parser_proc.y" -psi_decl_free(&(yypminor->yy103)); -#line 1196 "src/parser_proc.c" +#line 90 "src/parser_proc.y" +psi_decl_free(&(yypminor->yy71)); +#line 1228 "src/parser_proc.c" } break; - case 104: /* decl_abi */ + case 112: /* decl_abi */ { -#line 91 "src/parser_proc.y" -psi_decl_abi_free(&(yypminor->yy218)); -#line 1203 "src/parser_proc.c" +#line 94 "src/parser_proc.y" +psi_decl_abi_free(&(yypminor->yy242)); +#line 1235 "src/parser_proc.c" } break; - case 105: /* decl_var */ + case 113: /* decl_var */ { -#line 93 "src/parser_proc.y" -psi_decl_var_free(&(yypminor->yy11)); -#line 1210 "src/parser_proc.c" +#line 96 "src/parser_proc.y" +psi_decl_var_free(&(yypminor->yy207)); +#line 1242 "src/parser_proc.c" } break; - case 111: /* decl_layout */ + case 119: /* decl_layout */ { -#line 105 "src/parser_proc.y" -psi_layout_free(&(yypminor->yy141)); -#line 1217 "src/parser_proc.c" +#line 108 "src/parser_proc.y" +psi_layout_free(&(yypminor->yy81)); +#line 1249 "src/parser_proc.c" } break; - case 112: /* decl_type */ - case 113: /* const_decl_type */ + case 120: /* decl_type */ + case 121: /* const_decl_type */ { -#line 107 "src/parser_proc.y" -psi_decl_type_free(&(yypminor->yy132)); -#line 1225 "src/parser_proc.c" +#line 110 "src/parser_proc.y" +psi_decl_type_free(&(yypminor->yy152)); +#line 1257 "src/parser_proc.c" } break; - case 114: /* impl */ + case 122: /* impl */ { -#line 111 "src/parser_proc.y" -psi_impl_free(&(yypminor->yy97)); -#line 1232 "src/parser_proc.c" +#line 114 "src/parser_proc.y" +psi_impl_free(&(yypminor->yy49)); +#line 1264 "src/parser_proc.c" } break; - case 115: /* impl_func */ + case 123: /* impl_func */ { -#line 113 "src/parser_proc.y" -psi_impl_func_free(&(yypminor->yy168)); -#line 1239 "src/parser_proc.c" +#line 116 "src/parser_proc.y" +psi_impl_func_free(&(yypminor->yy120)); +#line 1271 "src/parser_proc.c" } break; - case 116: /* impl_def_val */ + case 124: /* impl_def_val */ { -#line 115 "src/parser_proc.y" -psi_impl_def_val_free(&(yypminor->yy93)); -#line 1246 "src/parser_proc.c" +#line 118 "src/parser_proc.y" +psi_impl_def_val_free(&(yypminor->yy21)); +#line 1278 "src/parser_proc.c" } break; - case 117: /* impl_var */ + case 125: /* impl_var */ { -#line 117 "src/parser_proc.y" -psi_impl_var_free(&(yypminor->yy37)); -#line 1253 "src/parser_proc.c" +#line 120 "src/parser_proc.y" +psi_impl_var_free(&(yypminor->yy185)); +#line 1285 "src/parser_proc.c" } break; - case 118: /* impl_arg */ - case 120: /* impl_vararg */ + case 126: /* impl_arg */ + case 128: /* impl_vararg */ { -#line 119 "src/parser_proc.y" -psi_impl_arg_free(&(yypminor->yy210)); -#line 1261 "src/parser_proc.c" +#line 122 "src/parser_proc.y" +psi_impl_arg_free(&(yypminor->yy238)); +#line 1293 "src/parser_proc.c" } break; - case 122: /* impl_stmt */ + case 130: /* impl_stmt */ { -#line 127 "src/parser_proc.y" -psi_impl_stmt_free(&(yypminor->yy78)); -#line 1268 "src/parser_proc.c" +#line 130 "src/parser_proc.y" +psi_impl_stmt_free(&(yypminor->yy38)); +#line 1300 "src/parser_proc.c" } break; - case 123: /* number */ + case 131: /* number */ { -#line 129 "src/parser_proc.y" -psi_number_free(&(yypminor->yy188)); -#line 1275 "src/parser_proc.c" +#line 132 "src/parser_proc.y" +psi_number_free(&(yypminor->yy160)); +#line 1307 "src/parser_proc.c" } break; - case 124: /* num_exp */ + case 132: /* num_exp */ { -#line 131 "src/parser_proc.y" -psi_num_exp_free(&(yypminor->yy259)); -#line 1282 "src/parser_proc.c" +#line 134 "src/parser_proc.y" +psi_num_exp_free(&(yypminor->yy39)); +#line 1314 "src/parser_proc.c" } break; - case 125: /* let_stmt */ + case 133: /* let_stmt */ { -#line 133 "src/parser_proc.y" -psi_let_stmt_free(&(yypminor->yy311)); -#line 1289 "src/parser_proc.c" +#line 136 "src/parser_proc.y" +psi_let_stmt_free(&(yypminor->yy139)); +#line 1321 "src/parser_proc.c" } break; - case 126: /* let_calloc */ + case 134: /* let_calloc */ { -#line 135 "src/parser_proc.y" -psi_let_calloc_free(&(yypminor->yy9)); -#line 1296 "src/parser_proc.c" +#line 138 "src/parser_proc.y" +psi_let_calloc_free(&(yypminor->yy17)); +#line 1328 "src/parser_proc.c" } break; - case 127: /* let_func */ + case 135: /* let_func */ { -#line 137 "src/parser_proc.y" -psi_let_func_free(&(yypminor->yy27)); -#line 1303 "src/parser_proc.c" +#line 140 "src/parser_proc.y" +psi_let_func_free(&(yypminor->yy72)); +#line 1335 "src/parser_proc.c" } break; - case 128: /* callback_arg_list */ - case 129: /* callback_args */ + case 136: /* callback_arg_list */ + case 137: /* callback_args */ { -#line 139 "src/parser_proc.y" -psi_plist_free((yypminor->yy43)); -#line 1311 "src/parser_proc.c" +#line 142 "src/parser_proc.y" +psi_plist_free((yypminor->yy287)); +#line 1343 "src/parser_proc.c" } break; - case 130: /* let_callback */ + case 138: /* let_callback */ { -#line 143 "src/parser_proc.y" -psi_let_callback_free(&(yypminor->yy220)); -#line 1318 "src/parser_proc.c" +#line 146 "src/parser_proc.y" +psi_let_callback_free(&(yypminor->yy164)); +#line 1350 "src/parser_proc.c" } break; - case 131: /* let_exp */ + case 139: /* let_exp */ { -#line 145 "src/parser_proc.y" -psi_let_exp_free(&(yypminor->yy20)); -#line 1325 "src/parser_proc.c" +#line 148 "src/parser_proc.y" +psi_let_exp_free(&(yypminor->yy144)); +#line 1357 "src/parser_proc.c" } break; - case 133: /* set_stmt */ + case 141: /* set_stmt */ { -#line 149 "src/parser_proc.y" -psi_set_stmt_free(&(yypminor->yy98)); -#line 1332 "src/parser_proc.c" +#line 152 "src/parser_proc.y" +psi_set_stmt_free(&(yypminor->yy226)); +#line 1364 "src/parser_proc.c" } break; - case 134: /* set_exp */ + case 142: /* set_exp */ { -#line 151 "src/parser_proc.y" -psi_set_exp_free(&(yypminor->yy147)); -#line 1339 "src/parser_proc.c" +#line 154 "src/parser_proc.y" +psi_set_exp_free(&(yypminor->yy67)); +#line 1371 "src/parser_proc.c" } break; - case 136: /* set_func */ + case 144: /* set_func */ { -#line 155 "src/parser_proc.y" -psi_set_func_free(&(yypminor->yy26)); -#line 1346 "src/parser_proc.c" +#line 158 "src/parser_proc.y" +psi_set_func_free(&(yypminor->yy78)); +#line 1378 "src/parser_proc.c" } break; - case 137: /* return_stmt */ + case 145: /* return_stmt */ { -#line 157 "src/parser_proc.y" -psi_return_stmt_free(&(yypminor->yy90)); -#line 1353 "src/parser_proc.c" +#line 160 "src/parser_proc.y" +psi_return_stmt_free(&(yypminor->yy130)); +#line 1385 "src/parser_proc.c" } break; - case 138: /* free_stmt */ + case 146: /* free_stmt */ { -#line 159 "src/parser_proc.y" -psi_free_stmt_free(&(yypminor->yy192)); -#line 1360 "src/parser_proc.c" +#line 162 "src/parser_proc.y" +psi_free_stmt_free(&(yypminor->yy76)); +#line 1392 "src/parser_proc.c" } break; - case 140: /* free_exp */ + case 148: /* free_exp */ { -#line 163 "src/parser_proc.y" -psi_free_exp_free(&(yypminor->yy94)); -#line 1367 "src/parser_proc.c" +#line 166 "src/parser_proc.y" +psi_free_exp_free(&(yypminor->yy197)); +#line 1399 "src/parser_proc.c" } break; - case 141: /* impl_type */ + case 149: /* impl_type */ { -#line 165 "src/parser_proc.y" -psi_impl_type_free(&(yypminor->yy138)); -#line 1374 "src/parser_proc.c" +#line 168 "src/parser_proc.y" +psi_impl_type_free(&(yypminor->yy142)); +#line 1406 "src/parser_proc.c" } break; /********* End destructor definitions *****************************************/ @@ -1622,163 +1654,163 @@ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ unsigned char nrhs; /* Number of right-hand side symbols in the rule */ } yyRuleInfo[] = { - { 147, 3 }, - { 147, 1 }, - { 147, 1 }, - { 147, 1 }, - { 147, 1 }, - { 147, 1 }, - { 147, 1 }, - { 147, 1 }, - { 148, 0 }, - { 148, 1 }, - { 94, 0 }, - { 94, 7 }, - { 149, 2 }, - { 150, 2 }, - { 151, 2 }, - { 88, 4 }, - { 89, 1 }, - { 89, 3 }, - { 90, 3 }, - { 90, 1 }, - { 91, 3 }, - { 92, 1 }, - { 92, 1 }, - { 93, 4 }, - { 95, 4 }, - { 96, 1 }, - { 97, 6 }, + { 155, 3 }, + { 155, 1 }, + { 155, 1 }, + { 155, 1 }, + { 155, 1 }, + { 155, 1 }, + { 155, 1 }, + { 155, 1 }, + { 156, 0 }, + { 156, 1 }, + { 102, 0 }, + { 102, 7 }, + { 157, 2 }, + { 158, 2 }, + { 159, 2 }, + { 96, 4 }, + { 97, 1 }, + { 97, 3 }, { 98, 3 }, - { 99, 4 }, - { 99, 4 }, - { 99, 2 }, + { 98, 1 }, + { 99, 3 }, { 100, 1 }, - { 101, 3 }, - { 100, 2 }, { 100, 1 }, - { 102, 6 }, - { 102, 8 }, - { 103, 1 }, - { 103, 2 }, - { 100, 7 }, - { 100, 8 }, + { 101, 4 }, + { 103, 4 }, { 104, 1 }, - { 152, 0 }, - { 152, 3 }, - { 105, 2 }, - { 105, 3 }, - { 106, 1 }, + { 105, 6 }, { 106, 3 }, - { 107, 2 }, - { 100, 7 }, - { 107, 3 }, { 107, 4 }, - { 108, 0 }, + { 107, 4 }, + { 107, 2 }, { 108, 1 }, + { 109, 3 }, + { 108, 2 }, { 108, 1 }, - { 108, 3 }, - { 109, 1 }, - { 109, 2 }, - { 110, 2 }, - { 110, 3 }, - { 111, 0 }, - { 111, 7 }, - { 153, 1 }, - { 153, 2 }, - { 154, 0 }, - { 154, 1 }, - { 153, 1 }, - { 153, 2 }, - { 155, 0 }, - { 155, 1 }, - { 155, 2 }, - { 156, 0 }, - { 156, 1 }, - { 112, 2 }, - { 112, 2 }, + { 110, 6 }, + { 110, 8 }, + { 111, 1 }, + { 111, 2 }, + { 108, 7 }, + { 108, 8 }, { 112, 1 }, - { 112, 1 }, - { 112, 1 }, - { 112, 2 }, - { 112, 2 }, - { 112, 2 }, - { 112, 1 }, - { 113, 1 }, + { 160, 0 }, + { 160, 3 }, { 113, 2 }, - { 114, 4 }, - { 114, 5 }, - { 115, 7 }, - { 115, 8 }, - { 115, 13 }, + { 113, 3 }, + { 114, 1 }, + { 114, 3 }, + { 115, 2 }, + { 108, 7 }, + { 115, 3 }, + { 115, 4 }, + { 116, 0 }, { 116, 1 }, + { 116, 1 }, + { 116, 3 }, + { 117, 1 }, { 117, 2 }, - { 141, 1 }, { 118, 2 }, - { 118, 4 }, - { 119, 1 }, - { 119, 3 }, + { 118, 3 }, + { 119, 0 }, + { 119, 7 }, + { 161, 1 }, + { 161, 2 }, + { 162, 0 }, + { 162, 1 }, + { 161, 1 }, + { 161, 2 }, + { 163, 0 }, + { 163, 1 }, + { 163, 2 }, + { 164, 0 }, + { 164, 1 }, + { 120, 2 }, + { 120, 2 }, + { 120, 1 }, + { 120, 1 }, + { 120, 1 }, + { 120, 2 }, + { 120, 2 }, + { 120, 2 }, + { 120, 1 }, { 121, 1 }, { 121, 2 }, - { 122, 1 }, - { 122, 1 }, - { 122, 1 }, - { 122, 1 }, - { 123, 1 }, - { 123, 1 }, + { 122, 4 }, + { 122, 5 }, + { 123, 7 }, + { 123, 8 }, + { 123, 13 }, { 124, 1 }, - { 124, 3 }, - { 124, 3 }, - { 124, 2 }, - { 131, 1 }, - { 131, 2 }, - { 131, 1 }, - { 131, 1 }, - { 131, 2 }, + { 125, 2 }, + { 149, 1 }, + { 126, 2 }, + { 126, 4 }, + { 127, 1 }, + { 127, 3 }, + { 129, 1 }, + { 129, 2 }, + { 130, 1 }, + { 130, 1 }, + { 130, 1 }, + { 130, 1 }, { 131, 1 }, - { 131, 2 }, { 131, 1 }, - { 131, 2 }, - { 131, 3 }, - { 125, 3 }, - { 125, 6 }, - { 130, 8 }, - { 126, 6 }, - { 127, 4 }, - { 127, 6 }, { 132, 1 }, { 132, 3 }, - { 128, 0 }, - { 128, 1 }, - { 129, 1 }, - { 129, 3 }, - { 157, 1 }, - { 157, 1 }, - { 136, 4 }, - { 136, 6 }, - { 136, 6 }, - { 134, 1 }, - { 134, 1 }, - { 135, 1 }, - { 135, 3 }, - { 134, 3 }, - { 133, 3 }, - { 137, 3 }, - { 138, 3 }, + { 132, 3 }, + { 132, 2 }, + { 139, 1 }, + { 139, 2 }, + { 139, 1 }, { 139, 1 }, + { 139, 2 }, + { 139, 1 }, + { 139, 2 }, + { 139, 1 }, + { 139, 2 }, { 139, 3 }, - { 140, 4 }, - { 142, 0 }, + { 133, 3 }, + { 133, 6 }, + { 138, 8 }, + { 134, 6 }, + { 135, 4 }, + { 135, 6 }, + { 140, 1 }, + { 140, 3 }, + { 136, 0 }, + { 136, 1 }, + { 137, 1 }, + { 137, 3 }, + { 165, 1 }, + { 165, 1 }, + { 144, 4 }, + { 144, 6 }, + { 144, 6 }, + { 142, 1 }, { 142, 1 }, - { 143, 0 }, { 143, 1 }, - { 144, 1 }, - { 144, 2 }, - { 145, 1 }, - { 146, 1 }, - { 146, 2 }, - { 147, 1 }, + { 143, 3 }, + { 142, 3 }, + { 141, 3 }, + { 145, 3 }, + { 146, 3 }, { 147, 1 }, + { 147, 3 }, + { 148, 4 }, + { 150, 0 }, + { 150, 1 }, + { 151, 0 }, + { 151, 1 }, + { 152, 1 }, + { 152, 2 }, + { 153, 1 }, + { 154, 1 }, + { 154, 2 }, + { 155, 1 }, + { 155, 1 }, }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -1843,7 +1875,7 @@ static void yy_reduce( /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* block ::= LIB QUOTED_STRING EOS */ -#line 174 "src/parser_proc.y" +#line 177 "src/parser_proc.y" { if (P->file.ln) { P->error(PSI_DATA(P), yymsp[-2].minor.yy0, PSI_WARNING, "Extra 'lib %s' statement has no effect", yymsp[-1].minor.yy0->text); @@ -1853,115 +1885,115 @@ static void yy_reduce( free(yymsp[-1].minor.yy0); free(yymsp[-2].minor.yy0); } -#line 1857 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); +#line 1889 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); break; case 1: /* block ::= decl */ -#line 183 "src/parser_proc.y" +#line 186 "src/parser_proc.y" { if (!P->decls) { P->decls = psi_plist_init((psi_plist_dtor) psi_decl_free); } - P->decls = psi_plist_add(P->decls, &yymsp[0].minor.yy103); + P->decls = psi_plist_add(P->decls, &yymsp[0].minor.yy71); } -#line 1868 "src/parser_proc.c" +#line 1900 "src/parser_proc.c" break; case 2: /* block ::= impl */ -#line 189 "src/parser_proc.y" +#line 192 "src/parser_proc.y" { if (!P->impls) { P->impls = psi_plist_init((psi_plist_dtor) psi_impl_free); } - P->impls = psi_plist_add(P->impls, &yymsp[0].minor.yy97); + P->impls = psi_plist_add(P->impls, &yymsp[0].minor.yy49); } -#line 1878 "src/parser_proc.c" +#line 1910 "src/parser_proc.c" break; case 3: /* block ::= decl_typedef */ -#line 195 "src/parser_proc.y" +#line 198 "src/parser_proc.y" { if (!P->types) { P->types = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); } - P->types = psi_plist_add(P->types, &yymsp[0].minor.yy184); - switch (yymsp[0].minor.yy184->type->type) { + P->types = psi_plist_add(P->types, &yymsp[0].minor.yy260); + switch (yymsp[0].minor.yy260->type->type) { case PSI_T_STRUCT: - if (yymsp[0].minor.yy184->type->real.strct) { + if (yymsp[0].minor.yy260->type->real.strct) { if (!P->structs) { P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free); } - P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy184->type->real.strct); + P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy260->type->real.strct); } break; case PSI_T_UNION: - if (yymsp[0].minor.yy184->type->real.unn) { + if (yymsp[0].minor.yy260->type->real.unn) { if (!P->unions) { P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free); } - P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy184->type->real.unn); + P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy260->type->real.unn); } break; case PSI_T_ENUM: - if (yymsp[0].minor.yy184->type->real.enm) { + if (yymsp[0].minor.yy260->type->real.enm) { if (!P->enums) { P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free); } - P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy184->type->real.enm); + P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy260->type->real.enm); } break; } } -#line 1914 "src/parser_proc.c" +#line 1946 "src/parser_proc.c" break; case 4: /* block ::= constant */ -#line 227 "src/parser_proc.y" +#line 230 "src/parser_proc.y" { if (!P->consts) { P->consts = psi_plist_init((psi_plist_dtor) psi_const_free); } - P->consts = psi_plist_add(P->consts, &yymsp[0].minor.yy154); + P->consts = psi_plist_add(P->consts, &yymsp[0].minor.yy106); } -#line 1924 "src/parser_proc.c" +#line 1956 "src/parser_proc.c" break; case 5: /* block ::= decl_struct */ -#line 233 "src/parser_proc.y" +#line 236 "src/parser_proc.y" { if (!P->structs) { P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free); } - P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy275); + P->structs = psi_plist_add(P->structs, &yymsp[0].minor.yy271); } -#line 1934 "src/parser_proc.c" +#line 1966 "src/parser_proc.c" break; case 6: /* block ::= decl_union */ -#line 239 "src/parser_proc.y" +#line 242 "src/parser_proc.y" { if (!P->unions) { P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free); } - P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy271); + P->unions = psi_plist_add(P->unions, &yymsp[0].minor.yy19); } -#line 1944 "src/parser_proc.c" +#line 1976 "src/parser_proc.c" break; case 7: /* block ::= decl_enum */ -#line 245 "src/parser_proc.y" +#line 248 "src/parser_proc.y" { if (!P->enums) { P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free); } - P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy63); + P->enums = psi_plist_add(P->enums, &yymsp[0].minor.yy279); } -#line 1954 "src/parser_proc.c" +#line 1986 "src/parser_proc.c" break; case 8: /* optional_name ::= */ case 42: /* decl_var_array_size ::= */ yytestcase(yyruleno==42); case 64: /* decl_scalar_type_short ::= */ yytestcase(yyruleno==64); case 68: /* decl_scalar_type_long ::= */ yytestcase(yyruleno==68); case 71: /* decl_scalar_type_long_long ::= */ yytestcase(yyruleno==71); -#line 251 "src/parser_proc.y" +#line 254 "src/parser_proc.y" { yymsp[1].minor.yy0 = NULL; } -#line 1965 "src/parser_proc.c" +#line 1997 "src/parser_proc.c" break; case 9: /* optional_name ::= NAME */ case 62: /* decl_scalar_type ::= CHAR */ yytestcase(yyruleno==62); @@ -1971,41 +2003,41 @@ static void yy_reduce( case 72: /* decl_scalar_type_long_long ::= INT */ yytestcase(yyruleno==72); case 130: /* callback_rval ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT */ yytestcase(yyruleno==130); case 131: /* callback_rval ::= VOID */ yytestcase(yyruleno==131); -#line 254 "src/parser_proc.y" +#line 257 "src/parser_proc.y" { yylhsminor.yy0 = yymsp[0].minor.yy0; } -#line 1979 "src/parser_proc.c" +#line 2011 "src/parser_proc.c" yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 10: /* align_and_size ::= */ -#line 257 "src/parser_proc.y" +#line 260 "src/parser_proc.y" { - yymsp[1].minor.yy91.pos = 0; - yymsp[1].minor.yy91.len = 0; + yymsp[1].minor.yy323.pos = 0; + yymsp[1].minor.yy323.len = 0; } -#line 1988 "src/parser_proc.c" +#line 2020 "src/parser_proc.c" break; case 11: /* align_and_size ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN */ -{ yy_destructor(yypParser,64,&yymsp[-6].minor); -#line 261 "src/parser_proc.y" +{ yy_destructor(yypParser,72,&yymsp[-6].minor); +#line 264 "src/parser_proc.y" { - yymsp[-6].minor.yy91.pos = atol(yymsp[-3].minor.yy0->text); - yymsp[-6].minor.yy91.len = atol(yymsp[-1].minor.yy0->text); + yymsp[-6].minor.yy323.pos = atol(yymsp[-3].minor.yy0->text); + yymsp[-6].minor.yy323.len = atol(yymsp[-1].minor.yy0->text); free(yymsp[-3].minor.yy0); free(yymsp[-1].minor.yy0); } -#line 1999 "src/parser_proc.c" - yy_destructor(yypParser,64,&yymsp[-5].minor); - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,66,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); +#line 2031 "src/parser_proc.c" + yy_destructor(yypParser,72,&yymsp[-5].minor); + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,74,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); } break; case 12: /* enum_name ::= ENUM optional_name */ case 13: /* struct_name ::= STRUCT optional_name */ yytestcase(yyruleno==13); case 14: /* union_name ::= UNION optional_name */ yytestcase(yyruleno==14); -#line 267 "src/parser_proc.y" +#line 270 "src/parser_proc.y" { if (yymsp[0].minor.yy0) { yylhsminor.yy0 = yymsp[0].minor.yy0; @@ -2016,526 +2048,526 @@ static void yy_reduce( yylhsminor.yy0 = psi_token_translit(psi_token_append(yymsp[-1].minor.yy0, 1, digest), " ", "@"); } } -#line 2020 "src/parser_proc.c" +#line 2052 "src/parser_proc.c" yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 15: /* decl_enum ::= enum_name LBRACE decl_enum_items RBRACE */ -#line 297 "src/parser_proc.y" +#line 300 "src/parser_proc.y" { - yylhsminor.yy63 = psi_decl_enum_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy163); - yylhsminor.yy63->token = yymsp[-3].minor.yy0; + yylhsminor.yy279 = psi_decl_enum_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); + yylhsminor.yy279->token = yymsp[-3].minor.yy0; } -#line 2029 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[-2].minor); - yy_destructor(yypParser,72,&yymsp[0].minor); - yymsp[-3].minor.yy63 = yylhsminor.yy63; +#line 2061 "src/parser_proc.c" + yy_destructor(yypParser,79,&yymsp[-2].minor); + yy_destructor(yypParser,80,&yymsp[0].minor); + yymsp[-3].minor.yy279 = yylhsminor.yy279; break; case 16: /* decl_enum_items ::= decl_enum_item */ -#line 301 "src/parser_proc.y" +#line 304 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_enum_item_free), - &yymsp[0].minor.yy217); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_enum_item_free), + &yymsp[0].minor.yy69); } -#line 2040 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 2072 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 17: /* decl_enum_items ::= decl_enum_items COMMA decl_enum_item */ -#line 305 "src/parser_proc.y" +#line 308 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy217); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy69); } -#line 2048 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 2080 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 18: /* decl_enum_item ::= NAME EQUALS num_exp */ -#line 308 "src/parser_proc.y" +#line 311 "src/parser_proc.y" { - yylhsminor.yy217 = psi_decl_enum_item_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy259); - yylhsminor.yy217->token = yymsp[-2].minor.yy0; + yylhsminor.yy69 = psi_decl_enum_item_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy39); + yylhsminor.yy69->token = yymsp[-2].minor.yy0; } -#line 2058 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-1].minor); - yymsp[-2].minor.yy217 = yylhsminor.yy217; +#line 2090 "src/parser_proc.c" + yy_destructor(yypParser,81,&yymsp[-1].minor); + yymsp[-2].minor.yy69 = yylhsminor.yy69; break; case 19: /* decl_enum_item ::= NAME */ -#line 312 "src/parser_proc.y" +#line 315 "src/parser_proc.y" { - yylhsminor.yy217 = psi_decl_enum_item_init(yymsp[0].minor.yy0->text, NULL); - yylhsminor.yy217->token = yymsp[0].minor.yy0; + yylhsminor.yy69 = psi_decl_enum_item_init(yymsp[0].minor.yy0->text, NULL); + yylhsminor.yy69->token = yymsp[0].minor.yy0; } -#line 2068 "src/parser_proc.c" - yymsp[0].minor.yy217 = yylhsminor.yy217; +#line 2100 "src/parser_proc.c" + yymsp[0].minor.yy69 = yylhsminor.yy69; break; case 20: /* decl_struct_args_block ::= LBRACE struct_args RBRACE */ -{ yy_destructor(yypParser,71,&yymsp[-2].minor); -#line 316 "src/parser_proc.y" +{ yy_destructor(yypParser,79,&yymsp[-2].minor); +#line 319 "src/parser_proc.y" { - yymsp[-2].minor.yy163 = yymsp[-1].minor.yy163; + yymsp[-2].minor.yy303 = yymsp[-1].minor.yy303; } -#line 2077 "src/parser_proc.c" - yy_destructor(yypParser,72,&yymsp[0].minor); +#line 2109 "src/parser_proc.c" + yy_destructor(yypParser,80,&yymsp[0].minor); } break; case 21: /* decl_struct_args ::= decl_struct_args_block */ -#line 319 "src/parser_proc.y" +#line 322 "src/parser_proc.y" { - yylhsminor.yy163 = yymsp[0].minor.yy163; + yylhsminor.yy303 = yymsp[0].minor.yy303; } -#line 2086 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 2118 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 22: /* decl_struct_args ::= EOS */ -{ yy_destructor(yypParser,63,&yymsp[0].minor); -#line 322 "src/parser_proc.y" +{ yy_destructor(yypParser,71,&yymsp[0].minor); +#line 325 "src/parser_proc.y" { - yymsp[0].minor.yy163 = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); + yymsp[0].minor.yy303 = psi_plist_init((psi_plist_dtor) psi_decl_arg_free); } -#line 2095 "src/parser_proc.c" +#line 2127 "src/parser_proc.c" } break; case 23: /* decl_struct ::= STRUCT NAME align_and_size decl_struct_args */ -{ yy_destructor(yypParser,69,&yymsp[-3].minor); -#line 325 "src/parser_proc.y" +{ yy_destructor(yypParser,77,&yymsp[-3].minor); +#line 328 "src/parser_proc.y" { - yymsp[-3].minor.yy275 = psi_decl_struct_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy163); - yymsp[-3].minor.yy275->align = yymsp[-1].minor.yy91.pos; - yymsp[-3].minor.yy275->size = yymsp[-1].minor.yy91.len; - yymsp[-3].minor.yy275->token = yymsp[-2].minor.yy0; + yymsp[-3].minor.yy271 = psi_decl_struct_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy303); + yymsp[-3].minor.yy271->align = yymsp[-1].minor.yy323.pos; + yymsp[-3].minor.yy271->size = yymsp[-1].minor.yy323.len; + yymsp[-3].minor.yy271->token = yymsp[-2].minor.yy0; } -#line 2107 "src/parser_proc.c" +#line 2139 "src/parser_proc.c" } break; case 24: /* decl_union ::= UNION NAME align_and_size decl_struct_args */ -{ yy_destructor(yypParser,70,&yymsp[-3].minor); -#line 331 "src/parser_proc.y" +{ yy_destructor(yypParser,78,&yymsp[-3].minor); +#line 334 "src/parser_proc.y" { - yymsp[-3].minor.yy271 = psi_decl_union_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy163); - yymsp[-3].minor.yy271->align = yymsp[-1].minor.yy91.pos; - yymsp[-3].minor.yy271->size = yymsp[-1].minor.yy91.len; - yymsp[-3].minor.yy271->token = yymsp[-2].minor.yy0; + yymsp[-3].minor.yy19 = psi_decl_union_init(yymsp[-2].minor.yy0->text, yymsp[0].minor.yy303); + yymsp[-3].minor.yy19->align = yymsp[-1].minor.yy323.pos; + yymsp[-3].minor.yy19->size = yymsp[-1].minor.yy323.len; + yymsp[-3].minor.yy19->token = yymsp[-2].minor.yy0; } -#line 2119 "src/parser_proc.c" +#line 2151 "src/parser_proc.c" } break; case 25: /* const_type ::= BOOL|INT|FLOAT|STRING */ -#line 337 "src/parser_proc.y" +#line 340 "src/parser_proc.y" { - yylhsminor.yy171 = psi_const_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy7 = psi_const_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); free(yymsp[0].minor.yy0); } -#line 2128 "src/parser_proc.c" - yymsp[0].minor.yy171 = yylhsminor.yy171; +#line 2160 "src/parser_proc.c" + yymsp[0].minor.yy7 = yylhsminor.yy7; break; case 26: /* constant ::= CONST const_type NSNAME EQUALS impl_def_val EOS */ -{ yy_destructor(yypParser,74,&yymsp[-5].minor); -#line 341 "src/parser_proc.y" +{ yy_destructor(yypParser,82,&yymsp[-5].minor); +#line 344 "src/parser_proc.y" { - yymsp[-5].minor.yy154 = psi_const_init(yymsp[-4].minor.yy171, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy93); - yymsp[-5].minor.yy154->token = yymsp[-3].minor.yy0; + yymsp[-5].minor.yy106 = psi_const_init(yymsp[-4].minor.yy7, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy21); + yymsp[-5].minor.yy106->token = yymsp[-3].minor.yy0; } -#line 2138 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-2].minor); - yy_destructor(yypParser,63,&yymsp[0].minor); +#line 2170 "src/parser_proc.c" + yy_destructor(yypParser,81,&yymsp[-2].minor); + yy_destructor(yypParser,71,&yymsp[0].minor); } break; case 27: /* decl_typedef ::= TYPEDEF decl_typedef_body EOS */ -#line 345 "src/parser_proc.y" +#line 348 "src/parser_proc.y" { - yylhsminor.yy184 = yymsp[-1].minor.yy184; - yylhsminor.yy184->token = yymsp[-2].minor.yy0; + yylhsminor.yy260 = yymsp[-1].minor.yy260; + yylhsminor.yy260->token = yymsp[-2].minor.yy0; } -#line 2149 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-2].minor.yy184 = yylhsminor.yy184; +#line 2181 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 28: /* decl_typedef_body_ex ::= struct_name align_and_size decl_struct_args_block decl_var */ -#line 349 "src/parser_proc.y" +#line 352 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy11); - yylhsminor.yy184->type->token = psi_token_copy(yymsp[-3].minor.yy0); - yylhsminor.yy184->type->real.strct = psi_decl_struct_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy163); - yylhsminor.yy184->type->real.strct->token = yymsp[-3].minor.yy0; - yylhsminor.yy184->type->real.strct->align = yymsp[-2].minor.yy91.pos; - yylhsminor.yy184->type->real.strct->size = yymsp[-2].minor.yy91.len; + yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy207); + yylhsminor.yy260->type->token = psi_token_copy(yymsp[-3].minor.yy0); + yylhsminor.yy260->type->real.strct = psi_decl_struct_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); + yylhsminor.yy260->type->real.strct->token = yymsp[-3].minor.yy0; + yylhsminor.yy260->type->real.strct->align = yymsp[-2].minor.yy323.pos; + yylhsminor.yy260->type->real.strct->size = yymsp[-2].minor.yy323.len; } -#line 2163 "src/parser_proc.c" - yymsp[-3].minor.yy184 = yylhsminor.yy184; +#line 2195 "src/parser_proc.c" + yymsp[-3].minor.yy260 = yylhsminor.yy260; break; case 29: /* decl_typedef_body_ex ::= union_name align_and_size decl_struct_args_block decl_var */ -#line 357 "src/parser_proc.y" +#line 360 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy11); - yylhsminor.yy184->type->token = psi_token_copy(yymsp[-3].minor.yy0); - yylhsminor.yy184->type->real.unn = psi_decl_union_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy163); - yylhsminor.yy184->type->real.unn->token = yymsp[-3].minor.yy0; - yylhsminor.yy184->type->real.unn->align = yymsp[-2].minor.yy91.pos; - yylhsminor.yy184->type->real.unn->size = yymsp[-2].minor.yy91.len; + yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, yymsp[-3].minor.yy0->text), yymsp[0].minor.yy207); + yylhsminor.yy260->type->token = psi_token_copy(yymsp[-3].minor.yy0); + yylhsminor.yy260->type->real.unn = psi_decl_union_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); + yylhsminor.yy260->type->real.unn->token = yymsp[-3].minor.yy0; + yylhsminor.yy260->type->real.unn->align = yymsp[-2].minor.yy323.pos; + yylhsminor.yy260->type->real.unn->size = yymsp[-2].minor.yy323.len; } -#line 2176 "src/parser_proc.c" - yymsp[-3].minor.yy184 = yylhsminor.yy184; +#line 2208 "src/parser_proc.c" + yymsp[-3].minor.yy260 = yylhsminor.yy260; break; case 30: /* decl_typedef_body_ex ::= decl_enum NAME */ -#line 365 "src/parser_proc.y" +#line 368 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init(psi_decl_type_init(PSI_T_ENUM, yymsp[-1].minor.yy63->name), psi_decl_var_init(yymsp[0].minor.yy0->text, 0, 0)); - yylhsminor.yy184->var->token = yymsp[0].minor.yy0; - yylhsminor.yy184->type->token = psi_token_copy(yymsp[-1].minor.yy63->token); - yylhsminor.yy184->type->real.enm = yymsp[-1].minor.yy63; + yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_ENUM, yymsp[-1].minor.yy279->name), psi_decl_var_init(yymsp[0].minor.yy0->text, 0, 0)); + yylhsminor.yy260->var->token = yymsp[0].minor.yy0; + yylhsminor.yy260->type->token = psi_token_copy(yymsp[-1].minor.yy279->token); + yylhsminor.yy260->type->real.enm = yymsp[-1].minor.yy279; } -#line 2187 "src/parser_proc.c" - yymsp[-1].minor.yy184 = yylhsminor.yy184; +#line 2219 "src/parser_proc.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 31: /* decl_typedef_body ::= decl_typedef_body_ex */ case 34: /* decl_typedef_body ::= decl_arg */ yytestcase(yyruleno==34); case 37: /* decl_func ::= decl_arg */ yytestcase(yyruleno==37); -#line 371 "src/parser_proc.y" +#line 374 "src/parser_proc.y" { - yylhsminor.yy184 = yymsp[0].minor.yy184; + yylhsminor.yy260 = yymsp[0].minor.yy260; } -#line 2197 "src/parser_proc.c" - yymsp[0].minor.yy184 = yylhsminor.yy184; +#line 2229 "src/parser_proc.c" + yymsp[0].minor.yy260 = yylhsminor.yy260; break; case 32: /* decl_typedef_body_fn_args ::= LPAREN decl_args RPAREN */ -{ yy_destructor(yypParser,65,&yymsp[-2].minor); -#line 374 "src/parser_proc.y" +{ yy_destructor(yypParser,73,&yymsp[-2].minor); +#line 377 "src/parser_proc.y" { - yymsp[-2].minor.yy163 = yymsp[-1].minor.yy163; + yymsp[-2].minor.yy303 = yymsp[-1].minor.yy303; } -#line 2206 "src/parser_proc.c" - yy_destructor(yypParser,67,&yymsp[0].minor); +#line 2238 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); } break; case 33: /* decl_typedef_body ::= decl_func decl_typedef_body_fn_args */ -#line 377 "src/parser_proc.y" +#line 380 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init(psi_decl_type_init(PSI_T_FUNCTION, yymsp[-1].minor.yy184->var->name), psi_decl_var_copy(yymsp[-1].minor.yy184->var)); - yylhsminor.yy184->type->token = psi_token_copy(yymsp[-1].minor.yy184->token); - yylhsminor.yy184->type->real.func = psi_decl_init(psi_decl_abi_init("default"), yymsp[-1].minor.yy184, yymsp[0].minor.yy163); + yylhsminor.yy260 = psi_decl_arg_init(psi_decl_type_init(PSI_T_FUNCTION, yymsp[-1].minor.yy260->var->name), psi_decl_var_copy(yymsp[-1].minor.yy260->var)); + yylhsminor.yy260->type->token = psi_token_copy(yymsp[-1].minor.yy260->token); + yylhsminor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), yymsp[-1].minor.yy260, yymsp[0].minor.yy303); } -#line 2217 "src/parser_proc.c" - yymsp[-1].minor.yy184 = yylhsminor.yy184; +#line 2249 "src/parser_proc.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 35: /* decl ::= decl_abi decl_func LPAREN decl_args RPAREN EOS */ -#line 385 "src/parser_proc.y" +#line 388 "src/parser_proc.y" { - yylhsminor.yy103 = psi_decl_init(yymsp[-5].minor.yy218, yymsp[-4].minor.yy184, yymsp[-2].minor.yy163); + yylhsminor.yy71 = psi_decl_init(yymsp[-5].minor.yy242, yymsp[-4].minor.yy260, yymsp[-2].minor.yy303); } -#line 2225 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-3].minor); - yy_destructor(yypParser,67,&yymsp[-1].minor); - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-5].minor.yy103 = yylhsminor.yy103; +#line 2257 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-3].minor); + yy_destructor(yypParser,75,&yymsp[-1].minor); + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-5].minor.yy71 = yylhsminor.yy71; break; case 36: /* decl ::= decl_abi decl_func LPAREN decl_args COMMA ELLIPSIS RPAREN EOS */ -#line 388 "src/parser_proc.y" +#line 391 "src/parser_proc.y" { - yylhsminor.yy103 = psi_decl_init(yymsp[-7].minor.yy218, yymsp[-6].minor.yy184, yymsp[-4].minor.yy163); - yylhsminor.yy103->varargs = 1; + yylhsminor.yy71 = psi_decl_init(yymsp[-7].minor.yy242, yymsp[-6].minor.yy260, yymsp[-4].minor.yy303); + yylhsminor.yy71->varargs = 1; } -#line 2237 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-5].minor); - yy_destructor(yypParser,66,&yymsp[-3].minor); - yy_destructor(yypParser,76,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[-1].minor); - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-7].minor.yy103 = yylhsminor.yy103; +#line 2269 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-5].minor); + yy_destructor(yypParser,74,&yymsp[-3].minor); + yy_destructor(yypParser,84,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[-1].minor); + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-7].minor.yy71 = yylhsminor.yy71; break; case 38: /* decl_func ::= VOID NAME */ -#line 395 "src/parser_proc.y" +#line 398 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init( + yylhsminor.yy260 = psi_decl_arg_init( psi_decl_type_init(yymsp[-1].minor.yy0->type, yymsp[-1].minor.yy0->text), psi_decl_var_init(yymsp[0].minor.yy0->text, 0, 0) ); - yylhsminor.yy184->type->token = yymsp[-1].minor.yy0; - yylhsminor.yy184->var->token = yymsp[0].minor.yy0; - yylhsminor.yy184->token = yymsp[0].minor.yy0; + yylhsminor.yy260->type->token = yymsp[-1].minor.yy0; + yylhsminor.yy260->var->token = yymsp[0].minor.yy0; + yylhsminor.yy260->token = yymsp[0].minor.yy0; } -#line 2256 "src/parser_proc.c" - yymsp[-1].minor.yy184 = yylhsminor.yy184; +#line 2288 "src/parser_proc.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 39: /* decl_typedef_body ::= VOID indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ -#line 404 "src/parser_proc.y" +#line 407 "src/parser_proc.y" { struct psi_decl_arg *func_ = psi_decl_arg_init( psi_decl_type_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text), - psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy202, 0) + psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy190, 0) ); func_->type->token = yymsp[-6].minor.yy0; func_->var->token = yymsp[-2].minor.yy0; func_->token = yymsp[-2].minor.yy0; - yylhsminor.yy184 = psi_decl_arg_init( + yylhsminor.yy260 = psi_decl_arg_init( psi_decl_type_init(PSI_T_FUNCTION, func_->var->name), psi_decl_var_copy(func_->var) ); - yylhsminor.yy184->var->pointer_level = yymsp[-3].minor.yy202; - yylhsminor.yy184->type->token = psi_token_copy(func_->token); - yylhsminor.yy184->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy163); + yylhsminor.yy260->var->pointer_level = yymsp[-3].minor.yy190; + yylhsminor.yy260->type->token = psi_token_copy(func_->token); + yylhsminor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy303); } -#line 2277 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,67,&yymsp[-1].minor); - yymsp[-6].minor.yy184 = yylhsminor.yy184; +#line 2309 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,75,&yymsp[-1].minor); + yymsp[-6].minor.yy260 = yylhsminor.yy260; break; case 40: /* decl_typedef_body ::= CONST VOID pointers LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ -{ yy_destructor(yypParser,74,&yymsp[-7].minor); -#line 420 "src/parser_proc.y" +{ yy_destructor(yypParser,82,&yymsp[-7].minor); +#line 423 "src/parser_proc.y" { struct psi_decl_arg *func_ = psi_decl_arg_init( psi_decl_type_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text), - psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy202, 0) + psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy190, 0) ); func_->type->token = yymsp[-6].minor.yy0; func_->var->token = yymsp[-2].minor.yy0; func_->token = yymsp[-2].minor.yy0; - yymsp[-7].minor.yy184 = psi_decl_arg_init( + yymsp[-7].minor.yy260 = psi_decl_arg_init( psi_decl_type_init(PSI_T_FUNCTION, func_->var->name), psi_decl_var_copy(func_->var) ); - yymsp[-7].minor.yy184->var->pointer_level = yymsp[-3].minor.yy202; - yymsp[-7].minor.yy184->type->token = psi_token_copy(func_->token); - yymsp[-7].minor.yy184->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy163); + yymsp[-7].minor.yy260->var->pointer_level = yymsp[-3].minor.yy190; + yymsp[-7].minor.yy260->type->token = psi_token_copy(func_->token); + yymsp[-7].minor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy303); } -#line 2301 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,67,&yymsp[-1].minor); +#line 2333 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,75,&yymsp[-1].minor); } break; case 41: /* decl_abi ::= NAME */ -#line 436 "src/parser_proc.y" +#line 439 "src/parser_proc.y" { - yylhsminor.yy218 = psi_decl_abi_init(yymsp[0].minor.yy0->text); - yylhsminor.yy218->token = yymsp[0].minor.yy0; + yylhsminor.yy242 = psi_decl_abi_init(yymsp[0].minor.yy0->text); + yylhsminor.yy242->token = yymsp[0].minor.yy0; } -#line 2312 "src/parser_proc.c" - yymsp[0].minor.yy218 = yylhsminor.yy218; +#line 2344 "src/parser_proc.c" + yymsp[0].minor.yy242 = yylhsminor.yy242; break; case 43: /* decl_var_array_size ::= LBRACKET NUMBER RBRACKET */ -{ yy_destructor(yypParser,77,&yymsp[-2].minor); -#line 443 "src/parser_proc.y" +{ yy_destructor(yypParser,85,&yymsp[-2].minor); +#line 446 "src/parser_proc.y" { yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } -#line 2321 "src/parser_proc.c" - yy_destructor(yypParser,78,&yymsp[0].minor); +#line 2353 "src/parser_proc.c" + yy_destructor(yypParser,86,&yymsp[0].minor); } break; case 44: /* decl_var ::= NAME decl_var_array_size */ -#line 446 "src/parser_proc.y" +#line 449 "src/parser_proc.y" { - yylhsminor.yy11 = psi_decl_var_init(yymsp[-1].minor.yy0->text, 0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); - yylhsminor.yy11->token = yymsp[-1].minor.yy0; + yylhsminor.yy207 = psi_decl_var_init(yymsp[-1].minor.yy0->text, 0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); + yylhsminor.yy207->token = yymsp[-1].minor.yy0; if (yymsp[0].minor.yy0) { free(yymsp[0].minor.yy0); } } -#line 2334 "src/parser_proc.c" - yymsp[-1].minor.yy11 = yylhsminor.yy11; +#line 2366 "src/parser_proc.c" + yymsp[-1].minor.yy207 = yylhsminor.yy207; break; case 45: /* decl_var ::= pointers NAME decl_var_array_size */ -#line 453 "src/parser_proc.y" +#line 456 "src/parser_proc.y" { - yylhsminor.yy11 = psi_decl_var_init(yymsp[-1].minor.yy0->text, yymsp[-2].minor.yy202+!!yymsp[0].minor.yy0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); - yylhsminor.yy11->token = yymsp[-1].minor.yy0; + yylhsminor.yy207 = psi_decl_var_init(yymsp[-1].minor.yy0->text, yymsp[-2].minor.yy190+!!yymsp[0].minor.yy0, yymsp[0].minor.yy0?atol(yymsp[0].minor.yy0->text):0); + yylhsminor.yy207->token = yymsp[-1].minor.yy0; if (yymsp[0].minor.yy0) { free(yymsp[0].minor.yy0); } } -#line 2346 "src/parser_proc.c" - yymsp[-2].minor.yy11 = yylhsminor.yy11; +#line 2378 "src/parser_proc.c" + yymsp[-2].minor.yy207 = yylhsminor.yy207; break; case 46: /* decl_vars ::= decl_var */ -#line 460 "src/parser_proc.y" +#line 463 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), - &yymsp[0].minor.yy11); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), + &yymsp[0].minor.yy207); } -#line 2355 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 2387 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 47: /* decl_vars ::= decl_vars COMMA decl_var */ -#line 464 "src/parser_proc.y" +#line 467 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy11); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy207); } -#line 2363 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 2395 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 48: /* decl_arg ::= const_decl_type decl_var */ -#line 467 "src/parser_proc.y" +#line 470 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init(yymsp[-1].minor.yy132, yymsp[0].minor.yy11); + yylhsminor.yy260 = psi_decl_arg_init(yymsp[-1].minor.yy152, yymsp[0].minor.yy207); } -#line 2372 "src/parser_proc.c" - yymsp[-1].minor.yy184 = yylhsminor.yy184; +#line 2404 "src/parser_proc.c" + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 49: /* decl_typedef_body ::= const_decl_type indirection LPAREN indirection NAME RPAREN decl_typedef_body_fn_args */ -#line 470 "src/parser_proc.y" +#line 473 "src/parser_proc.y" { struct psi_decl_arg *func_ = psi_decl_arg_init( - yymsp[-6].minor.yy132, - psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy202, 0) + yymsp[-6].minor.yy152, + psi_decl_var_init(yymsp[-2].minor.yy0->text, yymsp[-5].minor.yy190, 0) ); func_->var->token = yymsp[-2].minor.yy0; func_->token = yymsp[-2].minor.yy0; - yylhsminor.yy184 = psi_decl_arg_init( + yylhsminor.yy260 = psi_decl_arg_init( psi_decl_type_init(PSI_T_FUNCTION, func_->var->name), psi_decl_var_copy(func_->var) ); - yylhsminor.yy184->var->pointer_level = yymsp[-3].minor.yy202; - yylhsminor.yy184->type->token = psi_token_copy(func_->token); - yylhsminor.yy184->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy163); + yylhsminor.yy260->var->pointer_level = yymsp[-3].minor.yy190; + yylhsminor.yy260->type->token = psi_token_copy(func_->token); + yylhsminor.yy260->type->real.func = psi_decl_init(psi_decl_abi_init("default"), func_, yymsp[0].minor.yy303); } -#line 2392 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,67,&yymsp[-1].minor); - yymsp[-6].minor.yy184 = yylhsminor.yy184; +#line 2424 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,75,&yymsp[-1].minor); + yymsp[-6].minor.yy260 = yylhsminor.yy260; break; case 50: /* decl_arg ::= VOID pointers NAME */ -#line 485 "src/parser_proc.y" +#line 488 "src/parser_proc.y" { - yylhsminor.yy184 = psi_decl_arg_init( + yylhsminor.yy260 = psi_decl_arg_init( psi_decl_type_init(yymsp[-2].minor.yy0->type, yymsp[-2].minor.yy0->text), - psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy202, 0) + psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy190, 0) ); - yylhsminor.yy184->type->token = yymsp[-2].minor.yy0; - yylhsminor.yy184->var->token = yymsp[0].minor.yy0; - yylhsminor.yy184->token = yymsp[0].minor.yy0; + yylhsminor.yy260->type->token = yymsp[-2].minor.yy0; + yylhsminor.yy260->var->token = yymsp[0].minor.yy0; + yylhsminor.yy260->token = yymsp[0].minor.yy0; } -#line 2408 "src/parser_proc.c" - yymsp[-2].minor.yy184 = yylhsminor.yy184; +#line 2440 "src/parser_proc.c" + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 51: /* decl_arg ::= CONST VOID pointers NAME */ -{ yy_destructor(yypParser,74,&yymsp[-3].minor); -#line 494 "src/parser_proc.y" +{ yy_destructor(yypParser,82,&yymsp[-3].minor); +#line 497 "src/parser_proc.y" { - yymsp[-3].minor.yy184 = psi_decl_arg_init( + yymsp[-3].minor.yy260 = psi_decl_arg_init( psi_decl_type_init(yymsp[-2].minor.yy0->type, yymsp[-2].minor.yy0->text), - psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy202, 0) + psi_decl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy190, 0) ); - yymsp[-3].minor.yy184->type->token = yymsp[-2].minor.yy0; - yymsp[-3].minor.yy184->var->token = yymsp[0].minor.yy0; - yymsp[-3].minor.yy184->token = yymsp[0].minor.yy0; + yymsp[-3].minor.yy260->type->token = yymsp[-2].minor.yy0; + yymsp[-3].minor.yy260->var->token = yymsp[0].minor.yy0; + yymsp[-3].minor.yy260->token = yymsp[0].minor.yy0; } -#line 2423 "src/parser_proc.c" +#line 2455 "src/parser_proc.c" } break; case 52: /* decl_args ::= */ -#line 503 "src/parser_proc.y" +#line 506 "src/parser_proc.y" { - yymsp[1].minor.yy163 = NULL; + yymsp[1].minor.yy303 = NULL; } -#line 2431 "src/parser_proc.c" +#line 2463 "src/parser_proc.c" break; case 53: /* decl_args ::= VOID */ -{ yy_destructor(yypParser,49,&yymsp[0].minor); -#line 506 "src/parser_proc.y" +{ yy_destructor(yypParser,57,&yymsp[0].minor); +#line 509 "src/parser_proc.y" { - yymsp[0].minor.yy163 = NULL; + yymsp[0].minor.yy303 = NULL; } -#line 2439 "src/parser_proc.c" +#line 2471 "src/parser_proc.c" } break; case 54: /* decl_args ::= decl_arg */ case 56: /* struct_args ::= struct_arg */ yytestcase(yyruleno==56); -#line 509 "src/parser_proc.y" +#line 512 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), - &yymsp[0].minor.yy184); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), + &yymsp[0].minor.yy260); } -#line 2449 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 2481 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 55: /* decl_args ::= decl_args COMMA decl_arg */ -#line 513 "src/parser_proc.y" +#line 516 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy184); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy260); } -#line 2457 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 2489 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 57: /* struct_args ::= struct_args struct_arg */ -#line 520 "src/parser_proc.y" +#line 523 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-1].minor.yy163, &yymsp[0].minor.yy184); + yylhsminor.yy303 = psi_plist_add(yymsp[-1].minor.yy303, &yymsp[0].minor.yy260); } -#line 2466 "src/parser_proc.c" - yymsp[-1].minor.yy163 = yylhsminor.yy163; +#line 2498 "src/parser_proc.c" + yymsp[-1].minor.yy303 = yylhsminor.yy303; break; case 58: /* struct_arg ::= decl_typedef_body_ex EOS */ -#line 523 "src/parser_proc.y" +#line 526 "src/parser_proc.y" { - yylhsminor.yy184 = yymsp[-1].minor.yy184; - switch (yymsp[-1].minor.yy184->type->type) { + yylhsminor.yy260 = yymsp[-1].minor.yy260; + switch (yymsp[-1].minor.yy260->type->type) { case PSI_T_STRUCT: - if (yymsp[-1].minor.yy184->type->real.strct) { + if (yymsp[-1].minor.yy260->type->real.strct) { if (!P->structs) { P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free); } - P->structs = psi_plist_add(P->structs, &yymsp[-1].minor.yy184->type->real.strct); + P->structs = psi_plist_add(P->structs, &yymsp[-1].minor.yy260->type->real.strct); } break; case PSI_T_UNION: - if (yymsp[-1].minor.yy184->type->real.unn) { + if (yymsp[-1].minor.yy260->type->real.unn) { if (!P->unions) { P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free); } - P->unions = psi_plist_add(P->unions, &yymsp[-1].minor.yy184->type->real.unn); + P->unions = psi_plist_add(P->unions, &yymsp[-1].minor.yy260->type->real.unn); } break; case PSI_T_ENUM: - if (yymsp[-1].minor.yy184->type->real.enm) { + if (yymsp[-1].minor.yy260->type->real.enm) { if (!P->enums) { P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free); } - P->enums = psi_plist_add(P->enums, &yymsp[-1].minor.yy184->type->real.enm); + P->enums = psi_plist_add(P->enums, &yymsp[-1].minor.yy260->type->real.enm); } break; } } -#line 2500 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-1].minor.yy184 = yylhsminor.yy184; +#line 2532 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-1].minor.yy260 = yylhsminor.yy260; break; case 59: /* struct_arg ::= decl_arg decl_layout EOS */ -#line 552 "src/parser_proc.y" +#line 555 "src/parser_proc.y" { - yymsp[-2].minor.yy184->layout = yymsp[-1].minor.yy141; - yylhsminor.yy184 = yymsp[-2].minor.yy184; + yymsp[-2].minor.yy260->layout = yymsp[-1].minor.yy81; + yylhsminor.yy260 = yymsp[-2].minor.yy260; } -#line 2510 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-2].minor.yy184 = yylhsminor.yy184; +#line 2542 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-2].minor.yy260 = yylhsminor.yy260; break; case 60: /* decl_layout ::= */ -#line 556 "src/parser_proc.y" +#line 559 "src/parser_proc.y" { - yymsp[1].minor.yy141 = NULL; + yymsp[1].minor.yy81 = NULL; } -#line 2519 "src/parser_proc.c" +#line 2551 "src/parser_proc.c" break; case 61: /* decl_layout ::= COLON COLON LPAREN NUMBER COMMA NUMBER RPAREN */ -{ yy_destructor(yypParser,64,&yymsp[-6].minor); -#line 559 "src/parser_proc.y" +{ yy_destructor(yypParser,72,&yymsp[-6].minor); +#line 562 "src/parser_proc.y" { - yymsp[-6].minor.yy141 = psi_layout_init(atol(yymsp[-3].minor.yy0->text), atol(yymsp[-1].minor.yy0->text)); + yymsp[-6].minor.yy81 = psi_layout_init(atol(yymsp[-3].minor.yy0->text), atol(yymsp[-1].minor.yy0->text)); free(yymsp[-3].minor.yy0); free(yymsp[-1].minor.yy0); } -#line 2529 "src/parser_proc.c" - yy_destructor(yypParser,64,&yymsp[-5].minor); - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,66,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); +#line 2561 "src/parser_proc.c" + yy_destructor(yypParser,72,&yymsp[-5].minor); + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,74,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); } break; case 63: /* decl_scalar_type ::= SHORT decl_scalar_type_short */ case 67: /* decl_scalar_type ::= LONG decl_scalar_type_long */ yytestcase(yyruleno==67); case 70: /* decl_scalar_type_long ::= LONG decl_scalar_type_long_long */ yytestcase(yyruleno==70); -#line 567 "src/parser_proc.y" +#line 570 "src/parser_proc.y" { if (yymsp[0].minor.yy0) { yylhsminor.yy0 = psi_token_cat(2, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); @@ -2545,749 +2577,749 @@ static void yy_reduce( yylhsminor.yy0 = yymsp[-1].minor.yy0; } } -#line 2549 "src/parser_proc.c" +#line 2581 "src/parser_proc.c" yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 73: /* decl_type ::= UNSIGNED decl_scalar_type */ case 74: /* decl_type ::= SIGNED decl_scalar_type */ yytestcase(yyruleno==74); -#line 615 "src/parser_proc.y" +#line 618 "src/parser_proc.y" { struct psi_token *T = psi_token_cat(2, yymsp[-1].minor.yy0, yymsp[0].minor.yy0); - yylhsminor.yy132 = psi_decl_type_init(T->type, T->text); - yylhsminor.yy132->token = T; + yylhsminor.yy152 = psi_decl_type_init(T->type, T->text); + yylhsminor.yy152->token = T; free(yymsp[-1].minor.yy0); free(yymsp[0].minor.yy0); } -#line 2562 "src/parser_proc.c" - yymsp[-1].minor.yy132 = yylhsminor.yy132; +#line 2594 "src/parser_proc.c" + yymsp[-1].minor.yy152 = yylhsminor.yy152; break; case 75: /* decl_type ::= UNSIGNED */ case 76: /* decl_type ::= SIGNED */ yytestcase(yyruleno==76); -#line 629 "src/parser_proc.y" +#line 632 "src/parser_proc.y" { - yylhsminor.yy132 = psi_decl_type_init(PSI_T_NAME, yymsp[0].minor.yy0->text); - yylhsminor.yy132->token = yymsp[0].minor.yy0; + yylhsminor.yy152 = psi_decl_type_init(PSI_T_NAME, yymsp[0].minor.yy0->text); + yylhsminor.yy152->token = yymsp[0].minor.yy0; } -#line 2572 "src/parser_proc.c" - yymsp[0].minor.yy132 = yylhsminor.yy132; +#line 2604 "src/parser_proc.c" + yymsp[0].minor.yy152 = yylhsminor.yy152; break; case 77: /* decl_type ::= decl_scalar_type */ case 81: /* decl_type ::= FLOAT|DOUBLE|INT8|UINT8|INT16|UINT16|INT32|UINT32|INT64|UINT64|NAME */ yytestcase(yyruleno==81); -#line 637 "src/parser_proc.y" +#line 640 "src/parser_proc.y" { - yylhsminor.yy132 = psi_decl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy132->token = yymsp[0].minor.yy0; + yylhsminor.yy152 = psi_decl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy152->token = yymsp[0].minor.yy0; } -#line 2582 "src/parser_proc.c" - yymsp[0].minor.yy132 = yylhsminor.yy132; +#line 2614 "src/parser_proc.c" + yymsp[0].minor.yy152 = yylhsminor.yy152; break; case 78: /* decl_type ::= STRUCT NAME */ case 79: /* decl_type ::= UNION NAME */ yytestcase(yyruleno==79); case 80: /* decl_type ::= ENUM NAME */ yytestcase(yyruleno==80); -#line 641 "src/parser_proc.y" +#line 644 "src/parser_proc.y" { - yylhsminor.yy132 = psi_decl_type_init(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy132->token = yymsp[0].minor.yy0; + yylhsminor.yy152 = psi_decl_type_init(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy152->token = yymsp[0].minor.yy0; free(yymsp[-1].minor.yy0); } -#line 2594 "src/parser_proc.c" - yymsp[-1].minor.yy132 = yylhsminor.yy132; +#line 2626 "src/parser_proc.c" + yymsp[-1].minor.yy152 = yylhsminor.yy152; break; case 82: /* const_decl_type ::= decl_type */ -#line 660 "src/parser_proc.y" +#line 663 "src/parser_proc.y" { - yylhsminor.yy132 = yymsp[0].minor.yy132; + yylhsminor.yy152 = yymsp[0].minor.yy152; } -#line 2602 "src/parser_proc.c" - yymsp[0].minor.yy132 = yylhsminor.yy132; +#line 2634 "src/parser_proc.c" + yymsp[0].minor.yy152 = yylhsminor.yy152; break; case 83: /* const_decl_type ::= CONST decl_type */ -{ yy_destructor(yypParser,74,&yymsp[-1].minor); -#line 663 "src/parser_proc.y" +{ yy_destructor(yypParser,82,&yymsp[-1].minor); +#line 666 "src/parser_proc.y" { - yymsp[-1].minor.yy132 = yymsp[0].minor.yy132; + yymsp[-1].minor.yy152 = yymsp[0].minor.yy152; } -#line 2611 "src/parser_proc.c" +#line 2643 "src/parser_proc.c" } break; case 84: /* impl ::= impl_func LBRACE impl_stmts RBRACE */ -#line 666 "src/parser_proc.y" +#line 669 "src/parser_proc.y" { - yylhsminor.yy97 = psi_impl_init(yymsp[-3].minor.yy168, yymsp[-1].minor.yy163); + yylhsminor.yy49 = psi_impl_init(yymsp[-3].minor.yy120, yymsp[-1].minor.yy303); } -#line 2619 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[-2].minor); - yy_destructor(yypParser,72,&yymsp[0].minor); - yymsp[-3].minor.yy97 = yylhsminor.yy97; +#line 2651 "src/parser_proc.c" + yy_destructor(yypParser,79,&yymsp[-2].minor); + yy_destructor(yypParser,80,&yymsp[0].minor); + yymsp[-3].minor.yy49 = yylhsminor.yy49; break; case 85: /* impl ::= STATIC impl_func LBRACE impl_stmts RBRACE */ -{ yy_destructor(yypParser,84,&yymsp[-4].minor); -#line 669 "src/parser_proc.y" +{ yy_destructor(yypParser,92,&yymsp[-4].minor); +#line 672 "src/parser_proc.y" { - yymsp[-3].minor.yy168->static_memory = 1; - yymsp[-4].minor.yy97 = psi_impl_init(yymsp[-3].minor.yy168, yymsp[-1].minor.yy163); + yymsp[-3].minor.yy120->static_memory = 1; + yymsp[-4].minor.yy49 = psi_impl_init(yymsp[-3].minor.yy120, yymsp[-1].minor.yy303); } -#line 2631 "src/parser_proc.c" - yy_destructor(yypParser,71,&yymsp[-2].minor); - yy_destructor(yypParser,72,&yymsp[0].minor); +#line 2663 "src/parser_proc.c" + yy_destructor(yypParser,79,&yymsp[-2].minor); + yy_destructor(yypParser,80,&yymsp[0].minor); } break; case 86: /* impl_func ::= FUNCTION reference NSNAME LPAREN RPAREN COLON impl_type */ -{ yy_destructor(yypParser,85,&yymsp[-6].minor); -#line 673 "src/parser_proc.y" +{ yy_destructor(yypParser,93,&yymsp[-6].minor); +#line 676 "src/parser_proc.y" { - yymsp[-6].minor.yy168 = psi_impl_func_init(yymsp[-4].minor.yy0->text, NULL, yymsp[0].minor.yy138); - yymsp[-6].minor.yy168->token = yymsp[-4].minor.yy0; - yymsp[-6].minor.yy168->return_reference = yymsp[-5].minor.yy121; + yymsp[-6].minor.yy120 = psi_impl_func_init(yymsp[-4].minor.yy0->text, NULL, yymsp[0].minor.yy142); + yymsp[-6].minor.yy120->token = yymsp[-4].minor.yy0; + yymsp[-6].minor.yy120->return_reference = yymsp[-5].minor.yy273; } -#line 2644 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-3].minor); - yy_destructor(yypParser,67,&yymsp[-2].minor); - yy_destructor(yypParser,64,&yymsp[-1].minor); +#line 2676 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-3].minor); + yy_destructor(yypParser,75,&yymsp[-2].minor); + yy_destructor(yypParser,72,&yymsp[-1].minor); } break; case 87: /* impl_func ::= FUNCTION reference NSNAME LPAREN impl_args RPAREN COLON impl_type */ -{ yy_destructor(yypParser,85,&yymsp[-7].minor); -#line 678 "src/parser_proc.y" +{ yy_destructor(yypParser,93,&yymsp[-7].minor); +#line 681 "src/parser_proc.y" { - yymsp[-7].minor.yy168 = psi_impl_func_init(yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy163, yymsp[0].minor.yy138); - yymsp[-7].minor.yy168->token = yymsp[-5].minor.yy0; - yymsp[-7].minor.yy168->return_reference = yymsp[-6].minor.yy121; + yymsp[-7].minor.yy120 = psi_impl_func_init(yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy303, yymsp[0].minor.yy142); + yymsp[-7].minor.yy120->token = yymsp[-5].minor.yy0; + yymsp[-7].minor.yy120->return_reference = yymsp[-6].minor.yy273; } -#line 2658 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,67,&yymsp[-2].minor); - yy_destructor(yypParser,64,&yymsp[-1].minor); +#line 2690 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,75,&yymsp[-2].minor); + yy_destructor(yypParser,72,&yymsp[-1].minor); } break; case 88: /* impl_func ::= FUNCTION reference NSNAME LPAREN impl_args COMMA impl_type reference ELLIPSIS DOLLAR_NAME RPAREN COLON impl_type */ -{ yy_destructor(yypParser,85,&yymsp[-12].minor); -#line 683 "src/parser_proc.y" +{ yy_destructor(yypParser,93,&yymsp[-12].minor); +#line 686 "src/parser_proc.y" { - yymsp[-12].minor.yy168 = psi_impl_func_init(yymsp[-10].minor.yy0->text, yymsp[-8].minor.yy163, yymsp[0].minor.yy138); - yymsp[-12].minor.yy168->token = yymsp[-10].minor.yy0; - yymsp[-12].minor.yy168->return_reference = yymsp[-11].minor.yy121; - yymsp[-12].minor.yy168->vararg = psi_impl_arg_init(yymsp[-6].minor.yy138, psi_impl_var_init(yymsp[-3].minor.yy0->text, yymsp[-5].minor.yy121), NULL); + yymsp[-12].minor.yy120 = psi_impl_func_init(yymsp[-10].minor.yy0->text, yymsp[-8].minor.yy303, yymsp[0].minor.yy142); + yymsp[-12].minor.yy120->token = yymsp[-10].minor.yy0; + yymsp[-12].minor.yy120->return_reference = yymsp[-11].minor.yy273; + yymsp[-12].minor.yy120->vararg = psi_impl_arg_init(yymsp[-6].minor.yy142, psi_impl_var_init(yymsp[-3].minor.yy0->text, yymsp[-5].minor.yy273), NULL); free(yymsp[-3].minor.yy0); } -#line 2674 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-9].minor); - yy_destructor(yypParser,66,&yymsp[-7].minor); - yy_destructor(yypParser,76,&yymsp[-4].minor); - yy_destructor(yypParser,67,&yymsp[-2].minor); - yy_destructor(yypParser,64,&yymsp[-1].minor); +#line 2706 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-9].minor); + yy_destructor(yypParser,74,&yymsp[-7].minor); + yy_destructor(yypParser,84,&yymsp[-4].minor); + yy_destructor(yypParser,75,&yymsp[-2].minor); + yy_destructor(yypParser,72,&yymsp[-1].minor); } break; case 89: /* impl_def_val ::= NULL|NUMBER|TRUE|FALSE|QUOTED_STRING */ -#line 690 "src/parser_proc.y" +#line 693 "src/parser_proc.y" { - yylhsminor.yy93 = psi_impl_def_val_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy93->token = yymsp[0].minor.yy0; + yylhsminor.yy21 = psi_impl_def_val_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy21->token = yymsp[0].minor.yy0; } -#line 2688 "src/parser_proc.c" - yymsp[0].minor.yy93 = yylhsminor.yy93; +#line 2720 "src/parser_proc.c" + yymsp[0].minor.yy21 = yylhsminor.yy21; break; case 90: /* impl_var ::= reference DOLLAR_NAME */ -#line 694 "src/parser_proc.y" +#line 697 "src/parser_proc.y" { - yylhsminor.yy37 = psi_impl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy121); - yylhsminor.yy37->token = yymsp[0].minor.yy0; + yylhsminor.yy185 = psi_impl_var_init(yymsp[0].minor.yy0->text, yymsp[-1].minor.yy273); + yylhsminor.yy185->token = yymsp[0].minor.yy0; } -#line 2697 "src/parser_proc.c" - yymsp[-1].minor.yy37 = yylhsminor.yy37; +#line 2729 "src/parser_proc.c" + yymsp[-1].minor.yy185 = yylhsminor.yy185; break; case 91: /* impl_type ::= VOID|MIXED|BOOL|INT|FLOAT|STRING|ARRAY|OBJECT|CALLABLE */ -#line 698 "src/parser_proc.y" +#line 701 "src/parser_proc.y" { - yylhsminor.yy138 = psi_impl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy142 = psi_impl_type_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); free(yymsp[0].minor.yy0); } -#line 2706 "src/parser_proc.c" - yymsp[0].minor.yy138 = yylhsminor.yy138; +#line 2738 "src/parser_proc.c" + yymsp[0].minor.yy142 = yylhsminor.yy142; break; case 92: /* impl_arg ::= impl_type impl_var */ -#line 702 "src/parser_proc.y" +#line 705 "src/parser_proc.y" { - yylhsminor.yy210 = psi_impl_arg_init(yymsp[-1].minor.yy138, yymsp[0].minor.yy37, NULL); + yylhsminor.yy238 = psi_impl_arg_init(yymsp[-1].minor.yy142, yymsp[0].minor.yy185, NULL); } -#line 2714 "src/parser_proc.c" - yymsp[-1].minor.yy210 = yylhsminor.yy210; +#line 2746 "src/parser_proc.c" + yymsp[-1].minor.yy238 = yylhsminor.yy238; break; case 93: /* impl_arg ::= impl_type impl_var EQUALS impl_def_val */ -#line 705 "src/parser_proc.y" +#line 708 "src/parser_proc.y" { - yylhsminor.yy210 = psi_impl_arg_init(yymsp[-3].minor.yy138, yymsp[-2].minor.yy37, yymsp[0].minor.yy93); + yylhsminor.yy238 = psi_impl_arg_init(yymsp[-3].minor.yy142, yymsp[-2].minor.yy185, yymsp[0].minor.yy21); } -#line 2722 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-1].minor); - yymsp[-3].minor.yy210 = yylhsminor.yy210; +#line 2754 "src/parser_proc.c" + yy_destructor(yypParser,81,&yymsp[-1].minor); + yymsp[-3].minor.yy238 = yylhsminor.yy238; break; case 94: /* impl_args ::= impl_arg */ -#line 708 "src/parser_proc.y" +#line 711 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_arg_free), - &yymsp[0].minor.yy210); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_arg_free), + &yymsp[0].minor.yy238); } -#line 2732 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 2764 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 95: /* impl_args ::= impl_args COMMA impl_arg */ -#line 712 "src/parser_proc.y" +#line 715 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy210); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy238); } -#line 2740 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 2772 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 96: /* impl_stmts ::= impl_stmt */ -#line 715 "src/parser_proc.y" +#line 718 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_stmt_free), - &yymsp[0].minor.yy78); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_stmt_free), + &yymsp[0].minor.yy38); } -#line 2750 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 2782 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 97: /* impl_stmts ::= impl_stmts impl_stmt */ -#line 719 "src/parser_proc.y" +#line 722 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-1].minor.yy163, &yymsp[0].minor.yy78); + yylhsminor.yy303 = psi_plist_add(yymsp[-1].minor.yy303, &yymsp[0].minor.yy38); } -#line 2758 "src/parser_proc.c" - yymsp[-1].minor.yy163 = yylhsminor.yy163; +#line 2790 "src/parser_proc.c" + yymsp[-1].minor.yy303 = yylhsminor.yy303; break; case 98: /* impl_stmt ::= return_stmt */ -#line 722 "src/parser_proc.y" +#line 725 "src/parser_proc.y" { - yylhsminor.yy78 = (struct psi_token**) yymsp[0].minor.yy90; + yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy130; } -#line 2766 "src/parser_proc.c" - yymsp[0].minor.yy78 = yylhsminor.yy78; +#line 2798 "src/parser_proc.c" + yymsp[0].minor.yy38 = yylhsminor.yy38; break; case 99: /* impl_stmt ::= let_stmt */ -#line 725 "src/parser_proc.y" +#line 728 "src/parser_proc.y" { - yylhsminor.yy78 = (struct psi_token**) yymsp[0].minor.yy311; + yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy139; } -#line 2774 "src/parser_proc.c" - yymsp[0].minor.yy78 = yylhsminor.yy78; +#line 2806 "src/parser_proc.c" + yymsp[0].minor.yy38 = yylhsminor.yy38; break; case 100: /* impl_stmt ::= set_stmt */ -#line 728 "src/parser_proc.y" +#line 731 "src/parser_proc.y" { - yylhsminor.yy78 = (struct psi_token**) yymsp[0].minor.yy98; + yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy226; } -#line 2782 "src/parser_proc.c" - yymsp[0].minor.yy78 = yylhsminor.yy78; +#line 2814 "src/parser_proc.c" + yymsp[0].minor.yy38 = yylhsminor.yy38; break; case 101: /* impl_stmt ::= free_stmt */ -#line 731 "src/parser_proc.y" +#line 734 "src/parser_proc.y" { - yylhsminor.yy78 = (struct psi_token**) yymsp[0].minor.yy192; + yylhsminor.yy38 = (struct psi_token**) yymsp[0].minor.yy76; } -#line 2790 "src/parser_proc.c" - yymsp[0].minor.yy78 = yylhsminor.yy78; +#line 2822 "src/parser_proc.c" + yymsp[0].minor.yy38 = yylhsminor.yy38; break; case 102: /* number ::= NUMBER|NSNAME */ -#line 734 "src/parser_proc.y" +#line 737 "src/parser_proc.y" { - yylhsminor.yy188 = psi_number_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); - yylhsminor.yy188->token = yymsp[0].minor.yy0; + yylhsminor.yy160 = psi_number_init(yymsp[0].minor.yy0->type, yymsp[0].minor.yy0->text); + yylhsminor.yy160->token = yymsp[0].minor.yy0; } -#line 2799 "src/parser_proc.c" - yymsp[0].minor.yy188 = yylhsminor.yy188; +#line 2831 "src/parser_proc.c" + yymsp[0].minor.yy160 = yylhsminor.yy160; break; case 103: /* number ::= decl_var */ -#line 738 "src/parser_proc.y" +#line 741 "src/parser_proc.y" { - yylhsminor.yy188 = psi_number_init(PSI_T_NAME, yymsp[0].minor.yy11); - yylhsminor.yy188->token = psi_token_copy(yymsp[0].minor.yy11->token); + yylhsminor.yy160 = psi_number_init(PSI_T_NAME, yymsp[0].minor.yy207); + yylhsminor.yy160->token = psi_token_copy(yymsp[0].minor.yy207->token); } -#line 2808 "src/parser_proc.c" - yymsp[0].minor.yy188 = yylhsminor.yy188; +#line 2840 "src/parser_proc.c" + yymsp[0].minor.yy160 = yylhsminor.yy160; break; case 104: /* num_exp ::= number */ -#line 742 "src/parser_proc.y" +#line 745 "src/parser_proc.y" { - yylhsminor.yy259 = psi_num_exp_init_num(yymsp[0].minor.yy188); - yylhsminor.yy259->token = psi_token_copy(yymsp[0].minor.yy188->token); + yylhsminor.yy39 = psi_num_exp_init_num(yymsp[0].minor.yy160); + yylhsminor.yy39->token = psi_token_copy(yymsp[0].minor.yy160->token); } -#line 2817 "src/parser_proc.c" - yymsp[0].minor.yy259 = yylhsminor.yy259; +#line 2849 "src/parser_proc.c" + yymsp[0].minor.yy39 = yylhsminor.yy39; break; case 105: /* num_exp ::= LPAREN num_exp RPAREN */ -#line 746 "src/parser_proc.y" +#line 749 "src/parser_proc.y" { - yylhsminor.yy259 = psi_num_exp_init_unary(PSI_T_LPAREN, yymsp[-1].minor.yy259); - yylhsminor.yy259->token = yymsp[-2].minor.yy0; + yylhsminor.yy39 = psi_num_exp_init_unary(PSI_T_LPAREN, yymsp[-1].minor.yy39); + yylhsminor.yy39->token = yymsp[-2].minor.yy0; } -#line 2826 "src/parser_proc.c" - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-2].minor.yy259 = yylhsminor.yy259; +#line 2858 "src/parser_proc.c" + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-2].minor.yy39 = yylhsminor.yy39; break; - case 106: /* num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO num_exp */ -#line 750 "src/parser_proc.y" + case 106: /* num_exp ::= num_exp PIPE|CARET|AMPERSAND|LSHIFT|RSHIFT|PLUS|MINUS|ASTERISK|SLASH|MODULO|RCHEVR|LCHEVR|CMP_GE|CMP_LE|OR|AND|CMP_EQ|CMP_NE num_exp */ +#line 753 "src/parser_proc.y" { - yylhsminor.yy259 = psi_num_exp_init_binary(yymsp[-1].minor.yy0->type, yymsp[-2].minor.yy259, yymsp[0].minor.yy259); - yylhsminor.yy259->token = yymsp[-1].minor.yy0; + yylhsminor.yy39 = psi_num_exp_init_binary(yymsp[-1].minor.yy0->type, yymsp[-2].minor.yy39, yymsp[0].minor.yy39); + yylhsminor.yy39->token = yymsp[-1].minor.yy0; } -#line 2836 "src/parser_proc.c" - yymsp[-2].minor.yy259 = yylhsminor.yy259; +#line 2868 "src/parser_proc.c" + yymsp[-2].minor.yy39 = yylhsminor.yy39; break; case 107: /* num_exp ::= TILDE|NOT|PLUS|MINUS num_exp */ -#line 754 "src/parser_proc.y" +#line 757 "src/parser_proc.y" { - yylhsminor.yy259 = psi_num_exp_init_unary(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy259); - yylhsminor.yy259->token = yymsp[-1].minor.yy0; + yylhsminor.yy39 = psi_num_exp_init_unary(yymsp[-1].minor.yy0->type, yymsp[0].minor.yy39); + yylhsminor.yy39->token = yymsp[-1].minor.yy0; } -#line 2845 "src/parser_proc.c" - yymsp[-1].minor.yy259 = yylhsminor.yy259; +#line 2877 "src/parser_proc.c" + yymsp[-1].minor.yy39 = yylhsminor.yy39; break; case 108: /* let_exp ::= NULL */ { yy_destructor(yypParser,15,&yymsp[0].minor); -#line 758 "src/parser_proc.y" +#line 761 "src/parser_proc.y" { - yymsp[0].minor.yy20 = psi_let_exp_init(PSI_LET_NULL, NULL); + yymsp[0].minor.yy144 = psi_let_exp_init(PSI_LET_NULL, NULL); } -#line 2854 "src/parser_proc.c" +#line 2886 "src/parser_proc.c" } break; case 109: /* let_exp ::= AMPERSAND NULL */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 761 "src/parser_proc.y" +#line 764 "src/parser_proc.y" { - yymsp[-1].minor.yy20 = psi_let_exp_init(PSI_LET_NULL, NULL); - yymsp[-1].minor.yy20->is_reference = 1; + yymsp[-1].minor.yy144 = psi_let_exp_init(PSI_LET_NULL, NULL); + yymsp[-1].minor.yy144->is_reference = 1; } -#line 2864 "src/parser_proc.c" +#line 2896 "src/parser_proc.c" yy_destructor(yypParser,15,&yymsp[0].minor); } break; case 110: /* let_exp ::= let_callback */ -#line 765 "src/parser_proc.y" +#line 768 "src/parser_proc.y" { - yylhsminor.yy20 = psi_let_exp_init(PSI_LET_CALLBACK, yymsp[0].minor.yy220); + yylhsminor.yy144 = psi_let_exp_init(PSI_LET_CALLBACK, yymsp[0].minor.yy164); } -#line 2873 "src/parser_proc.c" - yymsp[0].minor.yy20 = yylhsminor.yy20; +#line 2905 "src/parser_proc.c" + yymsp[0].minor.yy144 = yylhsminor.yy144; break; case 111: /* let_exp ::= let_calloc */ -#line 768 "src/parser_proc.y" +#line 771 "src/parser_proc.y" { - yylhsminor.yy20 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy9); + yylhsminor.yy144 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy17); } -#line 2881 "src/parser_proc.c" - yymsp[0].minor.yy20 = yylhsminor.yy20; +#line 2913 "src/parser_proc.c" + yymsp[0].minor.yy144 = yylhsminor.yy144; break; case 112: /* let_exp ::= AMPERSAND let_calloc */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 771 "src/parser_proc.y" +#line 774 "src/parser_proc.y" { - yymsp[-1].minor.yy20 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy9); - yymsp[-1].minor.yy20->is_reference = 1; + yymsp[-1].minor.yy144 = psi_let_exp_init(PSI_LET_CALLOC, yymsp[0].minor.yy17); + yymsp[-1].minor.yy144->is_reference = 1; } -#line 2891 "src/parser_proc.c" +#line 2923 "src/parser_proc.c" } break; case 113: /* let_exp ::= let_func */ -#line 775 "src/parser_proc.y" +#line 778 "src/parser_proc.y" { - yylhsminor.yy20 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy27); + yylhsminor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy72); } -#line 2899 "src/parser_proc.c" - yymsp[0].minor.yy20 = yylhsminor.yy20; +#line 2931 "src/parser_proc.c" + yymsp[0].minor.yy144 = yylhsminor.yy144; break; case 114: /* let_exp ::= AMPERSAND let_func */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 778 "src/parser_proc.y" +#line 781 "src/parser_proc.y" { - yymsp[-1].minor.yy20 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy27); - yymsp[-1].minor.yy20->is_reference = 1; + yymsp[-1].minor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, yymsp[0].minor.yy72); + yymsp[-1].minor.yy144->is_reference = 1; } -#line 2909 "src/parser_proc.c" +#line 2941 "src/parser_proc.c" } break; case 115: /* let_exp ::= num_exp */ -#line 782 "src/parser_proc.y" +#line 785 "src/parser_proc.y" { - yylhsminor.yy20 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy259); + yylhsminor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy39); } -#line 2917 "src/parser_proc.c" - yymsp[0].minor.yy20 = yylhsminor.yy20; +#line 2949 "src/parser_proc.c" + yymsp[0].minor.yy144 = yylhsminor.yy144; break; case 116: /* let_exp ::= AMPERSAND num_exp */ { yy_destructor(yypParser,23,&yymsp[-1].minor); -#line 785 "src/parser_proc.y" +#line 788 "src/parser_proc.y" { - yymsp[-1].minor.yy20 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy259); - yymsp[-1].minor.yy20->is_reference = 1; + yymsp[-1].minor.yy144 = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, yymsp[0].minor.yy39); + yymsp[-1].minor.yy144->is_reference = 1; } -#line 2927 "src/parser_proc.c" +#line 2959 "src/parser_proc.c" } break; case 117: /* let_exp ::= decl_var EQUALS let_exp */ -#line 789 "src/parser_proc.y" +#line 792 "src/parser_proc.y" { - yylhsminor.yy20 = yymsp[0].minor.yy20; - yylhsminor.yy20->var = yymsp[-2].minor.yy11; + yylhsminor.yy144 = yymsp[0].minor.yy144; + yylhsminor.yy144->var = yymsp[-2].minor.yy207; } -#line 2936 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-1].minor); - yymsp[-2].minor.yy20 = yylhsminor.yy20; +#line 2968 "src/parser_proc.c" + yy_destructor(yypParser,81,&yymsp[-1].minor); + yymsp[-2].minor.yy144 = yylhsminor.yy144; break; case 118: /* let_stmt ::= LET let_exp EOS */ -#line 793 "src/parser_proc.y" +#line 796 "src/parser_proc.y" { - yylhsminor.yy311 = psi_let_stmt_init(yymsp[-1].minor.yy20); - yylhsminor.yy311->token = yymsp[-2].minor.yy0; + yylhsminor.yy139 = psi_let_stmt_init(yymsp[-1].minor.yy144); + yylhsminor.yy139->token = yymsp[-2].minor.yy0; } -#line 2946 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-2].minor.yy311 = yylhsminor.yy311; +#line 2978 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-2].minor.yy139 = yylhsminor.yy139; break; case 119: /* let_stmt ::= TEMP decl_var EQUALS reference decl_var EOS */ -#line 797 "src/parser_proc.y" +#line 800 "src/parser_proc.y" { - yylhsminor.yy311 = psi_let_stmt_init(psi_let_exp_init_ex(yymsp[-4].minor.yy11, PSI_LET_TMP, yymsp[-1].minor.yy11)); - yylhsminor.yy311->token = yymsp[-5].minor.yy0; - yylhsminor.yy311->exp->is_reference = yymsp[-2].minor.yy121 ? 1 : 0; + yylhsminor.yy139 = psi_let_stmt_init(psi_let_exp_init_ex(yymsp[-4].minor.yy207, PSI_LET_TMP, yymsp[-1].minor.yy207)); + yylhsminor.yy139->token = yymsp[-5].minor.yy0; + yylhsminor.yy139->exp->is_reference = yymsp[-2].minor.yy273 ? 1 : 0; } -#line 2957 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-3].minor); - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-5].minor.yy311 = yylhsminor.yy311; +#line 2989 "src/parser_proc.c" + yy_destructor(yypParser,81,&yymsp[-3].minor); + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-5].minor.yy139 = yylhsminor.yy139; break; case 120: /* let_callback ::= CALLBACK callback_rval LPAREN impl_var LPAREN callback_arg_list RPAREN RPAREN */ -#line 802 "src/parser_proc.y" +#line 805 "src/parser_proc.y" { - yylhsminor.yy220 = psi_let_callback_init(psi_let_func_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text, yymsp[-4].minor.yy37), yymsp[-2].minor.yy43); - yylhsminor.yy220->token = yymsp[-7].minor.yy0; + yylhsminor.yy164 = psi_let_callback_init(psi_let_func_init(yymsp[-6].minor.yy0->type, yymsp[-6].minor.yy0->text, yymsp[-4].minor.yy185), yymsp[-2].minor.yy287); + yylhsminor.yy164->token = yymsp[-7].minor.yy0; free(yymsp[-6].minor.yy0); } -#line 2969 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-5].minor); - yy_destructor(yypParser,65,&yymsp[-3].minor); - yy_destructor(yypParser,67,&yymsp[-1].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-7].minor.yy220 = yylhsminor.yy220; +#line 3001 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-5].minor); + yy_destructor(yypParser,73,&yymsp[-3].minor); + yy_destructor(yypParser,75,&yymsp[-1].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-7].minor.yy164 = yylhsminor.yy164; break; case 121: /* let_calloc ::= CALLOC LPAREN num_exp COMMA num_exp RPAREN */ -#line 807 "src/parser_proc.y" +#line 810 "src/parser_proc.y" { - yylhsminor.yy9 = psi_let_calloc_init(yymsp[-3].minor.yy259, yymsp[-1].minor.yy259); - yylhsminor.yy9->token = yymsp[-5].minor.yy0; + yylhsminor.yy17 = psi_let_calloc_init(yymsp[-3].minor.yy39, yymsp[-1].minor.yy39); + yylhsminor.yy17->token = yymsp[-5].minor.yy0; } -#line 2982 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,66,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-5].minor.yy9 = yylhsminor.yy9; +#line 3014 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,74,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-5].minor.yy17 = yylhsminor.yy17; break; case 122: /* let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var RPAREN */ -#line 811 "src/parser_proc.y" +#line 814 "src/parser_proc.y" { - yylhsminor.yy27 = psi_let_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy37); - yylhsminor.yy27->token = yymsp[-3].minor.yy0; + yylhsminor.yy72 = psi_let_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy185); + yylhsminor.yy72->token = yymsp[-3].minor.yy0; } -#line 2994 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-3].minor.yy27 = yylhsminor.yy27; +#line 3026 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-3].minor.yy72 = yylhsminor.yy72; break; case 123: /* let_func ::= ZVAL|OBJVAL|ARRVAL|PATHVAL|STRLEN|STRVAL|FLOATVAL|INTVAL|BOOLVAL|COUNT LPAREN impl_var COMMA let_exps RPAREN */ -#line 815 "src/parser_proc.y" +#line 818 "src/parser_proc.y" { - yylhsminor.yy27 = psi_let_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy37); - yylhsminor.yy27->token = yymsp[-5].minor.yy0; - yylhsminor.yy27->inner = yymsp[-1].minor.yy163; + yylhsminor.yy72 = psi_let_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy185); + yylhsminor.yy72->token = yymsp[-5].minor.yy0; + yylhsminor.yy72->inner = yymsp[-1].minor.yy303; } -#line 3006 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,66,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-5].minor.yy27 = yylhsminor.yy27; +#line 3038 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,74,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-5].minor.yy72 = yylhsminor.yy72; break; case 124: /* let_exps ::= let_exp */ -#line 820 "src/parser_proc.y" +#line 823 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_let_exp_free), - &yymsp[0].minor.yy20); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_let_exp_free), + &yymsp[0].minor.yy144); } -#line 3018 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 3050 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 125: /* let_exps ::= let_exps COMMA let_exp */ -#line 824 "src/parser_proc.y" +#line 827 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy20); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy144); } -#line 3026 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 3058 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 126: /* callback_arg_list ::= */ -#line 827 "src/parser_proc.y" +#line 830 "src/parser_proc.y" { - yymsp[1].minor.yy43 = NULL; + yymsp[1].minor.yy287 = NULL; } -#line 3035 "src/parser_proc.c" +#line 3067 "src/parser_proc.c" break; case 127: /* callback_arg_list ::= callback_args */ -#line 830 "src/parser_proc.y" +#line 833 "src/parser_proc.y" { - yylhsminor.yy43 = yymsp[0].minor.yy43; + yylhsminor.yy287 = yymsp[0].minor.yy287; } -#line 3042 "src/parser_proc.c" - yymsp[0].minor.yy43 = yylhsminor.yy43; +#line 3074 "src/parser_proc.c" + yymsp[0].minor.yy287 = yylhsminor.yy287; break; case 128: /* callback_args ::= set_exp */ -#line 833 "src/parser_proc.y" +#line 836 "src/parser_proc.y" { - yylhsminor.yy43 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), - &yymsp[0].minor.yy147); + yylhsminor.yy287 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), + &yymsp[0].minor.yy67); } -#line 3051 "src/parser_proc.c" - yymsp[0].minor.yy43 = yylhsminor.yy43; +#line 3083 "src/parser_proc.c" + yymsp[0].minor.yy287 = yylhsminor.yy287; break; case 129: /* callback_args ::= callback_args COMMA set_exp */ -#line 837 "src/parser_proc.y" +#line 840 "src/parser_proc.y" { - yylhsminor.yy43 = psi_plist_add(yymsp[-2].minor.yy43, &yymsp[0].minor.yy147); + yylhsminor.yy287 = psi_plist_add(yymsp[-2].minor.yy287, &yymsp[0].minor.yy67); } -#line 3059 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy43 = yylhsminor.yy43; +#line 3091 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy287 = yylhsminor.yy287; break; case 132: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var RPAREN */ -#line 846 "src/parser_proc.y" +#line 849 "src/parser_proc.y" { - yylhsminor.yy26 = psi_set_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy11); - yylhsminor.yy26->token = yymsp[-3].minor.yy0; + yylhsminor.yy78 = psi_set_func_init(yymsp[-3].minor.yy0->type, yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy207); + yylhsminor.yy78->token = yymsp[-3].minor.yy0; } -#line 3069 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-3].minor.yy26 = yylhsminor.yy26; +#line 3101 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-3].minor.yy78 = yylhsminor.yy78; break; case 133: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA set_exps RPAREN */ -#line 850 "src/parser_proc.y" +#line 853 "src/parser_proc.y" { - yylhsminor.yy26 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy11); - yylhsminor.yy26->token = yymsp[-5].minor.yy0; - yylhsminor.yy26->inner = yymsp[-1].minor.yy163; + yylhsminor.yy78 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy207); + yylhsminor.yy78->token = yymsp[-5].minor.yy0; + yylhsminor.yy78->inner = yymsp[-1].minor.yy303; } -#line 3081 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,66,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-5].minor.yy26 = yylhsminor.yy26; +#line 3113 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,74,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-5].minor.yy78 = yylhsminor.yy78; break; case 134: /* set_func ::= TO_OBJECT|TO_ARRAY|TO_STRING|TO_INT|TO_FLOAT|TO_BOOL|ZVAL|VOID LPAREN decl_var COMMA ELLIPSIS RPAREN */ -#line 855 "src/parser_proc.y" +#line 858 "src/parser_proc.y" { - yylhsminor.yy26 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy11); - yylhsminor.yy26->token = yymsp[-5].minor.yy0; - yylhsminor.yy26->recursive = 1; + yylhsminor.yy78 = psi_set_func_init(yymsp[-5].minor.yy0->type, yymsp[-5].minor.yy0->text, yymsp[-3].minor.yy207); + yylhsminor.yy78->token = yymsp[-5].minor.yy0; + yylhsminor.yy78->recursive = 1; } -#line 3094 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-4].minor); - yy_destructor(yypParser,66,&yymsp[-2].minor); - yy_destructor(yypParser,76,&yymsp[-1].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-5].minor.yy26 = yylhsminor.yy26; +#line 3126 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-4].minor); + yy_destructor(yypParser,74,&yymsp[-2].minor); + yy_destructor(yypParser,84,&yymsp[-1].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-5].minor.yy78 = yylhsminor.yy78; break; case 135: /* set_exp ::= set_func */ -#line 860 "src/parser_proc.y" +#line 863 "src/parser_proc.y" { - yylhsminor.yy147 = psi_set_exp_init(PSI_SET_FUNC, yymsp[0].minor.yy26); + yylhsminor.yy67 = psi_set_exp_init(PSI_SET_FUNC, yymsp[0].minor.yy78); } -#line 3106 "src/parser_proc.c" - yymsp[0].minor.yy147 = yylhsminor.yy147; +#line 3138 "src/parser_proc.c" + yymsp[0].minor.yy67 = yylhsminor.yy67; break; case 136: /* set_exp ::= num_exp */ -#line 863 "src/parser_proc.y" +#line 866 "src/parser_proc.y" { - yylhsminor.yy147 = psi_set_exp_init(PSI_SET_NUMEXP, yymsp[0].minor.yy259); + yylhsminor.yy67 = psi_set_exp_init(PSI_SET_NUMEXP, yymsp[0].minor.yy39); } -#line 3114 "src/parser_proc.c" - yymsp[0].minor.yy147 = yylhsminor.yy147; +#line 3146 "src/parser_proc.c" + yymsp[0].minor.yy67 = yylhsminor.yy67; break; case 137: /* set_exps ::= set_exp */ -#line 866 "src/parser_proc.y" +#line 869 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), - &yymsp[0].minor.yy147); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), + &yymsp[0].minor.yy67); } -#line 3123 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 3155 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 138: /* set_exps ::= set_exps COMMA set_exp */ -#line 870 "src/parser_proc.y" +#line 873 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy147); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy67); } -#line 3131 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 3163 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 139: /* set_exp ::= impl_var EQUALS set_exp */ -#line 873 "src/parser_proc.y" +#line 876 "src/parser_proc.y" { - yylhsminor.yy147 = yymsp[0].minor.yy147; - yylhsminor.yy147->var = yymsp[-2].minor.yy37; + yylhsminor.yy67 = yymsp[0].minor.yy67; + yylhsminor.yy67->var = yymsp[-2].minor.yy185; } -#line 3141 "src/parser_proc.c" - yy_destructor(yypParser,73,&yymsp[-1].minor); - yymsp[-2].minor.yy147 = yylhsminor.yy147; +#line 3173 "src/parser_proc.c" + yy_destructor(yypParser,81,&yymsp[-1].minor); + yymsp[-2].minor.yy67 = yylhsminor.yy67; break; case 140: /* set_stmt ::= SET set_exp EOS */ -#line 877 "src/parser_proc.y" +#line 880 "src/parser_proc.y" { - yylhsminor.yy98 = psi_set_stmt_init(yymsp[-1].minor.yy147); - yylhsminor.yy98->token = yymsp[-2].minor.yy0; + yylhsminor.yy226 = psi_set_stmt_init(yymsp[-1].minor.yy67); + yylhsminor.yy226->token = yymsp[-2].minor.yy0; } -#line 3151 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-2].minor.yy98 = yylhsminor.yy98; +#line 3183 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-2].minor.yy226 = yylhsminor.yy226; break; case 141: /* return_stmt ::= RETURN set_func EOS */ -#line 881 "src/parser_proc.y" +#line 884 "src/parser_proc.y" { - yylhsminor.yy90 = psi_return_stmt_init(psi_set_exp_init(PSI_SET_FUNC, yymsp[-1].minor.yy26)); - yylhsminor.yy90->token = yymsp[-2].minor.yy0; + yylhsminor.yy130 = psi_return_stmt_init(psi_set_exp_init(PSI_SET_FUNC, yymsp[-1].minor.yy78)); + yylhsminor.yy130->token = yymsp[-2].minor.yy0; } -#line 3161 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-2].minor.yy90 = yylhsminor.yy90; +#line 3193 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-2].minor.yy130 = yylhsminor.yy130; break; case 142: /* free_stmt ::= FREE free_exps EOS */ -#line 885 "src/parser_proc.y" +#line 888 "src/parser_proc.y" { - yylhsminor.yy192 = psi_free_stmt_init(yymsp[-1].minor.yy163); - yylhsminor.yy192->token = yymsp[-2].minor.yy0; + yylhsminor.yy76 = psi_free_stmt_init(yymsp[-1].minor.yy303); + yylhsminor.yy76->token = yymsp[-2].minor.yy0; } -#line 3171 "src/parser_proc.c" - yy_destructor(yypParser,63,&yymsp[0].minor); - yymsp[-2].minor.yy192 = yylhsminor.yy192; +#line 3203 "src/parser_proc.c" + yy_destructor(yypParser,71,&yymsp[0].minor); + yymsp[-2].minor.yy76 = yylhsminor.yy76; break; case 143: /* free_exps ::= free_exp */ -#line 889 "src/parser_proc.y" +#line 892 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_free_exp_free), - &yymsp[0].minor.yy94); + yylhsminor.yy303 = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_free_exp_free), + &yymsp[0].minor.yy197); } -#line 3181 "src/parser_proc.c" - yymsp[0].minor.yy163 = yylhsminor.yy163; +#line 3213 "src/parser_proc.c" + yymsp[0].minor.yy303 = yylhsminor.yy303; break; case 144: /* free_exps ::= free_exps COMMA free_exp */ -#line 893 "src/parser_proc.y" +#line 896 "src/parser_proc.y" { - yylhsminor.yy163 = psi_plist_add(yymsp[-2].minor.yy163, &yymsp[0].minor.yy94); + yylhsminor.yy303 = psi_plist_add(yymsp[-2].minor.yy303, &yymsp[0].minor.yy197); } -#line 3189 "src/parser_proc.c" - yy_destructor(yypParser,66,&yymsp[-1].minor); - yymsp[-2].minor.yy163 = yylhsminor.yy163; +#line 3221 "src/parser_proc.c" + yy_destructor(yypParser,74,&yymsp[-1].minor); + yymsp[-2].minor.yy303 = yylhsminor.yy303; break; case 145: /* free_exp ::= NAME LPAREN decl_vars RPAREN */ -#line 896 "src/parser_proc.y" +#line 899 "src/parser_proc.y" { - yylhsminor.yy94 = psi_free_exp_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy163); - yylhsminor.yy94->token = yymsp[-3].minor.yy0; + yylhsminor.yy197 = psi_free_exp_init(yymsp[-3].minor.yy0->text, yymsp[-1].minor.yy303); + yylhsminor.yy197->token = yymsp[-3].minor.yy0; } -#line 3199 "src/parser_proc.c" - yy_destructor(yypParser,65,&yymsp[-2].minor); - yy_destructor(yypParser,67,&yymsp[0].minor); - yymsp[-3].minor.yy94 = yylhsminor.yy94; +#line 3231 "src/parser_proc.c" + yy_destructor(yypParser,73,&yymsp[-2].minor); + yy_destructor(yypParser,75,&yymsp[0].minor); + yymsp[-3].minor.yy197 = yylhsminor.yy197; break; case 146: /* reference ::= */ -#line 900 "src/parser_proc.y" +#line 903 "src/parser_proc.y" { - yymsp[1].minor.yy121 = false; + yymsp[1].minor.yy273 = false; } -#line 3209 "src/parser_proc.c" +#line 3241 "src/parser_proc.c" break; case 147: /* reference ::= AMPERSAND */ { yy_destructor(yypParser,23,&yymsp[0].minor); -#line 903 "src/parser_proc.y" +#line 906 "src/parser_proc.y" { - yymsp[0].minor.yy121 = true; + yymsp[0].minor.yy273 = true; } -#line 3217 "src/parser_proc.c" +#line 3249 "src/parser_proc.c" } break; case 148: /* indirection ::= */ -#line 906 "src/parser_proc.y" +#line 909 "src/parser_proc.y" { - yymsp[1].minor.yy202 = 0; + yymsp[1].minor.yy190 = 0; } -#line 3225 "src/parser_proc.c" +#line 3257 "src/parser_proc.c" break; case 149: /* indirection ::= pointers */ -#line 909 "src/parser_proc.y" +#line 912 "src/parser_proc.y" { - yylhsminor.yy202 = yymsp[0].minor.yy202; + yylhsminor.yy190 = yymsp[0].minor.yy190; } -#line 3232 "src/parser_proc.c" - yymsp[0].minor.yy202 = yylhsminor.yy202; +#line 3264 "src/parser_proc.c" + yymsp[0].minor.yy190 = yylhsminor.yy190; break; case 150: /* pointers ::= ASTERISK */ { yy_destructor(yypParser,28,&yymsp[0].minor); -#line 912 "src/parser_proc.y" +#line 915 "src/parser_proc.y" { - yymsp[0].minor.yy202 = 1; + yymsp[0].minor.yy190 = 1; } -#line 3241 "src/parser_proc.c" +#line 3273 "src/parser_proc.c" } break; case 151: /* pointers ::= pointers ASTERISK */ -#line 915 "src/parser_proc.y" +#line 918 "src/parser_proc.y" { - yylhsminor.yy202 = yymsp[-1].minor.yy202+1; + yylhsminor.yy190 = yymsp[-1].minor.yy190+1; } -#line 3249 "src/parser_proc.c" +#line 3281 "src/parser_proc.c" yy_destructor(yypParser,28,&yymsp[0].minor); - yymsp[-1].minor.yy202 = yylhsminor.yy202; + yymsp[-1].minor.yy190 = yylhsminor.yy190; break; case 152: /* file ::= blocks */ -{ yy_destructor(yypParser,146,&yymsp[0].minor); -#line 169 "src/parser_proc.y" +{ yy_destructor(yypParser,154,&yymsp[0].minor); +#line 172 "src/parser_proc.y" { } -#line 3258 "src/parser_proc.c" +#line 3290 "src/parser_proc.c" } break; case 153: /* blocks ::= block */ -{ yy_destructor(yypParser,147,&yymsp[0].minor); -#line 170 "src/parser_proc.y" +{ yy_destructor(yypParser,155,&yymsp[0].minor); +#line 173 "src/parser_proc.y" { } -#line 3266 "src/parser_proc.c" +#line 3298 "src/parser_proc.c" } break; case 154: /* blocks ::= blocks block */ -{ yy_destructor(yypParser,146,&yymsp[-1].minor); -#line 171 "src/parser_proc.y" +{ yy_destructor(yypParser,154,&yymsp[-1].minor); +#line 174 "src/parser_proc.y" { } -#line 3274 "src/parser_proc.c" - yy_destructor(yypParser,147,&yymsp[0].minor); +#line 3306 "src/parser_proc.c" + yy_destructor(yypParser,155,&yymsp[0].minor); } break; case 155: /* block ::= EOF */ -{ yy_destructor(yypParser,62,&yymsp[0].minor); -#line 172 "src/parser_proc.y" +{ yy_destructor(yypParser,70,&yymsp[0].minor); +#line 175 "src/parser_proc.y" { } -#line 3283 "src/parser_proc.c" +#line 3315 "src/parser_proc.c" } break; case 156: /* block ::= EOS */ -{ yy_destructor(yypParser,63,&yymsp[0].minor); -#line 173 "src/parser_proc.y" +{ yy_destructor(yypParser,71,&yymsp[0].minor); +#line 176 "src/parser_proc.y" { } -#line 3291 "src/parser_proc.c" +#line 3323 "src/parser_proc.c" } break; default: @@ -3349,7 +3381,7 @@ static void yy_syntax_error( /************ Begin %syntax_error code ****************************************/ #line 40 "src/parser_proc.y" ++P->errors; if (TOKEN && TOKEN->type != PSI_T_EOF) { psi_error(PSI_WARNING, TOKEN->file, TOKEN->line, "PSI syntax error: Unexpected token '%s' at pos %u", TOKEN->text, TOKEN->col); } else { psi_error(PSI_WARNING, P->file.fn, P->line, "PSI syntax error: Unexpected end of input"); } -#line 3353 "src/parser_proc.c" +#line 3385 "src/parser_proc.c" /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } diff --git a/src/parser_proc.h b/src/parser_proc.h index ae6fe80..fb2c964 100644 --- a/src/parser_proc.h +++ b/src/parser_proc.h @@ -28,59 +28,67 @@ #define PSI_T_ASTERISK 28 #define PSI_T_SLASH 29 #define PSI_T_MODULO 30 -#define PSI_T_TILDE 31 -#define PSI_T_NOT 32 -#define PSI_T_ZVAL 33 -#define PSI_T_OBJVAL 34 -#define PSI_T_ARRVAL 35 -#define PSI_T_PATHVAL 36 -#define PSI_T_STRLEN 37 -#define PSI_T_STRVAL 38 -#define PSI_T_FLOATVAL 39 -#define PSI_T_INTVAL 40 -#define PSI_T_BOOLVAL 41 -#define PSI_T_COUNT 42 -#define PSI_T_TO_OBJECT 43 -#define PSI_T_TO_ARRAY 44 -#define PSI_T_TO_STRING 45 -#define PSI_T_TO_INT 46 -#define PSI_T_TO_FLOAT 47 -#define PSI_T_TO_BOOL 48 -#define PSI_T_VOID 49 -#define PSI_T_MIXED 50 -#define PSI_T_ARRAY 51 -#define PSI_T_OBJECT 52 -#define PSI_T_CALLABLE 53 -#define PSI_T_TEMP 54 -#define PSI_T_FREE 55 -#define PSI_T_SET 56 -#define PSI_T_LET 57 -#define PSI_T_RETURN 58 -#define PSI_T_CALLOC 59 -#define PSI_T_CALLBACK 60 -#define PSI_T_LIB 61 -#define PSI_T_EOF 62 -#define PSI_T_EOS 63 -#define PSI_T_COLON 64 -#define PSI_T_LPAREN 65 -#define PSI_T_COMMA 66 -#define PSI_T_RPAREN 67 -#define PSI_T_ENUM 68 -#define PSI_T_STRUCT 69 -#define PSI_T_UNION 70 -#define PSI_T_LBRACE 71 -#define PSI_T_RBRACE 72 -#define PSI_T_EQUALS 73 -#define PSI_T_CONST 74 -#define PSI_T_TYPEDEF 75 -#define PSI_T_ELLIPSIS 76 -#define PSI_T_LBRACKET 77 -#define PSI_T_RBRACKET 78 -#define PSI_T_CHAR 79 -#define PSI_T_SHORT 80 -#define PSI_T_LONG 81 -#define PSI_T_UNSIGNED 82 -#define PSI_T_SIGNED 83 -#define PSI_T_STATIC 84 -#define PSI_T_FUNCTION 85 -#define PSI_T_DOLLAR_NAME 86 +#define PSI_T_RCHEVR 31 +#define PSI_T_LCHEVR 32 +#define PSI_T_CMP_GE 33 +#define PSI_T_CMP_LE 34 +#define PSI_T_OR 35 +#define PSI_T_AND 36 +#define PSI_T_CMP_EQ 37 +#define PSI_T_CMP_NE 38 +#define PSI_T_TILDE 39 +#define PSI_T_NOT 40 +#define PSI_T_ZVAL 41 +#define PSI_T_OBJVAL 42 +#define PSI_T_ARRVAL 43 +#define PSI_T_PATHVAL 44 +#define PSI_T_STRLEN 45 +#define PSI_T_STRVAL 46 +#define PSI_T_FLOATVAL 47 +#define PSI_T_INTVAL 48 +#define PSI_T_BOOLVAL 49 +#define PSI_T_COUNT 50 +#define PSI_T_TO_OBJECT 51 +#define PSI_T_TO_ARRAY 52 +#define PSI_T_TO_STRING 53 +#define PSI_T_TO_INT 54 +#define PSI_T_TO_FLOAT 55 +#define PSI_T_TO_BOOL 56 +#define PSI_T_VOID 57 +#define PSI_T_MIXED 58 +#define PSI_T_ARRAY 59 +#define PSI_T_OBJECT 60 +#define PSI_T_CALLABLE 61 +#define PSI_T_TEMP 62 +#define PSI_T_FREE 63 +#define PSI_T_SET 64 +#define PSI_T_LET 65 +#define PSI_T_RETURN 66 +#define PSI_T_CALLOC 67 +#define PSI_T_CALLBACK 68 +#define PSI_T_LIB 69 +#define PSI_T_EOF 70 +#define PSI_T_EOS 71 +#define PSI_T_COLON 72 +#define PSI_T_LPAREN 73 +#define PSI_T_COMMA 74 +#define PSI_T_RPAREN 75 +#define PSI_T_ENUM 76 +#define PSI_T_STRUCT 77 +#define PSI_T_UNION 78 +#define PSI_T_LBRACE 79 +#define PSI_T_RBRACE 80 +#define PSI_T_EQUALS 81 +#define PSI_T_CONST 82 +#define PSI_T_TYPEDEF 83 +#define PSI_T_ELLIPSIS 84 +#define PSI_T_LBRACKET 85 +#define PSI_T_RBRACKET 86 +#define PSI_T_CHAR 87 +#define PSI_T_SHORT 88 +#define PSI_T_LONG 89 +#define PSI_T_UNSIGNED 90 +#define PSI_T_SIGNED 91 +#define PSI_T_STATIC 92 +#define PSI_T_FUNCTION 93 +#define PSI_T_DOLLAR_NAME 94 diff --git a/src/parser_proc.y b/src/parser_proc.y index 00e4c68..5f8d04b 100644 --- a/src/parser_proc.y +++ b/src/parser_proc.y @@ -42,16 +42,19 @@ void psi_parser_proc_free(void **parser_proc) %token_class decl_type_token FLOAT DOUBLE INT8 UINT8 INT16 UINT16 INT32 UINT32 INT64 UINT64 NAME . %token_class impl_def_val_token NULL NUMBER TRUE FALSE QUOTED_STRING . %token_class number_token NUMBER NSNAME . -%token_class num_exp_binary_op_token PIPE CARET AMPERSAND LSHIFT RSHIFT PLUS MINUS ASTERISK SLASH MODULO . -%token_class num_exp_unary_op_token TILDE NOT PLUS MINUS . +%token_class binary_op_token PIPE CARET AMPERSAND LSHIFT RSHIFT PLUS MINUS ASTERISK SLASH MODULO RCHEVR LCHEVR CMP_GE CMP_LE OR AND CMP_EQ CMP_NE . +%token_class unary_op_token TILDE NOT PLUS MINUS . %token_class let_func_token ZVAL OBJVAL ARRVAL PATHVAL STRLEN STRVAL FLOATVAL INTVAL BOOLVAL COUNT . %token_class set_func_token TO_OBJECT TO_ARRAY TO_STRING TO_INT TO_FLOAT TO_BOOL ZVAL VOID . %token_class impl_type_token VOID MIXED BOOL INT FLOAT STRING ARRAY OBJECT CALLABLE . %nonassoc NAME. %right NOT TILDE. +%left AND OR. %left PIPE. %left CARET. %left AMPERSAND. +%left CMP_EQ CMP_NE. +%left LCHEVR CMP_LE RCHEVR CMP_GE. %left LSHIFT RSHIFT. %left PLUS MINUS. %left ASTERISK SLASH MODULO. @@ -747,11 +750,11 @@ num_exp(exp) ::= LPAREN(L) num_exp(exp_) RPAREN. { exp = psi_num_exp_init_unary(PSI_T_LPAREN, exp_); exp->token = L; } -num_exp(exp) ::= num_exp(lhs_) num_exp_binary_op_token(OP) num_exp(rhs_). { +num_exp(exp) ::= num_exp(lhs_) binary_op_token(OP) num_exp(rhs_). { exp = psi_num_exp_init_binary(OP->type, lhs_, rhs_); exp->token = OP; } -num_exp(exp) ::= num_exp_unary_op_token(OP) num_exp(exp_). { +num_exp(exp) ::= unary_op_token(OP) num_exp(exp_). { exp = psi_num_exp_init_unary(OP->type, exp_); exp->token = OP; } diff --git a/src/token.h b/src/token.h index 65d37a2..75f76fb 100644 --- a/src/token.h +++ b/src/token.h @@ -51,51 +51,7 @@ static inline size_t psi_offset_padding(size_t diff, size_t alignment) { typedef int token_t; -static inline int psi_num_exp_op_cmp(token_t op1, token_t op2) -{ - assert(!op1 || op1 == PSI_T_LPAREN || (op1 <= PSI_T_NOT && op1 >= PSI_T_PIPE)); - assert(!op2 || op2 == PSI_T_LPAREN || (op2 <= PSI_T_NOT && op2 >= PSI_T_PIPE)); - - if (PSI_T_LPAREN == op2) { - return -1; - } else if (PSI_T_LPAREN == op1) { - return 1; - } else if (op1 == op2) { - return 0; - } else if (!op1) { - return 1; - } else if (!op2) { - return -1; - } - - switch (op1) { - case PSI_T_PIPE: - return op2 > PSI_T_PIPE ? 1 : (op2 < PSI_T_PIPE ? -1 : 0); - case PSI_T_CARET: - return op2 > PSI_T_CARET ? 1 : (op2 < PSI_T_CARET ? -1 : 0); - case PSI_T_AMPERSAND: - return op2 > PSI_T_AMPERSAND ? 1 : (op2 < PSI_T_AMPERSAND ? -1 : 0); - - case PSI_T_LSHIFT: - case PSI_T_RSHIFT: - return op2 > PSI_T_RSHIFT ? 1 : (op2 < PSI_T_LSHIFT ? -1 : 0); - - case PSI_T_PLUS: - case PSI_T_MINUS: - return op2 > PSI_T_MINUS ? 1 : (op2 < PSI_T_PLUS ? -1 : 0); - - case PSI_T_ASTERISK: - case PSI_T_SLASH: - case PSI_T_MODULO: - return op2 > PSI_T_MODULO ? 1 : (op2 < PSI_T_ASTERISK ? -1 : 0); - - case PSI_T_NOT: - case PSI_T_TILDE: - return op2 > PSI_T_TILDE ? 1 : (op2 < PSI_T_NOT ? -1 : 0); - } - - return 0; -} +#include "token_oper_cmp.h" static inline size_t psi_t_alignment(token_t t) { diff --git a/src/token_oper_cmp.h b/src/token_oper_cmp.h new file mode 100644 index 0000000..04f6be2 --- /dev/null +++ b/src/token_oper_cmp.h @@ -0,0 +1,531 @@ +/******************************************************************************* + Copyright (c) 2016, Michael Wallner . + 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. +*******************************************************************************/ + +static inline int psi_token_oper_cmp(token_t op1, token_t op2) { + switch (op1) { + case PSI_T_NOT: + switch (op2) { + case PSI_T_NOT: return 0; + case PSI_T_TILDE: return 0; + case PSI_T_ASTERISK: return -1; + case PSI_T_SLASH: return -1; + case PSI_T_MODULO: return -1; + case PSI_T_PLUS: return -1; + case PSI_T_MINUS: return -1; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_TILDE: + switch (op2) { + case PSI_T_NOT: return 0; + case PSI_T_TILDE: return 0; + case PSI_T_ASTERISK: return -1; + case PSI_T_SLASH: return -1; + case PSI_T_MODULO: return -1; + case PSI_T_PLUS: return -1; + case PSI_T_MINUS: return -1; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_ASTERISK: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 0; + case PSI_T_SLASH: return 0; + case PSI_T_MODULO: return 0; + case PSI_T_PLUS: return -1; + case PSI_T_MINUS: return -1; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_SLASH: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 0; + case PSI_T_SLASH: return 0; + case PSI_T_MODULO: return 0; + case PSI_T_PLUS: return -1; + case PSI_T_MINUS: return -1; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_MODULO: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 0; + case PSI_T_SLASH: return 0; + case PSI_T_MODULO: return 0; + case PSI_T_PLUS: return -1; + case PSI_T_MINUS: return -1; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_PLUS: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 0; + case PSI_T_MINUS: return 0; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_MINUS: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 0; + case PSI_T_MINUS: return 0; + case PSI_T_LSHIFT: return -1; + case PSI_T_RSHIFT: return -1; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_LSHIFT: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 0; + case PSI_T_RSHIFT: return 0; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_RSHIFT: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 0; + case PSI_T_RSHIFT: return 0; + case PSI_T_LCHEVR: return -1; + case PSI_T_CMP_LE: return -1; + case PSI_T_RCHEVR: return -1; + case PSI_T_CMP_GE: return -1; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_LCHEVR: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 0; + case PSI_T_CMP_LE: return 0; + case PSI_T_RCHEVR: return 0; + case PSI_T_CMP_GE: return 0; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_CMP_LE: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 0; + case PSI_T_CMP_LE: return 0; + case PSI_T_RCHEVR: return 0; + case PSI_T_CMP_GE: return 0; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_RCHEVR: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 0; + case PSI_T_CMP_LE: return 0; + case PSI_T_RCHEVR: return 0; + case PSI_T_CMP_GE: return 0; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_CMP_GE: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 0; + case PSI_T_CMP_LE: return 0; + case PSI_T_RCHEVR: return 0; + case PSI_T_CMP_GE: return 0; + case PSI_T_AMPERSAND: return -1; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_AMPERSAND: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 0; + case PSI_T_CMP_EQ: return -1; + case PSI_T_CMP_NE: return -1; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_CMP_EQ: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 1; + case PSI_T_CMP_EQ: return 0; + case PSI_T_CMP_NE: return 0; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_CMP_NE: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 1; + case PSI_T_CMP_EQ: return 0; + case PSI_T_CMP_NE: return 0; + case PSI_T_CARET: return -1; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_CARET: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 1; + case PSI_T_CMP_EQ: return 1; + case PSI_T_CMP_NE: return 1; + case PSI_T_CARET: return 0; + case PSI_T_PIPE: return -1; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_PIPE: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 1; + case PSI_T_CMP_EQ: return 1; + case PSI_T_CMP_NE: return 1; + case PSI_T_CARET: return 1; + case PSI_T_PIPE: return 0; + case PSI_T_AND: return -1; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_AND: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 1; + case PSI_T_CMP_EQ: return 1; + case PSI_T_CMP_NE: return 1; + case PSI_T_CARET: return 1; + case PSI_T_PIPE: return 1; + case PSI_T_AND: return 0; + case PSI_T_OR: return -1; + } + assert(0); + break; + case PSI_T_OR: + switch (op2) { + case PSI_T_NOT: return 1; + case PSI_T_TILDE: return 1; + case PSI_T_ASTERISK: return 1; + case PSI_T_SLASH: return 1; + case PSI_T_MODULO: return 1; + case PSI_T_PLUS: return 1; + case PSI_T_MINUS: return 1; + case PSI_T_LSHIFT: return 1; + case PSI_T_RSHIFT: return 1; + case PSI_T_LCHEVR: return 1; + case PSI_T_CMP_LE: return 1; + case PSI_T_RCHEVR: return 1; + case PSI_T_CMP_GE: return 1; + case PSI_T_AMPERSAND: return 1; + case PSI_T_CMP_EQ: return 1; + case PSI_T_CMP_NE: return 1; + case PSI_T_CARET: return 1; + case PSI_T_PIPE: return 1; + case PSI_T_AND: return 1; + case PSI_T_OR: return 0; + } + assert(0); + break; + } + assert(0); + return 0; +} diff --git a/src/types/num_exp.c b/src/types/num_exp.c index aba5288..3d73207 100644 --- a/src/types/num_exp.c +++ b/src/types/num_exp.c @@ -87,6 +87,16 @@ struct psi_num_exp *psi_num_exp_copy(struct psi_num_exp *exp) cpy->data.u = psi_num_exp_copy(exp->data.u); break; + case PSI_T_OR: + case PSI_T_AND: + + case PSI_T_CMP_EQ: + case PSI_T_CMP_NE: + case PSI_T_CMP_LE: + case PSI_T_CMP_GE: + case PSI_T_RCHEVR: + case PSI_T_LCHEVR: + case PSI_T_PIPE: case PSI_T_CARET: case PSI_T_AMPERSAND: @@ -129,6 +139,16 @@ void psi_num_exp_free(struct psi_num_exp **c_ptr) psi_num_exp_free(&c->data.u); break; + case PSI_T_OR: + case PSI_T_AND: + + case PSI_T_CMP_EQ: + case PSI_T_CMP_NE: + case PSI_T_CMP_LE: + case PSI_T_CMP_GE: + case PSI_T_RCHEVR: + case PSI_T_LCHEVR: + case PSI_T_PIPE: case PSI_T_CARET: case PSI_T_AMPERSAND: @@ -189,6 +209,24 @@ static inline wint_t psi_num_exp_op_tok(token_t op) case PSI_T_MODULO: return L'%'; + case PSI_T_OR: + return L'∨'; + case PSI_T_AND: + return L'∧'; + + case PSI_T_CMP_EQ: + return L'≣'; + case PSI_T_CMP_NE: + return L'≠'; + case PSI_T_CMP_LE: + return L'≤'; + case PSI_T_CMP_GE: + return L'≥'; + case PSI_T_RCHEVR: + return L'>'; + case PSI_T_LCHEVR: + return L'<'; + default: assert(0); } @@ -214,6 +252,17 @@ void psi_num_exp_dump(int fd, struct psi_num_exp *exp) dprintf(fd, ")"); break; + + case PSI_T_OR: + case PSI_T_AND: + + case PSI_T_CMP_EQ: + case PSI_T_CMP_NE: + case PSI_T_CMP_LE: + case PSI_T_CMP_GE: + case PSI_T_RCHEVR: + case PSI_T_LCHEVR: + case PSI_T_PIPE: case PSI_T_CARET: case PSI_T_AMPERSAND: @@ -247,6 +296,31 @@ bool psi_num_exp_validate(struct psi_data *data, struct psi_num_exp *exp, exp->calc = psi_calc_bin_not; break; + case PSI_T_OR: + exp->calc = psi_calc_or; + break; + case PSI_T_AND: + exp->calc = psi_calc_and; + break; + case PSI_T_CMP_EQ: + exp->calc = psi_calc_cmp_eq; + break; + case PSI_T_CMP_NE: + exp->calc = psi_calc_cmp_ne; + break; + case PSI_T_CMP_LE: + exp->calc = psi_calc_cmp_le; + break; + case PSI_T_CMP_GE: + exp->calc = psi_calc_cmp_ge; + break; + case PSI_T_LCHEVR: + exp->calc = psi_calc_cmp_lt; + break; + case PSI_T_RCHEVR: + exp->calc = psi_calc_cmp_gt; + break; + case PSI_T_LPAREN: break; @@ -297,6 +371,16 @@ bool psi_num_exp_validate(struct psi_data *data, struct psi_num_exp *exp, return psi_num_exp_validate(data, exp->data.u, impl, cb_decl, current_let, current_set, current_enum); break; + case PSI_T_OR: + case PSI_T_AND: + + case PSI_T_CMP_EQ: + case PSI_T_CMP_NE: + case PSI_T_CMP_LE: + case PSI_T_CMP_GE: + case PSI_T_RCHEVR: + case PSI_T_LCHEVR: + case PSI_T_PIPE: case PSI_T_CARET: case PSI_T_AMPERSAND: @@ -346,6 +430,7 @@ static inline void psi_impl_val_dump(token_t t, impl_val *res, assert(0); } } + static inline void psi_num_exp_verify_result(token_t t, impl_val *res, struct psi_call_frame *frame) { if (frame) PSI_DEBUG_PRINT(frame->context, "%s", " = "); @@ -353,6 +438,23 @@ static inline void psi_num_exp_verify_result(token_t t, impl_val *res, struct ps if (frame) PSI_DEBUG_PRINT(frame->context, "%s", "\n"); } +static inline int psi_num_exp_op_cmp(token_t op1, token_t op2) +{ + if (PSI_T_LPAREN == op2) { + return -1; + } else if (PSI_T_LPAREN == op1) { + return 1; + } else if (op1 == op2) { + return 0; + } else if (!op1) { + return 1; + } else if (!op2) { + return -1; + } + + return psi_token_oper_cmp(op1, op2); +} + static void psi_num_exp_reduce(struct psi_num_exp *exp, struct psi_plist **output_ptr, struct psi_plist **input_ptr, struct psi_call_frame *frame) { @@ -463,6 +565,16 @@ token_t psi_num_exp_exec(struct psi_num_exp *exp, impl_val *res, psi_num_exp_verify_result(entry.type, &entry.data.value, frame); break; + case PSI_T_OR: + case PSI_T_AND: + + case PSI_T_CMP_EQ: + case PSI_T_CMP_NE: + case PSI_T_CMP_LE: + case PSI_T_CMP_GE: + case PSI_T_RCHEVR: + case PSI_T_LCHEVR: + case PSI_T_PIPE: case PSI_T_CARET: case PSI_T_AMPERSAND: diff --git a/tests/calc/calc.psi b/tests/calc/calc.psi index 915807a..c90749c 100644 --- a/tests/calc/calc.psi +++ b/tests/calc/calc.psi @@ -59,4 +59,49 @@ function test\calc7() : array { to_int(quot), to_int(rem) ); -} \ No newline at end of file +} + +function test\calc8() : array { + let numerator = !0 + !0 + !0; + let denominator = 3; + return to_array(div, + to_int(quot), + to_int(rem) + ); +} + +function test\calc9() : array { + let numerator = 1 && 2; + let denominator = 1; + return to_array(div, + to_int(quot), + to_int(rem) + ); +} + +function test\calc10() : array { + let numerator = (1 | 2 | 4) & ~3; + let denominator = 4; + return to_array(div, + to_int(quot), + to_int(rem) + ); +} + +function test\calc11() : array { + let numerator = 1 + (1 + 1 < 2); + let denominator = 1; + return to_array(div, + to_int(quot), + to_int(rem) + ); +} + +function test\calc12() : array { + let numerator = 1 + (1 + 1 < 3); + let denominator = 2; + return to_array(div, + to_int(quot), + to_int(rem) + ); +} diff --git a/tests/calc/calc001.phpt b/tests/calc/calc001.phpt index 2b6cbb6..ae3a3a0 100644 --- a/tests/calc/calc001.phpt +++ b/tests/calc/calc001.phpt @@ -9,7 +9,7 @@ extension_loaded("psi") or die("skip need ext/psi"); --FILE-- ===TEST===