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(¶m)) == 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