Home | History | Annotate | Download | only in xkbcomp
      1 /* A Bison parser, made by GNU Bison 3.0.2.  */
      2 
      3 /* Bison implementation for Yacc-like parsers in C
      4 
      5    Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
      6 
      7    This program is free software: you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation, either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     19 
     20 /* As a special exception, you may create a larger work that contains
     21    part or all of the Bison parser skeleton and distribute that work
     22    under terms of your choice, so long as that work isn't itself a
     23    parser generator using the skeleton or a modified version thereof
     24    as a parser skeleton.  Alternatively, if you modify or redistribute
     25    the parser skeleton itself, you may (at your option) remove this
     26    special exception, which will cause the skeleton and the resulting
     27    Bison output files to be licensed under the GNU General Public
     28    License without this special exception.
     29 
     30    This special exception was added by the Free Software Foundation in
     31    version 2.2 of Bison.  */
     32 
     33 /* C LALR(1) parser skeleton written by Richard Stallman, by
     34    simplifying the original so-called "semantic" parser.  */
     35 
     36 /* All symbols defined below should begin with yy or YY, to avoid
     37    infringing on user name space.  This should be done even for local
     38    variables, as they might otherwise be expanded by user macros.
     39    There are some unavoidable exceptions within include files to
     40    define necessary library symbols; they are noted "INFRINGES ON
     41    USER NAME SPACE" below.  */
     42 
     43 /* Identify Bison output.  */
     44 #define YYBISON 1
     45 
     46 /* Bison version.  */
     47 #define YYBISON_VERSION "3.0.2"
     48 
     49 /* Skeleton name.  */
     50 #define YYSKELETON_NAME "yacc.c"
     51 
     52 /* Pure parsers.  */
     53 #define YYPURE 1
     54 
     55 /* Push parsers.  */
     56 #define YYPUSH 0
     57 
     58 /* Pull parsers.  */
     59 #define YYPULL 1
     60 
     61 
     62 /* Substitute the variable and function names.  */
     63 #define yyparse         _xkbcommon_parse
     64 #define yylex           _xkbcommon_lex
     65 #define yyerror         _xkbcommon_error
     66 #define yydebug         _xkbcommon_debug
     67 #define yynerrs         _xkbcommon_nerrs
     68 
     69 
     70 /* Copy the first part of user declarations.  */
     71 #line 33 "src/xkbcomp/parser.y" /* yacc.c:339  */
     72 
     73 #include "xkbcomp-priv.h"
     74 #include "ast-build.h"
     75 #include "parser-priv.h"
     76 #include "scanner-utils.h"
     77 
     78 struct parser_param {
     79     struct xkb_context *ctx;
     80     struct scanner *scanner;
     81     XkbFile *rtrn;
     82     bool more_maps;
     83 };
     84 
     85 #define parser_err(param, fmt, ...) \
     86     scanner_err((param)->scanner, fmt, ##__VA_ARGS__)
     87 
     88 #define parser_warn(param, fmt, ...) \
     89     scanner_warn((param)->scanner, fmt, ##__VA_ARGS__)
     90 
     91 static void
     92 _xkbcommon_error(struct parser_param *param, const char *msg)
     93 {
     94     parser_err(param, "%s", msg);
     95 }
     96 
     97 static bool
     98 resolve_keysym(const char *name, xkb_keysym_t *sym_rtrn)
     99 {
    100     xkb_keysym_t sym;
    101 
    102     if (!name || istreq(name, "any") || istreq(name, "nosymbol")) {
    103         *sym_rtrn = XKB_KEY_NoSymbol;
    104         return true;
    105     }
    106 
    107     if (istreq(name, "none") || istreq(name, "voidsymbol")) {
    108         *sym_rtrn = XKB_KEY_VoidSymbol;
    109         return true;
    110     }
    111 
    112     sym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
    113     if (sym != XKB_KEY_NoSymbol) {
    114         *sym_rtrn = sym;
    115         return true;
    116     }
    117 
    118     return false;
    119 }
    120 
    121 #define param_scanner param->scanner
    122 
    123 #line 124 "src/xkbcomp/parser.c" /* yacc.c:339  */
    124 
    125 # ifndef YY_NULLPTR
    126 #  if defined __cplusplus && 201103L <= __cplusplus
    127 #   define YY_NULLPTR nullptr
    128 #  else
    129 #   define YY_NULLPTR 0
    130 #  endif
    131 # endif
    132 
    133 /* Enabling verbose error messages.  */
    134 #ifdef YYERROR_VERBOSE
    135 # undef YYERROR_VERBOSE
    136 # define YYERROR_VERBOSE 1
    137 #else
    138 # define YYERROR_VERBOSE 0
    139 #endif
    140 
    141 /* In a future release of Bison, this section will be replaced
    142    by #include "y.tab.h".  */
    143 #ifndef YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED
    144 # define YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED
    145 /* Debug traces.  */
    146 #ifndef YYDEBUG
    147 # define YYDEBUG 0
    148 #endif
    149 #if YYDEBUG
    150 extern int _xkbcommon_debug;
    151 #endif
    152 
    153 /* Token type.  */
    154 #ifndef YYTOKENTYPE
    155 # define YYTOKENTYPE
    156   enum yytokentype
    157   {
    158     END_OF_FILE = 0,
    159     ERROR_TOK = 255,
    160     XKB_KEYMAP = 1,
    161     XKB_KEYCODES = 2,
    162     XKB_TYPES = 3,
    163     XKB_SYMBOLS = 4,
    164     XKB_COMPATMAP = 5,
    165     XKB_GEOMETRY = 6,
    166     XKB_SEMANTICS = 7,
    167     XKB_LAYOUT = 8,
    168     INCLUDE = 10,
    169     OVERRIDE = 11,
    170     AUGMENT = 12,
    171     REPLACE = 13,
    172     ALTERNATE = 14,
    173     VIRTUAL_MODS = 20,
    174     TYPE = 21,
    175     INTERPRET = 22,
    176     ACTION_TOK = 23,
    177     KEY = 24,
    178     ALIAS = 25,
    179     GROUP = 26,
    180     MODIFIER_MAP = 27,
    181     INDICATOR = 28,
    182     SHAPE = 29,
    183     KEYS = 30,
    184     ROW = 31,
    185     SECTION = 32,
    186     OVERLAY = 33,
    187     TEXT = 34,
    188     OUTLINE = 35,
    189     SOLID = 36,
    190     LOGO = 37,
    191     VIRTUAL = 38,
    192     EQUALS = 40,
    193     PLUS = 41,
    194     MINUS = 42,
    195     DIVIDE = 43,
    196     TIMES = 44,
    197     OBRACE = 45,
    198     CBRACE = 46,
    199     OPAREN = 47,
    200     CPAREN = 48,
    201     OBRACKET = 49,
    202     CBRACKET = 50,
    203     DOT = 51,
    204     COMMA = 52,
    205     SEMI = 53,
    206     EXCLAM = 54,
    207     INVERT = 55,
    208     STRING = 60,
    209     INTEGER = 61,
    210     FLOAT = 62,
    211     IDENT = 63,
    212     KEYNAME = 64,
    213     PARTIAL = 70,
    214     DEFAULT = 71,
    215     HIDDEN = 72,
    216     ALPHANUMERIC_KEYS = 73,
    217     MODIFIER_KEYS = 74,
    218     KEYPAD_KEYS = 75,
    219     FUNCTION_KEYS = 76,
    220     ALTERNATE_GROUP = 77
    221   };
    222 #endif
    223 /* Tokens.  */
    224 #define END_OF_FILE 0
    225 #define ERROR_TOK 255
    226 #define XKB_KEYMAP 1
    227 #define XKB_KEYCODES 2
    228 #define XKB_TYPES 3
    229 #define XKB_SYMBOLS 4
    230 #define XKB_COMPATMAP 5
    231 #define XKB_GEOMETRY 6
    232 #define XKB_SEMANTICS 7
    233 #define XKB_LAYOUT 8
    234 #define INCLUDE 10
    235 #define OVERRIDE 11
    236 #define AUGMENT 12
    237 #define REPLACE 13
    238 #define ALTERNATE 14
    239 #define VIRTUAL_MODS 20
    240 #define TYPE 21
    241 #define INTERPRET 22
    242 #define ACTION_TOK 23
    243 #define KEY 24
    244 #define ALIAS 25
    245 #define GROUP 26
    246 #define MODIFIER_MAP 27
    247 #define INDICATOR 28
    248 #define SHAPE 29
    249 #define KEYS 30
    250 #define ROW 31
    251 #define SECTION 32
    252 #define OVERLAY 33
    253 #define TEXT 34
    254 #define OUTLINE 35
    255 #define SOLID 36
    256 #define LOGO 37
    257 #define VIRTUAL 38
    258 #define EQUALS 40
    259 #define PLUS 41
    260 #define MINUS 42
    261 #define DIVIDE 43
    262 #define TIMES 44
    263 #define OBRACE 45
    264 #define CBRACE 46
    265 #define OPAREN 47
    266 #define CPAREN 48
    267 #define OBRACKET 49
    268 #define CBRACKET 50
    269 #define DOT 51
    270 #define COMMA 52
    271 #define SEMI 53
    272 #define EXCLAM 54
    273 #define INVERT 55
    274 #define STRING 60
    275 #define INTEGER 61
    276 #define FLOAT 62
    277 #define IDENT 63
    278 #define KEYNAME 64
    279 #define PARTIAL 70
    280 #define DEFAULT 71
    281 #define HIDDEN 72
    282 #define ALPHANUMERIC_KEYS 73
    283 #define MODIFIER_KEYS 74
    284 #define KEYPAD_KEYS 75
    285 #define FUNCTION_KEYS 76
    286 #define ALTERNATE_GROUP 77
    287 
    288 /* Value type.  */
    289 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    290 typedef union YYSTYPE YYSTYPE;
    291 union YYSTYPE
    292 {
    293 #line 162 "src/xkbcomp/parser.y" /* yacc.c:355  */
    294 
    295         int              ival;
    296         int64_t          num;
    297         enum xkb_file_type file_type;
    298         char            *str;
    299         xkb_atom_t      atom;
    300         enum merge_mode merge;
    301         enum xkb_map_flags mapFlags;
    302         xkb_keysym_t    keysym;
    303         ParseCommon     *any;
    304         ExprDef         *expr;
    305         VarDef          *var;
    306         VModDef         *vmod;
    307         InterpDef       *interp;
    308         KeyTypeDef      *keyType;
    309         SymbolsDef      *syms;
    310         ModMapDef       *modMask;
    311         GroupCompatDef  *groupCompat;
    312         LedMapDef       *ledMap;
    313         LedNameDef      *ledName;
    314         KeycodeDef      *keyCode;
    315         KeyAliasDef     *keyAlias;
    316         void            *geom;
    317         XkbFile         *file;
    318 
    319 #line 320 "src/xkbcomp/parser.c" /* yacc.c:355  */
    320 };
    321 # define YYSTYPE_IS_TRIVIAL 1
    322 # define YYSTYPE_IS_DECLARED 1
    323 #endif
    324 
    325 
    326 
    327 int _xkbcommon_parse (struct parser_param *param);
    328 
    329 #endif /* !YY__XKBCOMMON_SRC_XKBCOMP_PARSER_H_INCLUDED  */
    330 
    331 /* Copy the second part of user declarations.  */
    332 
    333 #line 334 "src/xkbcomp/parser.c" /* yacc.c:358  */
    334 
    335 #ifdef short
    336 # undef short
    337 #endif
    338 
    339 #ifdef YYTYPE_UINT8
    340 typedef YYTYPE_UINT8 yytype_uint8;
    341 #else
    342 typedef unsigned char yytype_uint8;
    343 #endif
    344 
    345 #ifdef YYTYPE_INT8
    346 typedef YYTYPE_INT8 yytype_int8;
    347 #else
    348 typedef signed char yytype_int8;
    349 #endif
    350 
    351 #ifdef YYTYPE_UINT16
    352 typedef YYTYPE_UINT16 yytype_uint16;
    353 #else
    354 typedef unsigned short int yytype_uint16;
    355 #endif
    356 
    357 #ifdef YYTYPE_INT16
    358 typedef YYTYPE_INT16 yytype_int16;
    359 #else
    360 typedef short int yytype_int16;
    361 #endif
    362 
    363 #ifndef YYSIZE_T
    364 # ifdef __SIZE_TYPE__
    365 #  define YYSIZE_T __SIZE_TYPE__
    366 # elif defined size_t
    367 #  define YYSIZE_T size_t
    368 # elif ! defined YYSIZE_T
    369 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    370 #  define YYSIZE_T size_t
    371 # else
    372 #  define YYSIZE_T unsigned int
    373 # endif
    374 #endif
    375 
    376 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
    377 
    378 #ifndef YY_
    379 # if defined YYENABLE_NLS && YYENABLE_NLS
    380 #  if ENABLE_NLS
    381 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    382 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    383 #  endif
    384 # endif
    385 # ifndef YY_
    386 #  define YY_(Msgid) Msgid
    387 # endif
    388 #endif
    389 
    390 #ifndef YY_ATTRIBUTE
    391 # if (defined __GNUC__                                               \
    392       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
    393      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
    394 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
    395 # else
    396 #  define YY_ATTRIBUTE(Spec) /* empty */
    397 # endif
    398 #endif
    399 
    400 #ifndef YY_ATTRIBUTE_PURE
    401 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
    402 #endif
    403 
    404 #ifndef YY_ATTRIBUTE_UNUSED
    405 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
    406 #endif
    407 
    408 #if !defined _Noreturn \
    409      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
    410 # if defined _MSC_VER && 1200 <= _MSC_VER
    411 #  define _Noreturn __declspec (noreturn)
    412 # else
    413 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
    414 # endif
    415 #endif
    416 
    417 /* Suppress unused-variable warnings by "using" E.  */
    418 #if ! defined lint || defined __GNUC__
    419 # define YYUSE(E) ((void) (E))
    420 #else
    421 # define YYUSE(E) /* empty */
    422 #endif
    423 
    424 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
    425 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
    426 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
    427     _Pragma ("GCC diagnostic push") \
    428     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
    429     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
    430 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
    431     _Pragma ("GCC diagnostic pop")
    432 #else
    433 # define YY_INITIAL_VALUE(Value) Value
    434 #endif
    435 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    436 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    437 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
    438 #endif
    439 #ifndef YY_INITIAL_VALUE
    440 # define YY_INITIAL_VALUE(Value) /* Nothing. */
    441 #endif
    442 
    443 
    444 #if ! defined yyoverflow || YYERROR_VERBOSE
    445 
    446 /* The parser invokes alloca or malloc; define the necessary symbols.  */
    447 
    448 # ifdef YYSTACK_USE_ALLOCA
    449 #  if YYSTACK_USE_ALLOCA
    450 #   ifdef __GNUC__
    451 #    define YYSTACK_ALLOC __builtin_alloca
    452 #   elif defined __BUILTIN_VA_ARG_INCR
    453 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
    454 #   elif defined _AIX
    455 #    define YYSTACK_ALLOC __alloca
    456 #   elif defined _MSC_VER
    457 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
    458 #    define alloca _alloca
    459 #   else
    460 #    define YYSTACK_ALLOC alloca
    461 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    462 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    463       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    464 #     ifndef EXIT_SUCCESS
    465 #      define EXIT_SUCCESS 0
    466 #     endif
    467 #    endif
    468 #   endif
    469 #  endif
    470 # endif
    471 
    472 # ifdef YYSTACK_ALLOC
    473    /* Pacify GCC's 'empty if-body' warning.  */
    474 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    475 #  ifndef YYSTACK_ALLOC_MAXIMUM
    476     /* The OS might guarantee only one guard page at the bottom of the stack,
    477        and a page size can be as small as 4096 bytes.  So we cannot safely
    478        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
    479        to allow for a few compiler-allocated temporary stack slots.  */
    480 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
    481 #  endif
    482 # else
    483 #  define YYSTACK_ALLOC YYMALLOC
    484 #  define YYSTACK_FREE YYFREE
    485 #  ifndef YYSTACK_ALLOC_MAXIMUM
    486 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
    487 #  endif
    488 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    489        && ! ((defined YYMALLOC || defined malloc) \
    490              && (defined YYFREE || defined free)))
    491 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    492 #   ifndef EXIT_SUCCESS
    493 #    define EXIT_SUCCESS 0
    494 #   endif
    495 #  endif
    496 #  ifndef YYMALLOC
    497 #   define YYMALLOC malloc
    498 #   if ! defined malloc && ! defined EXIT_SUCCESS
    499 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    500 #   endif
    501 #  endif
    502 #  ifndef YYFREE
    503 #   define YYFREE free
    504 #   if ! defined free && ! defined EXIT_SUCCESS
    505 void free (void *); /* INFRINGES ON USER NAME SPACE */
    506 #   endif
    507 #  endif
    508 # endif
    509 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
    510 
    511 
    512 #if (! defined yyoverflow \
    513      && (! defined __cplusplus \
    514          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    515 
    516 /* A type that is properly aligned for any stack member.  */
    517 union yyalloc
    518 {
    519   yytype_int16 yyss_alloc;
    520   YYSTYPE yyvs_alloc;
    521 };
    522 
    523 /* The size of the maximum gap between one aligned stack and the next.  */
    524 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
    525 
    526 /* The size of an array large to enough to hold all stacks, each with
    527    N elements.  */
    528 # define YYSTACK_BYTES(N) \
    529      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
    530       + YYSTACK_GAP_MAXIMUM)
    531 
    532 # define YYCOPY_NEEDED 1
    533 
    534 /* Relocate STACK from its old location to the new one.  The
    535    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    536    elements in the stack, and YYPTR gives the new location of the
    537    stack.  Advance YYPTR to a properly aligned location for the next
    538    stack.  */
    539 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    540     do                                                                  \
    541       {                                                                 \
    542         YYSIZE_T yynewbytes;                                            \
    543         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    544         Stack = &yyptr->Stack_alloc;                                    \
    545         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
    546         yyptr += yynewbytes / sizeof (*yyptr);                          \
    547       }                                                                 \
    548     while (0)
    549 
    550 #endif
    551 
    552 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    553 /* Copy COUNT objects from SRC to DST.  The source and destination do
    554    not overlap.  */
    555 # ifndef YYCOPY
    556 #  if defined __GNUC__ && 1 < __GNUC__
    557 #   define YYCOPY(Dst, Src, Count) \
    558       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
    559 #  else
    560 #   define YYCOPY(Dst, Src, Count)              \
    561       do                                        \
    562         {                                       \
    563           YYSIZE_T yyi;                         \
    564           for (yyi = 0; yyi < (Count); yyi++)   \
    565             (Dst)[yyi] = (Src)[yyi];            \
    566         }                                       \
    567       while (0)
    568 #  endif
    569 # endif
    570 #endif /* !YYCOPY_NEEDED */
    571 
    572 /* YYFINAL -- State number of the termination state.  */
    573 #define YYFINAL  16
    574 /* YYLAST -- Last index in YYTABLE.  */
    575 #define YYLAST   735
    576 
    577 /* YYNTOKENS -- Number of terminals.  */
    578 #define YYNTOKENS  65
    579 /* YYNNTS -- Number of nonterminals.  */
    580 #define YYNNTS  72
    581 /* YYNRULES -- Number of rules.  */
    582 #define YYNRULES  184
    583 /* YYNSTATES -- Number of states.  */
    584 #define YYNSTATES  334
    585 
    586 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    587    by yylex, with out-of-bounds checking.  */
    588 #define YYUNDEFTOK  2
    589 #define YYMAXUTOK   257
    590 
    591 #define YYTRANSLATE(YYX)                                                \
    592   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
    593 
    594 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    595    as returned by yylex, without out-of-bounds checking.  */
    596 static const yytype_uint8 yytranslate[] =
    597 {
    598        0,     4,     5,     6,     7,     8,     9,    10,    11,     2,
    599       12,    13,    14,    15,    16,     2,     2,     2,     2,     2,
    600       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    601       27,    28,    29,    30,    31,    32,    33,    34,    35,     2,
    602       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
    603       46,    47,    48,    49,    50,    51,     2,     2,     2,     2,
    604       52,    53,    54,    55,    56,     2,     2,     2,     2,     2,
    605       57,    58,    59,    60,    61,    62,    63,    64,     2,     2,
    606        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    607        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    608        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    609        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    610        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    611        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    612        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    613        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    614        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    615        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    616        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    617        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    618        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    619        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    620        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    621        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    623        2,     2,     2,     2,     2,     3,     1,     2
    624 };
    625 
    626 #if YYDEBUG
    627   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    628 static const yytype_uint16 yyrline[] =
    629 {
    630        0,   241,   241,   243,   245,   249,   255,   256,   257,   260,
    631      268,   272,   287,   288,   289,   290,   291,   294,   295,   298,
    632      299,   302,   303,   304,   305,   306,   307,   308,   309,   312,
    633      314,   317,   322,   327,   332,   337,   342,   347,   352,   357,
    634      362,   367,   372,   373,   374,   375,   382,   384,   386,   390,
    635      394,   398,   402,   405,   409,   411,   415,   421,   423,   427,
    636      430,   434,   440,   446,   449,   451,   454,   455,   456,   457,
    637      458,   461,   463,   467,   471,   475,   479,   481,   485,   487,
    638      491,   495,   496,   499,   501,   503,   505,   507,   511,   512,
    639      515,   516,   520,   521,   524,   526,   530,   534,   535,   538,
    640      541,   543,   547,   549,   551,   555,   557,   561,   565,   569,
    641      570,   571,   572,   575,   576,   579,   581,   583,   585,   587,
    642      589,   591,   593,   595,   597,   599,   603,   604,   607,   608,
    643      609,   610,   611,   621,   622,   625,   628,   632,   634,   636,
    644      638,   640,   642,   646,   648,   650,   652,   654,   656,   658,
    645      660,   664,   667,   671,   675,   677,   679,   681,   685,   687,
    646      689,   691,   695,   696,   699,   701,   703,   705,   709,   713,
    647      719,   720,   740,   741,   744,   745,   748,   751,   754,   757,
    648      758,   761,   764,   765,   768
    649 };
    650 #endif
    651 
    652 #if YYDEBUG || YYERROR_VERBOSE || 0
    653 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    654    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
    655 static const char *const yytname[] =
    656 {
    657   "END_OF_FILE", "error", "$undefined", "ERROR_TOK", "XKB_KEYMAP",
    658   "XKB_KEYCODES", "XKB_TYPES", "XKB_SYMBOLS", "XKB_COMPATMAP",
    659   "XKB_GEOMETRY", "XKB_SEMANTICS", "XKB_LAYOUT", "INCLUDE", "OVERRIDE",
    660   "AUGMENT", "REPLACE", "ALTERNATE", "VIRTUAL_MODS", "TYPE", "INTERPRET",
    661   "ACTION_TOK", "KEY", "ALIAS", "GROUP", "MODIFIER_MAP", "INDICATOR",
    662   "SHAPE", "KEYS", "ROW", "SECTION", "OVERLAY", "TEXT", "OUTLINE", "SOLID",
    663   "LOGO", "VIRTUAL", "EQUALS", "PLUS", "MINUS", "DIVIDE", "TIMES",
    664   "OBRACE", "CBRACE", "OPAREN", "CPAREN", "OBRACKET", "CBRACKET", "DOT",
    665   "COMMA", "SEMI", "EXCLAM", "INVERT", "STRING", "INTEGER", "FLOAT",
    666   "IDENT", "KEYNAME", "PARTIAL", "DEFAULT", "HIDDEN", "ALPHANUMERIC_KEYS",
    667   "MODIFIER_KEYS", "KEYPAD_KEYS", "FUNCTION_KEYS", "ALTERNATE_GROUP",
    668   "$accept", "XkbFile", "XkbCompositeMap", "XkbCompositeType",
    669   "XkbMapConfigList", "XkbMapConfig", "FileType", "OptFlags", "Flags",
    670   "Flag", "DeclList", "Decl", "VarDecl", "KeyNameDecl", "KeyAliasDecl",
    671   "VModDecl", "VModDefList", "VModDef", "InterpretDecl", "InterpretMatch",
    672   "VarDeclList", "KeyTypeDecl", "SymbolsDecl", "SymbolsBody",
    673   "SymbolsVarDecl", "ArrayInit", "GroupCompatDecl", "ModMapDecl",
    674   "LedMapDecl", "LedNameDecl", "ShapeDecl", "SectionDecl", "SectionBody",
    675   "SectionBodyItem", "RowBody", "RowBodyItem", "Keys", "Key",
    676   "OverlayDecl", "OverlayKeyList", "OverlayKey", "OutlineList",
    677   "OutlineInList", "CoordList", "Coord", "DoodadDecl", "DoodadType",
    678   "FieldSpec", "Element", "OptMergeMode", "MergeMode", "OptExprList",
    679   "ExprList", "Expr", "Term", "ActionList", "Action", "Lhs", "Terminal",
    680   "OptKeySymList", "KeySymList", "KeySyms", "KeySym", "SignedNumber",
    681   "Number", "Float", "Integer", "KeyCode", "Ident", "String", "OptMapName",
    682   "MapName", YY_NULLPTR
    683 };
    684 #endif
    685 
    686 # ifdef YYPRINT
    687 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    688    (internal) symbol number NUM (which must be that of a token).  */
    689 static const yytype_uint16 yytoknum[] =
    690 {
    691        0,   256,   257,   255,     1,     2,     3,     4,     5,     6,
    692        7,     8,    10,    11,    12,    13,    14,    20,    21,    22,
    693       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
    694       33,    34,    35,    36,    37,    38,    40,    41,    42,    43,
    695       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    696       54,    55,    60,    61,    62,    63,    64,    70,    71,    72,
    697       73,    74,    75,    76,    77
    698 };
    699 # endif
    700 
    701 #define YYPACT_NINF -182
    702 
    703 #define yypact_value_is_default(Yystate) \
    704   (!!((Yystate) == (-182)))
    705 
    706 #define YYTABLE_NINF -180
    707 
    708 #define yytable_value_is_error(Yytable_value) \
    709   0
    710 
    711   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    712      STATE-NUM.  */
    713 static const yytype_int16 yypact[] =
    714 {
    715      176,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
    716        6,  -182,  -182,   271,   227,  -182,  -182,  -182,  -182,  -182,
    717     -182,  -182,  -182,  -182,  -182,   -38,   -38,  -182,  -182,   -24,
    718     -182,    33,   227,  -182,   210,  -182,   353,    44,     5,  -182,
    719     -182,  -182,  -182,  -182,  -182,    32,  -182,    13,    41,  -182,
    720     -182,   -48,    55,    11,  -182,    79,    87,    58,   -48,    -2,
    721       55,  -182,    55,    72,  -182,  -182,  -182,   107,   -48,  -182,
    722      110,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,  -182,
    723     -182,  -182,  -182,  -182,  -182,  -182,    55,   -18,  -182,   127,
    724      121,  -182,    66,  -182,   138,  -182,   136,  -182,  -182,  -182,
    725      144,   147,  -182,   152,   180,   182,   178,   184,   187,   188,
    726      190,    58,   198,   201,   214,   367,   677,   367,  -182,   -48,
    727     -182,   367,   663,   663,   367,   494,   200,   367,   367,   367,
    728      663,    68,   449,   223,  -182,  -182,   212,   663,  -182,  -182,
    729     -182,  -182,  -182,  -182,  -182,  -182,  -182,   367,   367,   367,
    730      367,   367,  -182,  -182,    57,   157,  -182,   224,  -182,  -182,
    731     -182,  -182,  -182,   218,    91,  -182,   333,  -182,   509,   537,
    732      333,   552,   -48,     1,  -182,  -182,   228,    40,   216,   143,
    733       70,   333,   150,   593,   247,   -30,    97,  -182,   105,  -182,
    734      261,    55,   259,    55,  -182,  -182,   408,  -182,  -182,  -182,
    735      367,  -182,   608,  -182,  -182,  -182,   287,  -182,  -182,   367,
    736      367,   367,   367,   367,  -182,   367,   367,  -182,   252,  -182,
    737      253,   264,    24,   269,   272,   163,  -182,   273,   270,  -182,
    738     -182,  -182,   280,   494,   285,  -182,  -182,   283,   367,  -182,
    739      284,   112,     8,  -182,  -182,   294,  -182,   299,   -36,   304,
    740      247,   326,   649,   279,   307,  -182,   204,   316,  -182,   322,
    741      320,   111,   111,  -182,  -182,   333,   211,  -182,  -182,   116,
    742      367,  -182,   677,  -182,    24,  -182,  -182,  -182,   333,  -182,
    743      333,  -182,  -182,  -182,   -30,  -182,  -182,  -182,  -182,   247,
    744      333,   334,  -182,   466,  -182,   318,  -182,  -182,  -182,  -182,
    745     -182,  -182,   339,  -182,  -182,  -182,   343,   120,    14,   345,
    746     -182,   361,   124,  -182,  -182,  -182,  -182,   367,  -182,   131,
    747     -182,  -182,   344,   350,   318,   166,   352,    14,  -182,  -182,
    748     -182,  -182,  -182,  -182
    749 };
    750 
    751   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
    752      Performed when YYTABLE does not specify something else to do.  Zero
    753      means the default is an error.  */
    754 static const yytype_uint8 yydefact[] =
    755 {
    756       18,     4,    21,    22,    23,    24,    25,    26,    27,    28,
    757        0,     2,     3,     0,    17,    20,     1,     6,    12,    13,
    758       15,    14,    16,     7,     8,   183,   183,    19,   184,     0,
    759      182,     0,    18,    30,    18,    10,     0,   127,     0,     9,
    760      128,   130,   129,   131,   132,     0,    29,     0,   126,     5,
    761       11,     0,   117,   116,   115,   118,     0,   119,   120,   121,
    762      122,   123,   124,   125,   110,   111,   112,     0,     0,   179,
    763        0,   180,    31,    34,    35,    32,    33,    36,    37,    39,
    764       38,    40,    41,    42,    43,    44,     0,   154,   114,     0,
    765      113,    45,     0,    53,    54,   181,     0,   170,   177,   169,
    766        0,    58,   171,     0,     0,     0,     0,     0,     0,     0,
    767        0,     0,     0,     0,     0,     0,     0,     0,    47,     0,
    768       51,     0,     0,     0,     0,    65,     0,     0,     0,     0,
    769        0,     0,     0,     0,    48,   178,     0,     0,   117,   116,
    770      118,   119,   120,   121,   122,   124,   125,     0,     0,     0,
    771        0,     0,   176,   161,   154,     0,   142,   147,   149,   160,
    772      159,   113,   158,   155,     0,    52,    55,    60,     0,     0,
    773       57,   163,     0,     0,    64,    70,     0,   113,     0,     0,
    774        0,   136,     0,     0,     0,     0,     0,   101,     0,   106,
    775        0,   121,   123,     0,    84,    86,     0,    82,    87,    85,
    776        0,    49,     0,   144,   147,   143,     0,   145,   146,   134,
    777        0,     0,     0,     0,   156,     0,     0,    46,     0,    59,
    778        0,   170,     0,   169,     0,     0,   152,     0,   162,   167,
    779      166,    69,     0,     0,     0,    50,    73,     0,     0,    76,
    780        0,     0,     0,   175,   174,     0,   173,     0,     0,     0,
    781        0,     0,     0,     0,     0,    81,     0,     0,   150,     0,
    782      133,   138,   139,   137,   140,   141,     0,    61,    56,     0,
    783      134,    72,     0,    71,     0,    62,    63,    67,    66,    74,
    784      135,    75,   102,   172,     0,    78,   100,    79,   105,     0,
    785      104,     0,    91,     0,    89,     0,    80,    77,   108,   148,
    786      157,   168,     0,   151,   165,   164,     0,     0,     0,     0,
    787       88,     0,     0,    98,   153,   107,   103,     0,    94,     0,
    788       93,    83,     0,     0,     0,     0,     0,     0,    99,    96,
    789       97,    95,    90,    92
    790 };
    791 
    792   /* YYPGOTO[NTERM-NUM].  */
    793 static const yytype_int16 yypgoto[] =
    794 {
    795     -182,  -182,  -182,  -182,  -182,   181,  -182,   402,  -182,   389,
    796     -182,  -182,   -35,  -182,  -182,  -182,  -182,   288,  -182,  -182,
    797      -50,  -182,  -182,  -182,   173,   174,  -182,  -182,   362,  -182,
    798     -182,  -182,  -182,   215,  -182,   119,  -182,    86,  -182,  -182,
    799       90,  -182,   167,  -181,   185,   369,  -182,   -27,  -182,  -182,
    800     -182,   154,  -126,    83,    76,  -182,   158,   -31,  -182,  -182,
    801      221,   170,   -52,   161,   205,  -182,   -44,  -182,   -47,   -34,
    802      420,  -182
    803 };
    804 
    805   /* YYDEFGOTO[NTERM-NUM].  */
    806 static const yytype_int16 yydefgoto[] =
    807 {
    808       -1,    10,    11,    25,    34,    12,    26,    36,    14,    15,
    809       37,    46,   167,    73,    74,    75,    92,    93,    76,   100,
    810      168,    77,    78,   173,   174,   175,    79,    80,   195,    82,
    811       83,    84,   196,   197,   293,   294,   319,   320,   198,   312,
    812      313,   186,   187,   188,   189,   199,    86,   154,    88,    47,
    813       48,   259,   260,   181,   156,   225,   226,   157,   158,   227,
    814      228,   229,   230,   245,   246,   159,   160,   136,   161,   162,
    815       29,    30
    816 };
    817 
    818   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
    819      positive, shift that token.  If negative, reduce the rule whose
    820      number is the opposite.  If YYTABLE_NINF, syntax error.  */
    821 static const yytype_int16 yytable[] =
    822 {
    823       90,   101,   180,   241,    94,   184,    16,    69,   242,   102,
    824       71,   106,    72,   105,    28,   107,    89,    32,    96,    69,
    825       87,   112,    71,   243,   244,   108,   109,   115,   110,   116,
    826       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
    827       97,    61,    62,   232,    63,    64,    65,    66,    67,   233,
    828       95,    98,   114,    97,    49,   317,    40,    41,    42,    43,
    829       44,   243,   244,    68,    98,   222,    99,   133,    69,    70,
    830      318,    71,    94,   169,    33,    90,    90,    98,   177,    99,
    831      183,    50,   -68,    90,   190,    90,    45,   202,   -68,   163,
    832       90,    89,    89,    91,   176,    87,    87,   194,    87,    89,
    833      209,    89,   115,    87,   116,    87,    89,    95,   307,   184,
    834       87,    98,   237,   185,   119,   120,   204,   204,   238,   204,
    835      204,    90,    90,    69,  -109,   231,    71,   102,   210,   211,
    836      212,   213,   111,   219,   219,   103,    90,    89,    89,   247,
    837      217,    87,    87,   104,   224,   248,   113,   249,   219,    90,
    838      212,   213,    89,   250,   282,    90,    87,   108,   301,   253,
    839      250,   194,   316,   117,   274,    89,   323,   219,   250,    87,
    840      118,    89,   324,   326,   121,    87,     1,   122,   102,   327,
    841      210,   211,   212,   213,   124,   123,   177,   210,   211,   212,
    842      213,   325,   236,   125,   210,   211,   212,   213,   155,   239,
    843      164,   190,   176,   214,   166,    90,    87,   170,   331,   271,
    844      179,   272,   182,    35,   238,    39,   126,   292,   127,   128,
    845      129,    89,   305,   203,   205,    87,   207,   208,   130,   131,
    846      102,   132,   206,     2,     3,     4,     5,     6,     7,     8,
    847        9,   210,   211,   212,   213,   224,    90,   134,   210,   211,
    848      212,   213,    38,   297,   135,   137,   178,   300,   292,   200,
    849      215,   201,    89,   216,   234,   235,    87,     2,     3,     4,
    850        5,     6,     7,     8,     9,    17,    18,    19,    20,    21,
    851       22,    23,    24,   256,     2,     3,     4,     5,     6,     7,
    852        8,     9,   185,   261,   262,   263,   264,   251,   265,   266,
    853      252,   267,   268,   138,   139,    54,   140,  -124,   141,   142,
    854      143,   144,  -179,    61,   145,   270,   146,   278,   274,   273,
    855      295,   280,   147,   148,   210,   211,   212,   213,   149,   275,
    856      171,   258,   279,   281,   290,   150,   151,    95,    98,   152,
    857       69,   153,   284,    71,   138,   139,    54,   140,   285,   141,
    858      142,   143,   144,   287,    61,   145,   296,   146,    18,    19,
    859       20,    21,    22,   147,   148,   298,   299,   289,   238,   149,
    860      210,   211,   212,   213,   311,   308,   150,   151,    95,    98,
    861      152,    69,   153,   314,    71,   138,   139,    54,   140,   315,
    862      141,   142,   143,   144,   321,    61,   145,   322,   146,   329,
    863      328,   332,    13,    27,   147,   148,   276,   165,   277,    81,
    864      149,   255,   310,   333,   330,   286,    85,   150,   151,    95,
    865       98,   152,    69,   153,   302,    71,   138,   139,    54,   140,
    866      303,   141,   142,   191,   144,   288,   192,   145,   193,    63,
    867       64,    65,    66,   269,   304,   306,    31,   283,     0,     0,
    868      254,     0,     0,     0,     0,     0,     0,     0,    68,     0,
    869        0,     0,     0,    69,     0,     0,    71,   138,   139,    54,
    870      140,     0,   141,   142,   191,   144,     0,   192,   145,   193,
    871       63,    64,    65,    66,   138,   139,    54,   140,     0,   141,
    872      142,   143,   144,   291,    61,   145,     0,   146,     0,    68,
    873        0,     0,     0,     0,    69,     0,     0,    71,   309,     0,
    874        0,     0,   138,   139,    54,   140,    68,   141,   142,   143,
    875      144,    69,    61,   145,    71,   146,     0,   138,   139,    54,
    876      140,     0,   141,   142,   143,   144,     0,    61,   145,   171,
    877      146,     0,     0,     0,   172,     0,     0,     0,     0,    69,
    878        0,   218,    71,     0,     0,   138,   139,    54,   140,    68,
    879      141,   142,   143,   144,    69,    61,   145,    71,   146,     0,
    880      138,   139,    54,   140,     0,   141,   142,   143,   144,   220,
    881       61,   221,     0,   146,     0,     0,     0,    68,     0,     0,
    882        0,     0,    69,   222,     0,    71,     0,     0,     0,     0,
    883        0,     0,     0,     0,     0,    98,     0,   223,     0,     0,
    884       71,   138,   139,    54,   140,     0,   141,   142,   143,   144,
    885        0,    61,   145,     0,   146,     0,   138,   139,    54,   140,
    886        0,   141,   142,   143,   144,   240,    61,   145,     0,   146,
    887        0,     0,     0,    68,     0,     0,     0,     0,    69,     0,
    888      257,    71,     0,     0,     0,     0,     0,     0,    68,     0,
    889        0,     0,     0,    69,     0,     0,    71,   138,   139,    54,
    890      140,     0,   141,   142,   143,   144,   291,    61,   145,     0,
    891      146,   138,   139,    54,   140,     0,   141,   142,   143,   144,
    892        0,    61,   145,     0,   146,   138,   139,    54,   140,    68,
    893      141,   142,   143,   144,    69,    61,   145,    71,   146,     0,
    894        0,     0,     0,    68,     0,     0,     0,     0,    69,     0,
    895        0,    71,     0,     0,     0,     0,     0,     0,     0,     0,
    896        0,     0,    69,     0,     0,    71
    897 };
    898 
    899 static const yytype_int16 yycheck[] =
    900 {
    901       47,    53,   128,   184,    51,    41,     0,    55,    38,    53,
    902       58,    58,    47,    57,    52,    59,    47,    41,    52,    55,
    903       47,    68,    58,    53,    54,    59,    60,    45,    62,    47,
    904       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    905       29,    28,    29,    42,    31,    32,    33,    34,    35,    48,
    906       52,    53,    86,    29,    49,    41,    12,    13,    14,    15,
    907       16,    53,    54,    50,    53,    41,    55,   111,    55,    56,
    908       56,    58,   119,   123,    41,   122,   123,    53,   125,    55,
    909      130,    49,    42,   130,   131,   132,    42,   137,    48,   116,
    910      137,   122,   123,    52,   125,   122,   123,   132,   125,   130,
    911       43,   132,    45,   130,    47,   132,   137,    52,   289,    41,
    912      137,    53,    42,    45,    48,    49,   147,   148,    48,   150,
    913      151,   168,   169,    55,    52,   172,    58,   171,    37,    38,
    914       39,    40,    25,   168,   169,    56,   183,   168,   169,    42,
    915       49,   168,   169,    56,   171,    48,    36,    42,   183,   196,
    916       39,    40,   183,    48,    42,   202,   183,   191,    42,   193,
    917       48,   196,    42,    36,    48,   196,    42,   202,    48,   196,
    918       49,   202,    48,    42,    36,   202,     0,    41,   222,    48,
    919       37,    38,    39,    40,    37,    41,   233,    37,    38,    39,
    920       40,   317,    49,    41,    37,    38,    39,    40,   115,    49,
    921      117,   248,   233,    46,   121,   252,   233,   124,    42,    46,
    922      127,    48,   129,    32,    48,    34,    36,   252,    36,    41,
    923       36,   252,   274,   147,   148,   252,   150,   151,    41,    41,
    924      274,    41,   149,    57,    58,    59,    60,    61,    62,    63,
    925       64,    37,    38,    39,    40,   272,   293,    49,    37,    38,
    926       39,    40,    42,    49,    53,    41,    56,    46,   293,    36,
    927       36,    49,   293,    45,    36,    49,   293,    57,    58,    59,
    928       60,    61,    62,    63,    64,     4,     5,     6,     7,     8,
    929        9,    10,    11,   200,    57,    58,    59,    60,    61,    62,
    930       63,    64,    45,   210,   211,   212,   213,    36,   215,   216,
    931       41,    49,    49,    18,    19,    20,    21,    43,    23,    24,
    932       25,    26,    43,    28,    29,    43,    31,   234,    48,    46,
    933       41,   238,    37,    38,    37,    38,    39,    40,    43,    49,
    934       45,    44,    49,    49,   251,    50,    51,    52,    53,    54,
    935       55,    56,    48,    58,    18,    19,    20,    21,    49,    23,
    936       24,    25,    26,    49,    28,    29,    49,    31,     5,     6,
    937        7,     8,     9,    37,    38,    49,    44,    41,    48,    43,
    938       37,    38,    39,    40,    56,    41,    50,    51,    52,    53,
    939       54,    55,    56,    44,    58,    18,    19,    20,    21,    46,
    940       23,    24,    25,    26,    49,    28,    29,    36,    31,    49,
    941       56,    49,     0,    14,    37,    38,   233,   119,   234,    47,
    942       43,   196,   293,   327,   324,   248,    47,    50,    51,    52,
    943       53,    54,    55,    56,   270,    58,    18,    19,    20,    21,
    944      272,    23,    24,    25,    26,   250,    28,    29,    30,    31,
    945       32,    33,    34,   222,   274,   284,    26,   242,    -1,    -1,
    946       42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
    947       -1,    -1,    -1,    55,    -1,    -1,    58,    18,    19,    20,
    948       21,    -1,    23,    24,    25,    26,    -1,    28,    29,    30,
    949       31,    32,    33,    34,    18,    19,    20,    21,    -1,    23,
    950       24,    25,    26,    27,    28,    29,    -1,    31,    -1,    50,
    951       -1,    -1,    -1,    -1,    55,    -1,    -1,    58,    42,    -1,
    952       -1,    -1,    18,    19,    20,    21,    50,    23,    24,    25,
    953       26,    55,    28,    29,    58,    31,    -1,    18,    19,    20,
    954       21,    -1,    23,    24,    25,    26,    -1,    28,    29,    45,
    955       31,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,
    956       -1,    42,    58,    -1,    -1,    18,    19,    20,    21,    50,
    957       23,    24,    25,    26,    55,    28,    29,    58,    31,    -1,
    958       18,    19,    20,    21,    -1,    23,    24,    25,    26,    42,
    959       28,    29,    -1,    31,    -1,    -1,    -1,    50,    -1,    -1,
    960       -1,    -1,    55,    41,    -1,    58,    -1,    -1,    -1,    -1,
    961       -1,    -1,    -1,    -1,    -1,    53,    -1,    55,    -1,    -1,
    962       58,    18,    19,    20,    21,    -1,    23,    24,    25,    26,
    963       -1,    28,    29,    -1,    31,    -1,    18,    19,    20,    21,
    964       -1,    23,    24,    25,    26,    42,    28,    29,    -1,    31,
    965       -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,    -1,
    966       42,    58,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
    967       -1,    -1,    -1,    55,    -1,    -1,    58,    18,    19,    20,
    968       21,    -1,    23,    24,    25,    26,    27,    28,    29,    -1,
    969       31,    18,    19,    20,    21,    -1,    23,    24,    25,    26,
    970       -1,    28,    29,    -1,    31,    18,    19,    20,    21,    50,
    971       23,    24,    25,    26,    55,    28,    29,    58,    31,    -1,
    972       -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    55,    -1,
    973       -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    974       -1,    -1,    55,    -1,    -1,    58
    975 };
    976 
    977   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    978      symbol of state STATE-NUM.  */
    979 static const yytype_uint8 yystos[] =
    980 {
    981        0,     0,    57,    58,    59,    60,    61,    62,    63,    64,
    982       66,    67,    70,    72,    73,    74,     0,     4,     5,     6,
    983        7,     8,     9,    10,    11,    68,    71,    74,    52,   135,
    984      136,   135,    41,    41,    69,    70,    72,    75,    42,    70,
    985       12,    13,    14,    15,    16,    42,    76,   114,   115,    49,
    986       49,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    987       26,    28,    29,    31,    32,    33,    34,    35,    50,    55,
    988       56,    58,    77,    78,    79,    80,    83,    86,    87,    91,
    989       92,    93,    94,    95,    96,   110,   111,   112,   113,   122,
    990      133,    52,    81,    82,   133,    52,   134,    29,    53,    55,
    991       84,   127,   131,    56,    56,   131,   133,   131,   134,   134,
    992      134,    25,   133,    36,   134,    45,    47,    36,    49,    48,
    993       49,    36,    41,    41,    37,    41,    36,    36,    41,    36,
    994       41,    41,    41,   131,    49,    53,   132,    41,    18,    19,
    995       21,    23,    24,    25,    26,    29,    31,    37,    38,    43,
    996       50,    51,    54,    56,   112,   118,   119,   122,   123,   130,
    997      131,   133,   134,   112,   118,    82,   118,    77,    85,    85,
    998      118,    45,    50,    88,    89,    90,   122,   133,    56,   118,
    999      117,   118,   118,    85,    41,    45,   106,   107,   108,   109,
   1000      133,    25,    28,    30,    77,    93,    97,    98,   103,   110,
   1001       36,    49,    85,   119,   122,   119,   118,   119,   119,    43,
   1002       37,    38,    39,    40,    46,    36,    45,    49,    42,    77,
   1003       42,    29,    41,    55,   112,   120,   121,   124,   125,   126,
   1004      127,   133,    42,    48,    36,    49,    49,    42,    48,    49,
   1005       42,   108,    38,    53,    54,   128,   129,    42,    48,    42,
   1006       48,    36,    41,   134,    42,    98,   118,    42,    44,   116,
   1007      117,   118,   118,   118,   118,   118,   118,    49,    49,   125,
   1008       43,    46,    48,    46,    48,    49,    89,    90,   118,    49,
   1009      118,    49,    42,   129,    48,    49,   107,    49,   109,    41,
   1010      118,    27,    77,    99,   100,    41,    49,    49,    49,    44,
   1011       46,    42,   116,   121,   126,   127,   128,   108,    41,    42,
   1012      100,    56,   104,   105,    44,    46,    42,    41,    56,   101,
   1013      102,    49,    36,    42,    48,   117,    42,    48,    56,    49,
   1014      105,    42,    49,   102
   1015 };
   1016 
   1017   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
   1018 static const yytype_uint8 yyr1[] =
   1019 {
   1020        0,    65,    66,    66,    66,    67,    68,    68,    68,    69,
   1021       69,    70,    71,    71,    71,    71,    71,    72,    72,    73,
   1022       73,    74,    74,    74,    74,    74,    74,    74,    74,    75,
   1023       75,    76,    76,    76,    76,    76,    76,    76,    76,    76,
   1024       76,    76,    76,    76,    76,    76,    77,    77,    77,    78,
   1025       79,    80,    81,    81,    82,    82,    83,    84,    84,    85,
   1026       85,    86,    87,    88,    88,    88,    89,    89,    89,    89,
   1027       89,    90,    90,    91,    92,    93,    94,    94,    95,    95,
   1028       96,    97,    97,    98,    98,    98,    98,    98,    99,    99,
   1029      100,   100,   101,   101,   102,   102,   103,   104,   104,   105,
   1030      106,   106,   107,   107,   107,   108,   108,   109,   110,   111,
   1031      111,   111,   111,   112,   112,   113,   113,   113,   113,   113,
   1032      113,   113,   113,   113,   113,   113,   114,   114,   115,   115,
   1033      115,   115,   115,   116,   116,   117,   117,   118,   118,   118,
   1034      118,   118,   118,   119,   119,   119,   119,   119,   119,   119,
   1035      119,   120,   120,   121,   122,   122,   122,   122,   123,   123,
   1036      123,   123,   124,   124,   125,   125,   125,   125,   126,   127,
   1037      127,   127,   128,   128,   129,   129,   130,   131,   132,   133,
   1038      133,   134,   135,   135,   136
   1039 };
   1040 
   1041   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
   1042 static const yytype_uint8 yyr2[] =
   1043 {
   1044        0,     2,     1,     1,     1,     7,     1,     1,     1,     2,
   1045        1,     7,     1,     1,     1,     1,     1,     1,     0,     2,
   1046        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
   1047        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
   1048        2,     2,     2,     2,     2,     2,     4,     2,     3,     4,
   1049        5,     3,     3,     1,     1,     3,     6,     3,     1,     2,
   1050        1,     6,     6,     3,     1,     0,     3,     3,     1,     2,
   1051        1,     3,     3,     5,     6,     6,     5,     6,     6,     6,
   1052        6,     2,     1,     5,     1,     1,     1,     1,     2,     1,
   1053        5,     1,     3,     1,     1,     3,     6,     3,     1,     3,
   1054        3,     1,     3,     5,     3,     3,     1,     5,     6,     1,
   1055        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
   1056        1,     1,     1,     1,     1,     1,     1,     0,     1,     1,
   1057        1,     1,     1,     1,     0,     3,     1,     3,     3,     3,
   1058        3,     3,     1,     2,     2,     2,     2,     1,     4,     1,
   1059        3,     3,     1,     4,     1,     3,     4,     6,     1,     1,
   1060        1,     1,     1,     0,     3,     3,     1,     1,     3,     1,
   1061        1,     1,     2,     1,     1,     1,     1,     1,     1,     1,
   1062        1,     1,     1,     0,     1
   1063 };
   1064 
   1065 
   1066 #define yyerrok         (yyerrstatus = 0)
   1067 #define yyclearin       (yychar = YYEMPTY)
   1068 #define YYEMPTY         (-2)
   1069 #define YYEOF           0
   1070 
   1071 #define YYACCEPT        goto yyacceptlab
   1072 #define YYABORT         goto yyabortlab
   1073 #define YYERROR         goto yyerrorlab
   1074 
   1075 
   1076 #define YYRECOVERING()  (!!yyerrstatus)
   1077 
   1078 #define YYBACKUP(Token, Value)                                  \
   1079 do                                                              \
   1080   if (yychar == YYEMPTY)                                        \
   1081     {                                                           \
   1082       yychar = (Token);                                         \
   1083       yylval = (Value);                                         \
   1084       YYPOPSTACK (yylen);                                       \
   1085       yystate = *yyssp;                                         \
   1086       goto yybackup;                                            \
   1087     }                                                           \
   1088   else                                                          \
   1089     {                                                           \
   1090       yyerror (param, YY_("syntax error: cannot back up")); \
   1091       YYERROR;                                                  \
   1092     }                                                           \
   1093 while (0)
   1094 
   1095 /* Error token number */
   1096 #define YYTERROR        1
   1097 #define YYERRCODE       256
   1098 
   1099 
   1100 
   1101 /* Enable debugging if requested.  */
   1102 #if YYDEBUG
   1103 
   1104 # ifndef YYFPRINTF
   1105 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
   1106 #  define YYFPRINTF fprintf
   1107 # endif
   1108 
   1109 # define YYDPRINTF(Args)                        \
   1110 do {                                            \
   1111   if (yydebug)                                  \
   1112     YYFPRINTF Args;                             \
   1113 } while (0)
   1114 
   1115 /* This macro is provided for backward compatibility. */
   1116 #ifndef YY_LOCATION_PRINT
   1117 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
   1118 #endif
   1119 
   1120 
   1121 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
   1122 do {                                                                      \
   1123   if (yydebug)                                                            \
   1124     {                                                                     \
   1125       YYFPRINTF (stderr, "%s ", Title);                                   \
   1126       yy_symbol_print (stderr,                                            \
   1127                   Type, Value, param); \
   1128       YYFPRINTF (stderr, "\n");                                           \
   1129     }                                                                     \
   1130 } while (0)
   1131 
   1132 
   1133 /*----------------------------------------.
   1134 | Print this symbol's value on YYOUTPUT.  |
   1135 `----------------------------------------*/
   1136 
   1137 static void
   1138 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param)
   1139 {
   1140   FILE *yyo = yyoutput;
   1141   YYUSE (yyo);
   1142   YYUSE (param);
   1143   if (!yyvaluep)
   1144     return;
   1145 # ifdef YYPRINT
   1146   if (yytype < YYNTOKENS)
   1147     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
   1148 # endif
   1149   YYUSE (yytype);
   1150 }
   1151 
   1152 
   1153 /*--------------------------------.
   1154 | Print this symbol on YYOUTPUT.  |
   1155 `--------------------------------*/
   1156 
   1157 static void
   1158 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_param *param)
   1159 {
   1160   YYFPRINTF (yyoutput, "%s %s (",
   1161              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
   1162 
   1163   yy_symbol_value_print (yyoutput, yytype, yyvaluep, param);
   1164   YYFPRINTF (yyoutput, ")");
   1165 }
   1166 
   1167 /*------------------------------------------------------------------.
   1168 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
   1169 | TOP (included).                                                   |
   1170 `------------------------------------------------------------------*/
   1171 
   1172 static void
   1173 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
   1174 {
   1175   YYFPRINTF (stderr, "Stack now");
   1176   for (; yybottom <= yytop; yybottom++)
   1177     {
   1178       int yybot = *yybottom;
   1179       YYFPRINTF (stderr, " %d", yybot);
   1180     }
   1181   YYFPRINTF (stderr, "\n");
   1182 }
   1183 
   1184 # define YY_STACK_PRINT(Bottom, Top)                            \
   1185 do {                                                            \
   1186   if (yydebug)                                                  \
   1187     yy_stack_print ((Bottom), (Top));                           \
   1188 } while (0)
   1189 
   1190 
   1191 /*------------------------------------------------.
   1192 | Report that the YYRULE is going to be reduced.  |
   1193 `------------------------------------------------*/
   1194 
   1195 static void
   1196 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, struct parser_param *param)
   1197 {
   1198   unsigned long int yylno = yyrline[yyrule];
   1199   int yynrhs = yyr2[yyrule];
   1200   int yyi;
   1201   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
   1202              yyrule - 1, yylno);
   1203   /* The symbols being reduced.  */
   1204   for (yyi = 0; yyi < yynrhs; yyi++)
   1205     {
   1206       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
   1207       yy_symbol_print (stderr,
   1208                        yystos[yyssp[yyi + 1 - yynrhs]],
   1209                        &(yyvsp[(yyi + 1) - (yynrhs)])
   1210                                               , param);
   1211       YYFPRINTF (stderr, "\n");
   1212     }
   1213 }
   1214 
   1215 # define YY_REDUCE_PRINT(Rule)          \
   1216 do {                                    \
   1217   if (yydebug)                          \
   1218     yy_reduce_print (yyssp, yyvsp, Rule, param); \
   1219 } while (0)
   1220 
   1221 /* Nonzero means print parse trace.  It is left uninitialized so that
   1222    multiple parsers can coexist.  */
   1223 int yydebug;
   1224 #else /* !YYDEBUG */
   1225 # define YYDPRINTF(Args)
   1226 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
   1227 # define YY_STACK_PRINT(Bottom, Top)
   1228 # define YY_REDUCE_PRINT(Rule)
   1229 #endif /* !YYDEBUG */
   1230 
   1231 
   1232 /* YYINITDEPTH -- initial size of the parser's stacks.  */
   1233 #ifndef YYINITDEPTH
   1234 # define YYINITDEPTH 200
   1235 #endif
   1236 
   1237 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   1238    if the built-in stack extension method is used).
   1239 
   1240    Do not make this value too large; the results are undefined if
   1241    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   1242    evaluated with infinite-precision integer arithmetic.  */
   1243 
   1244 #ifndef YYMAXDEPTH
   1245 # define YYMAXDEPTH 10000
   1246 #endif
   1247 
   1248 
   1249 #if YYERROR_VERBOSE
   1250 
   1251 # ifndef yystrlen
   1252 #  if defined __GLIBC__ && defined _STRING_H
   1253 #   define yystrlen strlen
   1254 #  else
   1255 /* Return the length of YYSTR.  */
   1256 static YYSIZE_T
   1257 yystrlen (const char *yystr)
   1258 {
   1259   YYSIZE_T yylen;
   1260   for (yylen = 0; yystr[yylen]; yylen++)
   1261     continue;
   1262   return yylen;
   1263 }
   1264 #  endif
   1265 # endif
   1266 
   1267 # ifndef yystpcpy
   1268 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
   1269 #   define yystpcpy stpcpy
   1270 #  else
   1271 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
   1272    YYDEST.  */
   1273 static char *
   1274 yystpcpy (char *yydest, const char *yysrc)
   1275 {
   1276   char *yyd = yydest;
   1277   const char *yys = yysrc;
   1278 
   1279   while ((*yyd++ = *yys++) != '\0')
   1280     continue;
   1281 
   1282   return yyd - 1;
   1283 }
   1284 #  endif
   1285 # endif
   1286 
   1287 # ifndef yytnamerr
   1288 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
   1289    quotes and backslashes, so that it's suitable for yyerror.  The
   1290    heuristic is that double-quoting is unnecessary unless the string
   1291    contains an apostrophe, a comma, or backslash (other than
   1292    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
   1293    null, do not copy; instead, return the length of what the result
   1294    would have been.  */
   1295 static YYSIZE_T
   1296 yytnamerr (char *yyres, const char *yystr)
   1297 {
   1298   if (*yystr == '"')
   1299     {
   1300       YYSIZE_T yyn = 0;
   1301       char const *yyp = yystr;
   1302 
   1303       for (;;)
   1304         switch (*++yyp)
   1305           {
   1306           case '\'':
   1307           case ',':
   1308             goto do_not_strip_quotes;
   1309 
   1310           case '\\':
   1311             if (*++yyp != '\\')
   1312               goto do_not_strip_quotes;
   1313             /* Fall through.  */
   1314           default:
   1315             if (yyres)
   1316               yyres[yyn] = *yyp;
   1317             yyn++;
   1318             break;
   1319 
   1320           case '"':
   1321             if (yyres)
   1322               yyres[yyn] = '\0';
   1323             return yyn;
   1324           }
   1325     do_not_strip_quotes: ;
   1326     }
   1327 
   1328   if (! yyres)
   1329     return yystrlen (yystr);
   1330 
   1331   return yystpcpy (yyres, yystr) - yyres;
   1332 }
   1333 # endif
   1334 
   1335 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
   1336    about the unexpected token YYTOKEN for the state stack whose top is
   1337    YYSSP.
   1338 
   1339    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
   1340    not large enough to hold the message.  In that case, also set
   1341    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
   1342    required number of bytes is too large to store.  */
   1343 static int
   1344 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
   1345                 yytype_int16 *yyssp, int yytoken)
   1346 {
   1347   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
   1348   YYSIZE_T yysize = yysize0;
   1349   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   1350   /* Internationalized format string. */
   1351   const char *yyformat = YY_NULLPTR;
   1352   /* Arguments of yyformat. */
   1353   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   1354   /* Number of reported tokens (one for the "unexpected", one per
   1355      "expected"). */
   1356   int yycount = 0;
   1357 
   1358   /* There are many possibilities here to consider:
   1359      - If this state is a consistent state with a default action, then
   1360        the only way this function was invoked is if the default action
   1361        is an error action.  In that case, don't check for expected
   1362        tokens because there are none.
   1363      - The only way there can be no lookahead present (in yychar) is if
   1364        this state is a consistent state with a default action.  Thus,
   1365        detecting the absence of a lookahead is sufficient to determine
   1366        that there is no unexpected or expected token to report.  In that
   1367        case, just report a simple "syntax error".
   1368      - Don't assume there isn't a lookahead just because this state is a
   1369        consistent state with a default action.  There might have been a
   1370        previous inconsistent state, consistent state with a non-default
   1371        action, or user semantic action that manipulated yychar.
   1372      - Of course, the expected token list depends on states to have
   1373        correct lookahead information, and it depends on the parser not
   1374        to perform extra reductions after fetching a lookahead from the
   1375        scanner and before detecting a syntax error.  Thus, state merging
   1376        (from LALR or IELR) and default reductions corrupt the expected
   1377        token list.  However, the list is correct for canonical LR with
   1378        one exception: it will still contain any token that will not be
   1379        accepted due to an error action in a later state.
   1380   */
   1381   if (yytoken != YYEMPTY)
   1382     {
   1383       int yyn = yypact[*yyssp];
   1384       yyarg[yycount++] = yytname[yytoken];
   1385       if (!yypact_value_is_default (yyn))
   1386         {
   1387           /* Start YYX at -YYN if negative to avoid negative indexes in
   1388              YYCHECK.  In other words, skip the first -YYN actions for
   1389              this state because they are default actions.  */
   1390           int yyxbegin = yyn < 0 ? -yyn : 0;
   1391           /* Stay within bounds of both yycheck and yytname.  */
   1392           int yychecklim = YYLAST - yyn + 1;
   1393           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
   1394           int yyx;
   1395 
   1396           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
   1397             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
   1398                 && !yytable_value_is_error (yytable[yyx + yyn]))
   1399               {
   1400                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
   1401                   {
   1402                     yycount = 1;
   1403                     yysize = yysize0;
   1404                     break;
   1405                   }
   1406                 yyarg[yycount++] = yytname[yyx];
   1407                 {
   1408                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
   1409                   if (! (yysize <= yysize1
   1410                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
   1411                     return 2;
   1412                   yysize = yysize1;
   1413                 }
   1414               }
   1415         }
   1416     }
   1417 
   1418   switch (yycount)
   1419     {
   1420 # define YYCASE_(N, S)                      \
   1421       case N:                               \
   1422         yyformat = S;                       \
   1423       break
   1424       YYCASE_(0, YY_("syntax error"));
   1425       YYCASE_(1, YY_("syntax error, unexpected %s"));
   1426       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
   1427       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
   1428       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
   1429       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
   1430 # undef YYCASE_
   1431     }
   1432 
   1433   {
   1434     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
   1435     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
   1436       return 2;
   1437     yysize = yysize1;
   1438   }
   1439 
   1440   if (*yymsg_alloc < yysize)
   1441     {
   1442       *yymsg_alloc = 2 * yysize;
   1443       if (! (yysize <= *yymsg_alloc
   1444              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
   1445         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
   1446       return 1;
   1447     }
   1448 
   1449   /* Avoid sprintf, as that infringes on the user's name space.
   1450      Don't have undefined behavior even if the translation
   1451      produced a string with the wrong number of "%s"s.  */
   1452   {
   1453     char *yyp = *yymsg;
   1454     int yyi = 0;
   1455     while ((*yyp = *yyformat) != '\0')
   1456       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
   1457         {
   1458           yyp += yytnamerr (yyp, yyarg[yyi++]);
   1459           yyformat += 2;
   1460         }
   1461       else
   1462         {
   1463           yyp++;
   1464           yyformat++;
   1465         }
   1466   }
   1467   return 0;
   1468 }
   1469 #endif /* YYERROR_VERBOSE */
   1470 
   1471 /*-----------------------------------------------.
   1472 | Release the memory associated to this symbol.  |
   1473 `-----------------------------------------------*/
   1474 
   1475 static void
   1476 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_param *param)
   1477 {
   1478   YYUSE (yyvaluep);
   1479   YYUSE (param);
   1480   if (!yymsg)
   1481     yymsg = "Deleting";
   1482   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
   1483 
   1484   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1485   switch (yytype)
   1486     {
   1487           case 52: /* STRING  */
   1488 #line 225 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1489       { free(((*yyvaluep).str)); }
   1490 #line 1491 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1491         break;
   1492 
   1493     case 55: /* IDENT  */
   1494 #line 225 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1495       { free(((*yyvaluep).str)); }
   1496 #line 1497 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1497         break;
   1498 
   1499     case 66: /* XkbFile  */
   1500 #line 224 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1501       { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); }
   1502 #line 1503 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1503         break;
   1504 
   1505     case 67: /* XkbCompositeMap  */
   1506 #line 224 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1507       { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); }
   1508 #line 1509 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1509         break;
   1510 
   1511     case 69: /* XkbMapConfigList  */
   1512 #line 224 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1513       { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); }
   1514 #line 1515 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1515         break;
   1516 
   1517     case 70: /* XkbMapConfig  */
   1518 #line 224 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1519       { if (!param->rtrn) FreeXkbFile(((*yyvaluep).file)); }
   1520 #line 1521 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1521         break;
   1522 
   1523     case 75: /* DeclList  */
   1524 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1525       { FreeStmt((ParseCommon *) ((*yyvaluep).any)); }
   1526 #line 1527 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1527         break;
   1528 
   1529     case 76: /* Decl  */
   1530 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1531       { FreeStmt((ParseCommon *) ((*yyvaluep).any)); }
   1532 #line 1533 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1533         break;
   1534 
   1535     case 77: /* VarDecl  */
   1536 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1537       { FreeStmt((ParseCommon *) ((*yyvaluep).var)); }
   1538 #line 1539 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1539         break;
   1540 
   1541     case 78: /* KeyNameDecl  */
   1542 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1543       { FreeStmt((ParseCommon *) ((*yyvaluep).keyCode)); }
   1544 #line 1545 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1545         break;
   1546 
   1547     case 79: /* KeyAliasDecl  */
   1548 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1549       { FreeStmt((ParseCommon *) ((*yyvaluep).keyAlias)); }
   1550 #line 1551 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1551         break;
   1552 
   1553     case 80: /* VModDecl  */
   1554 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1555       { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); }
   1556 #line 1557 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1557         break;
   1558 
   1559     case 81: /* VModDefList  */
   1560 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1561       { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); }
   1562 #line 1563 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1563         break;
   1564 
   1565     case 82: /* VModDef  */
   1566 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1567       { FreeStmt((ParseCommon *) ((*yyvaluep).vmod)); }
   1568 #line 1569 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1569         break;
   1570 
   1571     case 83: /* InterpretDecl  */
   1572 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1573       { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); }
   1574 #line 1575 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1575         break;
   1576 
   1577     case 84: /* InterpretMatch  */
   1578 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1579       { FreeStmt((ParseCommon *) ((*yyvaluep).interp)); }
   1580 #line 1581 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1581         break;
   1582 
   1583     case 85: /* VarDeclList  */
   1584 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1585       { FreeStmt((ParseCommon *) ((*yyvaluep).var)); }
   1586 #line 1587 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1587         break;
   1588 
   1589     case 86: /* KeyTypeDecl  */
   1590 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1591       { FreeStmt((ParseCommon *) ((*yyvaluep).keyType)); }
   1592 #line 1593 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1593         break;
   1594 
   1595     case 87: /* SymbolsDecl  */
   1596 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1597       { FreeStmt((ParseCommon *) ((*yyvaluep).syms)); }
   1598 #line 1599 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1599         break;
   1600 
   1601     case 88: /* SymbolsBody  */
   1602 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1603       { FreeStmt((ParseCommon *) ((*yyvaluep).var)); }
   1604 #line 1605 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1605         break;
   1606 
   1607     case 89: /* SymbolsVarDecl  */
   1608 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1609       { FreeStmt((ParseCommon *) ((*yyvaluep).var)); }
   1610 #line 1611 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1611         break;
   1612 
   1613     case 90: /* ArrayInit  */
   1614 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1615       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1616 #line 1617 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1617         break;
   1618 
   1619     case 91: /* GroupCompatDecl  */
   1620 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1621       { FreeStmt((ParseCommon *) ((*yyvaluep).groupCompat)); }
   1622 #line 1623 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1623         break;
   1624 
   1625     case 92: /* ModMapDecl  */
   1626 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1627       { FreeStmt((ParseCommon *) ((*yyvaluep).modMask)); }
   1628 #line 1629 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1629         break;
   1630 
   1631     case 93: /* LedMapDecl  */
   1632 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1633       { FreeStmt((ParseCommon *) ((*yyvaluep).ledMap)); }
   1634 #line 1635 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1635         break;
   1636 
   1637     case 94: /* LedNameDecl  */
   1638 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1639       { FreeStmt((ParseCommon *) ((*yyvaluep).ledName)); }
   1640 #line 1641 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1641         break;
   1642 
   1643     case 108: /* CoordList  */
   1644 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1645       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1646 #line 1647 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1647         break;
   1648 
   1649     case 109: /* Coord  */
   1650 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1651       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1652 #line 1653 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1653         break;
   1654 
   1655     case 116: /* OptExprList  */
   1656 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1657       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1658 #line 1659 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1659         break;
   1660 
   1661     case 117: /* ExprList  */
   1662 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1663       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1664 #line 1665 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1665         break;
   1666 
   1667     case 118: /* Expr  */
   1668 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1669       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1670 #line 1671 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1671         break;
   1672 
   1673     case 119: /* Term  */
   1674 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1675       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1676 #line 1677 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1677         break;
   1678 
   1679     case 120: /* ActionList  */
   1680 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1681       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1682 #line 1683 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1683         break;
   1684 
   1685     case 121: /* Action  */
   1686 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1687       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1688 #line 1689 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1689         break;
   1690 
   1691     case 122: /* Lhs  */
   1692 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1693       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1694 #line 1695 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1695         break;
   1696 
   1697     case 123: /* Terminal  */
   1698 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1699       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1700 #line 1701 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1701         break;
   1702 
   1703     case 124: /* OptKeySymList  */
   1704 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1705       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1706 #line 1707 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1707         break;
   1708 
   1709     case 125: /* KeySymList  */
   1710 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1711       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1712 #line 1713 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1713         break;
   1714 
   1715     case 126: /* KeySyms  */
   1716 #line 219 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1717       { FreeStmt((ParseCommon *) ((*yyvaluep).expr)); }
   1718 #line 1719 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1719         break;
   1720 
   1721     case 135: /* OptMapName  */
   1722 #line 225 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1723       { free(((*yyvaluep).str)); }
   1724 #line 1725 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1725         break;
   1726 
   1727     case 136: /* MapName  */
   1728 #line 225 "src/xkbcomp/parser.y" /* yacc.c:1257  */
   1729       { free(((*yyvaluep).str)); }
   1730 #line 1731 "src/xkbcomp/parser.c" /* yacc.c:1257  */
   1731         break;
   1732 
   1733 
   1734       default:
   1735         break;
   1736     }
   1737   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1738 }
   1739 
   1740 
   1741 
   1742 
   1743 /*----------.
   1744 | yyparse.  |
   1745 `----------*/
   1746 
   1747 int
   1748 yyparse (struct parser_param *param)
   1749 {
   1750 /* The lookahead symbol.  */
   1751 int yychar;
   1752 
   1753 
   1754 /* The semantic value of the lookahead symbol.  */
   1755 /* Default value used for initialization, for pacifying older GCCs
   1756    or non-GCC compilers.  */
   1757 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
   1758 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
   1759 
   1760     /* Number of syntax errors so far.  */
   1761     int yynerrs;
   1762 
   1763     int yystate;
   1764     /* Number of tokens to shift before error messages enabled.  */
   1765     int yyerrstatus;
   1766 
   1767     /* The stacks and their tools:
   1768        'yyss': related to states.
   1769        'yyvs': related to semantic values.
   1770 
   1771        Refer to the stacks through separate pointers, to allow yyoverflow
   1772        to reallocate them elsewhere.  */
   1773 
   1774     /* The state stack.  */
   1775     yytype_int16 yyssa[YYINITDEPTH];
   1776     yytype_int16 *yyss;
   1777     yytype_int16 *yyssp;
   1778 
   1779     /* The semantic value stack.  */
   1780     YYSTYPE yyvsa[YYINITDEPTH];
   1781     YYSTYPE *yyvs;
   1782     YYSTYPE *yyvsp;
   1783 
   1784     YYSIZE_T yystacksize;
   1785 
   1786   int yyn;
   1787   int yyresult;
   1788   /* Lookahead token as an internal (translated) token number.  */
   1789   int yytoken = 0;
   1790   /* The variables used to return semantic value and location from the
   1791      action routines.  */
   1792   YYSTYPE yyval;
   1793 
   1794 #if YYERROR_VERBOSE
   1795   /* Buffer for error messages, and its allocated size.  */
   1796   char yymsgbuf[128];
   1797   char *yymsg = yymsgbuf;
   1798   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
   1799 #endif
   1800 
   1801 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
   1802 
   1803   /* The number of symbols on the RHS of the reduced rule.
   1804      Keep to zero when no symbol should be popped.  */
   1805   int yylen = 0;
   1806 
   1807   yyssp = yyss = yyssa;
   1808   yyvsp = yyvs = yyvsa;
   1809   yystacksize = YYINITDEPTH;
   1810 
   1811   YYDPRINTF ((stderr, "Starting parse\n"));
   1812 
   1813   yystate = 0;
   1814   yyerrstatus = 0;
   1815   yynerrs = 0;
   1816   yychar = YYEMPTY; /* Cause a token to be read.  */
   1817   goto yysetstate;
   1818 
   1819 /*------------------------------------------------------------.
   1820 | yynewstate -- Push a new state, which is found in yystate.  |
   1821 `------------------------------------------------------------*/
   1822  yynewstate:
   1823   /* In all cases, when you get here, the value and location stacks
   1824      have just been pushed.  So pushing a state here evens the stacks.  */
   1825   yyssp++;
   1826 
   1827  yysetstate:
   1828   *yyssp = yystate;
   1829 
   1830   if (yyss + yystacksize - 1 <= yyssp)
   1831     {
   1832       /* Get the current used size of the three stacks, in elements.  */
   1833       YYSIZE_T yysize = yyssp - yyss + 1;
   1834 
   1835 #ifdef yyoverflow
   1836       {
   1837         /* Give user a chance to reallocate the stack.  Use copies of
   1838            these so that the &'s don't force the real ones into
   1839            memory.  */
   1840         YYSTYPE *yyvs1 = yyvs;
   1841         yytype_int16 *yyss1 = yyss;
   1842 
   1843         /* Each stack pointer address is followed by the size of the
   1844            data in use in that stack, in bytes.  This used to be a
   1845            conditional around just the two extra args, but that might
   1846            be undefined if yyoverflow is a macro.  */
   1847         yyoverflow (YY_("memory exhausted"),
   1848                     &yyss1, yysize * sizeof (*yyssp),
   1849                     &yyvs1, yysize * sizeof (*yyvsp),
   1850                     &yystacksize);
   1851 
   1852         yyss = yyss1;
   1853         yyvs = yyvs1;
   1854       }
   1855 #else /* no yyoverflow */
   1856 # ifndef YYSTACK_RELOCATE
   1857       goto yyexhaustedlab;
   1858 # else
   1859       /* Extend the stack our own way.  */
   1860       if (YYMAXDEPTH <= yystacksize)
   1861         goto yyexhaustedlab;
   1862       yystacksize *= 2;
   1863       if (YYMAXDEPTH < yystacksize)
   1864         yystacksize = YYMAXDEPTH;
   1865 
   1866       {
   1867         yytype_int16 *yyss1 = yyss;
   1868         union yyalloc *yyptr =
   1869           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
   1870         if (! yyptr)
   1871           goto yyexhaustedlab;
   1872         YYSTACK_RELOCATE (yyss_alloc, yyss);
   1873         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
   1874 #  undef YYSTACK_RELOCATE
   1875         if (yyss1 != yyssa)
   1876           YYSTACK_FREE (yyss1);
   1877       }
   1878 # endif
   1879 #endif /* no yyoverflow */
   1880 
   1881       yyssp = yyss + yysize - 1;
   1882       yyvsp = yyvs + yysize - 1;
   1883 
   1884       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
   1885                   (unsigned long int) yystacksize));
   1886 
   1887       if (yyss + yystacksize - 1 <= yyssp)
   1888         YYABORT;
   1889     }
   1890 
   1891   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
   1892 
   1893   if (yystate == YYFINAL)
   1894     YYACCEPT;
   1895 
   1896   goto yybackup;
   1897 
   1898 /*-----------.
   1899 | yybackup.  |
   1900 `-----------*/
   1901 yybackup:
   1902 
   1903   /* Do appropriate processing given the current state.  Read a
   1904      lookahead token if we need one and don't already have one.  */
   1905 
   1906   /* First try to decide what to do without reference to lookahead token.  */
   1907   yyn = yypact[yystate];
   1908   if (yypact_value_is_default (yyn))
   1909     goto yydefault;
   1910 
   1911   /* Not known => get a lookahead token if don't already have one.  */
   1912 
   1913   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   1914   if (yychar == YYEMPTY)
   1915     {
   1916       YYDPRINTF ((stderr, "Reading a token: "));
   1917       yychar = yylex (&yylval, param_scanner);
   1918     }
   1919 
   1920   if (yychar <= YYEOF)
   1921     {
   1922       yychar = yytoken = YYEOF;
   1923       YYDPRINTF ((stderr, "Now at end of input.\n"));
   1924     }
   1925   else
   1926     {
   1927       yytoken = YYTRANSLATE (yychar);
   1928       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
   1929     }
   1930 
   1931   /* If the proper action on seeing token YYTOKEN is to reduce or to
   1932      detect an error, take that action.  */
   1933   yyn += yytoken;
   1934   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
   1935     goto yydefault;
   1936   yyn = yytable[yyn];
   1937   if (yyn <= 0)
   1938     {
   1939       if (yytable_value_is_error (yyn))
   1940         goto yyerrlab;
   1941       yyn = -yyn;
   1942       goto yyreduce;
   1943     }
   1944 
   1945   /* Count tokens shifted since error; after three, turn off error
   1946      status.  */
   1947   if (yyerrstatus)
   1948     yyerrstatus--;
   1949 
   1950   /* Shift the lookahead token.  */
   1951   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
   1952 
   1953   /* Discard the shifted token.  */
   1954   yychar = YYEMPTY;
   1955 
   1956   yystate = yyn;
   1957   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1958   *++yyvsp = yylval;
   1959   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1960 
   1961   goto yynewstate;
   1962 
   1963 
   1964 /*-----------------------------------------------------------.
   1965 | yydefault -- do the default action for the current state.  |
   1966 `-----------------------------------------------------------*/
   1967 yydefault:
   1968   yyn = yydefact[yystate];
   1969   if (yyn == 0)
   1970     goto yyerrlab;
   1971   goto yyreduce;
   1972 
   1973 
   1974 /*-----------------------------.
   1975 | yyreduce -- Do a reduction.  |
   1976 `-----------------------------*/
   1977 yyreduce:
   1978   /* yyn is the number of a rule to reduce with.  */
   1979   yylen = yyr2[yyn];
   1980 
   1981   /* If YYLEN is nonzero, implement the default value of the action:
   1982      '$$ = $1'.
   1983 
   1984      Otherwise, the following line sets YYVAL to garbage.
   1985      This behavior is undocumented and Bison
   1986      users should not rely upon it.  Assigning to YYVAL
   1987      unconditionally makes the parser a bit smaller, and it avoids a
   1988      GCC warning that YYVAL may be used uninitialized.  */
   1989   yyval = yyvsp[1-yylen];
   1990 
   1991 
   1992   YY_REDUCE_PRINT (yyn);
   1993   switch (yyn)
   1994     {
   1995         case 2:
   1996 #line 242 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   1997     { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = true; }
   1998 #line 1999 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   1999     break;
   2000 
   2001   case 3:
   2002 #line 244 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2003     { (yyval.file) = param->rtrn = (yyvsp[0].file); param->more_maps = true; YYACCEPT; }
   2004 #line 2005 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2005     break;
   2006 
   2007   case 4:
   2008 #line 246 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2009     { (yyval.file) = param->rtrn = NULL; param->more_maps = false; }
   2010 #line 2011 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2011     break;
   2012 
   2013   case 5:
   2014 #line 252 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2015     { (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (ParseCommon *) (yyvsp[-2].file), (yyvsp[-6].mapFlags)); }
   2016 #line 2017 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2017     break;
   2018 
   2019   case 6:
   2020 #line 255 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2021     { (yyval.file_type) = FILE_TYPE_KEYMAP; }
   2022 #line 2023 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2023     break;
   2024 
   2025   case 7:
   2026 #line 256 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2027     { (yyval.file_type) = FILE_TYPE_KEYMAP; }
   2028 #line 2029 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2029     break;
   2030 
   2031   case 8:
   2032 #line 257 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2033     { (yyval.file_type) = FILE_TYPE_KEYMAP; }
   2034 #line 2035 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2035     break;
   2036 
   2037   case 9:
   2038 #line 261 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2039     {
   2040                             if (!(yyvsp[0].file))
   2041                                 (yyval.file) = (yyvsp[-1].file);
   2042                             else
   2043                                 (yyval.file) = (XkbFile *) AppendStmt((ParseCommon *) (yyvsp[-1].file),
   2044                                                             (ParseCommon *) (yyvsp[0].file));
   2045                         }
   2046 #line 2047 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2047     break;
   2048 
   2049   case 10:
   2050 #line 269 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2051     { (yyval.file) = (yyvsp[0].file); }
   2052 #line 2053 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2053     break;
   2054 
   2055   case 11:
   2056 #line 275 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2057     {
   2058                             if ((yyvsp[-5].file_type) == FILE_TYPE_GEOMETRY) {
   2059                                 free((yyvsp[-4].str));
   2060                                 FreeStmt((yyvsp[-2].any));
   2061                                 (yyval.file) = NULL;
   2062                             }
   2063                             else {
   2064                                 (yyval.file) = XkbFileCreate((yyvsp[-5].file_type), (yyvsp[-4].str), (yyvsp[-2].any), (yyvsp[-6].mapFlags));
   2065                             }
   2066                         }
   2067 #line 2068 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2068     break;
   2069 
   2070   case 12:
   2071 #line 287 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2072     { (yyval.file_type) = FILE_TYPE_KEYCODES; }
   2073 #line 2074 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2074     break;
   2075 
   2076   case 13:
   2077 #line 288 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2078     { (yyval.file_type) = FILE_TYPE_TYPES; }
   2079 #line 2080 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2080     break;
   2081 
   2082   case 14:
   2083 #line 289 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2084     { (yyval.file_type) = FILE_TYPE_COMPAT; }
   2085 #line 2086 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2086     break;
   2087 
   2088   case 15:
   2089 #line 290 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2090     { (yyval.file_type) = FILE_TYPE_SYMBOLS; }
   2091 #line 2092 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2092     break;
   2093 
   2094   case 16:
   2095 #line 291 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2096     { (yyval.file_type) = FILE_TYPE_GEOMETRY; }
   2097 #line 2098 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2098     break;
   2099 
   2100   case 17:
   2101 #line 294 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2102     { (yyval.mapFlags) = (yyvsp[0].mapFlags); }
   2103 #line 2104 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2104     break;
   2105 
   2106   case 18:
   2107 #line 295 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2108     { (yyval.mapFlags) = 0; }
   2109 #line 2110 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2110     break;
   2111 
   2112   case 19:
   2113 #line 298 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2114     { (yyval.mapFlags) = ((yyvsp[-1].mapFlags) | (yyvsp[0].mapFlags)); }
   2115 #line 2116 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2116     break;
   2117 
   2118   case 20:
   2119 #line 299 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2120     { (yyval.mapFlags) = (yyvsp[0].mapFlags); }
   2121 #line 2122 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2122     break;
   2123 
   2124   case 21:
   2125 #line 302 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2126     { (yyval.mapFlags) = MAP_IS_PARTIAL; }
   2127 #line 2128 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2128     break;
   2129 
   2130   case 22:
   2131 #line 303 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2132     { (yyval.mapFlags) = MAP_IS_DEFAULT; }
   2133 #line 2134 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2134     break;
   2135 
   2136   case 23:
   2137 #line 304 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2138     { (yyval.mapFlags) = MAP_IS_HIDDEN; }
   2139 #line 2140 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2140     break;
   2141 
   2142   case 24:
   2143 #line 305 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2144     { (yyval.mapFlags) = MAP_HAS_ALPHANUMERIC; }
   2145 #line 2146 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2146     break;
   2147 
   2148   case 25:
   2149 #line 306 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2150     { (yyval.mapFlags) = MAP_HAS_MODIFIER; }
   2151 #line 2152 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2152     break;
   2153 
   2154   case 26:
   2155 #line 307 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2156     { (yyval.mapFlags) = MAP_HAS_KEYPAD; }
   2157 #line 2158 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2158     break;
   2159 
   2160   case 27:
   2161 #line 308 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2162     { (yyval.mapFlags) = MAP_HAS_FN; }
   2163 #line 2164 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2164     break;
   2165 
   2166   case 28:
   2167 #line 309 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2168     { (yyval.mapFlags) = MAP_IS_ALTGR; }
   2169 #line 2170 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2170     break;
   2171 
   2172   case 29:
   2173 #line 313 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2174     { (yyval.any) = AppendStmt((yyvsp[-1].any), (yyvsp[0].any)); }
   2175 #line 2176 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2176     break;
   2177 
   2178   case 30:
   2179 #line 314 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2180     { (yyval.any) = NULL; }
   2181 #line 2182 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2182     break;
   2183 
   2184   case 31:
   2185 #line 318 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2186     {
   2187                             (yyvsp[0].var)->merge = (yyvsp[-1].merge);
   2188                             (yyval.any) = (ParseCommon *) (yyvsp[0].var);
   2189                         }
   2190 #line 2191 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2191     break;
   2192 
   2193   case 32:
   2194 #line 323 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2195     {
   2196                             (yyvsp[0].vmod)->merge = (yyvsp[-1].merge);
   2197                             (yyval.any) = (ParseCommon *) (yyvsp[0].vmod);
   2198                         }
   2199 #line 2200 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2200     break;
   2201 
   2202   case 33:
   2203 #line 328 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2204     {
   2205                             (yyvsp[0].interp)->merge = (yyvsp[-1].merge);
   2206                             (yyval.any) = (ParseCommon *) (yyvsp[0].interp);
   2207                         }
   2208 #line 2209 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2209     break;
   2210 
   2211   case 34:
   2212 #line 333 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2213     {
   2214                             (yyvsp[0].keyCode)->merge = (yyvsp[-1].merge);
   2215                             (yyval.any) = (ParseCommon *) (yyvsp[0].keyCode);
   2216                         }
   2217 #line 2218 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2218     break;
   2219 
   2220   case 35:
   2221 #line 338 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2222     {
   2223                             (yyvsp[0].keyAlias)->merge = (yyvsp[-1].merge);
   2224                             (yyval.any) = (ParseCommon *) (yyvsp[0].keyAlias);
   2225                         }
   2226 #line 2227 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2227     break;
   2228 
   2229   case 36:
   2230 #line 343 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2231     {
   2232                             (yyvsp[0].keyType)->merge = (yyvsp[-1].merge);
   2233                             (yyval.any) = (ParseCommon *) (yyvsp[0].keyType);
   2234                         }
   2235 #line 2236 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2236     break;
   2237 
   2238   case 37:
   2239 #line 348 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2240     {
   2241                             (yyvsp[0].syms)->merge = (yyvsp[-1].merge);
   2242                             (yyval.any) = (ParseCommon *) (yyvsp[0].syms);
   2243                         }
   2244 #line 2245 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2245     break;
   2246 
   2247   case 38:
   2248 #line 353 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2249     {
   2250                             (yyvsp[0].modMask)->merge = (yyvsp[-1].merge);
   2251                             (yyval.any) = (ParseCommon *) (yyvsp[0].modMask);
   2252                         }
   2253 #line 2254 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2254     break;
   2255 
   2256   case 39:
   2257 #line 358 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2258     {
   2259                             (yyvsp[0].groupCompat)->merge = (yyvsp[-1].merge);
   2260                             (yyval.any) = (ParseCommon *) (yyvsp[0].groupCompat);
   2261                         }
   2262 #line 2263 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2263     break;
   2264 
   2265   case 40:
   2266 #line 363 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2267     {
   2268                             (yyvsp[0].ledMap)->merge = (yyvsp[-1].merge);
   2269                             (yyval.any) = (ParseCommon *) (yyvsp[0].ledMap);
   2270                         }
   2271 #line 2272 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2272     break;
   2273 
   2274   case 41:
   2275 #line 368 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2276     {
   2277                             (yyvsp[0].ledName)->merge = (yyvsp[-1].merge);
   2278                             (yyval.any) = (ParseCommon *) (yyvsp[0].ledName);
   2279                         }
   2280 #line 2281 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2281     break;
   2282 
   2283   case 42:
   2284 #line 372 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2285     { (yyval.any) = NULL; }
   2286 #line 2287 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2287     break;
   2288 
   2289   case 43:
   2290 #line 373 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2291     { (yyval.any) = NULL; }
   2292 #line 2293 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2293     break;
   2294 
   2295   case 44:
   2296 #line 374 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2297     { (yyval.any) = NULL; }
   2298 #line 2299 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2299     break;
   2300 
   2301   case 45:
   2302 #line 376 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2303     {
   2304                             (yyval.any) = (ParseCommon *) IncludeCreate(param->ctx, (yyvsp[0].str), (yyvsp[-1].merge));
   2305                             free((yyvsp[0].str));
   2306                         }
   2307 #line 2308 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2308     break;
   2309 
   2310   case 46:
   2311 #line 383 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2312     { (yyval.var) = VarCreate((yyvsp[-3].expr), (yyvsp[-1].expr)); }
   2313 #line 2314 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2314     break;
   2315 
   2316   case 47:
   2317 #line 385 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2318     { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), true); }
   2319 #line 2320 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2320     break;
   2321 
   2322   case 48:
   2323 #line 387 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2324     { (yyval.var) = BoolVarCreate((yyvsp[-1].atom), false); }
   2325 #line 2326 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2326     break;
   2327 
   2328   case 49:
   2329 #line 391 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2330     { (yyval.keyCode) = KeycodeCreate((yyvsp[-3].atom), (yyvsp[-1].num)); }
   2331 #line 2332 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2332     break;
   2333 
   2334   case 50:
   2335 #line 395 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2336     { (yyval.keyAlias) = KeyAliasCreate((yyvsp[-3].atom), (yyvsp[-1].atom)); }
   2337 #line 2338 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2338     break;
   2339 
   2340   case 51:
   2341 #line 399 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2342     { (yyval.vmod) = (yyvsp[-1].vmod); }
   2343 #line 2344 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2344     break;
   2345 
   2346   case 52:
   2347 #line 403 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2348     { (yyval.vmod) = (VModDef *) AppendStmt((ParseCommon *) (yyvsp[-2].vmod),
   2349                                                       (ParseCommon *) (yyvsp[0].vmod)); }
   2350 #line 2351 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2351     break;
   2352 
   2353   case 53:
   2354 #line 406 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2355     { (yyval.vmod) = (yyvsp[0].vmod); }
   2356 #line 2357 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2357     break;
   2358 
   2359   case 54:
   2360 #line 410 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2361     { (yyval.vmod) = VModCreate((yyvsp[0].atom), NULL); }
   2362 #line 2363 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2363     break;
   2364 
   2365   case 55:
   2366 #line 412 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2367     { (yyval.vmod) = VModCreate((yyvsp[-2].atom), (yyvsp[0].expr)); }
   2368 #line 2369 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2369     break;
   2370 
   2371   case 56:
   2372 #line 418 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2373     { (yyvsp[-4].interp)->def = (yyvsp[-2].var); (yyval.interp) = (yyvsp[-4].interp); }
   2374 #line 2375 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2375     break;
   2376 
   2377   case 57:
   2378 #line 422 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2379     { (yyval.interp) = InterpCreate((yyvsp[-2].keysym), (yyvsp[0].expr)); }
   2380 #line 2381 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2381     break;
   2382 
   2383   case 58:
   2384 #line 424 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2385     { (yyval.interp) = InterpCreate((yyvsp[0].keysym), NULL); }
   2386 #line 2387 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2387     break;
   2388 
   2389   case 59:
   2390 #line 428 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2391     { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-1].var),
   2392                                                      (ParseCommon *) (yyvsp[0].var)); }
   2393 #line 2394 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2394     break;
   2395 
   2396   case 60:
   2397 #line 431 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2398     { (yyval.var) = (yyvsp[0].var); }
   2399 #line 2400 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2400     break;
   2401 
   2402   case 61:
   2403 #line 437 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2404     { (yyval.keyType) = KeyTypeCreate((yyvsp[-4].atom), (yyvsp[-2].var)); }
   2405 #line 2406 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2406     break;
   2407 
   2408   case 62:
   2409 #line 443 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2410     { (yyval.syms) = SymbolsCreate((yyvsp[-4].atom), (yyvsp[-2].var)); }
   2411 #line 2412 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2412     break;
   2413 
   2414   case 63:
   2415 #line 447 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2416     { (yyval.var) = (VarDef *) AppendStmt((ParseCommon *) (yyvsp[-2].var),
   2417                                                      (ParseCommon *) (yyvsp[0].var)); }
   2418 #line 2419 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2419     break;
   2420 
   2421   case 64:
   2422 #line 450 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2423     { (yyval.var) = (yyvsp[0].var); }
   2424 #line 2425 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2425     break;
   2426 
   2427   case 65:
   2428 #line 451 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2429     { (yyval.var) = NULL; }
   2430 #line 2431 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2431     break;
   2432 
   2433   case 66:
   2434 #line 454 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2435     { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); }
   2436 #line 2437 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2437     break;
   2438 
   2439   case 67:
   2440 #line 455 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2441     { (yyval.var) = VarCreate((yyvsp[-2].expr), (yyvsp[0].expr)); }
   2442 #line 2443 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2443     break;
   2444 
   2445   case 68:
   2446 #line 456 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2447     { (yyval.var) = BoolVarCreate((yyvsp[0].atom), true); }
   2448 #line 2449 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2449     break;
   2450 
   2451   case 69:
   2452 #line 457 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2453     { (yyval.var) = BoolVarCreate((yyvsp[0].atom), false); }
   2454 #line 2455 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2455     break;
   2456 
   2457   case 70:
   2458 #line 458 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2459     { (yyval.var) = VarCreate(NULL, (yyvsp[0].expr)); }
   2460 #line 2461 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2461     break;
   2462 
   2463   case 71:
   2464 #line 462 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2465     { (yyval.expr) = (yyvsp[-1].expr); }
   2466 #line 2467 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2467     break;
   2468 
   2469   case 72:
   2470 #line 464 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2471     { (yyval.expr) = ExprCreateUnary(EXPR_ACTION_LIST, EXPR_TYPE_ACTION, (yyvsp[-1].expr)); }
   2472 #line 2473 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2473     break;
   2474 
   2475   case 73:
   2476 #line 468 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2477     { (yyval.groupCompat) = GroupCompatCreate((yyvsp[-3].ival), (yyvsp[-1].expr)); }
   2478 #line 2479 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2479     break;
   2480 
   2481   case 74:
   2482 #line 472 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2483     { (yyval.modMask) = ModMapCreate((yyvsp[-4].atom), (yyvsp[-2].expr)); }
   2484 #line 2485 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2485     break;
   2486 
   2487   case 75:
   2488 #line 476 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2489     { (yyval.ledMap) = LedMapCreate((yyvsp[-4].atom), (yyvsp[-2].var)); }
   2490 #line 2491 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2491     break;
   2492 
   2493   case 76:
   2494 #line 480 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2495     { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), false); }
   2496 #line 2497 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2497     break;
   2498 
   2499   case 77:
   2500 #line 482 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2501     { (yyval.ledName) = LedNameCreate((yyvsp[-3].ival), (yyvsp[-1].expr), true); }
   2502 #line 2503 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2503     break;
   2504 
   2505   case 78:
   2506 #line 486 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2507     { (yyval.geom) = NULL; }
   2508 #line 2509 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2509     break;
   2510 
   2511   case 79:
   2512 #line 488 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2513     { (void) (yyvsp[-2].expr); (yyval.geom) = NULL; }
   2514 #line 2515 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2515     break;
   2516 
   2517   case 80:
   2518 #line 492 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2519     { (yyval.geom) = NULL; }
   2520 #line 2521 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2521     break;
   2522 
   2523   case 81:
   2524 #line 495 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2525     { (yyval.geom) = NULL;}
   2526 #line 2527 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2527     break;
   2528 
   2529   case 82:
   2530 #line 496 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2531     { (yyval.geom) = NULL; }
   2532 #line 2533 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2533     break;
   2534 
   2535   case 83:
   2536 #line 500 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2537     { (yyval.geom) = NULL; }
   2538 #line 2539 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2539     break;
   2540 
   2541   case 84:
   2542 #line 502 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2543     { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; }
   2544 #line 2545 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2545     break;
   2546 
   2547   case 85:
   2548 #line 504 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2549     { (yyval.geom) = NULL; }
   2550 #line 2551 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2551     break;
   2552 
   2553   case 86:
   2554 #line 506 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2555     { FreeStmt((ParseCommon *) (yyvsp[0].ledMap)); (yyval.geom) = NULL; }
   2556 #line 2557 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2557     break;
   2558 
   2559   case 87:
   2560 #line 508 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2561     { (yyval.geom) = NULL; }
   2562 #line 2563 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2563     break;
   2564 
   2565   case 88:
   2566 #line 511 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2567     { (yyval.geom) = NULL;}
   2568 #line 2569 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2569     break;
   2570 
   2571   case 89:
   2572 #line 512 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2573     { (yyval.geom) = NULL; }
   2574 #line 2575 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2575     break;
   2576 
   2577   case 90:
   2578 #line 515 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2579     { (yyval.geom) = NULL; }
   2580 #line 2581 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2581     break;
   2582 
   2583   case 91:
   2584 #line 517 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2585     { FreeStmt((ParseCommon *) (yyvsp[0].var)); (yyval.geom) = NULL; }
   2586 #line 2587 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2587     break;
   2588 
   2589   case 92:
   2590 #line 520 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2591     { (yyval.geom) = NULL; }
   2592 #line 2593 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2593     break;
   2594 
   2595   case 93:
   2596 #line 521 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2597     { (yyval.geom) = NULL; }
   2598 #line 2599 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2599     break;
   2600 
   2601   case 94:
   2602 #line 525 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2603     { (yyval.geom) = NULL; }
   2604 #line 2605 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2605     break;
   2606 
   2607   case 95:
   2608 #line 527 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2609     { FreeStmt((ParseCommon *) (yyvsp[-1].expr)); (yyval.geom) = NULL; }
   2610 #line 2611 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2611     break;
   2612 
   2613   case 96:
   2614 #line 531 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2615     { (yyval.geom) = NULL; }
   2616 #line 2617 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2617     break;
   2618 
   2619   case 97:
   2620 #line 534 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2621     { (yyval.geom) = NULL; }
   2622 #line 2623 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2623     break;
   2624 
   2625   case 98:
   2626 #line 535 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2627     { (yyval.geom) = NULL; }
   2628 #line 2629 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2629     break;
   2630 
   2631   case 99:
   2632 #line 538 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2633     { (yyval.geom) = NULL; }
   2634 #line 2635 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2635     break;
   2636 
   2637   case 100:
   2638 #line 542 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2639     { (yyval.geom) = NULL;}
   2640 #line 2641 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2641     break;
   2642 
   2643   case 101:
   2644 #line 544 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2645     { (yyval.geom) = NULL; }
   2646 #line 2647 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2647     break;
   2648 
   2649   case 102:
   2650 #line 548 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2651     { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; }
   2652 #line 2653 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2653     break;
   2654 
   2655   case 103:
   2656 #line 550 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2657     { (void) (yyvsp[-1].expr); (yyval.geom) = NULL; }
   2658 #line 2659 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2659     break;
   2660 
   2661   case 104:
   2662 #line 552 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2663     { FreeStmt((ParseCommon *) (yyvsp[0].expr)); (yyval.geom) = NULL; }
   2664 #line 2665 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2665     break;
   2666 
   2667   case 105:
   2668 #line 556 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2669     { (void) (yyvsp[-2].expr); (void) (yyvsp[0].expr); (yyval.expr) = NULL; }
   2670 #line 2671 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2671     break;
   2672 
   2673   case 106:
   2674 #line 558 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2675     { (void) (yyvsp[0].expr); (yyval.expr) = NULL; }
   2676 #line 2677 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2677     break;
   2678 
   2679   case 107:
   2680 #line 562 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2681     { (yyval.expr) = NULL; }
   2682 #line 2683 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2683     break;
   2684 
   2685   case 108:
   2686 #line 566 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2687     { FreeStmt((ParseCommon *) (yyvsp[-2].var)); (yyval.geom) = NULL; }
   2688 #line 2689 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2689     break;
   2690 
   2691   case 109:
   2692 #line 569 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2693     { (yyval.ival) = 0; }
   2694 #line 2695 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2695     break;
   2696 
   2697   case 110:
   2698 #line 570 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2699     { (yyval.ival) = 0; }
   2700 #line 2701 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2701     break;
   2702 
   2703   case 111:
   2704 #line 571 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2705     { (yyval.ival) = 0; }
   2706 #line 2707 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2707     break;
   2708 
   2709   case 112:
   2710 #line 572 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2711     { (yyval.ival) = 0; }
   2712 #line 2713 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2713     break;
   2714 
   2715   case 113:
   2716 #line 575 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2717     { (yyval.atom) = (yyvsp[0].atom); }
   2718 #line 2719 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2719     break;
   2720 
   2721   case 114:
   2722 #line 576 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2723     { (yyval.atom) = (yyvsp[0].atom); }
   2724 #line 2725 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2725     break;
   2726 
   2727   case 115:
   2728 #line 580 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2729     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "action"); }
   2730 #line 2731 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2731     break;
   2732 
   2733   case 116:
   2734 #line 582 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2735     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "interpret"); }
   2736 #line 2737 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2737     break;
   2738 
   2739   case 117:
   2740 #line 584 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2741     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "type"); }
   2742 #line 2743 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2743     break;
   2744 
   2745   case 118:
   2746 #line 586 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2747     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "key"); }
   2748 #line 2749 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2749     break;
   2750 
   2751   case 119:
   2752 #line 588 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2753     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "group"); }
   2754 #line 2755 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2755     break;
   2756 
   2757   case 120:
   2758 #line 590 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2759     {(yyval.atom) = xkb_atom_intern_literal(param->ctx, "modifier_map");}
   2760 #line 2761 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2761     break;
   2762 
   2763   case 121:
   2764 #line 592 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2765     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "indicator"); }
   2766 #line 2767 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2767     break;
   2768 
   2769   case 122:
   2770 #line 594 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2771     { (yyval.atom) = XKB_ATOM_NONE; }
   2772 #line 2773 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2773     break;
   2774 
   2775   case 123:
   2776 #line 596 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2777     { (yyval.atom) = XKB_ATOM_NONE; }
   2778 #line 2779 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2779     break;
   2780 
   2781   case 124:
   2782 #line 598 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2783     { (yyval.atom) = XKB_ATOM_NONE; }
   2784 #line 2785 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2785     break;
   2786 
   2787   case 125:
   2788 #line 600 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2789     { (yyval.atom) = XKB_ATOM_NONE; }
   2790 #line 2791 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2791     break;
   2792 
   2793   case 126:
   2794 #line 603 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2795     { (yyval.merge) = (yyvsp[0].merge); }
   2796 #line 2797 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2797     break;
   2798 
   2799   case 127:
   2800 #line 604 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2801     { (yyval.merge) = MERGE_DEFAULT; }
   2802 #line 2803 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2803     break;
   2804 
   2805   case 128:
   2806 #line 607 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2807     { (yyval.merge) = MERGE_DEFAULT; }
   2808 #line 2809 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2809     break;
   2810 
   2811   case 129:
   2812 #line 608 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2813     { (yyval.merge) = MERGE_AUGMENT; }
   2814 #line 2815 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2815     break;
   2816 
   2817   case 130:
   2818 #line 609 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2819     { (yyval.merge) = MERGE_OVERRIDE; }
   2820 #line 2821 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2821     break;
   2822 
   2823   case 131:
   2824 #line 610 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2825     { (yyval.merge) = MERGE_REPLACE; }
   2826 #line 2827 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2827     break;
   2828 
   2829   case 132:
   2830 #line 612 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2831     {
   2832                     /*
   2833                      * This used to be MERGE_ALT_FORM. This functionality was
   2834                      * unused and has been removed.
   2835                      */
   2836                     (yyval.merge) = MERGE_DEFAULT;
   2837                 }
   2838 #line 2839 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2839     break;
   2840 
   2841   case 133:
   2842 #line 621 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2843     { (yyval.expr) = (yyvsp[0].expr); }
   2844 #line 2845 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2845     break;
   2846 
   2847   case 134:
   2848 #line 622 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2849     { (yyval.expr) = NULL; }
   2850 #line 2851 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2851     break;
   2852 
   2853   case 135:
   2854 #line 626 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2855     { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr),
   2856                                                       (ParseCommon *) (yyvsp[0].expr)); }
   2857 #line 2858 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2858     break;
   2859 
   2860   case 136:
   2861 #line 629 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2862     { (yyval.expr) = (yyvsp[0].expr); }
   2863 #line 2864 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2864     break;
   2865 
   2866   case 137:
   2867 #line 633 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2868     { (yyval.expr) = ExprCreateBinary(EXPR_DIVIDE, (yyvsp[-2].expr), (yyvsp[0].expr)); }
   2869 #line 2870 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2870     break;
   2871 
   2872   case 138:
   2873 #line 635 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2874     { (yyval.expr) = ExprCreateBinary(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
   2875 #line 2876 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2876     break;
   2877 
   2878   case 139:
   2879 #line 637 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2880     { (yyval.expr) = ExprCreateBinary(EXPR_SUBTRACT, (yyvsp[-2].expr), (yyvsp[0].expr)); }
   2881 #line 2882 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2882     break;
   2883 
   2884   case 140:
   2885 #line 639 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2886     { (yyval.expr) = ExprCreateBinary(EXPR_MULTIPLY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
   2887 #line 2888 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2888     break;
   2889 
   2890   case 141:
   2891 #line 641 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2892     { (yyval.expr) = ExprCreateBinary(EXPR_ASSIGN, (yyvsp[-2].expr), (yyvsp[0].expr)); }
   2893 #line 2894 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2894     break;
   2895 
   2896   case 142:
   2897 #line 643 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2898     { (yyval.expr) = (yyvsp[0].expr); }
   2899 #line 2900 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2900     break;
   2901 
   2902   case 143:
   2903 #line 647 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2904     { (yyval.expr) = ExprCreateUnary(EXPR_NEGATE, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); }
   2905 #line 2906 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2906     break;
   2907 
   2908   case 144:
   2909 #line 649 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2910     { (yyval.expr) = ExprCreateUnary(EXPR_UNARY_PLUS, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); }
   2911 #line 2912 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2912     break;
   2913 
   2914   case 145:
   2915 #line 651 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2916     { (yyval.expr) = ExprCreateUnary(EXPR_NOT, EXPR_TYPE_BOOLEAN, (yyvsp[0].expr)); }
   2917 #line 2918 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2918     break;
   2919 
   2920   case 146:
   2921 #line 653 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2922     { (yyval.expr) = ExprCreateUnary(EXPR_INVERT, (yyvsp[0].expr)->expr.value_type, (yyvsp[0].expr)); }
   2923 #line 2924 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2924     break;
   2925 
   2926   case 147:
   2927 #line 655 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2928     { (yyval.expr) = (yyvsp[0].expr);  }
   2929 #line 2930 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2930     break;
   2931 
   2932   case 148:
   2933 #line 657 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2934     { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); }
   2935 #line 2936 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2936     break;
   2937 
   2938   case 149:
   2939 #line 659 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2940     { (yyval.expr) = (yyvsp[0].expr);  }
   2941 #line 2942 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2942     break;
   2943 
   2944   case 150:
   2945 #line 661 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2946     { (yyval.expr) = (yyvsp[-1].expr);  }
   2947 #line 2948 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2948     break;
   2949 
   2950   case 151:
   2951 #line 665 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2952     { (yyval.expr) = (ExprDef *) AppendStmt((ParseCommon *) (yyvsp[-2].expr),
   2953                                                       (ParseCommon *) (yyvsp[0].expr)); }
   2954 #line 2955 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2955     break;
   2956 
   2957   case 152:
   2958 #line 668 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2959     { (yyval.expr) = (yyvsp[0].expr); }
   2960 #line 2961 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2961     break;
   2962 
   2963   case 153:
   2964 #line 672 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2965     { (yyval.expr) = ExprCreateAction((yyvsp[-3].atom), (yyvsp[-1].expr)); }
   2966 #line 2967 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2967     break;
   2968 
   2969   case 154:
   2970 #line 676 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2971     { (yyval.expr) = ExprCreateIdent((yyvsp[0].atom)); }
   2972 #line 2973 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2973     break;
   2974 
   2975   case 155:
   2976 #line 678 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2977     { (yyval.expr) = ExprCreateFieldRef((yyvsp[-2].atom), (yyvsp[0].atom)); }
   2978 #line 2979 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2979     break;
   2980 
   2981   case 156:
   2982 #line 680 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2983     { (yyval.expr) = ExprCreateArrayRef(XKB_ATOM_NONE, (yyvsp[-3].atom), (yyvsp[-1].expr)); }
   2984 #line 2985 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2985     break;
   2986 
   2987   case 157:
   2988 #line 682 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2989     { (yyval.expr) = ExprCreateArrayRef((yyvsp[-5].atom), (yyvsp[-3].atom), (yyvsp[-1].expr)); }
   2990 #line 2991 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2991     break;
   2992 
   2993   case 158:
   2994 #line 686 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   2995     { (yyval.expr) = ExprCreateString((yyvsp[0].atom)); }
   2996 #line 2997 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   2997     break;
   2998 
   2999   case 159:
   3000 #line 688 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3001     { (yyval.expr) = ExprCreateInteger((yyvsp[0].ival)); }
   3002 #line 3003 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3003     break;
   3004 
   3005   case 160:
   3006 #line 690 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3007     { (yyval.expr) = NULL; }
   3008 #line 3009 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3009     break;
   3010 
   3011   case 161:
   3012 #line 692 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3013     { (yyval.expr) = ExprCreateKeyName((yyvsp[0].atom)); }
   3014 #line 3015 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3015     break;
   3016 
   3017   case 162:
   3018 #line 695 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3019     { (yyval.expr) = (yyvsp[0].expr); }
   3020 #line 3021 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3021     break;
   3022 
   3023   case 163:
   3024 #line 696 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3025     { (yyval.expr) = NULL; }
   3026 #line 3027 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3027     break;
   3028 
   3029   case 164:
   3030 #line 700 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3031     { (yyval.expr) = ExprAppendKeysymList((yyvsp[-2].expr), (yyvsp[0].keysym)); }
   3032 #line 3033 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3033     break;
   3034 
   3035   case 165:
   3036 #line 702 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3037     { (yyval.expr) = ExprAppendMultiKeysymList((yyvsp[-2].expr), (yyvsp[0].expr)); }
   3038 #line 3039 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3039     break;
   3040 
   3041   case 166:
   3042 #line 704 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3043     { (yyval.expr) = ExprCreateKeysymList((yyvsp[0].keysym)); }
   3044 #line 3045 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3045     break;
   3046 
   3047   case 167:
   3048 #line 706 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3049     { (yyval.expr) = ExprCreateMultiKeysymList((yyvsp[0].expr)); }
   3050 #line 3051 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3051     break;
   3052 
   3053   case 168:
   3054 #line 710 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3055     { (yyval.expr) = (yyvsp[-1].expr); }
   3056 #line 3057 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3057     break;
   3058 
   3059   case 169:
   3060 #line 714 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3061     {
   3062                             if (!resolve_keysym((yyvsp[0].str), &(yyval.keysym)))
   3063                                 parser_warn(param, "unrecognized keysym \"%s\"", (yyvsp[0].str));
   3064                             free((yyvsp[0].str));
   3065                         }
   3066 #line 3067 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3067     break;
   3068 
   3069   case 170:
   3070 #line 719 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3071     { (yyval.keysym) = XKB_KEY_section; }
   3072 #line 3073 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3073     break;
   3074 
   3075   case 171:
   3076 #line 721 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3077     {
   3078                             if ((yyvsp[0].ival) < 0) {
   3079                                 parser_warn(param, "unrecognized keysym \"%d\"", (yyvsp[0].ival));
   3080                                 (yyval.keysym) = XKB_KEY_NoSymbol;
   3081                             }
   3082                             else if ((yyvsp[0].ival) < 10) {      /* XKB_KEY_0 .. XKB_KEY_9 */
   3083                                 (yyval.keysym) = XKB_KEY_0 + (xkb_keysym_t) (yyvsp[0].ival);
   3084                             }
   3085                             else {
   3086                                 char buf[17];
   3087                                 snprintf(buf, sizeof(buf), "0x%x", (yyvsp[0].ival));
   3088                                 if (!resolve_keysym(buf, &(yyval.keysym))) {
   3089                                     parser_warn(param, "unrecognized keysym \"%s\"", buf);
   3090                                     (yyval.keysym) = XKB_KEY_NoSymbol;
   3091                                 }
   3092                             }
   3093                         }
   3094 #line 3095 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3095     break;
   3096 
   3097   case 172:
   3098 #line 740 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3099     { (yyval.ival) = -(yyvsp[0].ival); }
   3100 #line 3101 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3101     break;
   3102 
   3103   case 173:
   3104 #line 741 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3105     { (yyval.ival) = (yyvsp[0].ival); }
   3106 #line 3107 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3107     break;
   3108 
   3109   case 174:
   3110 #line 744 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3111     { (yyval.ival) = (yyvsp[0].num); }
   3112 #line 3113 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3113     break;
   3114 
   3115   case 175:
   3116 #line 745 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3117     { (yyval.ival) = (yyvsp[0].num); }
   3118 #line 3119 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3119     break;
   3120 
   3121   case 176:
   3122 #line 748 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3123     { (yyval.ival) = 0; }
   3124 #line 3125 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3125     break;
   3126 
   3127   case 177:
   3128 #line 751 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3129     { (yyval.ival) = (yyvsp[0].num); }
   3130 #line 3131 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3131     break;
   3132 
   3133   case 178:
   3134 #line 754 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3135     { (yyval.num) = (yyvsp[0].num); }
   3136 #line 3137 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3137     break;
   3138 
   3139   case 179:
   3140 #line 757 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3141     { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); }
   3142 #line 3143 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3143     break;
   3144 
   3145   case 180:
   3146 #line 758 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3147     { (yyval.atom) = xkb_atom_intern_literal(param->ctx, "default"); }
   3148 #line 3149 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3149     break;
   3150 
   3151   case 181:
   3152 #line 761 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3153     { (yyval.atom) = xkb_atom_steal(param->ctx, (yyvsp[0].str)); }
   3154 #line 3155 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3155     break;
   3156 
   3157   case 182:
   3158 #line 764 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3159     { (yyval.str) = (yyvsp[0].str); }
   3160 #line 3161 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3161     break;
   3162 
   3163   case 183:
   3164 #line 765 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3165     { (yyval.str) = NULL; }
   3166 #line 3167 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3167     break;
   3168 
   3169   case 184:
   3170 #line 768 "src/xkbcomp/parser.y" /* yacc.c:1646  */
   3171     { (yyval.str) = (yyvsp[0].str); }
   3172 #line 3173 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3173     break;
   3174 
   3175 
   3176 #line 3177 "src/xkbcomp/parser.c" /* yacc.c:1646  */
   3177       default: break;
   3178     }
   3179   /* User semantic actions sometimes alter yychar, and that requires
   3180      that yytoken be updated with the new translation.  We take the
   3181      approach of translating immediately before every use of yytoken.
   3182      One alternative is translating here after every semantic action,
   3183      but that translation would be missed if the semantic action invokes
   3184      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
   3185      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
   3186      incorrect destructor might then be invoked immediately.  In the
   3187      case of YYERROR or YYBACKUP, subsequent parser actions might lead
   3188      to an incorrect destructor call or verbose syntax error message
   3189      before the lookahead is translated.  */
   3190   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
   3191 
   3192   YYPOPSTACK (yylen);
   3193   yylen = 0;
   3194   YY_STACK_PRINT (yyss, yyssp);
   3195 
   3196   *++yyvsp = yyval;
   3197 
   3198   /* Now 'shift' the result of the reduction.  Determine what state
   3199      that goes to, based on the state we popped back to and the rule
   3200      number reduced by.  */
   3201 
   3202   yyn = yyr1[yyn];
   3203 
   3204   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
   3205   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
   3206     yystate = yytable[yystate];
   3207   else
   3208     yystate = yydefgoto[yyn - YYNTOKENS];
   3209 
   3210   goto yynewstate;
   3211 
   3212 
   3213 /*--------------------------------------.
   3214 | yyerrlab -- here on detecting error.  |
   3215 `--------------------------------------*/
   3216 yyerrlab:
   3217   /* Make sure we have latest lookahead translation.  See comments at
   3218      user semantic actions for why this is necessary.  */
   3219   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
   3220 
   3221   /* If not already recovering from an error, report this error.  */
   3222   if (!yyerrstatus)
   3223     {
   3224       ++yynerrs;
   3225 #if ! YYERROR_VERBOSE
   3226       yyerror (param, YY_("syntax error"));
   3227 #else
   3228 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
   3229                                         yyssp, yytoken)
   3230       {
   3231         char const *yymsgp = YY_("syntax error");
   3232         int yysyntax_error_status;
   3233         yysyntax_error_status = YYSYNTAX_ERROR;
   3234         if (yysyntax_error_status == 0)
   3235           yymsgp = yymsg;
   3236         else if (yysyntax_error_status == 1)
   3237           {
   3238             if (yymsg != yymsgbuf)
   3239               YYSTACK_FREE (yymsg);
   3240             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
   3241             if (!yymsg)
   3242               {
   3243                 yymsg = yymsgbuf;
   3244                 yymsg_alloc = sizeof yymsgbuf;
   3245                 yysyntax_error_status = 2;
   3246               }
   3247             else
   3248               {
   3249                 yysyntax_error_status = YYSYNTAX_ERROR;
   3250                 yymsgp = yymsg;
   3251               }
   3252           }
   3253         yyerror (param, yymsgp);
   3254         if (yysyntax_error_status == 2)
   3255           goto yyexhaustedlab;
   3256       }
   3257 # undef YYSYNTAX_ERROR
   3258 #endif
   3259     }
   3260 
   3261 
   3262 
   3263   if (yyerrstatus == 3)
   3264     {
   3265       /* If just tried and failed to reuse lookahead token after an
   3266          error, discard it.  */
   3267 
   3268       if (yychar <= YYEOF)
   3269         {
   3270           /* Return failure if at end of input.  */
   3271           if (yychar == YYEOF)
   3272             YYABORT;
   3273         }
   3274       else
   3275         {
   3276           yydestruct ("Error: discarding",
   3277                       yytoken, &yylval, param);
   3278           yychar = YYEMPTY;
   3279         }
   3280     }
   3281 
   3282   /* Else will try to reuse lookahead token after shifting the error
   3283      token.  */
   3284   goto yyerrlab1;
   3285 
   3286 
   3287 /*---------------------------------------------------.
   3288 | yyerrorlab -- error raised explicitly by YYERROR.  |
   3289 `---------------------------------------------------*/
   3290 yyerrorlab:
   3291 
   3292   /* Pacify compilers like GCC when the user code never invokes
   3293      YYERROR and the label yyerrorlab therefore never appears in user
   3294      code.  */
   3295   if (/*CONSTCOND*/ 0)
   3296      goto yyerrorlab;
   3297 
   3298   /* Do not reclaim the symbols of the rule whose action triggered
   3299      this YYERROR.  */
   3300   YYPOPSTACK (yylen);
   3301   yylen = 0;
   3302   YY_STACK_PRINT (yyss, yyssp);
   3303   yystate = *yyssp;
   3304   goto yyerrlab1;
   3305 
   3306 
   3307 /*-------------------------------------------------------------.
   3308 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   3309 `-------------------------------------------------------------*/
   3310 yyerrlab1:
   3311   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
   3312 
   3313   for (;;)
   3314     {
   3315       yyn = yypact[yystate];
   3316       if (!yypact_value_is_default (yyn))
   3317         {
   3318           yyn += YYTERROR;
   3319           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
   3320             {
   3321               yyn = yytable[yyn];
   3322               if (0 < yyn)
   3323                 break;
   3324             }
   3325         }
   3326 
   3327       /* Pop the current state because it cannot handle the error token.  */
   3328       if (yyssp == yyss)
   3329         YYABORT;
   3330 
   3331 
   3332       yydestruct ("Error: popping",
   3333                   yystos[yystate], yyvsp, param);
   3334       YYPOPSTACK (1);
   3335       yystate = *yyssp;
   3336       YY_STACK_PRINT (yyss, yyssp);
   3337     }
   3338 
   3339   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   3340   *++yyvsp = yylval;
   3341   YY_IGNORE_MAYBE_UNINITIALIZED_END
   3342 
   3343 
   3344   /* Shift the error token.  */
   3345   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
   3346 
   3347   yystate = yyn;
   3348   goto yynewstate;
   3349 
   3350 
   3351 /*-------------------------------------.
   3352 | yyacceptlab -- YYACCEPT comes here.  |
   3353 `-------------------------------------*/
   3354 yyacceptlab:
   3355   yyresult = 0;
   3356   goto yyreturn;
   3357 
   3358 /*-----------------------------------.
   3359 | yyabortlab -- YYABORT comes here.  |
   3360 `-----------------------------------*/
   3361 yyabortlab:
   3362   yyresult = 1;
   3363   goto yyreturn;
   3364 
   3365 #if !defined yyoverflow || YYERROR_VERBOSE
   3366 /*-------------------------------------------------.
   3367 | yyexhaustedlab -- memory exhaustion comes here.  |
   3368 `-------------------------------------------------*/
   3369 yyexhaustedlab:
   3370   yyerror (param, YY_("memory exhausted"));
   3371   yyresult = 2;
   3372   /* Fall through.  */
   3373 #endif
   3374 
   3375 yyreturn:
   3376   if (yychar != YYEMPTY)
   3377     {
   3378       /* Make sure we have latest lookahead translation.  See comments at
   3379          user semantic actions for why this is necessary.  */
   3380       yytoken = YYTRANSLATE (yychar);
   3381       yydestruct ("Cleanup: discarding lookahead",
   3382                   yytoken, &yylval, param);
   3383     }
   3384   /* Do not reclaim the symbols of the rule whose action triggered
   3385      this YYABORT or YYACCEPT.  */
   3386   YYPOPSTACK (yylen);
   3387   YY_STACK_PRINT (yyss, yyssp);
   3388   while (yyssp != yyss)
   3389     {
   3390       yydestruct ("Cleanup: popping",
   3391                   yystos[*yyssp], yyvsp, param);
   3392       YYPOPSTACK (1);
   3393     }
   3394 #ifndef yyoverflow
   3395   if (yyss != yyssa)
   3396     YYSTACK_FREE (yyss);
   3397 #endif
   3398 #if YYERROR_VERBOSE
   3399   if (yymsg != yymsgbuf)
   3400     YYSTACK_FREE (yymsg);
   3401 #endif
   3402   return yyresult;
   3403 }
   3404 #line 771 "src/xkbcomp/parser.y" /* yacc.c:1906  */
   3405 
   3406 
   3407 XkbFile *
   3408 parse(struct xkb_context *ctx, struct scanner *scanner, const char *map)
   3409 {
   3410     int ret;
   3411     XkbFile *first = NULL;
   3412     struct parser_param param = {
   3413         .scanner = scanner,
   3414         .ctx = ctx,
   3415         .rtrn = NULL,
   3416     };
   3417 
   3418     /*
   3419      * If we got a specific map, we look for it exclusively and return
   3420      * immediately upon finding it. Otherwise, we need to get the
   3421      * default map. If we find a map marked as default, we return it
   3422      * immediately. If there are no maps marked as default, we return
   3423      * the first map in the file.
   3424      */
   3425 
   3426     while ((ret = yyparse(&param)) == 0 && param.more_maps) {
   3427         if (map) {
   3428             if (streq_not_null(map, param.rtrn->name))
   3429                 return param.rtrn;
   3430             else
   3431                 FreeXkbFile(param.rtrn);
   3432         }
   3433         else {
   3434             if (param.rtrn->flags & MAP_IS_DEFAULT) {
   3435                 FreeXkbFile(first);
   3436                 return param.rtrn;
   3437             }
   3438             else if (!first) {
   3439                 first = param.rtrn;
   3440             }
   3441             else {
   3442                 FreeXkbFile(param.rtrn);
   3443             }
   3444         }
   3445         param.rtrn = NULL;
   3446     }
   3447 
   3448     if (ret != 0) {
   3449         FreeXkbFile(first);
   3450         return NULL;
   3451     }
   3452 
   3453     if (first)
   3454         log_vrb(ctx, 5,
   3455                 "No map in include statement, but \"%s\" contains several; "
   3456                 "Using first defined map, \"%s\"\n",
   3457                 scanner->file_name, first->name);
   3458 
   3459     return first;
   3460 }
   3461