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