• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
_xkbcommon_error(struct parser_param * param,const char * msg)92 _xkbcommon_error(struct parser_param *param, const char *msg)
93 {
94     parser_err(param, "%s", msg);
95 }
96 
97 static bool
resolve_keysym(const char * name,xkb_keysym_t * sym_rtrn)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
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep,struct parser_param * param)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
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep,struct parser_param * param)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
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)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
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule,struct parser_param * param)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
yystrlen(const char * yystr)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 *
yystpcpy(char * yydest,const char * yysrc)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
yytnamerr(char * yyres,const char * yystr)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
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)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
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep,struct parser_param * param)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
yyparse(struct parser_param * param)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 *
parse(struct xkb_context * ctx,struct scanner * scanner,const char * map)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