From 83e28341b5294594bf95cab6f6e8f6fc80016a00 Mon Sep 17 00:00:00 2001 From: Steve Murphy <murf@digium.com> Date: Thu, 23 Aug 2007 23:37:33 +0000 Subject: [PATCH] an unreported crash I debugged, looked like it was backing up way too far after hitting the syntax error. An inspection of the code revealed that error tokens in lists were not rearranged when the rules were rearranged as part of a code neatening-up process. By moving the error tokens to where they should be, I also reduced the number of shift/reduce conflicts to 3 instead of 8. This introduces subtle differences in error messages, so the regressions had to be updated. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@80649 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- pbx/ael/ael-test/ref.ael-ntest10 | 45 ++- pbx/ael/ael-test/ref.ael-test6 | 23 +- pbx/ael/ael-test/ref.ael-test7 | 33 +- res/ael/ael.tab.c | 497 +++++++++++++++---------------- res/ael/ael.tab.h | 30 +- res/ael/ael.y | 12 +- 6 files changed, 302 insertions(+), 338 deletions(-) diff --git a/pbx/ael/ael-test/ref.ael-ntest10 b/pbx/ael/ael-test/ref.ael-ntest10 index 02024ee461..c47f179f02 100644 --- a/pbx/ael/ael-test/ref.ael-ntest10 +++ b/pbx/ael/ael-test/ref.ael-ntest10 @@ -8,32 +8,23 @@ LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process. LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch. -LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_', priority 1 in 'test6', already in use -LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_X.', priority 1 in 'test6', already in use -=== Loading extensions.conf === -Context: test6 -Context: test5 -Context: macro-funcA -Context: macro-funcB -Context: macro-funcC -========= -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch. -LOG: lev:3 file:pval.c line:2280 func: check_switch_expr Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch. +LOG: lev:3 file:pval.c line:2281 func: check_switch_expr Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch. LOG: lev:2 file:pbx_ael.c line:1698 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. Executed ast_context_create(conts, name=endsess, registrar=pbx_ael); Executed ast_context_create(conts, name=nullchk, registrar=pbx_ael); @@ -168,4 +159,4 @@ Executed ast_merge_contexts_and_delete(); LOG: lev:2 file:pbx_ael.c line:1703 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. Executed ast_walk_contexts(); LOG: lev:2 file:pbx_ael.c line:1706 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. -LOG: lev:4 file:ael2_parse line:521 func: main 7 contexts, 27 extensions, 121 priorities +LOG: lev:4 file:ael2_parse line:523 func: main 7 contexts, 27 extensions, 121 priorities diff --git a/pbx/ael/ael-test/ref.ael-test6 b/pbx/ael/ael-test/ref.ael-test6 index 37b4ef9394..45a717fb4d 100644 --- a/pbx/ael/ael-test/ref.ael-test6 +++ b/pbx/ael/ael-test/ref.ael-test6 @@ -6,19 +6,20 @@ LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load pr LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. LOG: lev:4 file:ael.flex line:277 func: ael_yylex File=./extensions.ael, line=165, column=49: Mismatched '}' in expression! LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')' -LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 169, Cols: 24-24: Error: syntax error, unexpected '&' +LOG: lev:4 file:ael.flex line:277 func: ael_yylex File=./extensions.ael, line=174, column=49: Mismatched '}' in expression! +LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 174, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')' LOG: lev:4 file:ael.flex line:277 func: ael_yylex File=./extensions.ael, line=222, column=41: Mismatched '}' in expression! LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')' -LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 226, Cols: 16-16: Error: syntax error, unexpected '&' LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':' +LOG: lev:4 file:ael.y line:764 func: ael_yyerror ==== File: ./extensions.ael, Line 291, Cols: 32-32: Error: syntax error, unexpected '|', expecting '(' or ';' or '=' or ':' LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 129-168: The macro stdexten does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 218-225: The macro checkcfb does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 129-182: The macro stdexten does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 218-230: The macro checkcfb does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one. LOG: lev:4 file:pbx_ael.c line:1708 func: pbx_load_module Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile. -LOG: lev:4 file:ael2_parse line:521 func: main 0 contexts, 0 extensions, 0 priorities +LOG: lev:4 file:ael2_parse line:523 func: main 0 contexts, 0 extensions, 0 priorities diff --git a/pbx/ael/ael-test/ref.ael-test7 b/pbx/ael/ael-test/ref.ael-test7 index 57707a0c1b..10ab30ddf1 100644 --- a/pbx/ael/ael-test/ref.ael-test7 +++ b/pbx/ael/ael-test/ref.ael-test7 @@ -5,25 +5,16 @@ LOG: lev:2 file:pbx_ael.c line:1680 func: pbx_load_module Starting AEL load process. LOG: lev:2 file:pbx_ael.c line:1687 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. LOG: lev:2 file:pbx_ael.c line:1695 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one. -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one. -LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_', priority 1 in 'test6', already in use -LOG: lev:3 file:extconf.c line:3959 func: add_pri Unable to register extension '_X.', priority 1 in 'test6', already in use -=== Loading extensions.conf === -Context: test6 -Context: test5 -Context: macro-funcA -Context: macro-funcB -Context: macro-funcC -========= -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one. -LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one. -LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments -LOG: lev:3 file:pval.c line:668 func: check_macro_returns Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one. -LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments -LOG: lev:4 file:pval.c line:2464 func: check_pval_item Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments -LOG: lev:3 file:pval.c line:2422 func: check_pval_item Warning: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael! (Not even in the extensions.conf stuff!) +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one. +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one. +LOG: lev:4 file:pval.c line:2465 func: check_pval_item Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one. +LOG: lev:4 file:pval.c line:2465 func: check_pval_item Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments +LOG: lev:3 file:pval.c line:669 func: check_macro_returns Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one. +LOG: lev:4 file:pval.c line:2465 func: check_pval_item Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments +LOG: lev:4 file:pval.c line:2465 func: check_pval_item Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments +LOG: lev:3 file:pval.c line:2423 func: check_pval_item Warning: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael! (Not even in the extensions.conf stuff!) LOG: lev:4 file:pbx_ael.c line:1708 func: pbx_load_module Sorry, but 0 syntax errors and 4 semantic errors were detected. It doesn't make sense to compile. -LOG: lev:4 file:ael2_parse line:521 func: main 0 contexts, 0 extensions, 0 priorities +LOG: lev:4 file:ael2_parse line:523 func: main 0 contexts, 0 extensions, 0 priorities diff --git a/res/ael/ael.tab.c b/res/ael/ael.tab.c index 3a478c5382..6f4dbe7ffa 100644 --- a/res/ael/ael.tab.c +++ b/res/ael/ael.tab.c @@ -1,9 +1,7 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.1a. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,18 +18,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ @@ -47,7 +37,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.1a" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -241,8 +231,8 @@ typedef union YYSTYPE char *str; /* strings */ struct pval *pval; /* full objects */ } -/* Line 187 of yacc.c. */ -#line 246 "ael.tab.c" +/* Line 198 of yacc.c. */ +#line 236 "ael.tab.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -286,8 +276,8 @@ static pval *nword(char *string, YYLTYPE *pos); static pval *update_last(pval *, YYLTYPE *); -/* Line 216 of yacc.c. */ -#line 291 "ael.tab.c" +/* Line 221 of yacc.c. */ +#line 281 "ael.tab.c" #ifdef short # undef short @@ -417,13 +407,8 @@ YYID (i) # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined _STDLIB_H \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -# ifndef _STDLIB_H -# define _STDLIB_H 1 -# endif +# ifdef __cplusplus +extern "C" { # endif # ifndef YYMALLOC # define YYMALLOC malloc @@ -439,6 +424,9 @@ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif +# ifdef __cplusplus +} +# endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ @@ -504,7 +492,7 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 14 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 300 +#define YYLAST 315 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 43 @@ -513,7 +501,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 137 /* YYNRULES -- Number of states. */ -#define YYNSTATES 275 +#define YYNSTATES 279 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -586,16 +574,16 @@ static const yytype_int8 yyrhs[] = -1, 42, -1, 36, -1, 49, 3, 47, 4, 58, 5, -1, 23, -1, -1, 15, 42, 6, 57, 7, 4, 91, 5, -1, 16, 4, 52, 5, -1, -1, - 53, 52, -1, 52, 1, -1, -1, 42, 9, 54, + 53, 52, -1, 1, 52, -1, -1, 42, 9, 54, 42, 8, -1, -1, 41, 42, 9, 56, 42, 8, -1, -1, 42, -1, 57, 10, 42, -1, 57, 1, - -1, -1, 59, 58, -1, 58, 1, -1, 61, -1, + -1, -1, 59, 58, -1, 1, 58, -1, 61, -1, 98, -1, 93, -1, 94, -1, 60, -1, 53, -1, 55, -1, 42, 1, -1, 8, -1, 17, 24, 42, 8, -1, 42, 24, 73, -1, 30, 42, 24, 73, -1, 31, 6, 69, 7, 42, 24, 73, -1, 30, 31, 6, 69, 7, 42, 24, 73, -1, -1, 73, - 62, -1, 62, 1, -1, 70, 11, 70, 11, 70, + 62, -1, 1, 62, -1, 70, 11, 70, 11, 70, -1, 42, -1, 63, 13, 70, 13, 70, 13, 70, -1, -1, 6, 66, 68, 7, -1, 19, 65, -1, 22, 65, -1, 20, 6, 64, 7, -1, 42, -1, @@ -623,7 +611,7 @@ static const yytype_int8 yyrhs[] = -1, 92, 91, -1, 73, -1, 98, -1, 37, 42, 4, 62, 5, -1, 38, 4, 95, 5, -1, 39, 4, 95, 5, -1, -1, 42, 8, 95, -1, 42, - 14, 42, 8, 95, -1, 95, 1, -1, 47, -1, + 14, 42, 8, 95, -1, 1, 95, -1, 47, -1, 47, 13, 64, -1, 96, 8, -1, 97, 96, 8, -1, 97, 1, -1, 40, 4, 97, 5, -1, 40, 4, 5, -1 @@ -732,165 +720,167 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 14, 9, 0, 0, 13, 0, 0, 3, 6, 0, - 7, 8, 0, 17, 1, 5, 4, 0, 24, 0, - 0, 17, 11, 10, 0, 25, 0, 20, 19, 16, - 0, 28, 27, 0, 0, 0, 39, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 37, 0, 28, 35, - 31, 33, 34, 32, 120, 26, 0, 0, 0, 0, - 0, 127, 127, 0, 0, 38, 0, 30, 12, 0, - 45, 89, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 70, 0, 79, - 122, 113, 0, 0, 120, 123, 21, 0, 0, 0, - 58, 0, 0, 0, 0, 137, 131, 0, 0, 22, - 41, 0, 45, 0, 0, 51, 0, 53, 0, 54, - 0, 64, 92, 0, 99, 0, 86, 85, 87, 74, - 0, 0, 106, 82, 73, 91, 109, 56, 112, 0, - 81, 83, 15, 121, 40, 0, 42, 0, 0, 59, - 127, 0, 130, 125, 126, 0, 133, 135, 136, 0, - 0, 47, 68, 0, 103, 80, 0, 115, 49, 0, - 0, 0, 0, 0, 65, 0, 0, 0, 71, 0, - 101, 72, 0, 78, 45, 107, 0, 88, 57, 108, - 111, 0, 0, 0, 60, 0, 0, 132, 134, 0, - 105, 113, 0, 0, 0, 0, 0, 115, 62, 0, - 55, 0, 0, 0, 94, 66, 93, 100, 0, 0, - 0, 90, 110, 114, 0, 0, 0, 127, 23, 0, - 52, 0, 0, 45, 67, 116, 63, 61, 0, 0, - 0, 0, 0, 0, 102, 75, 124, 84, 0, 43, - 0, 104, 45, 45, 0, 0, 0, 98, 97, 96, - 95, 0, 44, 0, 0, 0, 48, 0, 0, 76, - 50, 0, 0, 0, 77 + 7, 8, 0, 0, 1, 5, 4, 0, 24, 0, + 0, 0, 0, 11, 10, 0, 25, 0, 19, 20, + 16, 18, 0, 27, 0, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 0, 36, 37, 0, + 0, 35, 31, 33, 34, 32, 120, 26, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, + 12, 29, 0, 89, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 69, 70, + 0, 79, 122, 113, 0, 0, 120, 123, 21, 0, + 0, 0, 58, 0, 0, 0, 0, 0, 137, 131, + 0, 0, 22, 41, 0, 0, 0, 0, 0, 51, + 0, 53, 0, 54, 0, 64, 92, 0, 99, 0, + 86, 85, 87, 74, 0, 0, 106, 82, 73, 91, + 109, 56, 112, 0, 81, 83, 15, 121, 40, 0, + 42, 0, 0, 59, 130, 0, 0, 125, 126, 0, + 133, 135, 136, 0, 0, 47, 68, 46, 103, 80, + 0, 115, 49, 0, 0, 0, 0, 0, 65, 0, + 0, 0, 71, 0, 101, 72, 0, 78, 0, 107, + 0, 88, 57, 108, 111, 0, 0, 0, 60, 128, + 0, 132, 134, 0, 105, 113, 0, 0, 0, 0, + 0, 115, 62, 0, 55, 0, 0, 0, 94, 66, + 93, 100, 0, 0, 0, 90, 110, 114, 0, 0, + 0, 0, 23, 0, 52, 0, 0, 0, 67, 116, + 63, 61, 0, 0, 0, 0, 0, 0, 102, 75, + 124, 84, 0, 43, 129, 104, 0, 0, 118, 0, + 0, 98, 97, 96, 95, 0, 44, 117, 119, 0, + 48, 0, 0, 76, 50, 0, 0, 0, 77 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 5, 6, 7, 106, 8, 9, 10, 11, 20, - 86, 35, 87, 160, 26, 47, 48, 49, 50, 111, - 169, 170, 116, 166, 88, 138, 101, 171, 122, 89, - 112, 182, 261, 271, 191, 187, 123, 180, 125, 114, - 201, 91, 185, 92, 223, 139, 206, 207, 93, 94, - 51, 52, 103, 107, 108, 53 + -1, 5, 6, 7, 109, 8, 9, 10, 11, 21, + 88, 36, 89, 164, 27, 49, 50, 51, 52, 115, + 173, 174, 120, 170, 90, 142, 103, 175, 126, 91, + 116, 186, 265, 275, 195, 191, 127, 184, 129, 118, + 205, 93, 189, 94, 227, 143, 210, 211, 95, 96, + 53, 54, 106, 110, 111, 55 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -206 +#define YYPACT_NINF -208 static const yytype_int16 yypact[] = { - 139, -206, -4, 42, -206, 56, 170, -206, -206, 66, - -206, -206, 137, 46, -206, -206, -206, -6, 60, 65, - 17, 46, -206, -206, 107, -206, 14, -206, -206, -206, - 34, 119, -206, 159, 127, 133, -206, 166, -14, 191, - 197, 208, 209, 172, 111, -206, -206, 82, 119, -206, - -206, -206, -206, -206, 53, -206, 207, 174, 211, 194, - 180, 181, 181, 5, 212, -206, 96, -206, -206, 102, - 96, -206, 183, 214, 214, 218, 214, 28, 184, 219, - 220, 221, 224, 214, 190, 168, -206, -206, 96, -206, - -206, 13, 173, 226, 53, -206, -206, 225, 180, 96, - -206, 20, 84, 104, 112, -206, 222, 228, 6, -206, - -206, 129, 96, 231, 230, -206, 235, -206, 192, -206, - 143, 199, 178, 232, 196, 234, -206, -206, -206, -206, - 96, 239, -206, -206, -206, 223, -206, 203, -206, 185, - -206, -206, -206, -206, -206, 77, -206, 204, 205, -206, - 181, 206, -206, -206, -206, 192, -206, -206, -206, 241, - 210, -206, -206, 18, 243, -206, 213, 169, 2, 238, - 246, 245, 184, 184, -206, 184, 215, 184, -206, 216, - 240, -206, 217, -206, 96, -206, 96, -206, -206, -206, - 227, 229, 233, 236, -206, 147, 253, -206, -206, 254, - -206, 213, 256, 237, 242, 255, 259, 169, 244, 247, - -206, 247, 198, 120, 200, -206, 187, -206, -6, 257, - 179, -206, -206, -206, 260, 248, 96, 181, -206, 189, - -206, 262, 263, 96, -206, -206, -206, 249, 264, 265, - 184, 184, 184, 184, -206, -206, -206, -206, 96, -206, - 182, -206, 96, 96, 24, 247, 247, 267, 267, 267, - 267, 250, -206, 32, 105, 268, -206, 272, 247, -206, - -206, 251, 275, 96, -206 + 16, -208, -26, 31, -208, 44, 104, -208, -208, 43, + -208, -208, 64, 9, -208, -208, -208, 74, 42, 9, + 83, 97, 9, -208, -208, 109, -208, 90, -208, -208, + -208, -208, 148, -208, 121, 102, 106, 148, -208, 126, + 33, 158, 178, 191, 193, 112, 84, -208, -208, 171, + 148, -208, -208, -208, -208, -208, 190, -208, 177, -208, + 151, 195, 179, 162, 14, 14, 25, 196, -208, 216, + -208, -208, 110, -208, 165, 205, 205, 207, 205, 81, + 183, 206, 218, 221, 227, 205, 197, 149, -208, -208, + 216, -208, -208, 5, 172, 232, 190, -208, -208, 238, + 162, 216, -208, 15, 14, 133, 235, 242, -208, 237, + 243, 6, -208, -208, 54, 247, 54, 248, 245, -208, + 251, -208, 214, -208, 8, 217, 58, 252, 173, 253, + -208, -208, -208, -208, 216, 258, -208, -208, -208, 244, + -208, 222, -208, 99, -208, -208, -208, -208, -208, 21, + -208, 224, 225, -208, -208, 14, 226, -208, -208, 214, + -208, -208, -208, 255, 228, -208, -208, -208, 262, -208, + 229, 137, 18, 259, 266, 263, 183, 183, -208, 183, + 233, 183, -208, 234, 264, -208, 239, -208, 110, -208, + 216, -208, -208, -208, 240, 241, 246, 256, -208, -208, + 269, -208, -208, 271, -208, 229, 277, 249, 250, 274, + 281, 137, 254, 257, -208, 257, 181, 150, 189, -208, + 164, -208, 74, 279, 284, -208, -208, -208, 282, 270, + 216, 14, -208, 114, -208, 286, 287, 54, -208, -208, + -208, 260, 280, 289, 183, 183, 183, 183, -208, -208, + -208, -208, 216, -208, -208, -208, 54, 54, -208, 257, + 257, 290, 290, 290, 290, 261, -208, -208, -208, 291, + -208, 297, 257, -208, -208, 265, 288, 216, -208 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -206, -206, -206, 261, -16, -206, -206, -206, -206, 266, - -5, -206, -17, -206, -206, 252, -206, -206, -206, -107, - -206, 115, 68, -206, -206, 117, 201, -205, -76, -206, - -54, -206, -206, -206, -206, -206, -206, -206, -206, -206, - -206, -206, -206, -206, -206, 87, 78, -206, 202, -206, - -206, -206, -59, 186, -206, -45 + -208, -208, -208, 300, -16, -208, -208, -208, -208, 140, + 4, -208, -12, -208, -208, 0, -208, -208, -208, -111, + -208, 152, 55, -208, -208, 138, 209, -207, -78, -208, + -56, -208, -208, -208, -208, -208, -208, -208, -208, -208, + -208, -208, -208, -208, -208, 105, 101, -208, 219, -208, + -208, -208, -61, 202, -208, -47 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -130 +#define YYTABLE_NINF -128 static const yytype_int16 yytable[] = { - 90, 24, 124, 104, 238, 163, 239, 157, 21, 95, - 105, 158, 110, -61, 46, 32, 21, 58, 28, 161, - 136, 33, 29, -46, 34, 161, 45, 147, 59, -118, - 22, 46, 148, 161, 135, 28, 23, -117, 12, -18, - 90, 22, 22, 45, 208, 146, 13, 23, 23, 95, - 265, 266, -46, -46, -46, 137, 14, 70, -118, -118, - -118, 71, 149, 270, 120, 72, -117, -117, -117, 17, - 121, 73, 74, 75, 27, 76, 183, 220, 77, 78, - 79, 80, 81, 67, 192, 82, 83, 68, 19, 148, - 84, 195, 150, 42, 43, 85, 212, 213, 151, 214, - 70, 216, 25, 67, 71, 152, 161, -29, 72, 153, - -119, 31, 65, 152, 73, 74, 75, 154, 76, 149, - 27, 77, 78, 79, 80, 81, 254, 36, 82, 83, - 161, 176, 221, 241, 162, 66, 37, 43, 85, -119, - -119, -119, 117, 18, 119, 263, 264, 1, 152, 38, - 39, 130, -128, 172, 2, 3, 173, 40, 41, 42, - 43, 44, 4, 54, 257, 258, 259, 260, 250, 55, - -2, 15, 249, -14, 132, 56, 133, 27, 1, 134, - 161, 140, 141, 152, 246, 2, 3, -129, 175, 176, - 57, 177, 189, 4, 262, 190, 251, 60, 176, 190, - 243, 61, 244, 203, 204, 205, 179, 176, 240, 176, - 242, 176, 62, 63, 64, 96, 97, 98, 99, 274, - 115, 109, 100, 102, 118, 113, 121, 126, 127, 128, - 129, 142, 131, 144, 168, 155, 156, 164, 165, 167, - 178, 174, 181, 184, 186, 188, 193, 194, 196, 198, - 200, 209, 199, 210, 218, 137, 211, 215, 217, 219, - 226, 227, 228, 230, 234, 245, 233, 16, 247, 222, - 197, 224, 248, 252, 253, 225, 256, 255, 176, 231, - 269, 268, 273, 202, 232, 235, 236, 30, 229, 237, - 0, 208, 267, 272, 159, 0, 143, 0, 0, 145, - 69 + 92, 25, 128, 165, 107, 167, 242, 161, 243, 97, + 19, 162, 140, 113, -17, 104, 12, 22, 176, -127, + 48, 177, 151, 22, 1, 48, 22, 152, 196, -61, + 108, 2, 3, 152, 139, 13, 47, 59, 48, 4, + 92, 47, 23, 154, 14, 150, 17, 141, 24, 97, + 71, 20, 269, 270, 47, 114, 105, 153, 72, -45, + 212, 23, 73, 153, 61, 274, 74, 24, 179, 180, + 18, 181, 75, 76, 77, 62, 78, 224, 187, 79, + 80, 81, 82, 83, 26, 68, 84, 85, -45, -45, + -45, 33, 29, 29, 199, 45, 87, 34, 216, 217, + 35, 218, 30, 220, -2, 15, 193, -14, 69, 194, + 23, 114, 1, 32, 72, -45, 24, 124, 73, 2, + 3, 255, 74, 125, 194, 56, 258, 4, 75, 76, + 77, 121, 78, 123, 225, 79, 80, 81, 82, 83, + 134, 155, 84, 85, 57, 267, 268, 156, 58, 37, + 60, 45, 87, -28, 67, 136, 38, 137, 29, 28, + 138, 180, 31, 245, 63, 39, 261, 262, 263, 264, + 254, 207, 208, 209, 253, 180, 70, 247, 40, 41, + 144, 145, 64, 183, 180, 98, 42, 43, 44, 45, + 46, 244, 180, 99, 72, 65, 266, 66, 73, 246, + 180, 100, 74, 101, 102, 112, 248, 117, 75, 76, + 77, 119, 78, 122, 130, 79, 80, 81, 82, 83, + 72, 278, 84, 85, 73, 125, 131, 86, 74, 132, + 44, 45, 87, 133, 75, 76, 77, 146, 78, 135, + 157, 79, 80, 81, 82, 83, 148, 158, 84, 85, + 159, 160, 166, 169, 168, 171, 172, 45, 87, 178, + 182, 185, 188, 202, 192, 190, 197, 198, 200, 204, + 203, 141, 213, 214, 215, 219, 221, 231, 222, 232, + 230, 223, 226, 228, 234, 237, 238, 249, 229, 250, + 251, 235, 236, 259, 252, 277, 240, 256, 257, 241, + 260, 180, 212, 271, 272, 273, 16, 276, 206, 149, + 233, 201, 239, 163, 0, 147 }; static const yytype_int16 yycheck[] = { - 54, 17, 78, 62, 209, 112, 211, 1, 13, 54, - 5, 5, 66, 11, 31, 1, 21, 31, 1, 1, - 7, 7, 5, 5, 10, 1, 31, 7, 42, 5, - 36, 48, 12, 1, 88, 1, 42, 5, 42, 5, - 94, 36, 36, 48, 42, 99, 4, 42, 42, 94, - 255, 256, 34, 35, 36, 42, 0, 4, 34, 35, - 36, 8, 42, 268, 36, 12, 34, 35, 36, 3, - 42, 18, 19, 20, 9, 22, 130, 184, 25, 26, - 27, 28, 29, 1, 7, 32, 33, 5, 42, 12, - 37, 150, 8, 40, 41, 42, 172, 173, 14, 175, - 4, 177, 42, 1, 8, 1, 1, 5, 12, 5, - 5, 4, 1, 1, 18, 19, 20, 5, 22, 42, - 9, 25, 26, 27, 28, 29, 233, 8, 32, 33, - 1, 11, 186, 13, 5, 24, 17, 41, 42, 34, - 35, 36, 74, 6, 76, 252, 253, 8, 1, 30, - 31, 83, 5, 10, 15, 16, 13, 38, 39, 40, - 41, 42, 23, 4, 240, 241, 242, 243, 227, 42, - 0, 1, 226, 3, 6, 42, 8, 9, 8, 11, - 1, 8, 9, 1, 5, 15, 16, 5, 10, 11, - 24, 13, 7, 23, 248, 10, 7, 6, 11, 10, - 13, 4, 218, 34, 35, 36, 10, 11, 10, 11, - 10, 11, 4, 4, 42, 8, 42, 6, 24, 273, - 6, 9, 42, 42, 6, 42, 42, 8, 8, 8, - 6, 5, 42, 8, 42, 13, 8, 6, 8, 4, - 8, 42, 8, 4, 21, 42, 42, 42, 42, 8, - 7, 13, 42, 7, 14, 42, 11, 42, 42, 42, - 24, 8, 8, 7, 5, 8, 11, 6, 8, 42, - 155, 42, 24, 11, 11, 42, 11, 13, 11, 42, - 8, 13, 7, 166, 42, 207, 42, 21, 201, 42, - -1, 42, 42, 42, 108, -1, 94, -1, -1, 98, - 48 + 56, 17, 80, 114, 65, 116, 213, 1, 215, 56, + 1, 5, 7, 69, 5, 1, 42, 13, 10, 5, + 32, 13, 7, 19, 8, 37, 22, 12, 7, 11, + 5, 15, 16, 12, 90, 4, 32, 37, 50, 23, + 96, 37, 36, 104, 0, 101, 3, 42, 42, 96, + 50, 42, 259, 260, 50, 1, 42, 42, 4, 5, + 42, 36, 8, 42, 31, 272, 12, 42, 10, 11, + 6, 13, 18, 19, 20, 42, 22, 188, 134, 25, + 26, 27, 28, 29, 42, 1, 32, 33, 34, 35, + 36, 1, 9, 9, 155, 41, 42, 7, 176, 177, + 10, 179, 5, 181, 0, 1, 7, 3, 24, 10, + 36, 1, 8, 4, 4, 5, 42, 36, 8, 15, + 16, 7, 12, 42, 10, 4, 237, 23, 18, 19, + 20, 76, 22, 78, 190, 25, 26, 27, 28, 29, + 85, 8, 32, 33, 42, 256, 257, 14, 42, 1, + 24, 41, 42, 5, 42, 6, 8, 8, 9, 19, + 11, 11, 22, 13, 6, 17, 244, 245, 246, 247, + 231, 34, 35, 36, 230, 11, 5, 13, 30, 31, + 8, 9, 4, 10, 11, 8, 38, 39, 40, 41, + 42, 10, 11, 42, 4, 4, 252, 4, 8, 10, + 11, 6, 12, 24, 42, 9, 222, 42, 18, 19, + 20, 6, 22, 6, 8, 25, 26, 27, 28, 29, + 4, 277, 32, 33, 8, 42, 8, 37, 12, 8, + 40, 41, 42, 6, 18, 19, 20, 5, 22, 42, + 5, 25, 26, 27, 28, 29, 8, 5, 32, 33, + 13, 8, 5, 8, 6, 4, 42, 41, 42, 42, + 8, 8, 4, 8, 42, 21, 42, 42, 42, 7, + 42, 42, 13, 7, 11, 42, 42, 8, 14, 8, + 24, 42, 42, 42, 7, 11, 5, 8, 42, 5, + 8, 42, 42, 13, 24, 7, 42, 11, 11, 42, + 11, 11, 42, 42, 13, 8, 6, 42, 170, 100, + 205, 159, 211, 111, -1, 96 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -898,33 +888,33 @@ static const yytype_int16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 8, 15, 16, 23, 44, 45, 46, 48, 49, - 50, 51, 42, 4, 0, 1, 46, 3, 6, 42, - 52, 53, 36, 42, 47, 42, 57, 9, 1, 5, - 52, 4, 1, 7, 10, 54, 8, 17, 30, 31, - 38, 39, 40, 41, 42, 53, 55, 58, 59, 60, - 61, 93, 94, 98, 4, 42, 42, 24, 31, 42, - 6, 4, 4, 4, 42, 1, 24, 1, 5, 58, - 4, 8, 12, 18, 19, 20, 22, 25, 26, 27, - 28, 29, 32, 33, 37, 42, 53, 55, 67, 72, - 73, 84, 86, 91, 92, 98, 8, 42, 6, 24, - 42, 69, 42, 95, 95, 5, 47, 96, 97, 9, - 73, 62, 73, 42, 82, 6, 65, 65, 6, 65, - 36, 42, 71, 79, 71, 81, 8, 8, 8, 6, - 65, 42, 6, 8, 11, 73, 7, 42, 68, 88, - 8, 9, 5, 91, 8, 69, 73, 7, 12, 42, - 8, 14, 1, 5, 5, 13, 8, 1, 5, 96, - 56, 1, 5, 62, 6, 8, 66, 4, 42, 63, - 64, 70, 10, 13, 42, 10, 11, 13, 8, 10, - 80, 8, 74, 73, 4, 85, 21, 78, 42, 7, - 10, 77, 7, 42, 42, 95, 42, 64, 8, 42, - 7, 83, 68, 34, 35, 36, 89, 90, 42, 13, - 7, 11, 71, 71, 71, 42, 71, 42, 14, 42, - 62, 73, 42, 87, 42, 42, 24, 8, 8, 88, - 7, 42, 42, 11, 5, 89, 42, 42, 70, 70, - 10, 13, 10, 13, 47, 8, 5, 8, 24, 73, - 95, 7, 11, 11, 62, 13, 11, 71, 71, 71, - 71, 75, 73, 62, 62, 70, 70, 42, 13, 8, - 70, 76, 42, 7, 73 + 50, 51, 42, 4, 0, 1, 46, 3, 6, 1, + 42, 52, 53, 36, 42, 47, 42, 57, 52, 9, + 5, 52, 4, 1, 7, 10, 54, 1, 8, 17, + 30, 31, 38, 39, 40, 41, 42, 53, 55, 58, + 59, 60, 61, 93, 94, 98, 4, 42, 42, 58, + 24, 31, 42, 6, 4, 4, 4, 42, 1, 24, + 5, 58, 4, 8, 12, 18, 19, 20, 22, 25, + 26, 27, 28, 29, 32, 33, 37, 42, 53, 55, + 67, 72, 73, 84, 86, 91, 92, 98, 8, 42, + 6, 24, 42, 69, 1, 42, 95, 95, 5, 47, + 96, 97, 9, 73, 1, 62, 73, 42, 82, 6, + 65, 65, 6, 65, 36, 42, 71, 79, 71, 81, + 8, 8, 8, 6, 65, 42, 6, 8, 11, 73, + 7, 42, 68, 88, 8, 9, 5, 91, 8, 69, + 73, 7, 12, 42, 95, 8, 14, 5, 5, 13, + 8, 1, 5, 96, 56, 62, 5, 62, 6, 8, + 66, 4, 42, 63, 64, 70, 10, 13, 42, 10, + 11, 13, 8, 10, 80, 8, 74, 73, 4, 85, + 21, 78, 42, 7, 10, 77, 7, 42, 42, 95, + 42, 64, 8, 42, 7, 83, 68, 34, 35, 36, + 89, 90, 42, 13, 7, 11, 71, 71, 71, 42, + 71, 42, 14, 42, 62, 73, 42, 87, 42, 42, + 24, 8, 8, 88, 7, 42, 42, 11, 5, 89, + 42, 42, 70, 70, 10, 13, 10, 13, 47, 8, + 5, 8, 24, 73, 95, 7, 11, 11, 62, 13, + 11, 71, 71, 71, 71, 75, 73, 62, 62, 70, + 70, 42, 13, 8, 70, 76, 42, 7, 73 }; #define yyerrok (yyerrstatus = 0) @@ -1051,14 +1041,14 @@ do { \ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio) +yy_symbol_value_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp, struct parse_io *parseio) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio) FILE *yyoutput; int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; + const YYSTYPE * const yyvaluep; + const YYLTYPE * const yylocationp; struct parse_io *parseio; #endif { @@ -1087,14 +1077,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, parseio) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct parse_io *parseio) +yy_symbol_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp, struct parse_io *parseio) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, parseio) FILE *yyoutput; int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; + const YYSTYPE * const yyvaluep; + const YYLTYPE * const yylocationp; struct parse_io *parseio; #endif { @@ -1272,7 +1262,7 @@ yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + size_t yyn = 0; char const *yyp = yystr; for (;;) @@ -1319,7 +1309,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; - if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + if (! (YYPACT_NINF < yyn && yyn < YYLAST)) return 0; else { @@ -1357,7 +1347,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar) int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; + int yychecklim = YYLAST - yyn; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; @@ -1449,7 +1439,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) case 42: /* "word" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1453 "ael.tab.c" +#line 1443 "ael.tab.c" break; case 45: /* "objects" */ #line 165 "ael.y" @@ -1457,7 +1447,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1461 "ael.tab.c" +#line 1451 "ael.tab.c" break; case 46: /* "object" */ #line 165 "ael.y" @@ -1465,12 +1455,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1469 "ael.tab.c" +#line 1459 "ael.tab.c" break; case 47: /* "context_name" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1474 "ael.tab.c" +#line 1464 "ael.tab.c" break; case 48: /* "context" */ #line 165 "ael.y" @@ -1478,7 +1468,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1482 "ael.tab.c" +#line 1472 "ael.tab.c" break; case 50: /* "macro" */ #line 165 "ael.y" @@ -1486,7 +1476,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1490 "ael.tab.c" +#line 1480 "ael.tab.c" break; case 51: /* "globals" */ #line 165 "ael.y" @@ -1494,7 +1484,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1498 "ael.tab.c" +#line 1488 "ael.tab.c" break; case 52: /* "global_statements" */ #line 165 "ael.y" @@ -1502,7 +1492,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1506 "ael.tab.c" +#line 1496 "ael.tab.c" break; case 53: /* "assignment" */ #line 165 "ael.y" @@ -1510,7 +1500,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1514 "ael.tab.c" +#line 1504 "ael.tab.c" break; case 55: /* "local_assignment" */ #line 165 "ael.y" @@ -1518,7 +1508,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1522 "ael.tab.c" +#line 1512 "ael.tab.c" break; case 57: /* "arglist" */ #line 165 "ael.y" @@ -1526,7 +1516,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1530 "ael.tab.c" +#line 1520 "ael.tab.c" break; case 58: /* "elements" */ #line 165 "ael.y" @@ -1534,7 +1524,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1538 "ael.tab.c" +#line 1528 "ael.tab.c" break; case 59: /* "element" */ #line 165 "ael.y" @@ -1542,7 +1532,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1546 "ael.tab.c" +#line 1536 "ael.tab.c" break; case 60: /* "ignorepat" */ #line 165 "ael.y" @@ -1550,7 +1540,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1554 "ael.tab.c" +#line 1544 "ael.tab.c" break; case 61: /* "extension" */ #line 165 "ael.y" @@ -1558,7 +1548,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1562 "ael.tab.c" +#line 1552 "ael.tab.c" break; case 62: /* "statements" */ #line 165 "ael.y" @@ -1566,12 +1556,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1570 "ael.tab.c" +#line 1560 "ael.tab.c" break; case 63: /* "timerange" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1575 "ael.tab.c" +#line 1565 "ael.tab.c" break; case 64: /* "timespec" */ #line 165 "ael.y" @@ -1579,12 +1569,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1583 "ael.tab.c" +#line 1573 "ael.tab.c" break; case 65: /* "test_expr" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1588 "ael.tab.c" +#line 1578 "ael.tab.c" break; case 67: /* "if_like_head" */ #line 165 "ael.y" @@ -1592,22 +1582,22 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1596 "ael.tab.c" +#line 1586 "ael.tab.c" break; case 68: /* "word_list" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1601 "ael.tab.c" +#line 1591 "ael.tab.c" break; case 70: /* "word3_list" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1606 "ael.tab.c" +#line 1596 "ael.tab.c" break; case 71: /* "goto_word" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1611 "ael.tab.c" +#line 1601 "ael.tab.c" break; case 72: /* "switch_statement" */ #line 165 "ael.y" @@ -1615,7 +1605,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1619 "ael.tab.c" +#line 1609 "ael.tab.c" break; case 73: /* "statement" */ #line 165 "ael.y" @@ -1623,7 +1613,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1627 "ael.tab.c" +#line 1617 "ael.tab.c" break; case 78: /* "opt_else" */ #line 165 "ael.y" @@ -1631,7 +1621,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1635 "ael.tab.c" +#line 1625 "ael.tab.c" break; case 79: /* "target" */ #line 165 "ael.y" @@ -1639,12 +1629,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1643 "ael.tab.c" +#line 1633 "ael.tab.c" break; case 80: /* "opt_pri" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1648 "ael.tab.c" +#line 1638 "ael.tab.c" break; case 81: /* "jumptarget" */ #line 165 "ael.y" @@ -1652,7 +1642,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1656 "ael.tab.c" +#line 1646 "ael.tab.c" break; case 82: /* "macro_call" */ #line 165 "ael.y" @@ -1660,7 +1650,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1664 "ael.tab.c" +#line 1654 "ael.tab.c" break; case 84: /* "application_call_head" */ #line 165 "ael.y" @@ -1668,7 +1658,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1672 "ael.tab.c" +#line 1662 "ael.tab.c" break; case 86: /* "application_call" */ #line 165 "ael.y" @@ -1676,12 +1666,12 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1680 "ael.tab.c" +#line 1670 "ael.tab.c" break; case 87: /* "opt_word" */ #line 178 "ael.y" { free((yyvaluep->str));}; -#line 1685 "ael.tab.c" +#line 1675 "ael.tab.c" break; case 88: /* "eval_arglist" */ #line 165 "ael.y" @@ -1689,7 +1679,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1693 "ael.tab.c" +#line 1683 "ael.tab.c" break; case 89: /* "case_statements" */ #line 165 "ael.y" @@ -1697,7 +1687,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1701 "ael.tab.c" +#line 1691 "ael.tab.c" break; case 90: /* "case_statement" */ #line 165 "ael.y" @@ -1705,7 +1695,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1709 "ael.tab.c" +#line 1699 "ael.tab.c" break; case 91: /* "macro_statements" */ #line 165 "ael.y" @@ -1713,7 +1703,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1717 "ael.tab.c" +#line 1707 "ael.tab.c" break; case 92: /* "macro_statement" */ #line 165 "ael.y" @@ -1721,7 +1711,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1725 "ael.tab.c" +#line 1715 "ael.tab.c" break; case 93: /* "switches" */ #line 165 "ael.y" @@ -1729,7 +1719,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1733 "ael.tab.c" +#line 1723 "ael.tab.c" break; case 94: /* "eswitches" */ #line 165 "ael.y" @@ -1737,7 +1727,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1741 "ael.tab.c" +#line 1731 "ael.tab.c" break; case 95: /* "switchlist" */ #line 165 "ael.y" @@ -1745,7 +1735,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1749 "ael.tab.c" +#line 1739 "ael.tab.c" break; case 96: /* "included_entry" */ #line 165 "ael.y" @@ -1753,7 +1743,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1757 "ael.tab.c" +#line 1747 "ael.tab.c" break; case 97: /* "includeslist" */ #line 165 "ael.y" @@ -1761,7 +1751,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1765 "ael.tab.c" +#line 1755 "ael.tab.c" break; case 98: /* "includes" */ #line 165 "ael.y" @@ -1769,7 +1759,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, parseio) destroy_pval((yyvaluep->pval)); prev_word=0; }; -#line 1773 "ael.tab.c" +#line 1763 "ael.tab.c" break; default: @@ -2195,7 +2185,7 @@ yyreduce: case 19: #line 237 "ael.y" - {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} + {(yyval.pval)=(yyvsp[(2) - (2)].pval);;} break; case 20: @@ -2256,7 +2246,7 @@ yyreduce: case 30: #line 261 "ael.y" - { (yyval.pval)=(yyvsp[(1) - (2)].pval);;} + { (yyval.pval)=(yyvsp[(2) - (2)].pval);;} break; case 31: @@ -2359,7 +2349,7 @@ yyreduce: case 47: #line 306 "ael.y" - {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} + {(yyval.pval)=(yyvsp[(2) - (2)].pval);;} break; case 48: @@ -2930,7 +2920,7 @@ yyreduce: case 130: #line 610 "ael.y" - {(yyval.pval)=(yyvsp[(1) - (2)].pval);;} + {(yyval.pval)=(yyvsp[(2) - (2)].pval);;} break; case 131: @@ -2975,8 +2965,8 @@ yyreduce: break; -/* Line 1267 of yacc.c. */ -#line 2980 "ael.tab.c" +/* Line 1270 of yacc.c. */ +#line 2970 "ael.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3191,8 +3181,7 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } diff --git a/res/ael/ael.tab.h b/res/ael/ael.tab.h index 5495a6447b..4036c07f7c 100644 --- a/res/ael/ael.tab.h +++ b/res/ael/ael.tab.h @@ -1,9 +1,7 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 2.1a. */ -/* Skeleton interface for Bison's Yacc-like parsers in C - - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,18 +18,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE @@ -134,8 +124,8 @@ typedef union YYSTYPE char *str; /* strings */ struct pval *pval; /* full objects */ } -/* Line 1489 of yacc.c. */ -#line 139 "ael.tab.h" +/* Line 1536 of yacc.c. */ +#line 129 "ael.tab.h" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -158,3 +148,5 @@ typedef struct YYLTYPE #endif + + diff --git a/res/ael/ael.y b/res/ael/ael.y index 5d0a1c1a2b..c1f04fd64c 100644 --- a/res/ael/ael.y +++ b/res/ael/ael.y @@ -154,7 +154,7 @@ static pval *update_last(pval *, YYLTYPE *); /* there will be two shift/reduce conflicts, they involve the if statement, where a single statement occurs not wrapped in curlies in the "true" section the default action to shift will attach the else to the preceeding if. */ -%expect 8 +%expect 3 %error-verbose /* @@ -234,7 +234,7 @@ globals : KW_GLOBALS LC global_statements RC { global_statements : { $$ = NULL; } | assignment global_statements {$$ = linku1($1, $2); } - | global_statements error {$$=$1;} + | error global_statements {$$=$2;} ; assignment : word EQ { reset_semicount(parseio->scanner); } word SEMI { @@ -258,7 +258,7 @@ arglist : /* empty */ { $$ = NULL; } elements : {$$=0;} | element elements { $$ = linku1($1, $2); } - | elements error { $$=$1;} + | error elements { $$=$2;} ; element : extension {$$=$1;} @@ -303,7 +303,7 @@ extension : word EXTENMARK statement { /* list of statements in a block or after a case label - can be empty */ statements : /* empty */ { $$ = NULL; } | statement statements { $$ = linku1($1, $2); } - | statements error {$$=$1;} + | error statements {$$=$2;} ; /* hh:mm-hh:mm, due to the way the parser works we do not @@ -478,7 +478,7 @@ statement : LC statements RC { opt_else : KW_ELSE statement { $$ = $2; } | { $$ = NULL ; } - + target : goto_word { $$ = nword($1, &@1); } | goto_word BAR goto_word { $$ = nword($1, &@1); @@ -607,7 +607,7 @@ switchlist : /* empty */ { $$ = NULL; } | word SEMI switchlist { $$ = linku1(nword($1, &@1), $3); } | word AT word SEMI switchlist { char *x; asprintf(&x,"%s@%s", $1,$3); free($1); free($3); $$ = linku1(nword(x, &@1), $5);} - | switchlist error {$$=$1;} + | error switchlist {$$=$2;} ; included_entry : context_name { $$ = nword($1, &@1); } -- GitLab