winprefsyacc.c revision ed6184df
1ed6184dfSmrg/* A Bison parser, made by GNU Bison 3.5.1.  */
205b261ecSmrg
39ace9065Smrg/* Bison implementation for Yacc-like parsers in C
435c4bbdfSmrg
5ed6184dfSmrg   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
65a7dfde8Smrg   Inc.
735c4bbdfSmrg
84642e01fSmrg   This program is free software: you can redistribute it and/or modify
905b261ecSmrg   it under the terms of the GNU General Public License as published by
104642e01fSmrg   the Free Software Foundation, either version 3 of the License, or
114642e01fSmrg   (at your option) any later version.
1235c4bbdfSmrg
1305b261ecSmrg   This program is distributed in the hope that it will be useful,
1405b261ecSmrg   but WITHOUT ANY WARRANTY; without even the implied warranty of
1505b261ecSmrg   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1605b261ecSmrg   GNU General Public License for more details.
1735c4bbdfSmrg
1805b261ecSmrg   You should have received a copy of the GNU General Public License
19ed6184dfSmrg   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
2005b261ecSmrg
2105b261ecSmrg/* As a special exception, you may create a larger work that contains
2205b261ecSmrg   part or all of the Bison parser skeleton and distribute that work
2305b261ecSmrg   under terms of your choice, so long as that work isn't itself a
2405b261ecSmrg   parser generator using the skeleton or a modified version thereof
2505b261ecSmrg   as a parser skeleton.  Alternatively, if you modify or redistribute
2605b261ecSmrg   the parser skeleton itself, you may (at your option) remove this
2705b261ecSmrg   special exception, which will cause the skeleton and the resulting
2805b261ecSmrg   Bison output files to be licensed under the GNU General Public
2905b261ecSmrg   License without this special exception.
3035c4bbdfSmrg
3105b261ecSmrg   This special exception was added by the Free Software Foundation in
3205b261ecSmrg   version 2.2 of Bison.  */
3305b261ecSmrg
3405b261ecSmrg/* C LALR(1) parser skeleton written by Richard Stallman, by
3505b261ecSmrg   simplifying the original so-called "semantic" parser.  */
3605b261ecSmrg
3705b261ecSmrg/* All symbols defined below should begin with yy or YY, to avoid
3805b261ecSmrg   infringing on user name space.  This should be done even for local
3905b261ecSmrg   variables, as they might otherwise be expanded by user macros.
4005b261ecSmrg   There are some unavoidable exceptions within include files to
4105b261ecSmrg   define necessary library symbols; they are noted "INFRINGES ON
4205b261ecSmrg   USER NAME SPACE" below.  */
4305b261ecSmrg
44ed6184dfSmrg/* Undocumented macros, especially those whose name start with YY_,
45ed6184dfSmrg   are private implementation details.  Do not rely on them.  */
46ed6184dfSmrg
47ed6184dfSmrg/* Identify Bison output.  */
48ed6184dfSmrg#define YYBISON 1
4905b261ecSmrg
50ed6184dfSmrg/* Bison version.  */
51ed6184dfSmrg#define YYBISON_VERSION "3.5.1"
5205b261ecSmrg
5305b261ecSmrg/* Skeleton name.  */
5405b261ecSmrg#define YYSKELETON_NAME "yacc.c"
5505b261ecSmrg
5605b261ecSmrg/* Pure parsers.  */
5705b261ecSmrg#define YYPURE 0
5805b261ecSmrg
594642e01fSmrg/* Push parsers.  */
604642e01fSmrg#define YYPUSH 0
6105b261ecSmrg
624642e01fSmrg/* Pull parsers.  */
634642e01fSmrg#define YYPULL 1
6405b261ecSmrg
6505b261ecSmrg
6605b261ecSmrg
6705b261ecSmrg
685a7dfde8Smrg/* First part of user prologue.  */
695a7dfde8Smrg#line 1 "winprefsyacc.y"
7005b261ecSmrg
7105b261ecSmrg/*
7205b261ecSmrg * Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
736747b715Smrg * Copyright (C) Colin Harrison 2005-2008
7405b261ecSmrg *
7505b261ecSmrg * Permission is hereby granted, free of charge, to any person obtaining
7605b261ecSmrg * a copy of this software and associated documentation files (the
7705b261ecSmrg * "Software"), to deal in the Software without restriction, including
7805b261ecSmrg * without limitation the rights to use, copy, modify, merge, publish,
7905b261ecSmrg * distribute, sublicense, and/or sell copies of the Software, and to
8005b261ecSmrg * permit persons to whom the Software is furnished to do so, subject to
8105b261ecSmrg * the following conditions:
8205b261ecSmrg *
8305b261ecSmrg * The above copyright notice and this permission notice shall be
8405b261ecSmrg * included in all copies or substantial portions of the Software.
8505b261ecSmrg *
8605b261ecSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
8705b261ecSmrg * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
8805b261ecSmrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
8905b261ecSmrg * NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR
9005b261ecSmrg * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
9105b261ecSmrg * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
9205b261ecSmrg * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9305b261ecSmrg *
9405b261ecSmrg * Except as contained in this notice, the name of the XFree86 Project
9505b261ecSmrg * shall not be used in advertising or otherwise to promote the sale, use
9605b261ecSmrg * or other dealings in this Software without prior written authorization
9705b261ecSmrg * from the XFree86 Project.
9805b261ecSmrg *
9905b261ecSmrg * Authors:     Earle F. Philhower, III
1006747b715Smrg *              Colin Harrison
10105b261ecSmrg */
10205b261ecSmrg/* $XFree86: $ */
10305b261ecSmrg
10405b261ecSmrg#ifdef HAVE_XWIN_CONFIG_H
10505b261ecSmrg#include <xwin-config.h>
10605b261ecSmrg#endif
10705b261ecSmrg#include <stdio.h>
10805b261ecSmrg#include <stdlib.h>
10935c4bbdfSmrg#define _STDLIB_H 1 /* bison checks this to know if stdlib has been included */
11005b261ecSmrg#include <string.h>
11105b261ecSmrg#include "winprefs.h"
11205b261ecSmrg
11305b261ecSmrg/* The following give better error messages in bison at the cost of a few KB */
11405b261ecSmrg#define YYERROR_VERBOSE 1
11505b261ecSmrg
1166747b715Smrg/* YYLTYPE_IS_TRIVIAL and YYENABLE_NLS defined to suppress warnings */
1176747b715Smrg#define YYLTYPE_IS_TRIVIAL 1
1186747b715Smrg#define YYENABLE_NLS 0
1196747b715Smrg
12005b261ecSmrg/* The global pref settings */
12105b261ecSmrgWINPREFS pref;
12205b261ecSmrg
12305b261ecSmrg/* The working menu */
12405b261ecSmrgstatic MENUPARSED menu;
12505b261ecSmrg
12605b261ecSmrg/* Functions for parsing the tokens into out structure */
12705b261ecSmrg/* Defined at the end section of this file */
12805b261ecSmrg
12905b261ecSmrgstatic void SetIconDirectory (char *path);
13005b261ecSmrgstatic void SetDefaultIcon (char *fname);
13105b261ecSmrgstatic void SetRootMenu (char *menu);
13205b261ecSmrgstatic void SetDefaultSysMenu (char *menu, int pos);
13305b261ecSmrgstatic void SetTrayIcon (char *fname);
13405b261ecSmrg
13505b261ecSmrgstatic void OpenMenu(char *menuname);
13635c4bbdfSmrgstatic void AddMenuLine(const char *name, MENUCOMMANDTYPE cmd, const char *param);
13705b261ecSmrgstatic void CloseMenu(void);
13805b261ecSmrg
13905b261ecSmrgstatic void OpenIcons(void);
14005b261ecSmrgstatic void AddIconLine(char *matchstr, char *iconfile);
14105b261ecSmrgstatic void CloseIcons(void);
14205b261ecSmrg
1436747b715Smrgstatic void OpenStyles(void);
1446747b715Smrgstatic void AddStyleLine(char *matchstr, unsigned long style);
1456747b715Smrgstatic void CloseStyles(void);
1466747b715Smrg
14705b261ecSmrgstatic void OpenSysMenu(void);
14805b261ecSmrgstatic void AddSysMenuLine(char *matchstr, char *menuname, int pos);
14905b261ecSmrgstatic void CloseSysMenu(void);
15005b261ecSmrg
15135c4bbdfSmrgstatic int yyerror (const char *s);
15205b261ecSmrg
15305b261ecSmrgextern char *yytext;
15435c4bbdfSmrgextern int yylineno;
15505b261ecSmrgextern int yylex(void);
15605b261ecSmrg
15705b261ecSmrg
158ed6184dfSmrg#line 159 "winprefsyacc.c"
15905b261ecSmrg
1605a7dfde8Smrg# ifndef YY_CAST
1615a7dfde8Smrg#  ifdef __cplusplus
1625a7dfde8Smrg#   define YY_CAST(Type, Val) static_cast<Type> (Val)
1635a7dfde8Smrg#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1645a7dfde8Smrg#  else
1655a7dfde8Smrg#   define YY_CAST(Type, Val) ((Type) (Val))
1665a7dfde8Smrg#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1675a7dfde8Smrg#  endif
1685a7dfde8Smrg# endif
16935c4bbdfSmrg# ifndef YY_NULLPTR
1705a7dfde8Smrg#  if defined __cplusplus
1715a7dfde8Smrg#   if 201103L <= __cplusplus
1725a7dfde8Smrg#    define YY_NULLPTR nullptr
1735a7dfde8Smrg#   else
1745a7dfde8Smrg#    define YY_NULLPTR 0
1755a7dfde8Smrg#   endif
17635c4bbdfSmrg#  else
1775a7dfde8Smrg#   define YY_NULLPTR ((void*)0)
17835c4bbdfSmrg#  endif
17935c4bbdfSmrg# endif
18005b261ecSmrg
181ed6184dfSmrg/* Enabling verbose error messages.  */
182ed6184dfSmrg#ifdef YYERROR_VERBOSE
183ed6184dfSmrg# undef YYERROR_VERBOSE
184ed6184dfSmrg# define YYERROR_VERBOSE 1
185ed6184dfSmrg#else
186ed6184dfSmrg# define YYERROR_VERBOSE 0
187ed6184dfSmrg#endif
188ed6184dfSmrg
1895a7dfde8Smrg/* Use api.header.include to #include this header
1905a7dfde8Smrg   instead of duplicating it here.  */
19135c4bbdfSmrg#ifndef YY_YY_WINPREFSYACC_H_INCLUDED
19235c4bbdfSmrg# define YY_YY_WINPREFSYACC_H_INCLUDED
19335c4bbdfSmrg/* Debug traces.  */
19435c4bbdfSmrg#ifndef YYDEBUG
19535c4bbdfSmrg# define YYDEBUG 0
19635c4bbdfSmrg#endif
19735c4bbdfSmrg#if YYDEBUG
19835c4bbdfSmrgextern int yydebug;
19905b261ecSmrg#endif
20005b261ecSmrg
201ed6184dfSmrg/* Token type.  */
2024642e01fSmrg#ifndef YYTOKENTYPE
2034642e01fSmrg# define YYTOKENTYPE
20435c4bbdfSmrg  enum yytokentype
20535c4bbdfSmrg  {
206ed6184dfSmrg    NEWLINE = 258,
207ed6184dfSmrg    MENU = 259,
208ed6184dfSmrg    LB = 260,
209ed6184dfSmrg    RB = 261,
210ed6184dfSmrg    ICONDIRECTORY = 262,
211ed6184dfSmrg    DEFAULTICON = 263,
212ed6184dfSmrg    ICONS = 264,
213ed6184dfSmrg    STYLES = 265,
214ed6184dfSmrg    TOPMOST = 266,
215ed6184dfSmrg    MAXIMIZE = 267,
216ed6184dfSmrg    MINIMIZE = 268,
217ed6184dfSmrg    BOTTOM = 269,
218ed6184dfSmrg    NOTITLE = 270,
219ed6184dfSmrg    OUTLINE = 271,
220ed6184dfSmrg    NOFRAME = 272,
221ed6184dfSmrg    DEFAULTSYSMENU = 273,
222ed6184dfSmrg    SYSMENU = 274,
223ed6184dfSmrg    ROOTMENU = 275,
224ed6184dfSmrg    SEPARATOR = 276,
225ed6184dfSmrg    ATSTART = 277,
226ed6184dfSmrg    ATEND = 278,
227ed6184dfSmrg    EXEC = 279,
228ed6184dfSmrg    ALWAYSONTOP = 280,
229ed6184dfSmrg    DEBUGOUTPUT = 281,
230ed6184dfSmrg    RELOAD = 282,
231ed6184dfSmrg    TRAYICON = 283,
232ed6184dfSmrg    FORCEEXIT = 284,
233ed6184dfSmrg    SILENTEXIT = 285,
234ed6184dfSmrg    STRING = 286
23535c4bbdfSmrg  };
2364642e01fSmrg#endif
237ed6184dfSmrg/* Tokens.  */
2384642e01fSmrg#define NEWLINE 258
2394642e01fSmrg#define MENU 259
2404642e01fSmrg#define LB 260
2414642e01fSmrg#define RB 261
2424642e01fSmrg#define ICONDIRECTORY 262
2434642e01fSmrg#define DEFAULTICON 263
2444642e01fSmrg#define ICONS 264
2456747b715Smrg#define STYLES 265
2466747b715Smrg#define TOPMOST 266
2476747b715Smrg#define MAXIMIZE 267
2486747b715Smrg#define MINIMIZE 268
2496747b715Smrg#define BOTTOM 269
2506747b715Smrg#define NOTITLE 270
2516747b715Smrg#define OUTLINE 271
2526747b715Smrg#define NOFRAME 272
2536747b715Smrg#define DEFAULTSYSMENU 273
2546747b715Smrg#define SYSMENU 274
2556747b715Smrg#define ROOTMENU 275
2566747b715Smrg#define SEPARATOR 276
2576747b715Smrg#define ATSTART 277
2586747b715Smrg#define ATEND 278
2596747b715Smrg#define EXEC 279
2606747b715Smrg#define ALWAYSONTOP 280
2616747b715Smrg#define DEBUGOUTPUT 281
2626747b715Smrg#define RELOAD 282
2636747b715Smrg#define TRAYICON 283
2646747b715Smrg#define FORCEEXIT 284
2656747b715Smrg#define SILENTEXIT 285
2666747b715Smrg#define STRING 286
2674642e01fSmrg
26835c4bbdfSmrg/* Value type.  */
26905b261ecSmrg#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
27035c4bbdfSmrgunion YYSTYPE
27135c4bbdfSmrg{
2725a7dfde8Smrg#line 90 "winprefsyacc.y"
2734642e01fSmrg
27405b261ecSmrg  char *sVal;
2756747b715Smrg  unsigned long uVal;
27605b261ecSmrg  int iVal;
2774642e01fSmrg
278ed6184dfSmrg#line 279 "winprefsyacc.c"
2794642e01fSmrg
2805a7dfde8Smrg};
28135c4bbdfSmrgtypedef union YYSTYPE YYSTYPE;
2824642e01fSmrg# define YYSTYPE_IS_TRIVIAL 1
28305b261ecSmrg# define YYSTYPE_IS_DECLARED 1
28405b261ecSmrg#endif
28505b261ecSmrg
28605b261ecSmrg
28735c4bbdfSmrgextern YYSTYPE yylval;
28835c4bbdfSmrg
28935c4bbdfSmrgint yyparse (void);
29005b261ecSmrg
29135c4bbdfSmrg#endif /* !YY_YY_WINPREFSYACC_H_INCLUDED  */
29235c4bbdfSmrg
29305b261ecSmrg
29405b261ecSmrg
29505b261ecSmrg#ifdef short
29605b261ecSmrg# undef short
29705b261ecSmrg#endif
29805b261ecSmrg
2995a7dfde8Smrg/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3005a7dfde8Smrg   <limits.h> and (if available) <stdint.h> are included
3015a7dfde8Smrg   so that the code can choose integer types of a good width.  */
3025a7dfde8Smrg
3035a7dfde8Smrg#ifndef __PTRDIFF_MAX__
3045a7dfde8Smrg# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3055a7dfde8Smrg# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3065a7dfde8Smrg#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3075a7dfde8Smrg#  define YY_STDINT_H
3085a7dfde8Smrg# endif
30905b261ecSmrg#endif
31005b261ecSmrg
3115a7dfde8Smrg/* Narrow types that promote to a signed type and that can represent a
3125a7dfde8Smrg   signed or unsigned integer of at least N bits.  In tables they can
3135a7dfde8Smrg   save space and decrease cache pressure.  Promoting to a signed type
3145a7dfde8Smrg   helps avoid bugs in integer arithmetic.  */
3155a7dfde8Smrg
3165a7dfde8Smrg#ifdef __INT_LEAST8_MAX__
3175a7dfde8Smrgtypedef __INT_LEAST8_TYPE__ yytype_int8;
3185a7dfde8Smrg#elif defined YY_STDINT_H
3195a7dfde8Smrgtypedef int_least8_t yytype_int8;
32005b261ecSmrg#else
32135c4bbdfSmrgtypedef signed char yytype_int8;
32205b261ecSmrg#endif
32305b261ecSmrg
3245a7dfde8Smrg#ifdef __INT_LEAST16_MAX__
3255a7dfde8Smrgtypedef __INT_LEAST16_TYPE__ yytype_int16;
3265a7dfde8Smrg#elif defined YY_STDINT_H
3275a7dfde8Smrgtypedef int_least16_t yytype_int16;
32805b261ecSmrg#else
3295a7dfde8Smrgtypedef short yytype_int16;
33005b261ecSmrg#endif
33105b261ecSmrg
3325a7dfde8Smrg#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3335a7dfde8Smrgtypedef __UINT_LEAST8_TYPE__ yytype_uint8;
3345a7dfde8Smrg#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3355a7dfde8Smrg       && UINT_LEAST8_MAX <= INT_MAX)
3365a7dfde8Smrgtypedef uint_least8_t yytype_uint8;
3375a7dfde8Smrg#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3385a7dfde8Smrgtypedef unsigned char yytype_uint8;
33905b261ecSmrg#else
3405a7dfde8Smrgtypedef short yytype_uint8;
3415a7dfde8Smrg#endif
3425a7dfde8Smrg
3435a7dfde8Smrg#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3445a7dfde8Smrgtypedef __UINT_LEAST16_TYPE__ yytype_uint16;
3455a7dfde8Smrg#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3465a7dfde8Smrg       && UINT_LEAST16_MAX <= INT_MAX)
3475a7dfde8Smrgtypedef uint_least16_t yytype_uint16;
3485a7dfde8Smrg#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3495a7dfde8Smrgtypedef unsigned short yytype_uint16;
3505a7dfde8Smrg#else
3515a7dfde8Smrgtypedef int yytype_uint16;
3525a7dfde8Smrg#endif
3535a7dfde8Smrg
3545a7dfde8Smrg#ifndef YYPTRDIFF_T
3555a7dfde8Smrg# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3565a7dfde8Smrg#  define YYPTRDIFF_T __PTRDIFF_TYPE__
3575a7dfde8Smrg#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3585a7dfde8Smrg# elif defined PTRDIFF_MAX
3595a7dfde8Smrg#  ifndef ptrdiff_t
3605a7dfde8Smrg#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3615a7dfde8Smrg#  endif
3625a7dfde8Smrg#  define YYPTRDIFF_T ptrdiff_t
3635a7dfde8Smrg#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3645a7dfde8Smrg# else
3655a7dfde8Smrg#  define YYPTRDIFF_T long
3665a7dfde8Smrg#  define YYPTRDIFF_MAXIMUM LONG_MAX
3675a7dfde8Smrg# endif
36805b261ecSmrg#endif
36905b261ecSmrg
37005b261ecSmrg#ifndef YYSIZE_T
37105b261ecSmrg# ifdef __SIZE_TYPE__
37205b261ecSmrg#  define YYSIZE_T __SIZE_TYPE__
37305b261ecSmrg# elif defined size_t
37405b261ecSmrg#  define YYSIZE_T size_t
3755a7dfde8Smrg# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
37605b261ecSmrg#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
37705b261ecSmrg#  define YYSIZE_T size_t
37805b261ecSmrg# else
37925da500fSmrg#  define YYSIZE_T unsigned
38005b261ecSmrg# endif
38105b261ecSmrg#endif
38205b261ecSmrg
3835a7dfde8Smrg#define YYSIZE_MAXIMUM                                  \
3845a7dfde8Smrg  YY_CAST (YYPTRDIFF_T,                                 \
3855a7dfde8Smrg           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
3865a7dfde8Smrg            ? YYPTRDIFF_MAXIMUM                         \
3875a7dfde8Smrg            : YY_CAST (YYSIZE_T, -1)))
3885a7dfde8Smrg
3895a7dfde8Smrg#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3905a7dfde8Smrg
3915a7dfde8Smrg/* Stored state numbers (used for stacks). */
3925a7dfde8Smrgtypedef yytype_int8 yy_state_t;
3935a7dfde8Smrg
3945a7dfde8Smrg/* State numbers in computations.  */
3955a7dfde8Smrgtypedef int yy_state_fast_t;
39605b261ecSmrg
39705b261ecSmrg#ifndef YY_
3986747b715Smrg# if defined YYENABLE_NLS && YYENABLE_NLS
39905b261ecSmrg#  if ENABLE_NLS
40005b261ecSmrg#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
40135c4bbdfSmrg#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
40205b261ecSmrg#  endif
40305b261ecSmrg# endif
40405b261ecSmrg# ifndef YY_
40535c4bbdfSmrg#  define YY_(Msgid) Msgid
40635c4bbdfSmrg# endif
40735c4bbdfSmrg#endif
40835c4bbdfSmrg
40935c4bbdfSmrg#ifndef YY_ATTRIBUTE_PURE
4105a7dfde8Smrg# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
4115a7dfde8Smrg#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
4125a7dfde8Smrg# else
4135a7dfde8Smrg#  define YY_ATTRIBUTE_PURE
4145a7dfde8Smrg# endif
41535c4bbdfSmrg#endif
41635c4bbdfSmrg
41735c4bbdfSmrg#ifndef YY_ATTRIBUTE_UNUSED
4185a7dfde8Smrg# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
4195a7dfde8Smrg#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
42035c4bbdfSmrg# else
4215a7dfde8Smrg#  define YY_ATTRIBUTE_UNUSED
42205b261ecSmrg# endif
42305b261ecSmrg#endif
42405b261ecSmrg
42505b261ecSmrg/* Suppress unused-variable warnings by "using" E.  */
42605b261ecSmrg#if ! defined lint || defined __GNUC__
427ed6184dfSmrg# define YYUSE(E) ((void) (E))
42805b261ecSmrg#else
429ed6184dfSmrg# define YYUSE(E) /* empty */
43005b261ecSmrg#endif
43105b261ecSmrg
43225da500fSmrg#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
43335c4bbdfSmrg/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
4345a7dfde8Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
4355a7dfde8Smrg    _Pragma ("GCC diagnostic push")                                     \
4365a7dfde8Smrg    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
43735c4bbdfSmrg    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
4385a7dfde8Smrg# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
43935c4bbdfSmrg    _Pragma ("GCC diagnostic pop")
44005b261ecSmrg#else
44135c4bbdfSmrg# define YY_INITIAL_VALUE(Value) Value
44205b261ecSmrg#endif
44335c4bbdfSmrg#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
44435c4bbdfSmrg# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
44535c4bbdfSmrg# define YY_IGNORE_MAYBE_UNINITIALIZED_END
44635c4bbdfSmrg#endif
44735c4bbdfSmrg#ifndef YY_INITIAL_VALUE
44835c4bbdfSmrg# define YY_INITIAL_VALUE(Value) /* Nothing. */
44905b261ecSmrg#endif
45005b261ecSmrg
4515a7dfde8Smrg#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
4525a7dfde8Smrg# define YY_IGNORE_USELESS_CAST_BEGIN                          \
4535a7dfde8Smrg    _Pragma ("GCC diagnostic push")                            \
4545a7dfde8Smrg    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
4555a7dfde8Smrg# define YY_IGNORE_USELESS_CAST_END            \
4565a7dfde8Smrg    _Pragma ("GCC diagnostic pop")
4575a7dfde8Smrg#endif
4585a7dfde8Smrg#ifndef YY_IGNORE_USELESS_CAST_BEGIN
4595a7dfde8Smrg# define YY_IGNORE_USELESS_CAST_BEGIN
4605a7dfde8Smrg# define YY_IGNORE_USELESS_CAST_END
4615a7dfde8Smrg#endif
4625a7dfde8Smrg
46335c4bbdfSmrg
4645a7dfde8Smrg#define YY_ASSERT(E) ((void) (0 && (E)))
4655a7dfde8Smrg
466ed6184dfSmrg#if ! defined yyoverflow || YYERROR_VERBOSE
46705b261ecSmrg
46805b261ecSmrg/* The parser invokes alloca or malloc; define the necessary symbols.  */
46905b261ecSmrg
47005b261ecSmrg# ifdef YYSTACK_USE_ALLOCA
47105b261ecSmrg#  if YYSTACK_USE_ALLOCA
47205b261ecSmrg#   ifdef __GNUC__
47305b261ecSmrg#    define YYSTACK_ALLOC __builtin_alloca
47405b261ecSmrg#   elif defined __BUILTIN_VA_ARG_INCR
47505b261ecSmrg#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
47605b261ecSmrg#   elif defined _AIX
47705b261ecSmrg#    define YYSTACK_ALLOC __alloca
47805b261ecSmrg#   elif defined _MSC_VER
47905b261ecSmrg#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
48005b261ecSmrg#    define alloca _alloca
48105b261ecSmrg#   else
48205b261ecSmrg#    define YYSTACK_ALLOC alloca
48335c4bbdfSmrg#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
48405b261ecSmrg#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
48535c4bbdfSmrg      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
4869ace9065Smrg#     ifndef EXIT_SUCCESS
4879ace9065Smrg#      define EXIT_SUCCESS 0
48805b261ecSmrg#     endif
48905b261ecSmrg#    endif
49005b261ecSmrg#   endif
49105b261ecSmrg#  endif
49205b261ecSmrg# endif
49305b261ecSmrg
49405b261ecSmrg# ifdef YYSTACK_ALLOC
49535c4bbdfSmrg   /* Pacify GCC's 'empty if-body' warning.  */
49635c4bbdfSmrg#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
49705b261ecSmrg#  ifndef YYSTACK_ALLOC_MAXIMUM
49805b261ecSmrg    /* The OS might guarantee only one guard page at the bottom of the stack,
49905b261ecSmrg       and a page size can be as small as 4096 bytes.  So we cannot safely
50005b261ecSmrg       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
50105b261ecSmrg       to allow for a few compiler-allocated temporary stack slots.  */
50205b261ecSmrg#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
50305b261ecSmrg#  endif
50405b261ecSmrg# else
50505b261ecSmrg#  define YYSTACK_ALLOC YYMALLOC
50605b261ecSmrg#  define YYSTACK_FREE YYFREE
50705b261ecSmrg#  ifndef YYSTACK_ALLOC_MAXIMUM
50805b261ecSmrg#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
50905b261ecSmrg#  endif
5109ace9065Smrg#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
51105b261ecSmrg       && ! ((defined YYMALLOC || defined malloc) \
51235c4bbdfSmrg             && (defined YYFREE || defined free)))
51305b261ecSmrg#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
5149ace9065Smrg#   ifndef EXIT_SUCCESS
5159ace9065Smrg#    define EXIT_SUCCESS 0
51605b261ecSmrg#   endif
51705b261ecSmrg#  endif
51805b261ecSmrg#  ifndef YYMALLOC
51905b261ecSmrg#   define YYMALLOC malloc
52035c4bbdfSmrg#   if ! defined malloc && ! defined EXIT_SUCCESS
52105b261ecSmrgvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
52205b261ecSmrg#   endif
52305b261ecSmrg#  endif
52405b261ecSmrg#  ifndef YYFREE
52505b261ecSmrg#   define YYFREE free
52635c4bbdfSmrg#   if ! defined free && ! defined EXIT_SUCCESS
52705b261ecSmrgvoid free (void *); /* INFRINGES ON USER NAME SPACE */
52805b261ecSmrg#   endif
52905b261ecSmrg#  endif
53005b261ecSmrg# endif
531ed6184dfSmrg#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
532ed6184dfSmrg
53305b261ecSmrg
53405b261ecSmrg#if (! defined yyoverflow \
53505b261ecSmrg     && (! defined __cplusplus \
53635c4bbdfSmrg         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
53705b261ecSmrg
53805b261ecSmrg/* A type that is properly aligned for any stack member.  */
53905b261ecSmrgunion yyalloc
54005b261ecSmrg{
5415a7dfde8Smrg  yy_state_t yyss_alloc;
5424642e01fSmrg  YYSTYPE yyvs_alloc;
5434642e01fSmrg};
54405b261ecSmrg
54505b261ecSmrg/* The size of the maximum gap between one aligned stack and the next.  */
5465a7dfde8Smrg# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
54705b261ecSmrg
54805b261ecSmrg/* The size of an array large to enough to hold all stacks, each with
54905b261ecSmrg   N elements.  */
55005b261ecSmrg# define YYSTACK_BYTES(N) \
5515a7dfde8Smrg     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
55205b261ecSmrg      + YYSTACK_GAP_MAXIMUM)
55305b261ecSmrg
5549ace9065Smrg# define YYCOPY_NEEDED 1
55505b261ecSmrg
55605b261ecSmrg/* Relocate STACK from its old location to the new one.  The
55705b261ecSmrg   local variables YYSIZE and YYSTACKSIZE give the old and new number of
55805b261ecSmrg   elements in the stack, and YYPTR gives the new location of the
55905b261ecSmrg   stack.  Advance YYPTR to a properly aligned location for the next
56005b261ecSmrg   stack.  */
56135c4bbdfSmrg# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
56235c4bbdfSmrg    do                                                                  \
56335c4bbdfSmrg      {                                                                 \
5645a7dfde8Smrg        YYPTRDIFF_T yynewbytes;                                         \
56535c4bbdfSmrg        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
56635c4bbdfSmrg        Stack = &yyptr->Stack_alloc;                                    \
5675a7dfde8Smrg        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
5685a7dfde8Smrg        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
56935c4bbdfSmrg      }                                                                 \
57035c4bbdfSmrg    while (0)
57105b261ecSmrg
57205b261ecSmrg#endif
57305b261ecSmrg
5749ace9065Smrg#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
57535c4bbdfSmrg/* Copy COUNT objects from SRC to DST.  The source and destination do
5769ace9065Smrg   not overlap.  */
5779ace9065Smrg# ifndef YYCOPY
5789ace9065Smrg#  if defined __GNUC__ && 1 < __GNUC__
57935c4bbdfSmrg#   define YYCOPY(Dst, Src, Count) \
5805a7dfde8Smrg      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
5819ace9065Smrg#  else
58235c4bbdfSmrg#   define YYCOPY(Dst, Src, Count)              \
58335c4bbdfSmrg      do                                        \
58435c4bbdfSmrg        {                                       \
5855a7dfde8Smrg          YYPTRDIFF_T yyi;                      \
58635c4bbdfSmrg          for (yyi = 0; yyi < (Count); yyi++)   \
58735c4bbdfSmrg            (Dst)[yyi] = (Src)[yyi];            \
58835c4bbdfSmrg        }                                       \
58935c4bbdfSmrg      while (0)
5909ace9065Smrg#  endif
5919ace9065Smrg# endif
5929ace9065Smrg#endif /* !YYCOPY_NEEDED */
5939ace9065Smrg
59405b261ecSmrg/* YYFINAL -- State number of the termination state.  */
59505b261ecSmrg#define YYFINAL  2
59605b261ecSmrg/* YYLAST -- Last index in YYTABLE.  */
5976747b715Smrg#define YYLAST   98
59805b261ecSmrg
59905b261ecSmrg/* YYNTOKENS -- Number of terminals.  */
6006747b715Smrg#define YYNTOKENS  32
60105b261ecSmrg/* YYNNTS -- Number of nonterminals.  */
6026747b715Smrg#define YYNNTS  33
60305b261ecSmrg/* YYNRULES -- Number of rules.  */
6046747b715Smrg#define YYNRULES  65
60535c4bbdfSmrg/* YYNSTATES -- Number of states.  */
6066747b715Smrg#define YYNSTATES  121
60705b261ecSmrg
608ed6184dfSmrg#define YYUNDEFTOK  2
6096747b715Smrg#define YYMAXUTOK   286
61005b261ecSmrg
6115a7dfde8Smrg
6125a7dfde8Smrg/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
6135a7dfde8Smrg   as returned by yylex, with out-of-bounds checking.  */
614ed6184dfSmrg#define YYTRANSLATE(YYX)                                                \
615ed6184dfSmrg  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
61605b261ecSmrg
61735c4bbdfSmrg/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
6185a7dfde8Smrg   as returned by yylex.  */
6195a7dfde8Smrgstatic const yytype_int8 yytranslate[] =
62005b261ecSmrg{
62105b261ecSmrg       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62205b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62305b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62405b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62505b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62605b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62705b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62805b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
62905b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63005b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63105b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63205b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63305b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63405b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63505b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63605b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63705b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63805b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
63905b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64005b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64105b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64205b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64305b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64405b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64505b261ecSmrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
64605b261ecSmrg       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
64705b261ecSmrg       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
6486747b715Smrg      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
6496747b715Smrg      25,    26,    27,    28,    29,    30,    31
65005b261ecSmrg};
65105b261ecSmrg
65205b261ecSmrg#if YYDEBUG
65335c4bbdfSmrg  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
65405b261ecSmrgstatic const yytype_uint8 yyrline[] =
65505b261ecSmrg{
65635c4bbdfSmrg       0,   133,   133,   134,   137,   138,   142,   143,   146,   147,
65735c4bbdfSmrg     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
65835c4bbdfSmrg     160,   163,   166,   169,   172,   175,   176,   177,   178,   179,
65935c4bbdfSmrg     182,   183,   186,   186,   189,   192,   193,   196,   196,   199,
66035c4bbdfSmrg     200,   201,   202,   205,   206,   207,   210,   211,   212,   213,
66135c4bbdfSmrg     216,   219,   220,   223,   223,   226,   227,   228,   231,   234,
66235c4bbdfSmrg     235,   238,   238,   241,   244,   247
66305b261ecSmrg};
66405b261ecSmrg#endif
66505b261ecSmrg
666ed6184dfSmrg#if YYDEBUG || YYERROR_VERBOSE || 0
66705b261ecSmrg/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
66805b261ecSmrg   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
66905b261ecSmrgstatic const char *const yytname[] =
67005b261ecSmrg{
671ed6184dfSmrg  "$end", "error", "$undefined", "NEWLINE", "MENU", "LB", "RB",
672ed6184dfSmrg  "ICONDIRECTORY", "DEFAULTICON", "ICONS", "STYLES", "TOPMOST", "MAXIMIZE",
673ed6184dfSmrg  "MINIMIZE", "BOTTOM", "NOTITLE", "OUTLINE", "NOFRAME", "DEFAULTSYSMENU",
674ed6184dfSmrg  "SYSMENU", "ROOTMENU", "SEPARATOR", "ATSTART", "ATEND", "EXEC",
675ed6184dfSmrg  "ALWAYSONTOP", "\"DEBUG\"", "RELOAD", "TRAYICON", "FORCEEXIT",
6766747b715Smrg  "SILENTEXIT", "STRING", "$accept", "input", "line", "newline_or_nada",
6776747b715Smrg  "command", "trayicon", "rootmenu", "defaultsysmenu", "defaulticon",
6786747b715Smrg  "icondirectory", "menuline", "menulist", "menu", "$@1", "iconline",
6796747b715Smrg  "iconlist", "icons", "$@2", "group1", "group2", "stylecombo",
6806747b715Smrg  "styleline", "stylelist", "styles", "$@3", "atspot", "sysmenuline",
68135c4bbdfSmrg  "sysmenulist", "sysmenu", "$@4", "forceexit", "silentexit", "debug", YY_NULLPTR
68205b261ecSmrg};
68305b261ecSmrg#endif
68405b261ecSmrg
685ed6184dfSmrg# ifdef YYPRINT
68635c4bbdfSmrg/* YYTOKNUM[NUM] -- (External) token number corresponding to the
68735c4bbdfSmrg   (internal) symbol number NUM (which must be that of a token).  */
6885a7dfde8Smrgstatic const yytype_int16 yytoknum[] =
68905b261ecSmrg{
69005b261ecSmrg       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
69105b261ecSmrg     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
6926747b715Smrg     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
6936747b715Smrg     285,   286
69405b261ecSmrg};
695ed6184dfSmrg# endif
69605b261ecSmrg
6975a7dfde8Smrg#define YYPACT_NINF (-47)
69805b261ecSmrg
6995a7dfde8Smrg#define yypact_value_is_default(Yyn) \
7005a7dfde8Smrg  ((Yyn) == YYPACT_NINF)
70105b261ecSmrg
7025a7dfde8Smrg#define YYTABLE_NINF (-1)
70305b261ecSmrg
7045a7dfde8Smrg#define yytable_value_is_error(Yyn) \
70535c4bbdfSmrg  0
70605b261ecSmrg
70735c4bbdfSmrg  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
70835c4bbdfSmrg     STATE-NUM.  */
70905b261ecSmrgstatic const yytype_int8 yypact[] =
71005b261ecSmrg{
7116747b715Smrg     -47,     7,   -47,   -47,    -1,     0,     1,    18,    29,    15,
7126747b715Smrg      42,    17,    19,    20,    46,    50,   -47,   -47,   -47,   -47,
7136747b715Smrg     -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,   -47,
7146747b715Smrg      49,    53,    54,   -47,   -47,     6,    55,    56,    57,    58,
7156747b715Smrg     -47,   -47,   -47,   -47,   -47,    61,    61,   -47,   -47,    62,
7166747b715Smrg     -47,   -47,   -47,   -47,    61,    61,    35,    38,   -47,    61,
7176747b715Smrg     -19,   -47,    39,    35,    66,    27,    38,    67,    43,    72,
7186747b715Smrg      -3,   -19,    70,    74,   -47,   -47,   -47,   -47,   -47,   -47,
7196747b715Smrg     -47,   -47,   -47,     3,    -8,    75,   -47,   -47,    48,    43,
7206747b715Smrg      76,    61,    52,    59,    77,    78,   -47,   -47,    61,   -47,
7216747b715Smrg     -47,    61,     6,   -47,   -47,   -47,    81,    82,    61,    61,
7226747b715Smrg     -47,   -47,    83,    61,    61,   -47,   -47,    61,   -47,   -47,
7236747b715Smrg     -47
72405b261ecSmrg};
72505b261ecSmrg
72635c4bbdfSmrg  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
72735c4bbdfSmrg     Performed when YYTABLE does not specify something else to do.  Zero
72835c4bbdfSmrg     means the default is an error.  */
7295a7dfde8Smrgstatic const yytype_int8 yydefact[] =
73035c4bbdfSmrg{
73135c4bbdfSmrg       2,     0,     1,     4,     0,     0,     0,     0,     0,     0,
73235c4bbdfSmrg       0,     0,     0,     0,     0,     0,     3,     5,    17,    14,
73335c4bbdfSmrg      15,     8,     9,    10,    11,    12,    13,    18,    19,    16,
73435c4bbdfSmrg       0,     0,     0,    37,    53,    55,     0,     0,     0,     0,
73535c4bbdfSmrg      63,    64,    32,    24,    23,     6,     6,    56,    57,     0,
73635c4bbdfSmrg      61,    21,    65,    20,     6,     6,     0,     0,    22,     6,
73735c4bbdfSmrg       0,     7,     0,    35,     0,     0,    51,     0,     0,     0,
73835c4bbdfSmrg       0,    30,     0,     0,    36,    38,    39,    40,    41,    42,
73935c4bbdfSmrg      43,    44,    45,    46,    47,     0,    52,    54,     0,    59,
74035c4bbdfSmrg       0,     6,     0,     0,     0,     0,    31,    33,     6,    48,
74135c4bbdfSmrg      49,     6,    55,    60,    62,    25,     0,     0,     6,     6,
74235c4bbdfSmrg      34,    50,     0,     6,     6,    26,    29,     6,    28,    27,
74335c4bbdfSmrg      58
74435c4bbdfSmrg};
74535c4bbdfSmrg
74635c4bbdfSmrg  /* YYPGOTO[NTERM-NUM].  */
74705b261ecSmrgstatic const yytype_int8 yypgoto[] =
74805b261ecSmrg{
7496747b715Smrg     -47,   -47,   -47,   -46,   -47,   -47,   -47,   -47,   -47,   -47,
7506747b715Smrg     -47,    16,   -47,   -47,   -47,    25,   -47,   -47,     5,     8,
7516747b715Smrg     -47,   -47,    26,   -47,   -47,    -9,   -47,     9,   -47,   -47,
7526747b715Smrg     -47,   -47,   -47
75305b261ecSmrg};
75405b261ecSmrg
75535c4bbdfSmrg  /* YYDEFGOTO[NTERM-NUM].  */
75635c4bbdfSmrgstatic const yytype_int8 yydefgoto[] =
75735c4bbdfSmrg{
758ed6184dfSmrg      -1,     1,    16,    56,    17,    18,    19,    20,    21,    22,
75935c4bbdfSmrg      71,    72,    23,    54,    63,    64,    24,    45,    83,    84,
76035c4bbdfSmrg      85,    66,    67,    25,    46,    49,    89,    90,    26,    59,
76135c4bbdfSmrg      27,    28,    29
76235c4bbdfSmrg};
76335c4bbdfSmrg
76435c4bbdfSmrg  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
76535c4bbdfSmrg     positive, shift that token.  If negative, reduce the rule whose
76635c4bbdfSmrg     number is the opposite.  If YYTABLE_NINF, syntax error.  */
7675a7dfde8Smrgstatic const yytype_int8 yytable[] =
76805b261ecSmrg{
7696747b715Smrg      57,    92,    69,    76,    77,    78,    79,     2,    60,    61,
7706747b715Smrg       3,     4,    70,    68,     5,     6,     7,     8,    80,    81,
7716747b715Smrg      82,    93,    94,    33,    95,     9,    10,    11,    47,    48,
7726747b715Smrg      30,    31,    32,    12,    34,    13,    14,    15,    76,    77,
7736747b715Smrg      78,    79,    80,    81,    82,   105,    35,    36,    37,    40,
7746747b715Smrg      38,    39,   110,    41,    42,   111,    43,    44,    50,    51,
7756747b715Smrg      52,    53,   115,   116,    55,    58,    62,   118,   119,    65,
7766747b715Smrg      73,   120,    75,    87,    88,    91,    97,    98,   101,   102,
7776747b715Smrg     108,   109,   104,   106,   113,   114,   117,    96,    74,   100,
7786747b715Smrg     107,    99,    86,   112,     0,     0,     0,     0,   103
77905b261ecSmrg};
78005b261ecSmrg
7816747b715Smrgstatic const yytype_int8 yycheck[] =
78205b261ecSmrg{
7836747b715Smrg      46,     4,    21,    11,    12,    13,    14,     0,    54,    55,
7846747b715Smrg       3,     4,    31,    59,     7,     8,     9,    10,    15,    16,
7856747b715Smrg      17,    24,    25,     5,    27,    18,    19,    20,    22,    23,
7866747b715Smrg      31,    31,    31,    26,     5,    28,    29,    30,    11,    12,
7876747b715Smrg      13,    14,    15,    16,    17,    91,    31,     5,    31,     3,
7886747b715Smrg      31,    31,    98,     3,     5,   101,     3,     3,     3,     3,
7896747b715Smrg       3,     3,   108,   109,     3,     3,    31,   113,   114,    31,
7906747b715Smrg      31,   117,     6,     6,    31,     3,     6,     3,     3,    31,
7916747b715Smrg       3,     3,     6,    31,     3,     3,     3,    71,    63,    84,
7926747b715Smrg      31,    83,    66,   102,    -1,    -1,    -1,    -1,    89
79305b261ecSmrg};
79405b261ecSmrg
79535c4bbdfSmrg  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
79635c4bbdfSmrg     symbol of state STATE-NUM.  */
7975a7dfde8Smrgstatic const yytype_int8 yystos[] =
79805b261ecSmrg{
7996747b715Smrg       0,    33,     0,     3,     4,     7,     8,     9,    10,    18,
8006747b715Smrg      19,    20,    26,    28,    29,    30,    34,    36,    37,    38,
8016747b715Smrg      39,    40,    41,    44,    48,    55,    60,    62,    63,    64,
8026747b715Smrg      31,    31,    31,     5,     5,    31,     5,    31,    31,    31,
8036747b715Smrg       3,     3,     5,     3,     3,    49,    56,    22,    23,    57,
8046747b715Smrg       3,     3,     3,     3,    45,     3,    35,    35,     3,    61,
8056747b715Smrg      35,    35,    31,    46,    47,    31,    53,    54,    35,    21,
8066747b715Smrg      31,    42,    43,    31,    47,     6,    11,    12,    13,    14,
8076747b715Smrg      15,    16,    17,    50,    51,    52,    54,     6,    31,    58,
8086747b715Smrg      59,     3,     4,    24,    25,    27,    43,     6,     3,    51,
8096747b715Smrg      50,     3,    31,    59,     6,    35,    31,    31,     3,     3,
8106747b715Smrg      35,    35,    57,     3,     3,    35,    35,     3,    35,    35,
8116747b715Smrg      35
81205b261ecSmrg};
81305b261ecSmrg
81435c4bbdfSmrg  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
8155a7dfde8Smrgstatic const yytype_int8 yyr1[] =
81635c4bbdfSmrg{
81735c4bbdfSmrg       0,    32,    33,    33,    34,    34,    35,    35,    36,    36,
81835c4bbdfSmrg      36,    36,    36,    36,    36,    36,    36,    36,    36,    36,
81935c4bbdfSmrg      37,    38,    39,    40,    41,    42,    42,    42,    42,    42,
82035c4bbdfSmrg      43,    43,    45,    44,    46,    47,    47,    49,    48,    50,
82135c4bbdfSmrg      50,    50,    50,    51,    51,    51,    52,    52,    52,    52,
82235c4bbdfSmrg      53,    54,    54,    56,    55,    57,    57,    57,    58,    59,
82335c4bbdfSmrg      59,    61,    60,    62,    63,    64
82435c4bbdfSmrg};
82505b261ecSmrg
82635c4bbdfSmrg  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
8275a7dfde8Smrgstatic const yytype_int8 yyr2[] =
82835c4bbdfSmrg{
82935c4bbdfSmrg       0,     2,     0,     2,     1,     1,     0,     2,     1,     1,
83035c4bbdfSmrg       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
83135c4bbdfSmrg       3,     3,     4,     3,     3,     3,     4,     5,     5,     4,
83235c4bbdfSmrg       1,     2,     0,     7,     4,     1,     2,     0,     6,     1,
83335c4bbdfSmrg       1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
83435c4bbdfSmrg       4,     1,     2,     0,     6,     0,     1,     1,     5,     1,
83535c4bbdfSmrg       2,     0,     7,     2,     2,     3
83635c4bbdfSmrg};
83705b261ecSmrg
83805b261ecSmrg
83935c4bbdfSmrg#define yyerrok         (yyerrstatus = 0)
84035c4bbdfSmrg#define yyclearin       (yychar = YYEMPTY)
841ed6184dfSmrg#define YYEMPTY         (-2)
842ed6184dfSmrg#define YYEOF           0
84305b261ecSmrg
84435c4bbdfSmrg#define YYACCEPT        goto yyacceptlab
84535c4bbdfSmrg#define YYABORT         goto yyabortlab
84635c4bbdfSmrg#define YYERROR         goto yyerrorlab
84705b261ecSmrg
84805b261ecSmrg
84935c4bbdfSmrg#define YYRECOVERING()  (!!yyerrstatus)
85035c4bbdfSmrg
8515a7dfde8Smrg#define YYBACKUP(Token, Value)                                    \
8525a7dfde8Smrg  do                                                              \
8535a7dfde8Smrg    if (yychar == YYEMPTY)                                        \
8545a7dfde8Smrg      {                                                           \
8555a7dfde8Smrg        yychar = (Token);                                         \
8565a7dfde8Smrg        yylval = (Value);                                         \
8575a7dfde8Smrg        YYPOPSTACK (yylen);                                       \
8585a7dfde8Smrg        yystate = *yyssp;                                         \
8595a7dfde8Smrg        goto yybackup;                                            \
8605a7dfde8Smrg      }                                                           \
8615a7dfde8Smrg    else                                                          \
8625a7dfde8Smrg      {                                                           \
8635a7dfde8Smrg        yyerror (YY_("syntax error: cannot back up")); \
8645a7dfde8Smrg        YYERROR;                                                  \
8655a7dfde8Smrg      }                                                           \
8665a7dfde8Smrg  while (0)
8675a7dfde8Smrg
868ed6184dfSmrg/* Error token number */
869ed6184dfSmrg#define YYTERROR        1
870ed6184dfSmrg#define YYERRCODE       256
871ed6184dfSmrg
87205b261ecSmrg
87305b261ecSmrg
87405b261ecSmrg/* Enable debugging if requested.  */
87505b261ecSmrg#if YYDEBUG
87605b261ecSmrg
87705b261ecSmrg# ifndef YYFPRINTF
87805b261ecSmrg#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
87905b261ecSmrg#  define YYFPRINTF fprintf
88005b261ecSmrg# endif
88105b261ecSmrg
88235c4bbdfSmrg# define YYDPRINTF(Args)                        \
88335c4bbdfSmrgdo {                                            \
88435c4bbdfSmrg  if (yydebug)                                  \
88535c4bbdfSmrg    YYFPRINTF Args;                             \
88635c4bbdfSmrg} while (0)
88705b261ecSmrg
88835c4bbdfSmrg/* This macro is provided for backward compatibility. */
889ed6184dfSmrg#ifndef YY_LOCATION_PRINT
890ed6184dfSmrg# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
891ed6184dfSmrg#endif
89205b261ecSmrg
89305b261ecSmrg
894ed6184dfSmrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
89535c4bbdfSmrgdo {                                                                      \
89635c4bbdfSmrg  if (yydebug)                                                            \
89735c4bbdfSmrg    {                                                                     \
89835c4bbdfSmrg      YYFPRINTF (stderr, "%s ", Title);                                   \
89935c4bbdfSmrg      yy_symbol_print (stderr,                                            \
900ed6184dfSmrg                  Type, Value); \
90135c4bbdfSmrg      YYFPRINTF (stderr, "\n");                                           \
90235c4bbdfSmrg    }                                                                     \
90335c4bbdfSmrg} while (0)
90435c4bbdfSmrg
90535c4bbdfSmrg
9065a7dfde8Smrg/*-----------------------------------.
9075a7dfde8Smrg| Print this symbol's value on YYO.  |
9085a7dfde8Smrg`-----------------------------------*/
90905b261ecSmrg
91005b261ecSmrgstatic void
911ed6184dfSmrgyy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
91205b261ecSmrg{
9135a7dfde8Smrg  FILE *yyoutput = yyo;
914ed6184dfSmrg  YYUSE (yyoutput);
91505b261ecSmrg  if (!yyvaluep)
91605b261ecSmrg    return;
91705b261ecSmrg# ifdef YYPRINT
918ed6184dfSmrg  if (yytype < YYNTOKENS)
919ed6184dfSmrg    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
92005b261ecSmrg# endif
9215a7dfde8Smrg  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
922ed6184dfSmrg  YYUSE (yytype);
9235a7dfde8Smrg  YY_IGNORE_MAYBE_UNINITIALIZED_END
92405b261ecSmrg}
92505b261ecSmrg
92605b261ecSmrg
9275a7dfde8Smrg/*---------------------------.
9285a7dfde8Smrg| Print this symbol on YYO.  |
9295a7dfde8Smrg`---------------------------*/
93005b261ecSmrg
93105b261ecSmrgstatic void
932ed6184dfSmrgyy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
93305b261ecSmrg{
9345a7dfde8Smrg  YYFPRINTF (yyo, "%s %s (",
935ed6184dfSmrg             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
93605b261ecSmrg
937ed6184dfSmrg  yy_symbol_value_print (yyo, yytype, yyvaluep);
9385a7dfde8Smrg  YYFPRINTF (yyo, ")");
93905b261ecSmrg}
94005b261ecSmrg
94105b261ecSmrg/*------------------------------------------------------------------.
94205b261ecSmrg| yy_stack_print -- Print the state stack from its BOTTOM up to its |
94305b261ecSmrg| TOP (included).                                                   |
94405b261ecSmrg`------------------------------------------------------------------*/
94505b261ecSmrg
94605b261ecSmrgstatic void
9475a7dfde8Smrgyy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
94805b261ecSmrg{
94905b261ecSmrg  YYFPRINTF (stderr, "Stack now");
9504642e01fSmrg  for (; yybottom <= yytop; yybottom++)
9514642e01fSmrg    {
9524642e01fSmrg      int yybot = *yybottom;
9534642e01fSmrg      YYFPRINTF (stderr, " %d", yybot);
9544642e01fSmrg    }
95505b261ecSmrg  YYFPRINTF (stderr, "\n");
95605b261ecSmrg}
95705b261ecSmrg
95835c4bbdfSmrg# define YY_STACK_PRINT(Bottom, Top)                            \
95935c4bbdfSmrgdo {                                                            \
96035c4bbdfSmrg  if (yydebug)                                                  \
96135c4bbdfSmrg    yy_stack_print ((Bottom), (Top));                           \
96235c4bbdfSmrg} while (0)
96305b261ecSmrg
96405b261ecSmrg
96505b261ecSmrg/*------------------------------------------------.
96605b261ecSmrg| Report that the YYRULE is going to be reduced.  |
96705b261ecSmrg`------------------------------------------------*/
96805b261ecSmrg
96905b261ecSmrgstatic void
970ed6184dfSmrgyy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
97105b261ecSmrg{
9725a7dfde8Smrg  int yylno = yyrline[yyrule];
97305b261ecSmrg  int yynrhs = yyr2[yyrule];
97405b261ecSmrg  int yyi;
9755a7dfde8Smrg  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
97635c4bbdfSmrg             yyrule - 1, yylno);
97705b261ecSmrg  /* The symbols being reduced.  */
97805b261ecSmrg  for (yyi = 0; yyi < yynrhs; yyi++)
97905b261ecSmrg    {
9804642e01fSmrg      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
98135c4bbdfSmrg      yy_symbol_print (stderr,
982ed6184dfSmrg                       yystos[+yyssp[yyi + 1 - yynrhs]],
983ed6184dfSmrg                       &yyvsp[(yyi + 1) - (yynrhs)]
984ed6184dfSmrg                                              );
9854642e01fSmrg      YYFPRINTF (stderr, "\n");
98605b261ecSmrg    }
98705b261ecSmrg}
98805b261ecSmrg
98935c4bbdfSmrg# define YY_REDUCE_PRINT(Rule)          \
99035c4bbdfSmrgdo {                                    \
99135c4bbdfSmrg  if (yydebug)                          \
99235c4bbdfSmrg    yy_reduce_print (yyssp, yyvsp, Rule); \
99335c4bbdfSmrg} while (0)
99405b261ecSmrg
99505b261ecSmrg/* Nonzero means print parse trace.  It is left uninitialized so that
99605b261ecSmrg   multiple parsers can coexist.  */
99705b261ecSmrgint yydebug;
99805b261ecSmrg#else /* !YYDEBUG */
999ed6184dfSmrg# define YYDPRINTF(Args)
1000ed6184dfSmrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
100105b261ecSmrg# define YY_STACK_PRINT(Bottom, Top)
100205b261ecSmrg# define YY_REDUCE_PRINT(Rule)
100305b261ecSmrg#endif /* !YYDEBUG */
100405b261ecSmrg
100505b261ecSmrg
100605b261ecSmrg/* YYINITDEPTH -- initial size of the parser's stacks.  */
100735c4bbdfSmrg#ifndef YYINITDEPTH
100805b261ecSmrg# define YYINITDEPTH 200
100905b261ecSmrg#endif
101005b261ecSmrg
101105b261ecSmrg/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
101205b261ecSmrg   if the built-in stack extension method is used).
101305b261ecSmrg
101405b261ecSmrg   Do not make this value too large; the results are undefined if
101505b261ecSmrg   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
101605b261ecSmrg   evaluated with infinite-precision integer arithmetic.  */
101705b261ecSmrg
101805b261ecSmrg#ifndef YYMAXDEPTH
101905b261ecSmrg# define YYMAXDEPTH 10000
102005b261ecSmrg#endif
102105b261ecSmrg
102205b261ecSmrg
1023ed6184dfSmrg#if YYERROR_VERBOSE
1024ed6184dfSmrg
1025ed6184dfSmrg# ifndef yystrlen
1026ed6184dfSmrg#  if defined __GLIBC__ && defined _STRING_H
1027ed6184dfSmrg#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
1028ed6184dfSmrg#  else
1029ed6184dfSmrg/* Return the length of YYSTR.  */
1030ed6184dfSmrgstatic YYPTRDIFF_T
1031ed6184dfSmrgyystrlen (const char *yystr)
1032ed6184dfSmrg{
1033ed6184dfSmrg  YYPTRDIFF_T yylen;
1034ed6184dfSmrg  for (yylen = 0; yystr[yylen]; yylen++)
1035ed6184dfSmrg    continue;
1036ed6184dfSmrg  return yylen;
1037ed6184dfSmrg}
1038ed6184dfSmrg#  endif
1039ed6184dfSmrg# endif
1040ed6184dfSmrg
1041ed6184dfSmrg# ifndef yystpcpy
1042ed6184dfSmrg#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1043ed6184dfSmrg#   define yystpcpy stpcpy
1044ed6184dfSmrg#  else
1045ed6184dfSmrg/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1046ed6184dfSmrg   YYDEST.  */
1047ed6184dfSmrgstatic char *
1048ed6184dfSmrgyystpcpy (char *yydest, const char *yysrc)
1049ed6184dfSmrg{
1050ed6184dfSmrg  char *yyd = yydest;
1051ed6184dfSmrg  const char *yys = yysrc;
1052ed6184dfSmrg
1053ed6184dfSmrg  while ((*yyd++ = *yys++) != '\0')
1054ed6184dfSmrg    continue;
105505b261ecSmrg
1056ed6184dfSmrg  return yyd - 1;
1057ed6184dfSmrg}
1058ed6184dfSmrg#  endif
1059ed6184dfSmrg# endif
106005b261ecSmrg
1061ed6184dfSmrg# ifndef yytnamerr
1062ed6184dfSmrg/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1063ed6184dfSmrg   quotes and backslashes, so that it's suitable for yyerror.  The
1064ed6184dfSmrg   heuristic is that double-quoting is unnecessary unless the string
1065ed6184dfSmrg   contains an apostrophe, a comma, or backslash (other than
1066ed6184dfSmrg   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1067ed6184dfSmrg   null, do not copy; instead, return the length of what the result
1068ed6184dfSmrg   would have been.  */
1069ed6184dfSmrgstatic YYPTRDIFF_T
1070ed6184dfSmrgyytnamerr (char *yyres, const char *yystr)
1071ed6184dfSmrg{
1072ed6184dfSmrg  if (*yystr == '"')
1073ed6184dfSmrg    {
1074ed6184dfSmrg      YYPTRDIFF_T yyn = 0;
1075ed6184dfSmrg      char const *yyp = yystr;
1076ed6184dfSmrg
1077ed6184dfSmrg      for (;;)
1078ed6184dfSmrg        switch (*++yyp)
1079ed6184dfSmrg          {
1080ed6184dfSmrg          case '\'':
1081ed6184dfSmrg          case ',':
1082ed6184dfSmrg            goto do_not_strip_quotes;
1083ed6184dfSmrg
1084ed6184dfSmrg          case '\\':
1085ed6184dfSmrg            if (*++yyp != '\\')
1086ed6184dfSmrg              goto do_not_strip_quotes;
1087ed6184dfSmrg            else
1088ed6184dfSmrg              goto append;
1089ed6184dfSmrg
1090ed6184dfSmrg          append:
1091ed6184dfSmrg          default:
1092ed6184dfSmrg            if (yyres)
1093ed6184dfSmrg              yyres[yyn] = *yyp;
1094ed6184dfSmrg            yyn++;
1095ed6184dfSmrg            break;
1096ed6184dfSmrg
1097ed6184dfSmrg          case '"':
1098ed6184dfSmrg            if (yyres)
1099ed6184dfSmrg              yyres[yyn] = '\0';
1100ed6184dfSmrg            return yyn;
1101ed6184dfSmrg          }
1102ed6184dfSmrg    do_not_strip_quotes: ;
1103ed6184dfSmrg    }
110405b261ecSmrg
1105ed6184dfSmrg  if (yyres)
1106ed6184dfSmrg    return yystpcpy (yyres, yystr) - yyres;
1107ed6184dfSmrg  else
1108ed6184dfSmrg    return yystrlen (yystr);
1109ed6184dfSmrg}
1110ed6184dfSmrg# endif
1111ed6184dfSmrg
1112ed6184dfSmrg/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1113ed6184dfSmrg   about the unexpected token YYTOKEN for the state stack whose top is
1114ed6184dfSmrg   YYSSP.
1115ed6184dfSmrg
1116ed6184dfSmrg   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1117ed6184dfSmrg   not large enough to hold the message.  In that case, also set
1118ed6184dfSmrg   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1119ed6184dfSmrg   required number of bytes is too large to store.  */
1120ed6184dfSmrgstatic int
1121ed6184dfSmrgyysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
1122ed6184dfSmrg                yy_state_t *yyssp, int yytoken)
1123ed6184dfSmrg{
1124ed6184dfSmrg  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1125ed6184dfSmrg  /* Internationalized format string. */
1126ed6184dfSmrg  const char *yyformat = YY_NULLPTR;
1127ed6184dfSmrg  /* Arguments of yyformat: reported tokens (one for the "unexpected",
1128ed6184dfSmrg     one per "expected"). */
1129ed6184dfSmrg  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1130ed6184dfSmrg  /* Actual size of YYARG. */
1131ed6184dfSmrg  int yycount = 0;
1132ed6184dfSmrg  /* Cumulated lengths of YYARG.  */
1133ed6184dfSmrg  YYPTRDIFF_T yysize = 0;
1134ed6184dfSmrg
1135ed6184dfSmrg  /* There are many possibilities here to consider:
1136ed6184dfSmrg     - If this state is a consistent state with a default action, then
1137ed6184dfSmrg       the only way this function was invoked is if the default action
1138ed6184dfSmrg       is an error action.  In that case, don't check for expected
1139ed6184dfSmrg       tokens because there are none.
1140ed6184dfSmrg     - The only way there can be no lookahead present (in yychar) is if
1141ed6184dfSmrg       this state is a consistent state with a default action.  Thus,
1142ed6184dfSmrg       detecting the absence of a lookahead is sufficient to determine
1143ed6184dfSmrg       that there is no unexpected or expected token to report.  In that
1144ed6184dfSmrg       case, just report a simple "syntax error".
1145ed6184dfSmrg     - Don't assume there isn't a lookahead just because this state is a
1146ed6184dfSmrg       consistent state with a default action.  There might have been a
1147ed6184dfSmrg       previous inconsistent state, consistent state with a non-default
1148ed6184dfSmrg       action, or user semantic action that manipulated yychar.
1149ed6184dfSmrg     - Of course, the expected token list depends on states to have
1150ed6184dfSmrg       correct lookahead information, and it depends on the parser not
1151ed6184dfSmrg       to perform extra reductions after fetching a lookahead from the
1152ed6184dfSmrg       scanner and before detecting a syntax error.  Thus, state merging
1153ed6184dfSmrg       (from LALR or IELR) and default reductions corrupt the expected
1154ed6184dfSmrg       token list.  However, the list is correct for canonical LR with
1155ed6184dfSmrg       one exception: it will still contain any token that will not be
1156ed6184dfSmrg       accepted due to an error action in a later state.
1157ed6184dfSmrg  */
1158ed6184dfSmrg  if (yytoken != YYEMPTY)
1159ed6184dfSmrg    {
1160ed6184dfSmrg      int yyn = yypact[+*yyssp];
1161ed6184dfSmrg      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1162ed6184dfSmrg      yysize = yysize0;
1163ed6184dfSmrg      yyarg[yycount++] = yytname[yytoken];
1164ed6184dfSmrg      if (!yypact_value_is_default (yyn))
1165ed6184dfSmrg        {
1166ed6184dfSmrg          /* Start YYX at -YYN if negative to avoid negative indexes in
1167ed6184dfSmrg             YYCHECK.  In other words, skip the first -YYN actions for
1168ed6184dfSmrg             this state because they are default actions.  */
1169ed6184dfSmrg          int yyxbegin = yyn < 0 ? -yyn : 0;
1170ed6184dfSmrg          /* Stay within bounds of both yycheck and yytname.  */
1171ed6184dfSmrg          int yychecklim = YYLAST - yyn + 1;
1172ed6184dfSmrg          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1173ed6184dfSmrg          int yyx;
1174ed6184dfSmrg
1175ed6184dfSmrg          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1176ed6184dfSmrg            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1177ed6184dfSmrg                && !yytable_value_is_error (yytable[yyx + yyn]))
1178ed6184dfSmrg              {
1179ed6184dfSmrg                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1180ed6184dfSmrg                  {
1181ed6184dfSmrg                    yycount = 1;
1182ed6184dfSmrg                    yysize = yysize0;
1183ed6184dfSmrg                    break;
1184ed6184dfSmrg                  }
1185ed6184dfSmrg                yyarg[yycount++] = yytname[yyx];
1186ed6184dfSmrg                {
1187ed6184dfSmrg                  YYPTRDIFF_T yysize1
1188ed6184dfSmrg                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1189ed6184dfSmrg                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
1190ed6184dfSmrg                    yysize = yysize1;
1191ed6184dfSmrg                  else
1192ed6184dfSmrg                    return 2;
1193ed6184dfSmrg                }
1194ed6184dfSmrg              }
1195ed6184dfSmrg        }
1196ed6184dfSmrg    }
1197ed6184dfSmrg
1198ed6184dfSmrg  switch (yycount)
1199ed6184dfSmrg    {
1200ed6184dfSmrg# define YYCASE_(N, S)                      \
1201ed6184dfSmrg      case N:                               \
1202ed6184dfSmrg        yyformat = S;                       \
1203ed6184dfSmrg      break
1204ed6184dfSmrg    default: /* Avoid compiler warnings. */
1205ed6184dfSmrg      YYCASE_(0, YY_("syntax error"));
1206ed6184dfSmrg      YYCASE_(1, YY_("syntax error, unexpected %s"));
1207ed6184dfSmrg      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1208ed6184dfSmrg      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1209ed6184dfSmrg      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1210ed6184dfSmrg      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1211ed6184dfSmrg# undef YYCASE_
1212ed6184dfSmrg    }
1213ed6184dfSmrg
1214ed6184dfSmrg  {
1215ed6184dfSmrg    /* Don't count the "%s"s in the final size, but reserve room for
1216ed6184dfSmrg       the terminator.  */
1217ed6184dfSmrg    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
1218ed6184dfSmrg    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
1219ed6184dfSmrg      yysize = yysize1;
1220ed6184dfSmrg    else
1221ed6184dfSmrg      return 2;
1222ed6184dfSmrg  }
1223ed6184dfSmrg
1224ed6184dfSmrg  if (*yymsg_alloc < yysize)
1225ed6184dfSmrg    {
1226ed6184dfSmrg      *yymsg_alloc = 2 * yysize;
1227ed6184dfSmrg      if (! (yysize <= *yymsg_alloc
1228ed6184dfSmrg             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1229ed6184dfSmrg        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1230ed6184dfSmrg      return 1;
1231ed6184dfSmrg    }
1232ed6184dfSmrg
1233ed6184dfSmrg  /* Avoid sprintf, as that infringes on the user's name space.
1234ed6184dfSmrg     Don't have undefined behavior even if the translation
1235ed6184dfSmrg     produced a string with the wrong number of "%s"s.  */
1236ed6184dfSmrg  {
1237ed6184dfSmrg    char *yyp = *yymsg;
1238ed6184dfSmrg    int yyi = 0;
1239ed6184dfSmrg    while ((*yyp = *yyformat) != '\0')
1240ed6184dfSmrg      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1241ed6184dfSmrg        {
1242ed6184dfSmrg          yyp += yytnamerr (yyp, yyarg[yyi++]);
1243ed6184dfSmrg          yyformat += 2;
1244ed6184dfSmrg        }
1245ed6184dfSmrg      else
1246ed6184dfSmrg        {
1247ed6184dfSmrg          ++yyp;
1248ed6184dfSmrg          ++yyformat;
1249ed6184dfSmrg        }
1250ed6184dfSmrg  }
1251ed6184dfSmrg  return 0;
1252ed6184dfSmrg}
1253ed6184dfSmrg#endif /* YYERROR_VERBOSE */
125405b261ecSmrg
125505b261ecSmrg/*-----------------------------------------------.
125605b261ecSmrg| Release the memory associated to this symbol.  |
125705b261ecSmrg`-----------------------------------------------*/
125805b261ecSmrg
125905b261ecSmrgstatic void
1260ed6184dfSmrgyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
126105b261ecSmrg{
1262ed6184dfSmrg  YYUSE (yyvaluep);
126305b261ecSmrg  if (!yymsg)
126405b261ecSmrg    yymsg = "Deleting";
1265ed6184dfSmrg  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
126605b261ecSmrg
126735c4bbdfSmrg  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1268ed6184dfSmrg  YYUSE (yytype);
126935c4bbdfSmrg  YY_IGNORE_MAYBE_UNINITIALIZED_END
127005b261ecSmrg}
127105b261ecSmrg
12729ace9065Smrg
1273ed6184dfSmrg
1274ed6184dfSmrg
1275ed6184dfSmrg/* The lookahead symbol.  */
127605b261ecSmrgint yychar;
127705b261ecSmrg
12784642e01fSmrg/* The semantic value of the lookahead symbol.  */
127905b261ecSmrgYYSTYPE yylval;
128005b261ecSmrg/* Number of syntax errors so far.  */
128105b261ecSmrgint yynerrs;
128205b261ecSmrg
128305b261ecSmrg
12849ace9065Smrg/*----------.
12859ace9065Smrg| yyparse.  |
12869ace9065Smrg`----------*/
128705b261ecSmrg
128805b261ecSmrgint
128905b261ecSmrgyyparse (void)
129005b261ecSmrg{
1291ed6184dfSmrg    yy_state_fast_t yystate;
12924642e01fSmrg    /* Number of tokens to shift before error messages enabled.  */
1293ed6184dfSmrg    int yyerrstatus;
129405b261ecSmrg
1295ed6184dfSmrg    /* The stacks and their tools:
1296ed6184dfSmrg       'yyss': related to states.
1297ed6184dfSmrg       'yyvs': related to semantic values.
129805b261ecSmrg
1299ed6184dfSmrg       Refer to the stacks through separate pointers, to allow yyoverflow
1300ed6184dfSmrg       to reallocate them elsewhere.  */
130105b261ecSmrg
1302ed6184dfSmrg    /* The state stack.  */
13035a7dfde8Smrg    yy_state_t yyssa[YYINITDEPTH];
1304ed6184dfSmrg    yy_state_t *yyss;
1305ed6184dfSmrg    yy_state_t *yyssp;
130605b261ecSmrg
1307ed6184dfSmrg    /* The semantic value stack.  */
13085a7dfde8Smrg    YYSTYPE yyvsa[YYINITDEPTH];
1309ed6184dfSmrg    YYSTYPE *yyvs;
1310ed6184dfSmrg    YYSTYPE *yyvsp;
1311ed6184dfSmrg
1312ed6184dfSmrg    YYPTRDIFF_T yystacksize;
131305b261ecSmrg
13144642e01fSmrg  int yyn;
13154642e01fSmrg  int yyresult;
1316ed6184dfSmrg  /* Lookahead token as an internal (translated) token number.  */
1317ed6184dfSmrg  int yytoken = 0;
131805b261ecSmrg  /* The variables used to return semantic value and location from the
131905b261ecSmrg     action routines.  */
132005b261ecSmrg  YYSTYPE yyval;
132105b261ecSmrg
1322ed6184dfSmrg#if YYERROR_VERBOSE
1323ed6184dfSmrg  /* Buffer for error messages, and its allocated size.  */
1324ed6184dfSmrg  char yymsgbuf[128];
1325ed6184dfSmrg  char *yymsg = yymsgbuf;
1326ed6184dfSmrg  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
1327ed6184dfSmrg#endif
13284642e01fSmrg
13294642e01fSmrg#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
133005b261ecSmrg
133105b261ecSmrg  /* The number of symbols on the RHS of the reduced rule.
133205b261ecSmrg     Keep to zero when no symbol should be popped.  */
133305b261ecSmrg  int yylen = 0;
133405b261ecSmrg
1335ed6184dfSmrg  yyssp = yyss = yyssa;
1336ed6184dfSmrg  yyvsp = yyvs = yyvsa;
1337ed6184dfSmrg  yystacksize = YYINITDEPTH;
1338ed6184dfSmrg
133905b261ecSmrg  YYDPRINTF ((stderr, "Starting parse\n"));
134005b261ecSmrg
1341ed6184dfSmrg  yystate = 0;
1342ed6184dfSmrg  yyerrstatus = 0;
1343ed6184dfSmrg  yynerrs = 0;
13444642e01fSmrg  yychar = YYEMPTY; /* Cause a token to be read.  */
134505b261ecSmrg  goto yysetstate;
134605b261ecSmrg
13475a7dfde8Smrg
134805b261ecSmrg/*------------------------------------------------------------.
13495a7dfde8Smrg| yynewstate -- push a new state, which is found in yystate.  |
135005b261ecSmrg`------------------------------------------------------------*/
13515a7dfde8Smrgyynewstate:
135205b261ecSmrg  /* In all cases, when you get here, the value and location stacks
135305b261ecSmrg     have just been pushed.  So pushing a state here evens the stacks.  */
135405b261ecSmrg  yyssp++;
135505b261ecSmrg
13565a7dfde8Smrg
13575a7dfde8Smrg/*--------------------------------------------------------------------.
13585a7dfde8Smrg| yysetstate -- set current state (the top of the stack) to yystate.  |
13595a7dfde8Smrg`--------------------------------------------------------------------*/
13605a7dfde8Smrgyysetstate:
13615a7dfde8Smrg  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
13625a7dfde8Smrg  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
13635a7dfde8Smrg  YY_IGNORE_USELESS_CAST_BEGIN
13645a7dfde8Smrg  *yyssp = YY_CAST (yy_state_t, yystate);
13655a7dfde8Smrg  YY_IGNORE_USELESS_CAST_END
136605b261ecSmrg
136705b261ecSmrg  if (yyss + yystacksize - 1 <= yyssp)
13685a7dfde8Smrg#if !defined yyoverflow && !defined YYSTACK_RELOCATE
13695a7dfde8Smrg    goto yyexhaustedlab;
13705a7dfde8Smrg#else
137105b261ecSmrg    {
137205b261ecSmrg      /* Get the current used size of the three stacks, in elements.  */
13735a7dfde8Smrg      YYPTRDIFF_T yysize = yyssp - yyss + 1;
137405b261ecSmrg
13755a7dfde8Smrg# if defined yyoverflow
137605b261ecSmrg      {
137735c4bbdfSmrg        /* Give user a chance to reallocate the stack.  Use copies of
137835c4bbdfSmrg           these so that the &'s don't force the real ones into
137935c4bbdfSmrg           memory.  */
13805a7dfde8Smrg        yy_state_t *yyss1 = yyss;
138135c4bbdfSmrg        YYSTYPE *yyvs1 = yyvs;
138235c4bbdfSmrg
138335c4bbdfSmrg        /* Each stack pointer address is followed by the size of the
138435c4bbdfSmrg           data in use in that stack, in bytes.  This used to be a
138535c4bbdfSmrg           conditional around just the two extra args, but that might
138635c4bbdfSmrg           be undefined if yyoverflow is a macro.  */
138735c4bbdfSmrg        yyoverflow (YY_("memory exhausted"),
13885a7dfde8Smrg                    &yyss1, yysize * YYSIZEOF (*yyssp),
13895a7dfde8Smrg                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
139035c4bbdfSmrg                    &yystacksize);
139135c4bbdfSmrg        yyss = yyss1;
139235c4bbdfSmrg        yyvs = yyvs1;
139305b261ecSmrg      }
13945a7dfde8Smrg# else /* defined YYSTACK_RELOCATE */
139505b261ecSmrg      /* Extend the stack our own way.  */
139605b261ecSmrg      if (YYMAXDEPTH <= yystacksize)
139735c4bbdfSmrg        goto yyexhaustedlab;
139805b261ecSmrg      yystacksize *= 2;
139905b261ecSmrg      if (YYMAXDEPTH < yystacksize)
140035c4bbdfSmrg        yystacksize = YYMAXDEPTH;
140105b261ecSmrg
140205b261ecSmrg      {
14035a7dfde8Smrg        yy_state_t *yyss1 = yyss;
140435c4bbdfSmrg        union yyalloc *yyptr =
14055a7dfde8Smrg          YY_CAST (union yyalloc *,
14065a7dfde8Smrg                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
140735c4bbdfSmrg        if (! yyptr)
140835c4bbdfSmrg          goto yyexhaustedlab;
140935c4bbdfSmrg        YYSTACK_RELOCATE (yyss_alloc, yyss);
141035c4bbdfSmrg        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1411ed6184dfSmrg# undef YYSTACK_RELOCATE
141235c4bbdfSmrg        if (yyss1 != yyssa)
141335c4bbdfSmrg          YYSTACK_FREE (yyss1);
141405b261ecSmrg      }
141505b261ecSmrg# endif
141605b261ecSmrg
141705b261ecSmrg      yyssp = yyss + yysize - 1;
141805b261ecSmrg      yyvsp = yyvs + yysize - 1;
141905b261ecSmrg
14205a7dfde8Smrg      YY_IGNORE_USELESS_CAST_BEGIN
14215a7dfde8Smrg      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
14225a7dfde8Smrg                  YY_CAST (long, yystacksize)));
14235a7dfde8Smrg      YY_IGNORE_USELESS_CAST_END
142405b261ecSmrg
142505b261ecSmrg      if (yyss + yystacksize - 1 <= yyssp)
142635c4bbdfSmrg        YYABORT;
142705b261ecSmrg    }
14285a7dfde8Smrg#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
142905b261ecSmrg
14304642e01fSmrg  if (yystate == YYFINAL)
14314642e01fSmrg    YYACCEPT;
14324642e01fSmrg
143305b261ecSmrg  goto yybackup;
143405b261ecSmrg
14355a7dfde8Smrg
143605b261ecSmrg/*-----------.
143705b261ecSmrg| yybackup.  |
143805b261ecSmrg`-----------*/
143905b261ecSmrgyybackup:
144005b261ecSmrg  /* Do appropriate processing given the current state.  Read a
14414642e01fSmrg     lookahead token if we need one and don't already have one.  */
144205b261ecSmrg
14434642e01fSmrg  /* First try to decide what to do without reference to lookahead token.  */
144405b261ecSmrg  yyn = yypact[yystate];
14459ace9065Smrg  if (yypact_value_is_default (yyn))
144605b261ecSmrg    goto yydefault;
144705b261ecSmrg
14484642e01fSmrg  /* Not known => get a lookahead token if don't already have one.  */
144905b261ecSmrg
1450ed6184dfSmrg  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
145105b261ecSmrg  if (yychar == YYEMPTY)
145205b261ecSmrg    {
1453ed6184dfSmrg      YYDPRINTF ((stderr, "Reading a token: "));
145435c4bbdfSmrg      yychar = yylex ();
145505b261ecSmrg    }
145605b261ecSmrg
145705b261ecSmrg  if (yychar <= YYEOF)
145805b261ecSmrg    {
1459ed6184dfSmrg      yychar = yytoken = YYEOF;
146005b261ecSmrg      YYDPRINTF ((stderr, "Now at end of input.\n"));
146105b261ecSmrg    }
146205b261ecSmrg  else
146305b261ecSmrg    {
146405b261ecSmrg      yytoken = YYTRANSLATE (yychar);
146505b261ecSmrg      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
146605b261ecSmrg    }
146705b261ecSmrg
146805b261ecSmrg  /* If the proper action on seeing token YYTOKEN is to reduce or to
146905b261ecSmrg     detect an error, take that action.  */
147005b261ecSmrg  yyn += yytoken;
147105b261ecSmrg  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
147205b261ecSmrg    goto yydefault;
147305b261ecSmrg  yyn = yytable[yyn];
147405b261ecSmrg  if (yyn <= 0)
147505b261ecSmrg    {
14769ace9065Smrg      if (yytable_value_is_error (yyn))
14779ace9065Smrg        goto yyerrlab;
147805b261ecSmrg      yyn = -yyn;
147905b261ecSmrg      goto yyreduce;
148005b261ecSmrg    }
148105b261ecSmrg
148205b261ecSmrg  /* Count tokens shifted since error; after three, turn off error
148305b261ecSmrg     status.  */
148405b261ecSmrg  if (yyerrstatus)
148505b261ecSmrg    yyerrstatus--;
148605b261ecSmrg
14874642e01fSmrg  /* Shift the lookahead token.  */
148805b261ecSmrg  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
148905b261ecSmrg  yystate = yyn;
149035c4bbdfSmrg  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
149105b261ecSmrg  *++yyvsp = yylval;
149235c4bbdfSmrg  YY_IGNORE_MAYBE_UNINITIALIZED_END
149305b261ecSmrg
14945a7dfde8Smrg  /* Discard the shifted token.  */
14955a7dfde8Smrg  yychar = YYEMPTY;
149605b261ecSmrg  goto yynewstate;
149705b261ecSmrg
149805b261ecSmrg
149905b261ecSmrg/*-----------------------------------------------------------.
150005b261ecSmrg| yydefault -- do the default action for the current state.  |
150105b261ecSmrg`-----------------------------------------------------------*/
150205b261ecSmrgyydefault:
150305b261ecSmrg  yyn = yydefact[yystate];
150405b261ecSmrg  if (yyn == 0)
150505b261ecSmrg    goto yyerrlab;
150605b261ecSmrg  goto yyreduce;
150705b261ecSmrg
150805b261ecSmrg
150905b261ecSmrg/*-----------------------------.
15105a7dfde8Smrg| yyreduce -- do a reduction.  |
151105b261ecSmrg`-----------------------------*/
151205b261ecSmrgyyreduce:
151305b261ecSmrg  /* yyn is the number of a rule to reduce with.  */
151405b261ecSmrg  yylen = yyr2[yyn];
151505b261ecSmrg
151605b261ecSmrg  /* If YYLEN is nonzero, implement the default value of the action:
151735c4bbdfSmrg     '$$ = $1'.
151805b261ecSmrg
151905b261ecSmrg     Otherwise, the following line sets YYVAL to garbage.
152005b261ecSmrg     This behavior is undocumented and Bison
152105b261ecSmrg     users should not rely upon it.  Assigning to YYVAL
152205b261ecSmrg     unconditionally makes the parser a bit smaller, and it avoids a
152305b261ecSmrg     GCC warning that YYVAL may be used uninitialized.  */
152405b261ecSmrg  yyval = yyvsp[1-yylen];
152505b261ecSmrg
152605b261ecSmrg
152705b261ecSmrg  YY_REDUCE_PRINT (yyn);
152805b261ecSmrg  switch (yyn)
152905b261ecSmrg    {
1530ed6184dfSmrg  case 20:
15315a7dfde8Smrg#line 160 "winprefsyacc.y"
15325a7dfde8Smrg                                        { SetTrayIcon((yyvsp[-1].sVal)); free((yyvsp[-1].sVal)); }
1533ed6184dfSmrg#line 1534 "winprefsyacc.c"
153405b261ecSmrg    break;
153505b261ecSmrg
1536ed6184dfSmrg  case 21:
15375a7dfde8Smrg#line 163 "winprefsyacc.y"
15385a7dfde8Smrg                                        { SetRootMenu((yyvsp[-1].sVal)); free((yyvsp[-1].sVal)); }
1539ed6184dfSmrg#line 1540 "winprefsyacc.c"
154005b261ecSmrg    break;
154105b261ecSmrg
1542ed6184dfSmrg  case 22:
15435a7dfde8Smrg#line 166 "winprefsyacc.y"
15445a7dfde8Smrg                                                     { SetDefaultSysMenu((yyvsp[-2].sVal), (yyvsp[-1].iVal)); free((yyvsp[-2].sVal)); }
1545ed6184dfSmrg#line 1546 "winprefsyacc.c"
154605b261ecSmrg    break;
154705b261ecSmrg
1548ed6184dfSmrg  case 23:
15495a7dfde8Smrg#line 169 "winprefsyacc.y"
15505a7dfde8Smrg                                           { SetDefaultIcon((yyvsp[-1].sVal)); free((yyvsp[-1].sVal)); }
1551ed6184dfSmrg#line 1552 "winprefsyacc.c"
155205b261ecSmrg    break;
155305b261ecSmrg
1554ed6184dfSmrg  case 24:
15555a7dfde8Smrg#line 172 "winprefsyacc.y"
15565a7dfde8Smrg                                             { SetIconDirectory((yyvsp[-1].sVal)); free((yyvsp[-1].sVal)); }
1557ed6184dfSmrg#line 1558 "winprefsyacc.c"
155805b261ecSmrg    break;
155905b261ecSmrg
1560ed6184dfSmrg  case 25:
15615a7dfde8Smrg#line 175 "winprefsyacc.y"
15625a7dfde8Smrg                                                   { AddMenuLine("-", CMD_SEPARATOR, ""); }
1563ed6184dfSmrg#line 1564 "winprefsyacc.c"
156405b261ecSmrg    break;
156505b261ecSmrg
1566ed6184dfSmrg  case 26:
15675a7dfde8Smrg#line 176 "winprefsyacc.y"
15685a7dfde8Smrg                                                      { AddMenuLine((yyvsp[-3].sVal), CMD_ALWAYSONTOP, ""); free((yyvsp[-3].sVal)); }
1569ed6184dfSmrg#line 1570 "winprefsyacc.c"
157005b261ecSmrg    break;
157105b261ecSmrg
1572ed6184dfSmrg  case 27:
15735a7dfde8Smrg#line 177 "winprefsyacc.y"
15745a7dfde8Smrg                                                      { AddMenuLine((yyvsp[-4].sVal), CMD_EXEC, (yyvsp[-2].sVal)); free((yyvsp[-4].sVal)); free((yyvsp[-2].sVal)); }
1575ed6184dfSmrg#line 1576 "winprefsyacc.c"
157605b261ecSmrg    break;
157705b261ecSmrg
1578ed6184dfSmrg  case 28:
15795a7dfde8Smrg#line 178 "winprefsyacc.y"
15805a7dfde8Smrg                                                      { AddMenuLine((yyvsp[-4].sVal), CMD_MENU, (yyvsp[-2].sVal)); free((yyvsp[-4].sVal)); free((yyvsp[-2].sVal)); }
1581ed6184dfSmrg#line 1582 "winprefsyacc.c"
158205b261ecSmrg    break;
158305b261ecSmrg
1584ed6184dfSmrg  case 29:
15855a7dfde8Smrg#line 179 "winprefsyacc.y"
15865a7dfde8Smrg                                                 { AddMenuLine((yyvsp[-3].sVal), CMD_RELOAD, ""); free((yyvsp[-3].sVal)); }
1587ed6184dfSmrg#line 1588 "winprefsyacc.c"
158805b261ecSmrg    break;
158905b261ecSmrg
1590ed6184dfSmrg  case 32:
15915a7dfde8Smrg#line 186 "winprefsyacc.y"
15925a7dfde8Smrg                       { OpenMenu((yyvsp[-1].sVal)); free((yyvsp[-1].sVal)); }
1593ed6184dfSmrg#line 1594 "winprefsyacc.c"
159405b261ecSmrg    break;
159505b261ecSmrg
1596ed6184dfSmrg  case 33:
15975a7dfde8Smrg#line 186 "winprefsyacc.y"
15985a7dfde8Smrg                                                                               {CloseMenu();}
1599ed6184dfSmrg#line 1600 "winprefsyacc.c"
160005b261ecSmrg    break;
160105b261ecSmrg
1602ed6184dfSmrg  case 34:
16035a7dfde8Smrg#line 189 "winprefsyacc.y"
16045a7dfde8Smrg                                                      { AddIconLine((yyvsp[-3].sVal), (yyvsp[-2].sVal)); free((yyvsp[-3].sVal)); free((yyvsp[-2].sVal)); }
1605ed6184dfSmrg#line 1606 "winprefsyacc.c"
160605b261ecSmrg    break;
160705b261ecSmrg
1608ed6184dfSmrg  case 37:
16095a7dfde8Smrg#line 196 "winprefsyacc.y"
16105a7dfde8Smrg                 {OpenIcons();}
1611ed6184dfSmrg#line 1612 "winprefsyacc.c"
161205b261ecSmrg    break;
161305b261ecSmrg
1614ed6184dfSmrg  case 38:
16155a7dfde8Smrg#line 196 "winprefsyacc.y"
16165a7dfde8Smrg                                                            {CloseIcons();}
1617ed6184dfSmrg#line 1618 "winprefsyacc.c"
161805b261ecSmrg    break;
161905b261ecSmrg
1620ed6184dfSmrg  case 39:
16215a7dfde8Smrg#line 199 "winprefsyacc.y"
16225a7dfde8Smrg                { (yyval.uVal)=STYLE_TOPMOST; }
1623ed6184dfSmrg#line 1624 "winprefsyacc.c"
16246747b715Smrg    break;
16256747b715Smrg
1626ed6184dfSmrg  case 40:
16275a7dfde8Smrg#line 200 "winprefsyacc.y"
16285a7dfde8Smrg                   { (yyval.uVal)=STYLE_MAXIMIZE; }
1629ed6184dfSmrg#line 1630 "winprefsyacc.c"
16306747b715Smrg    break;
16316747b715Smrg
1632ed6184dfSmrg  case 41:
16335a7dfde8Smrg#line 201 "winprefsyacc.y"
16345a7dfde8Smrg                   { (yyval.uVal)=STYLE_MINIMIZE; }
1635ed6184dfSmrg#line 1636 "winprefsyacc.c"
16366747b715Smrg    break;
16376747b715Smrg
1638ed6184dfSmrg  case 42:
16395a7dfde8Smrg#line 202 "winprefsyacc.y"
16405a7dfde8Smrg                 { (yyval.uVal)=STYLE_BOTTOM; }
1641ed6184dfSmrg#line 1642 "winprefsyacc.c"
16426747b715Smrg    break;
16436747b715Smrg
1644ed6184dfSmrg  case 43:
16455a7dfde8Smrg#line 205 "winprefsyacc.y"
16465a7dfde8Smrg                { (yyval.uVal)=STYLE_NOTITLE; }
1647ed6184dfSmrg#line 1648 "winprefsyacc.c"
16486747b715Smrg    break;
16496747b715Smrg
1650ed6184dfSmrg  case 44:
16515a7dfde8Smrg#line 206 "winprefsyacc.y"
16525a7dfde8Smrg                  { (yyval.uVal)=STYLE_OUTLINE; }
1653ed6184dfSmrg#line 1654 "winprefsyacc.c"
16546747b715Smrg    break;
16556747b715Smrg
1656ed6184dfSmrg  case 45:
16575a7dfde8Smrg#line 207 "winprefsyacc.y"
16585a7dfde8Smrg                  { (yyval.uVal)=STYLE_NOFRAME; }
1659ed6184dfSmrg#line 1660 "winprefsyacc.c"
16606747b715Smrg    break;
16616747b715Smrg
1662ed6184dfSmrg  case 46:
16635a7dfde8Smrg#line 210 "winprefsyacc.y"
16645a7dfde8Smrg                       { (yyval.uVal)=(yyvsp[0].uVal); }
1665ed6184dfSmrg#line 1666 "winprefsyacc.c"
16666747b715Smrg    break;
16676747b715Smrg
1668ed6184dfSmrg  case 47:
16695a7dfde8Smrg#line 211 "winprefsyacc.y"
16705a7dfde8Smrg                 { (yyval.uVal)=(yyvsp[0].uVal); }
1671ed6184dfSmrg#line 1672 "winprefsyacc.c"
16726747b715Smrg    break;
16736747b715Smrg
1674ed6184dfSmrg  case 48:
16755a7dfde8Smrg#line 212 "winprefsyacc.y"
16765a7dfde8Smrg                        { (yyval.uVal)=(yyvsp[-1].uVal)|(yyvsp[0].uVal); }
1677ed6184dfSmrg#line 1678 "winprefsyacc.c"
16786747b715Smrg    break;
16796747b715Smrg
1680ed6184dfSmrg  case 49:
16815a7dfde8Smrg#line 213 "winprefsyacc.y"
16825a7dfde8Smrg                        { (yyval.uVal)=(yyvsp[-1].uVal)|(yyvsp[0].uVal); }
1683ed6184dfSmrg#line 1684 "winprefsyacc.c"
16846747b715Smrg    break;
16856747b715Smrg
1686ed6184dfSmrg  case 50:
16875a7dfde8Smrg#line 216 "winprefsyacc.y"
16885a7dfde8Smrg                                                          { AddStyleLine((yyvsp[-3].sVal), (yyvsp[-2].uVal)); free((yyvsp[-3].sVal)); }
1689ed6184dfSmrg#line 1690 "winprefsyacc.c"
16906747b715Smrg    break;
16916747b715Smrg
1692ed6184dfSmrg  case 53:
16935a7dfde8Smrg#line 223 "winprefsyacc.y"
16945a7dfde8Smrg                  {OpenStyles();}
1695ed6184dfSmrg#line 1696 "winprefsyacc.c"
16966747b715Smrg    break;
16976747b715Smrg
1698ed6184dfSmrg  case 54:
16995a7dfde8Smrg#line 223 "winprefsyacc.y"
17005a7dfde8Smrg                                                               {CloseStyles();}
1701ed6184dfSmrg#line 1702 "winprefsyacc.c"
17026747b715Smrg    break;
17036747b715Smrg
1704ed6184dfSmrg  case 55:
17055a7dfde8Smrg#line 226 "winprefsyacc.y"
17065a7dfde8Smrg        { (yyval.iVal)=AT_END; }
1707ed6184dfSmrg#line 1708 "winprefsyacc.c"
170805b261ecSmrg    break;
170905b261ecSmrg
1710ed6184dfSmrg  case 56:
17115a7dfde8Smrg#line 227 "winprefsyacc.y"
17125a7dfde8Smrg                  { (yyval.iVal)=AT_START; }
1713ed6184dfSmrg#line 1714 "winprefsyacc.c"
171405b261ecSmrg    break;
171505b261ecSmrg
1716ed6184dfSmrg  case 57:
17175a7dfde8Smrg#line 228 "winprefsyacc.y"
17185a7dfde8Smrg                { (yyval.iVal)=AT_END; }
1719ed6184dfSmrg#line 1720 "winprefsyacc.c"
172005b261ecSmrg    break;
172105b261ecSmrg
1722ed6184dfSmrg  case 58:
17235a7dfde8Smrg#line 231 "winprefsyacc.y"
17245a7dfde8Smrg                                                             { AddSysMenuLine((yyvsp[-4].sVal), (yyvsp[-3].sVal), (yyvsp[-2].iVal)); free((yyvsp[-4].sVal)); free((yyvsp[-3].sVal)); }
1725ed6184dfSmrg#line 1726 "winprefsyacc.c"
172605b261ecSmrg    break;
172705b261ecSmrg
1728ed6184dfSmrg  case 61:
17295a7dfde8Smrg#line 238 "winprefsyacc.y"
17305a7dfde8Smrg                                   {OpenSysMenu();}
1731ed6184dfSmrg#line 1732 "winprefsyacc.c"
173205b261ecSmrg    break;
173305b261ecSmrg
1734ed6184dfSmrg  case 62:
17355a7dfde8Smrg#line 238 "winprefsyacc.y"
17365a7dfde8Smrg                                                                                   {CloseSysMenu();}
1737ed6184dfSmrg#line 1738 "winprefsyacc.c"
173805b261ecSmrg    break;
173905b261ecSmrg
1740ed6184dfSmrg  case 63:
17415a7dfde8Smrg#line 241 "winprefsyacc.y"
17425a7dfde8Smrg                                  { pref.fForceExit = TRUE; }
1743ed6184dfSmrg#line 1744 "winprefsyacc.c"
17446747b715Smrg    break;
17456747b715Smrg
1746ed6184dfSmrg  case 64:
17475a7dfde8Smrg#line 244 "winprefsyacc.y"
17485a7dfde8Smrg                                   { pref.fSilentExit = TRUE; }
1749ed6184dfSmrg#line 1750 "winprefsyacc.c"
175005b261ecSmrg    break;
175105b261ecSmrg
1752ed6184dfSmrg  case 65:
17535a7dfde8Smrg#line 247 "winprefsyacc.y"
17545a7dfde8Smrg                                   { ErrorF("LoadPreferences: %s\n", (yyvsp[-1].sVal)); free((yyvsp[-1].sVal)); }
1755ed6184dfSmrg#line 1756 "winprefsyacc.c"
175605b261ecSmrg    break;
175705b261ecSmrg
175805b261ecSmrg
1759ed6184dfSmrg#line 1760 "winprefsyacc.c"
17605a7dfde8Smrg
176105b261ecSmrg      default: break;
176205b261ecSmrg    }
17639ace9065Smrg  /* User semantic actions sometimes alter yychar, and that requires
17649ace9065Smrg     that yytoken be updated with the new translation.  We take the
17659ace9065Smrg     approach of translating immediately before every use of yytoken.
17669ace9065Smrg     One alternative is translating here after every semantic action,
17679ace9065Smrg     but that translation would be missed if the semantic action invokes
17689ace9065Smrg     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
17699ace9065Smrg     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
17709ace9065Smrg     incorrect destructor might then be invoked immediately.  In the
17719ace9065Smrg     case of YYERROR or YYBACKUP, subsequent parser actions might lead
17729ace9065Smrg     to an incorrect destructor call or verbose syntax error message
17739ace9065Smrg     before the lookahead is translated.  */
1774ed6184dfSmrg  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
177505b261ecSmrg
177605b261ecSmrg  YYPOPSTACK (yylen);
177705b261ecSmrg  yylen = 0;
1778ed6184dfSmrg  YY_STACK_PRINT (yyss, yyssp);
177905b261ecSmrg
178005b261ecSmrg  *++yyvsp = yyval;
178105b261ecSmrg
178235c4bbdfSmrg  /* Now 'shift' the result of the reduction.  Determine what state
178305b261ecSmrg     that goes to, based on the state we popped back to and the rule
178405b261ecSmrg     number reduced by.  */
17855a7dfde8Smrg  {
17865a7dfde8Smrg    const int yylhs = yyr1[yyn] - YYNTOKENS;
17875a7dfde8Smrg    const int yyi = yypgoto[yylhs] + *yyssp;
17885a7dfde8Smrg    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
17895a7dfde8Smrg               ? yytable[yyi]
17905a7dfde8Smrg               : yydefgoto[yylhs]);
17915a7dfde8Smrg  }
179205b261ecSmrg
179305b261ecSmrg  goto yynewstate;
179405b261ecSmrg
179505b261ecSmrg
179635c4bbdfSmrg/*--------------------------------------.
179735c4bbdfSmrg| yyerrlab -- here on detecting error.  |
179835c4bbdfSmrg`--------------------------------------*/
179905b261ecSmrgyyerrlab:
18009ace9065Smrg  /* Make sure we have latest lookahead translation.  See comments at
18019ace9065Smrg     user semantic actions for why this is necessary.  */
1802ed6184dfSmrg  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
1803ed6184dfSmrg
180405b261ecSmrg  /* If not already recovering from an error, report this error.  */
180505b261ecSmrg  if (!yyerrstatus)
180605b261ecSmrg    {
180705b261ecSmrg      ++yynerrs;
1808ed6184dfSmrg#if ! YYERROR_VERBOSE
180905b261ecSmrg      yyerror (YY_("syntax error"));
1810ed6184dfSmrg#else
1811ed6184dfSmrg# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1812ed6184dfSmrg                                        yyssp, yytoken)
1813ed6184dfSmrg      {
1814ed6184dfSmrg        char const *yymsgp = YY_("syntax error");
1815ed6184dfSmrg        int yysyntax_error_status;
1816ed6184dfSmrg        yysyntax_error_status = YYSYNTAX_ERROR;
1817ed6184dfSmrg        if (yysyntax_error_status == 0)
1818ed6184dfSmrg          yymsgp = yymsg;
1819ed6184dfSmrg        else if (yysyntax_error_status == 1)
1820ed6184dfSmrg          {
1821ed6184dfSmrg            if (yymsg != yymsgbuf)
1822ed6184dfSmrg              YYSTACK_FREE (yymsg);
1823ed6184dfSmrg            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
1824ed6184dfSmrg            if (!yymsg)
1825ed6184dfSmrg              {
1826ed6184dfSmrg                yymsg = yymsgbuf;
1827ed6184dfSmrg                yymsg_alloc = sizeof yymsgbuf;
1828ed6184dfSmrg                yysyntax_error_status = 2;
1829ed6184dfSmrg              }
1830ed6184dfSmrg            else
1831ed6184dfSmrg              {
1832ed6184dfSmrg                yysyntax_error_status = YYSYNTAX_ERROR;
1833ed6184dfSmrg                yymsgp = yymsg;
1834ed6184dfSmrg              }
1835ed6184dfSmrg          }
1836ed6184dfSmrg        yyerror (yymsgp);
1837ed6184dfSmrg        if (yysyntax_error_status == 2)
1838ed6184dfSmrg          goto yyexhaustedlab;
1839ed6184dfSmrg      }
1840ed6184dfSmrg# undef YYSYNTAX_ERROR
1841ed6184dfSmrg#endif
184205b261ecSmrg    }
184305b261ecSmrg
1844ed6184dfSmrg
1845ed6184dfSmrg
184605b261ecSmrg  if (yyerrstatus == 3)
184705b261ecSmrg    {
18484642e01fSmrg      /* If just tried and failed to reuse lookahead token after an
184935c4bbdfSmrg         error, discard it.  */
185005b261ecSmrg
185105b261ecSmrg      if (yychar <= YYEOF)
185235c4bbdfSmrg        {
185335c4bbdfSmrg          /* Return failure if at end of input.  */
185435c4bbdfSmrg          if (yychar == YYEOF)
185535c4bbdfSmrg            YYABORT;
185635c4bbdfSmrg        }
185705b261ecSmrg      else
185835c4bbdfSmrg        {
185935c4bbdfSmrg          yydestruct ("Error: discarding",
186035c4bbdfSmrg                      yytoken, &yylval);
186135c4bbdfSmrg          yychar = YYEMPTY;
186235c4bbdfSmrg        }
186305b261ecSmrg    }
186405b261ecSmrg
18654642e01fSmrg  /* Else will try to reuse lookahead token after shifting the error
186605b261ecSmrg     token.  */
186705b261ecSmrg  goto yyerrlab1;
186805b261ecSmrg
186905b261ecSmrg
187005b261ecSmrg/*---------------------------------------------------.
187105b261ecSmrg| yyerrorlab -- error raised explicitly by YYERROR.  |
187205b261ecSmrg`---------------------------------------------------*/
187305b261ecSmrgyyerrorlab:
18745a7dfde8Smrg  /* Pacify compilers when the user code never invokes YYERROR and the
18755a7dfde8Smrg     label yyerrorlab therefore never appears in user code.  */
18765a7dfde8Smrg  if (0)
18775a7dfde8Smrg    YYERROR;
187805b261ecSmrg
187935c4bbdfSmrg  /* Do not reclaim the symbols of the rule whose action triggered
188005b261ecSmrg     this YYERROR.  */
188105b261ecSmrg  YYPOPSTACK (yylen);
188205b261ecSmrg  yylen = 0;
188305b261ecSmrg  YY_STACK_PRINT (yyss, yyssp);
188405b261ecSmrg  yystate = *yyssp;
188505b261ecSmrg  goto yyerrlab1;
188605b261ecSmrg
188705b261ecSmrg
188805b261ecSmrg/*-------------------------------------------------------------.
188905b261ecSmrg| yyerrlab1 -- common code for both syntax error and YYERROR.  |
189005b261ecSmrg`-------------------------------------------------------------*/
189105b261ecSmrgyyerrlab1:
189235c4bbdfSmrg  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
189305b261ecSmrg
189405b261ecSmrg  for (;;)
189505b261ecSmrg    {
189605b261ecSmrg      yyn = yypact[yystate];
18979ace9065Smrg      if (!yypact_value_is_default (yyn))
189835c4bbdfSmrg        {
1899ed6184dfSmrg          yyn += YYTERROR;
1900ed6184dfSmrg          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
190135c4bbdfSmrg            {
190235c4bbdfSmrg              yyn = yytable[yyn];
190335c4bbdfSmrg              if (0 < yyn)
190435c4bbdfSmrg                break;
190535c4bbdfSmrg            }
190635c4bbdfSmrg        }
190705b261ecSmrg
190805b261ecSmrg      /* Pop the current state because it cannot handle the error token.  */
190905b261ecSmrg      if (yyssp == yyss)
191035c4bbdfSmrg        YYABORT;
191105b261ecSmrg
191205b261ecSmrg
191305b261ecSmrg      yydestruct ("Error: popping",
1914ed6184dfSmrg                  yystos[yystate], yyvsp);
191505b261ecSmrg      YYPOPSTACK (1);
191605b261ecSmrg      yystate = *yyssp;
191705b261ecSmrg      YY_STACK_PRINT (yyss, yyssp);
191805b261ecSmrg    }
191905b261ecSmrg
192035c4bbdfSmrg  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
192105b261ecSmrg  *++yyvsp = yylval;
192235c4bbdfSmrg  YY_IGNORE_MAYBE_UNINITIALIZED_END
192305b261ecSmrg
192405b261ecSmrg
192505b261ecSmrg  /* Shift the error token.  */
1926ed6184dfSmrg  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
192705b261ecSmrg
192805b261ecSmrg  yystate = yyn;
192905b261ecSmrg  goto yynewstate;
193005b261ecSmrg
193105b261ecSmrg
193205b261ecSmrg/*-------------------------------------.
193305b261ecSmrg| yyacceptlab -- YYACCEPT comes here.  |
193405b261ecSmrg`-------------------------------------*/
193505b261ecSmrgyyacceptlab:
193605b261ecSmrg  yyresult = 0;
193705b261ecSmrg  goto yyreturn;
193805b261ecSmrg
19395a7dfde8Smrg
194005b261ecSmrg/*-----------------------------------.
194105b261ecSmrg| yyabortlab -- YYABORT comes here.  |
194205b261ecSmrg`-----------------------------------*/
194305b261ecSmrgyyabortlab:
194405b261ecSmrg  yyresult = 1;
194505b261ecSmrg  goto yyreturn;
194605b261ecSmrg
19475a7dfde8Smrg
1948ed6184dfSmrg#if !defined yyoverflow || YYERROR_VERBOSE
194905b261ecSmrg/*-------------------------------------------------.
195005b261ecSmrg| yyexhaustedlab -- memory exhaustion comes here.  |
195105b261ecSmrg`-------------------------------------------------*/
195205b261ecSmrgyyexhaustedlab:
195305b261ecSmrg  yyerror (YY_("memory exhausted"));
195405b261ecSmrg  yyresult = 2;
1955ed6184dfSmrg  /* Fall through.  */
195605b261ecSmrg#endif
195705b261ecSmrg
19585a7dfde8Smrg
1959ed6184dfSmrg/*-----------------------------------------------------.
1960ed6184dfSmrg| yyreturn -- parsing is finished, return the result.  |
1961ed6184dfSmrg`-----------------------------------------------------*/
196205b261ecSmrgyyreturn:
19634642e01fSmrg  if (yychar != YYEMPTY)
19649ace9065Smrg    {
19659ace9065Smrg      /* Make sure we have latest lookahead translation.  See comments at
19669ace9065Smrg         user semantic actions for why this is necessary.  */
19679ace9065Smrg      yytoken = YYTRANSLATE (yychar);
19689ace9065Smrg      yydestruct ("Cleanup: discarding lookahead",
19699ace9065Smrg                  yytoken, &yylval);
19709ace9065Smrg    }
197135c4bbdfSmrg  /* Do not reclaim the symbols of the rule whose action triggered
197205b261ecSmrg     this YYABORT or YYACCEPT.  */
197305b261ecSmrg  YYPOPSTACK (yylen);
197405b261ecSmrg  YY_STACK_PRINT (yyss, yyssp);
197505b261ecSmrg  while (yyssp != yyss)
197605b261ecSmrg    {
197705b261ecSmrg      yydestruct ("Cleanup: popping",
1978ed6184dfSmrg                  yystos[+*yyssp], yyvsp);
197905b261ecSmrg      YYPOPSTACK (1);
198005b261ecSmrg    }
198105b261ecSmrg#ifndef yyoverflow
198205b261ecSmrg  if (yyss != yyssa)
198305b261ecSmrg    YYSTACK_FREE (yyss);
198405b261ecSmrg#endif
1985ed6184dfSmrg#if YYERROR_VERBOSE
1986ed6184dfSmrg  if (yymsg != yymsgbuf)
1987ed6184dfSmrg    YYSTACK_FREE (yymsg);
1988ed6184dfSmrg#endif
198935c4bbdfSmrg  return yyresult;
199005b261ecSmrg}
19915a7dfde8Smrg#line 251 "winprefsyacc.y"
199205b261ecSmrg
199305b261ecSmrg/*
199405b261ecSmrg * Errors in parsing abort and print log messages
199505b261ecSmrg */
199605b261ecSmrgstatic int
199735c4bbdfSmrgyyerror (const char *s)
199805b261ecSmrg{
199905b261ecSmrg  ErrorF("LoadPreferences: %s line %d\n", s, yylineno);
200005b261ecSmrg  return 1;
200105b261ecSmrg}
200205b261ecSmrg
200305b261ecSmrg/* Miscellaneous functions to store TOKENs into the structure */
200405b261ecSmrgstatic void
200505b261ecSmrgSetIconDirectory (char *path)
200605b261ecSmrg{
200705b261ecSmrg  strncpy (pref.iconDirectory, path, PATH_MAX);
200805b261ecSmrg  pref.iconDirectory[PATH_MAX] = 0;
200905b261ecSmrg}
201005b261ecSmrg
201105b261ecSmrgstatic void
201205b261ecSmrgSetDefaultIcon (char *fname)
201305b261ecSmrg{
201405b261ecSmrg  strncpy (pref.defaultIconName, fname, NAME_MAX);
201505b261ecSmrg  pref.defaultIconName[NAME_MAX] = 0;
201605b261ecSmrg}
201705b261ecSmrg
201805b261ecSmrgstatic void
201905b261ecSmrgSetTrayIcon (char *fname)
202005b261ecSmrg{
202105b261ecSmrg  strncpy (pref.trayIconName, fname, NAME_MAX);
202205b261ecSmrg  pref.trayIconName[NAME_MAX] = 0;
202305b261ecSmrg}
202405b261ecSmrg
202505b261ecSmrgstatic void
202635c4bbdfSmrgSetRootMenu (char *menuname)
202705b261ecSmrg{
202835c4bbdfSmrg  strncpy (pref.rootMenuName, menuname, MENU_MAX);
202905b261ecSmrg  pref.rootMenuName[MENU_MAX] = 0;
203005b261ecSmrg}
203105b261ecSmrg
203205b261ecSmrgstatic void
203335c4bbdfSmrgSetDefaultSysMenu (char *menuname, int pos)
203405b261ecSmrg{
203535c4bbdfSmrg  strncpy (pref.defaultSysMenuName, menuname, MENU_MAX);
203605b261ecSmrg  pref.defaultSysMenuName[MENU_MAX] = 0;
203705b261ecSmrg  pref.defaultSysMenuPos = pos;
203805b261ecSmrg}
203905b261ecSmrg
204005b261ecSmrgstatic void
204105b261ecSmrgOpenMenu (char *menuname)
204205b261ecSmrg{
204305b261ecSmrg  if (menu.menuItem) free(menu.menuItem);
204405b261ecSmrg  menu.menuItem = NULL;
204505b261ecSmrg  strncpy(menu.menuName, menuname, MENU_MAX);
204605b261ecSmrg  menu.menuName[MENU_MAX] = 0;
204705b261ecSmrg  menu.menuItems = 0;
204805b261ecSmrg}
204905b261ecSmrg
205005b261ecSmrgstatic void
205135c4bbdfSmrgAddMenuLine (const char *text, MENUCOMMANDTYPE cmd, const char *param)
205205b261ecSmrg{
205305b261ecSmrg  if (menu.menuItem==NULL)
205435c4bbdfSmrg    menu.menuItem = malloc(sizeof(MENUITEM));
205505b261ecSmrg  else
205635c4bbdfSmrg    menu.menuItem = realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1));
205705b261ecSmrg
205805b261ecSmrg  strncpy (menu.menuItem[menu.menuItems].text, text, MENU_MAX);
205905b261ecSmrg  menu.menuItem[menu.menuItems].text[MENU_MAX] = 0;
206005b261ecSmrg
206105b261ecSmrg  menu.menuItem[menu.menuItems].cmd = cmd;
206205b261ecSmrg
206305b261ecSmrg  strncpy(menu.menuItem[menu.menuItems].param, param, PARAM_MAX);
206405b261ecSmrg  menu.menuItem[menu.menuItems].param[PARAM_MAX] = 0;
206505b261ecSmrg
206605b261ecSmrg  menu.menuItem[menu.menuItems].commandID = 0;
206705b261ecSmrg
206805b261ecSmrg  menu.menuItems++;
206905b261ecSmrg}
207005b261ecSmrg
207105b261ecSmrgstatic void
207205b261ecSmrgCloseMenu (void)
207305b261ecSmrg{
207405b261ecSmrg  if (menu.menuItem==NULL || menu.menuItems==0)
207505b261ecSmrg    {
207605b261ecSmrg      ErrorF("LoadPreferences: Empty menu detected\n");
207705b261ecSmrg      return;
207805b261ecSmrg    }
207905b261ecSmrg
208005b261ecSmrg  if (pref.menuItems)
208135c4bbdfSmrg    pref.menu = realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED));
208205b261ecSmrg  else
208335c4bbdfSmrg    pref.menu = malloc (sizeof(MENUPARSED));
208405b261ecSmrg
208505b261ecSmrg  memcpy (pref.menu+pref.menuItems, &menu, sizeof(MENUPARSED));
208605b261ecSmrg  pref.menuItems++;
208705b261ecSmrg
208805b261ecSmrg  memset (&menu, 0, sizeof(MENUPARSED));
208905b261ecSmrg}
209005b261ecSmrg
209105b261ecSmrgstatic void
209205b261ecSmrgOpenIcons (void)
209305b261ecSmrg{
209405b261ecSmrg  if (pref.icon != NULL) {
209505b261ecSmrg    ErrorF("LoadPreferences: Redefining icon mappings\n");
209605b261ecSmrg    free(pref.icon);
209705b261ecSmrg    pref.icon = NULL;
209805b261ecSmrg  }
209905b261ecSmrg  pref.iconItems = 0;
210005b261ecSmrg}
210105b261ecSmrg
210205b261ecSmrgstatic void
210305b261ecSmrgAddIconLine (char *matchstr, char *iconfile)
210405b261ecSmrg{
210505b261ecSmrg  if (pref.icon==NULL)
210635c4bbdfSmrg    pref.icon = malloc(sizeof(ICONITEM));
210705b261ecSmrg  else
210835c4bbdfSmrg    pref.icon = realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1));
210905b261ecSmrg
211005b261ecSmrg  strncpy(pref.icon[pref.iconItems].match, matchstr, MENU_MAX);
211105b261ecSmrg  pref.icon[pref.iconItems].match[MENU_MAX] = 0;
211205b261ecSmrg
211305b261ecSmrg  strncpy(pref.icon[pref.iconItems].iconFile, iconfile, PATH_MAX+NAME_MAX+1);
211405b261ecSmrg  pref.icon[pref.iconItems].iconFile[PATH_MAX+NAME_MAX+1] = 0;
211505b261ecSmrg
211605b261ecSmrg  pref.icon[pref.iconItems].hicon = 0;
211705b261ecSmrg
211805b261ecSmrg  pref.iconItems++;
211905b261ecSmrg}
212005b261ecSmrg
212105b261ecSmrgstatic void
212205b261ecSmrgCloseIcons (void)
212305b261ecSmrg{
212405b261ecSmrg}
212505b261ecSmrg
21266747b715Smrgstatic void
21276747b715SmrgOpenStyles (void)
21286747b715Smrg{
21296747b715Smrg  if (pref.style != NULL) {
21306747b715Smrg    ErrorF("LoadPreferences: Redefining window style\n");
21316747b715Smrg    free(pref.style);
21326747b715Smrg    pref.style = NULL;
21336747b715Smrg  }
21346747b715Smrg  pref.styleItems = 0;
21356747b715Smrg}
21366747b715Smrg
21376747b715Smrgstatic void
21386747b715SmrgAddStyleLine (char *matchstr, unsigned long style)
21396747b715Smrg{
21406747b715Smrg  if (pref.style==NULL)
214135c4bbdfSmrg    pref.style = malloc(sizeof(STYLEITEM));
21426747b715Smrg  else
214335c4bbdfSmrg    pref.style = realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1));
21446747b715Smrg
21456747b715Smrg  strncpy(pref.style[pref.styleItems].match, matchstr, MENU_MAX);
21466747b715Smrg  pref.style[pref.styleItems].match[MENU_MAX] = 0;
21476747b715Smrg
21486747b715Smrg  pref.style[pref.styleItems].type = style;
21496747b715Smrg
21506747b715Smrg  pref.styleItems++;
21516747b715Smrg}
21526747b715Smrg
21536747b715Smrgstatic void
21546747b715SmrgCloseStyles (void)
21556747b715Smrg{
21566747b715Smrg}
21576747b715Smrg
215805b261ecSmrgstatic void
215905b261ecSmrgOpenSysMenu (void)
216005b261ecSmrg{
216105b261ecSmrg  if (pref.sysMenu != NULL) {
216205b261ecSmrg    ErrorF("LoadPreferences: Redefining system menu\n");
216305b261ecSmrg    free(pref.sysMenu);
216405b261ecSmrg    pref.sysMenu = NULL;
216505b261ecSmrg  }
216605b261ecSmrg  pref.sysMenuItems = 0;
216705b261ecSmrg}
216805b261ecSmrg
216905b261ecSmrgstatic void
217005b261ecSmrgAddSysMenuLine (char *matchstr, char *menuname, int pos)
217105b261ecSmrg{
217205b261ecSmrg  if (pref.sysMenu==NULL)
217335c4bbdfSmrg    pref.sysMenu = malloc(sizeof(SYSMENUITEM));
217405b261ecSmrg  else
217535c4bbdfSmrg    pref.sysMenu = realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1));
217605b261ecSmrg
217705b261ecSmrg  strncpy (pref.sysMenu[pref.sysMenuItems].match, matchstr, MENU_MAX);
217805b261ecSmrg  pref.sysMenu[pref.sysMenuItems].match[MENU_MAX] = 0;
217905b261ecSmrg
218005b261ecSmrg  strncpy (pref.sysMenu[pref.sysMenuItems].menuName, menuname, MENU_MAX);
218105b261ecSmrg  pref.sysMenu[pref.sysMenuItems].menuName[MENU_MAX] = 0;
218205b261ecSmrg
218305b261ecSmrg  pref.sysMenu[pref.sysMenuItems].menuPos = pos;
218405b261ecSmrg
218505b261ecSmrg  pref.sysMenuItems++;
218605b261ecSmrg}
218705b261ecSmrg
218805b261ecSmrgstatic void
218905b261ecSmrgCloseSysMenu (void)
219005b261ecSmrg{
219105b261ecSmrg}
219205b261ecSmrg
2193