xkbparse.c revision 07d2e718
1#ifndef lint 2static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; 3#endif 4 5#include <stdlib.h> 6#include <string.h> 7 8#define YYBYACC 1 9#define YYMAJOR 1 10#define YYMINOR 9 11#define YYPATCH 20100216 12 13#define YYEMPTY (-1) 14#define yyclearin (yychar = YYEMPTY) 15#define yyerrok (yyerrflag = 0) 16#define YYRECOVERING() (yyerrflag != 0) 17 18#define YYPREFIX "yy" 19 20/* compatibility with bison */ 21#ifdef YYPARSE_PARAM 22/* compatibility with FreeBSD */ 23#ifdef YYPARSE_PARAM_TYPE 24#define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) 25#else 26#define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) 27#endif 28#else 29#define YYPARSE_DECL() yyparse(void) 30#endif /* YYPARSE_PARAM */ 31 32extern int YYPARSE_DECL(); 33 34#line 92 "xkbparse.y" 35#ifdef DEBUG 36#define YYDEBUG 1 37#endif 38#define DEBUG_VAR parseDebug 39#include "parseutils.h" 40#include <X11/keysym.h> 41#include <X11/extensions/XKBgeom.h> 42#include <stdlib.h> 43 44unsigned int parseDebug; 45 46#line 110 "xkbparse.y" 47typedef union { 48 int ival; 49 unsigned uval; 50 char *str; 51 Atom sval; 52 ParseCommon *any; 53 ExprDef *expr; 54 VarDef *var; 55 VModDef *vmod; 56 InterpDef *interp; 57 KeyTypeDef *keyType; 58 SymbolsDef *syms; 59 ModMapDef *modMask; 60 GroupCompatDef *groupCompat; 61 IndicatorMapDef *ledMap; 62 IndicatorNameDef *ledName; 63 KeycodeDef *keyName; 64 KeyAliasDef *keyAlias; 65 ShapeDef *shape; 66 SectionDef *section; 67 RowDef *row; 68 KeyDef *key; 69 OverlayDef *overlay; 70 OverlayKeyDef *olKey; 71 OutlineDef *outline; 72 DoodadDef *doodad; 73 XkbFile *file; 74} YYSTYPE; 75#line 75 "xkbparse.c" 76#define END_OF_FILE 0 77#define ERROR_TOK 255 78#define XKB_KEYMAP 1 79#define XKB_KEYCODES 2 80#define XKB_TYPES 3 81#define XKB_SYMBOLS 4 82#define XKB_COMPATMAP 5 83#define XKB_GEOMETRY 6 84#define XKB_SEMANTICS 7 85#define XKB_LAYOUT 8 86#define INCLUDE 10 87#define OVERRIDE 11 88#define AUGMENT 12 89#define REPLACE 13 90#define ALTERNATE 14 91#define VIRTUAL_MODS 20 92#define TYPE 21 93#define INTERPRET 22 94#define ACTION_TOK 23 95#define KEY 24 96#define ALIAS 25 97#define GROUP 26 98#define MODIFIER_MAP 27 99#define INDICATOR 28 100#define SHAPE 29 101#define KEYS 30 102#define ROW 31 103#define SECTION 32 104#define OVERLAY 33 105#define TEXT 34 106#define OUTLINE 35 107#define SOLID 36 108#define LOGO 37 109#define VIRTUAL 38 110#define EQUALS 40 111#define PLUS 41 112#define MINUS 42 113#define DIVIDE 43 114#define TIMES 44 115#define OBRACE 45 116#define CBRACE 46 117#define OPAREN 47 118#define CPAREN 48 119#define OBRACKET 49 120#define CBRACKET 50 121#define DOT 51 122#define COMMA 52 123#define SEMI 53 124#define EXCLAM 54 125#define INVERT 55 126#define STRING 60 127#define INTEGER 61 128#define FLOAT 62 129#define IDENT 63 130#define KEYNAME 64 131#define PARTIAL 70 132#define DEFAULT 71 133#define HIDDEN 72 134#define ALPHANUMERIC_KEYS 73 135#define MODIFIER_KEYS 74 136#define KEYPAD_KEYS 75 137#define FUNCTION_KEYS 76 138#define ALTERNATE_GROUP 77 139#define YYERRCODE 256 140static const short yylhs[] = { -1, 141 0, 0, 0, 71, 71, 70, 5, 5, 5, 67, 142 67, 68, 69, 6, 6, 6, 6, 6, 12, 12, 143 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 144 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 145 22, 22, 22, 22, 22, 22, 22, 36, 36, 36, 146 51, 52, 40, 41, 41, 42, 42, 43, 44, 44, 147 37, 37, 45, 46, 38, 38, 38, 39, 39, 39, 148 39, 39, 29, 29, 48, 47, 49, 50, 50, 53, 149 53, 54, 55, 55, 56, 56, 56, 56, 56, 57, 150 57, 58, 58, 59, 59, 60, 60, 61, 62, 62, 151 63, 64, 64, 65, 65, 65, 35, 35, 34, 66, 152 9, 9, 9, 9, 17, 17, 19, 19, 19, 19, 153 19, 19, 19, 19, 19, 19, 19, 8, 8, 7, 154 7, 7, 7, 7, 23, 23, 24, 24, 25, 25, 155 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 156 26, 26, 33, 33, 32, 27, 27, 27, 27, 28, 157 28, 28, 28, 30, 30, 31, 31, 16, 16, 16, 158 4, 4, 1, 1, 3, 2, 13, 18, 18, 20, 159 15, 15, 14, 160}; 161static const short yylen[] = { 2, 162 1, 1, 1, 2, 1, 7, 1, 1, 1, 2, 163 1, 7, 4, 1, 1, 1, 1, 1, 1, 0, 164 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 165 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 166 2, 2, 2, 2, 2, 2, 2, 4, 2, 3, 167 4, 5, 3, 3, 1, 1, 3, 6, 3, 1, 168 2, 1, 6, 6, 3, 1, 0, 3, 3, 1, 169 2, 1, 3, 3, 5, 6, 6, 5, 6, 6, 170 6, 6, 2, 1, 5, 1, 1, 1, 1, 2, 171 1, 5, 1, 3, 1, 1, 3, 6, 3, 1, 172 3, 3, 1, 3, 5, 3, 3, 1, 5, 6, 173 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 174 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 175 1, 1, 1, 1, 1, 0, 3, 1, 3, 3, 176 3, 3, 3, 1, 2, 2, 2, 2, 1, 4, 177 1, 3, 3, 1, 4, 1, 3, 4, 6, 1, 178 1, 1, 1, 1, 0, 3, 1, 1, 1, 1, 179 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 180 1, 0, 1, 181}; 182static const short yydefred[] = { 0, 183 23, 24, 25, 26, 27, 28, 29, 30, 0, 22, 184 0, 0, 0, 11, 3, 5, 0, 21, 7, 14, 185 15, 17, 16, 18, 8, 9, 0, 0, 0, 10, 186 0, 4, 183, 181, 0, 0, 0, 0, 32, 0, 187 0, 0, 0, 130, 132, 131, 133, 134, 0, 0, 188 31, 0, 0, 47, 0, 0, 0, 117, 0, 0, 189 0, 0, 0, 0, 125, 0, 0, 112, 113, 114, 190 0, 0, 178, 177, 179, 0, 0, 0, 0, 116, 191 0, 33, 34, 35, 38, 39, 40, 41, 42, 43, 192 36, 37, 44, 45, 46, 6, 12, 0, 0, 55, 193 180, 0, 169, 176, 168, 170, 0, 0, 0, 0, 194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195 0, 0, 49, 0, 0, 0, 53, 0, 0, 0, 196 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 197 0, 119, 118, 120, 121, 122, 123, 124, 126, 127, 198 0, 0, 0, 0, 0, 175, 161, 162, 163, 0, 199 115, 160, 0, 144, 0, 151, 0, 0, 0, 0, 200 54, 62, 0, 0, 0, 0, 0, 0, 0, 72, 201 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 202 0, 108, 0, 0, 103, 0, 0, 0, 86, 88, 203 0, 84, 89, 87, 0, 0, 146, 149, 145, 0, 204 147, 148, 0, 0, 0, 0, 0, 51, 0, 158, 205 0, 48, 0, 61, 0, 0, 0, 167, 0, 0, 206 0, 154, 0, 71, 0, 0, 0, 52, 75, 0, 207 0, 78, 0, 0, 0, 174, 173, 172, 0, 0, 208 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 209 152, 0, 0, 0, 0, 139, 142, 0, 0, 63, 210 58, 0, 73, 0, 74, 0, 0, 69, 64, 65, 211 76, 0, 77, 104, 171, 0, 0, 0, 81, 107, 212 80, 102, 0, 93, 0, 91, 0, 82, 79, 110, 213 150, 159, 0, 166, 153, 0, 0, 0, 0, 90, 214 0, 0, 100, 155, 109, 105, 0, 96, 0, 95, 215 85, 0, 0, 0, 0, 0, 0, 101, 98, 99, 216 97, 92, 94, 217}; 218static const short yydgoto[] = { 9, 219 248, 157, 158, 249, 27, 28, 49, 50, 76, 10, 220 11, 29, 159, 34, 35, 107, 160, 161, 80, 162, 221 40, 51, 262, 263, 186, 164, 165, 166, 180, 230, 222 231, 232, 233, 192, 193, 172, 173, 181, 182, 83, 223 99, 100, 84, 108, 85, 86, 87, 88, 200, 90, 224 91, 92, 93, 94, 201, 202, 295, 296, 319, 320, 225 203, 312, 313, 194, 195, 204, 13, 14, 15, 16, 226 17, 227}; 228static const short yysindex[] = { 456, 229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230 456, 975, 456, 0, 0, 0, 456, 0, 0, 0, 231 0, 0, 0, 0, 0, 0, -40, -40, 534, 0, 232 15, 0, 0, 0, -1, 11, -40, 456, 0, 658, 233 11, 123, 16, 0, 0, 0, 0, 0, 3, 14, 234 0, 6, 13, 0, 25, 32, -8, 0, 37, 37, 235 52, 25, 145, 32, 0, 32, 0, 0, 0, 0, 236 88, 25, 0, 0, 0, 32, 92, 80, 108, 0, 237 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238 0, 0, 0, 0, 0, 0, 0, 138, 161, 0, 239 0, 118, 0, 0, 0, 0, 140, 143, 146, 162, 240 170, 181, 189, 188, 193, 215, 52, 218, 238, 633, 241 633, 941, 0, 633, 633, 25, 0, 903, 633, 903, 242 738, 37, 633, 633, 633, 903, 9, 266, 240, 0, 243 903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244 633, 633, 633, 633, 633, 0, 0, 0, 0, 311, 245 0, 0, 103, 0, 245, 0, 414, 166, 208, 583, 246 0, 0, 752, 583, 790, 882, 25, 0, 256, 0, 247 47, 0, 251, 212, 97, 583, 225, 806, 270, 45, 248 274, 0, 137, 211, 0, 32, 304, 32, 0, 0, 249 679, 0, 0, 0, 633, 844, 0, 0, 0, 537, 250 0, 0, 633, 633, 633, 633, 633, 0, 633, 0, 251 633, 0, 298, 0, 306, 0, 0, 0, 326, 345, 252 324, 0, 98, 0, 541, 347, 738, 0, 0, 360, 253 633, 0, 364, 385, 354, 0, 0, 0, 376, 587, 254 387, 270, 407, 2, 865, 403, 410, 0, 280, 427, 255 0, 418, 438, 395, 395, 0, 0, 583, 474, 0, 256 0, 633, 0, -8, 0, 941, 583, 0, 0, 0, 257 0, 583, 0, 0, 0, 45, 270, 583, 0, 0, 258 0, 0, 467, 0, 700, 0, 37, 0, 0, 0, 259 0, 0, 453, 0, 0, 491, 413, -32, 500, 0, 260 516, 437, 0, 0, 0, 0, 633, 0, 545, 0, 261 0, 37, 513, 37, 546, 518, -32, 0, 0, 0, 262 0, 0, 0, 263}; 264static const short yyrindex[] = { 983, 265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 266 991, 0, 399, 0, 0, 0, 334, 0, 0, 0, 267 0, 0, 0, 0, 0, 0, 529, 343, 0, 0, 268 0, 0, 0, 0, 0, 398, 529, 680, 0, 450, 269 0, 680, 471, 0, 0, 0, 0, 0, 523, 0, 270 0, 0, 0, 0, 0, 20, 60, 0, 84, 0, 271 87, 152, 190, 194, 0, 235, 74, 0, 0, 0, 272 0, 0, 0, 0, 0, 0, 0, 536, 296, 0, 273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 274 0, 0, 0, 0, 0, 0, 0, 415, 0, 0, 275 0, 0, 0, 0, 0, 0, 539, 0, 0, 0, 276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 278 547, 0, 0, 0, 0, 0, 0, 0, 0, 0, 279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280 0, 0, 0, 0, 0, 0, 0, 0, 0, 265, 281 0, 0, 0, 0, 341, 0, 0, 401, 0, 458, 282 0, 0, 0, 544, 0, 557, 0, 230, 0, 0, 283 0, 0, 0, 0, 0, 292, 0, 0, 0, 0, 284 0, 0, 0, 0, 0, 190, 299, 0, 0, 0, 285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 286 0, 0, 572, 0, 0, 0, 0, 0, 0, 0, 287 0, 0, 0, 0, 0, 65, 110, 0, 0, 0, 288 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 291 0, 0, 574, 134, 175, 0, 0, 585, 0, 0, 292 0, 572, 0, 0, 0, 0, 554, 0, 0, 0, 293 0, 344, 0, 0, 0, 0, 0, 571, 0, 0, 294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 298 0, 0, 0, 299}; 300static const short yygindex[] = { 0, 301 394, -56, 0, 357, 0, 611, 0, 0, 0, 634, 302 0, 57, -50, 0, 39, -170, 36, -47, 0, -45, 303 605, 0, 374, -132, 111, 368, -33, 0, 417, 0, 304 0, 377, 0, 411, -177, -36, -66, 0, 429, 0, 305 0, 550, 0, 0, 0, 0, 0, 0, 623, 0, 306 0, 0, 0, 0, 0, 476, 0, 383, 0, 352, 307 0, 0, 365, 0, 436, 631, 653, -9, 0, 675, 308 0, 309}; 310#define YYTABLESIZE 1012 311static const short yytable[] = { 77, 312 106, 185, 79, 30, 111, 228, 113, 98, 109, 110, 313 102, 244, 317, 82, 112, 19, 81, 114, 115, 33, 314 116, 25, 26, 103, 118, 44, 45, 46, 47, 48, 315 119, 74, 30, 55, 56, 57, 58, 59, 60, 61, 316 62, 63, 64, 38, 65, 66, 189, 67, 68, 69, 317 70, 71, 104, 189, 105, 39, 12, 190, 96, 119, 318 139, 53, 54, 175, 73, 97, 36, 72, 119, 188, 319 119, 73, 75, 31, 206, 41, 73, 74, 98, 75, 320 79, 183, 79, 178, 75, 78, 245, 73, 79, 191, 321 79, 101, 236, 79, 81, 75, 81, 179, 237, 118, 322 74, 199, 81, 304, 81, 246, 247, 81, 118, 307, 323 118, 126, 104, 127, 169, 117, 169, 208, 208, 106, 324 208, 208, 127, 120, 127, 79, 121, 79, 121, 234, 325 122, 120, 120, 111, 120, 121, 224, 121, 224, 81, 326 79, 81, 240, 214, 215, 216, 217, 275, 241, 276, 327 114, 224, 256, 79, 81, 218, 178, 168, 79, 168, 328 123, 168, 128, 78, 199, 78, 78, 81, 52, 224, 329 124, 78, 81, 78, 140, 140, 78, 125, 140, 140, 330 129, 140, 251, 140, 325, 140, 140, 130, 252, 178, 331 131, 122, 1, 2, 3, 4, 5, 6, 7, 8, 332 122, 132, 122, 179, 101, 104, 191, 79, 78, 133, 333 78, 229, 126, 127, 221, 141, 141, 106, 294, 141, 334 141, 81, 141, 78, 141, 134, 141, 141, 135, 123, 335 163, 167, 136, 124, 169, 170, 78, 137, 123, 174, 336 123, 78, 124, 184, 124, 187, 311, 79, 214, 215, 337 216, 217, 214, 215, 216, 217, 253, 318, 294, 138, 338 222, 81, 254, 210, 239, 214, 215, 216, 217, 115, 339 140, 328, 78, 311, 126, 70, 318, 242, 115, 205, 340 115, 70, 141, 126, 219, 126, 142, 143, 58, 144, 341 78, 145, 146, 196, 148, 235, 197, 149, 198, 67, 342 68, 69, 70, 238, 156, 156, 156, 156, 156, 156, 343 156, 229, 156, 250, 156, 259, 156, 156, 190, 72, 344 214, 215, 216, 217, 264, 265, 266, 267, 73, 268, 345 78, 269, 299, 1, 20, 115, 75, 138, 125, 138, 346 20, 20, 182, 138, 115, 277, 115, 125, 255, 125, 347 270, 282, 182, 182, 182, 182, 182, 213, 271, 121, 348 288, 122, 182, 182, 182, 182, 182, 182, 182, 182, 349 182, 182, 272, 182, 182, 274, 182, 182, 182, 182, 350 182, 149, 149, 149, 149, 149, 149, 182, 149, 137, 351 149, 137, 149, 149, 273, 137, 182, 32, 2, 279, 352 20, 20, 20, 20, 20, 182, 182, 32, 32, 32, 353 32, 32, 281, 182, 246, 247, 283, 32, 32, 32, 354 32, 32, 32, 32, 32, 32, 32, 286, 32, 32, 355 284, 32, 32, 32, 32, 32, 252, 216, 217, 289, 356 157, 157, 157, 157, 157, 157, 157, 297, 157, 13, 357 157, 32, 157, 157, 214, 215, 216, 217, 316, 291, 358 32, 32, 298, 220, 252, 301, 56, 56, 32, 129, 359 129, 129, 129, 129, 129, 129, 129, 129, 129, 300, 360 129, 129, 323, 129, 129, 129, 129, 129, 324, 241, 361 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 362 314, 129, 129, 129, 129, 129, 129, 129, 129, 57, 363 57, 308, 129, 129, 214, 215, 216, 217, 207, 209, 364 129, 211, 212, 302, 129, 1, 2, 3, 4, 5, 365 6, 7, 8, 129, 129, 20, 21, 22, 23, 24, 366 315, 129, 128, 128, 128, 128, 128, 128, 128, 128, 367 128, 128, 321, 128, 128, 322, 128, 128, 128, 128, 368 128, 142, 143, 58, 144, 329, 145, 146, 147, 148, 369 332, 65, 149, 182, 150, 156, 128, 214, 215, 216, 370 217, 151, 152, 60, 261, 128, 128, 153, 59, 176, 371 326, 331, 67, 128, 154, 155, 327, 241, 67, 68, 372 101, 104, 156, 73, 74, 68, 165, 142, 143, 58, 373 144, 75, 145, 146, 147, 148, 106, 65, 149, 136, 374 150, 135, 106, 214, 215, 216, 217, 151, 152, 143, 375 143, 287, 143, 153, 143, 164, 143, 143, 285, 37, 376 154, 155, 306, 43, 18, 303, 101, 104, 156, 73, 377 74, 278, 305, 142, 143, 58, 144, 75, 145, 146, 378 147, 148, 290, 65, 149, 280, 150, 44, 45, 46, 379 47, 48, 89, 151, 152, 171, 258, 310, 333, 153, 380 95, 20, 20, 20, 20, 20, 154, 155, 330, 292, 381 42, 32, 101, 104, 156, 73, 74, 0, 0, 142, 382 143, 58, 144, 75, 145, 146, 196, 148, 0, 197, 383 149, 198, 67, 68, 69, 70, 0, 0, 0, 0, 384 142, 143, 58, 144, 257, 145, 146, 147, 148, 293, 385 65, 149, 72, 150, 0, 0, 0, 0, 0, 0, 386 0, 73, 0, 0, 0, 309, 0, 0, 0, 75, 387 0, 0, 0, 72, 0, 0, 0, 0, 142, 143, 388 58, 144, 73, 145, 146, 147, 148, 0, 65, 149, 389 75, 150, 142, 143, 58, 144, 0, 145, 146, 147, 390 148, 0, 65, 149, 0, 150, 176, 0, 0, 0, 391 0, 177, 0, 0, 0, 0, 0, 223, 0, 0, 392 73, 0, 0, 0, 0, 72, 0, 0, 75, 0, 393 142, 143, 58, 144, 73, 145, 146, 147, 148, 0, 394 65, 149, 75, 150, 0, 0, 142, 143, 58, 144, 395 0, 145, 146, 147, 148, 225, 65, 149, 0, 150, 396 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 397 0, 243, 73, 0, 0, 0, 0, 0, 0, 72, 398 75, 0, 0, 0, 142, 143, 58, 144, 73, 145, 399 146, 147, 148, 0, 65, 149, 75, 150, 0, 0, 400 0, 0, 0, 0, 0, 142, 143, 58, 144, 260, 401 145, 146, 147, 148, 293, 65, 149, 72, 150, 0, 402 0, 0, 142, 143, 58, 144, 73, 145, 146, 147, 403 148, 0, 65, 226, 75, 150, 0, 0, 72, 0, 404 0, 0, 0, 142, 143, 58, 144, 73, 145, 146, 405 147, 148, 0, 65, 149, 75, 150, 0, 0, 0, 406 0, 0, 104, 0, 227, 0, 0, 0, 0, 0, 407 0, 0, 75, 0, 0, 0, 72, 0, 0, 0, 408 0, 142, 143, 58, 144, 73, 145, 146, 147, 148, 409 0, 65, 149, 75, 150, 19, 20, 21, 22, 23, 410 24, 25, 26, 20, 20, 20, 20, 20, 20, 20, 411 20, 19, 19, 19, 19, 19, 19, 19, 19, 0, 412 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 413 0, 75, 414}; 415static const short yycheck[] = { 50, 416 57, 134, 50, 13, 61, 176, 63, 55, 59, 60, 417 56, 189, 45, 50, 62, 1, 50, 63, 64, 60, 418 66, 7, 8, 32, 72, 10, 11, 12, 13, 14, 419 76, 64, 42, 20, 21, 22, 23, 24, 25, 26, 420 27, 28, 29, 45, 31, 32, 45, 34, 35, 36, 421 37, 38, 61, 45, 63, 45, 0, 49, 53, 40, 422 117, 46, 60, 130, 63, 53, 28, 54, 49, 136, 423 51, 63, 71, 17, 141, 37, 63, 64, 126, 71, 424 128, 132, 130, 131, 71, 50, 42, 63, 136, 137, 425 138, 60, 46, 141, 128, 71, 130, 131, 52, 40, 426 64, 138, 136, 274, 138, 61, 62, 141, 49, 287, 427 51, 47, 61, 40, 50, 28, 52, 151, 152, 176, 428 154, 155, 49, 40, 51, 173, 40, 175, 49, 177, 429 51, 40, 49, 60, 51, 49, 173, 51, 175, 173, 430 188, 175, 46, 41, 42, 43, 44, 50, 52, 52, 431 196, 188, 198, 201, 188, 53, 47, 122, 206, 50, 432 53, 52, 45, 128, 201, 130, 131, 201, 46, 206, 433 40, 136, 206, 138, 41, 42, 141, 40, 45, 46, 434 41, 48, 46, 50, 317, 52, 53, 45, 52, 237, 435 45, 40, 70, 71, 72, 73, 74, 75, 76, 77, 436 49, 40, 51, 237, 60, 61, 254, 255, 173, 40, 437 175, 176, 52, 53, 49, 41, 42, 274, 255, 45, 438 46, 255, 48, 188, 50, 45, 52, 53, 40, 40, 439 120, 121, 45, 40, 124, 125, 201, 45, 49, 129, 440 51, 206, 49, 133, 51, 135, 297, 295, 41, 42, 441 43, 44, 41, 42, 43, 44, 46, 308, 295, 45, 442 53, 295, 52, 153, 53, 41, 42, 43, 44, 40, 443 53, 322, 237, 324, 40, 46, 327, 53, 49, 40, 444 51, 52, 45, 49, 40, 51, 21, 22, 23, 24, 445 255, 26, 27, 28, 29, 40, 31, 32, 33, 34, 446 35, 36, 37, 53, 40, 41, 42, 43, 44, 45, 447 46, 276, 48, 40, 50, 205, 52, 53, 49, 54, 448 41, 42, 43, 44, 214, 215, 216, 217, 63, 219, 449 295, 221, 53, 0, 1, 40, 71, 46, 40, 48, 450 7, 8, 0, 52, 49, 235, 51, 49, 45, 51, 451 53, 241, 10, 11, 12, 13, 14, 47, 53, 49, 452 250, 51, 20, 21, 22, 23, 24, 25, 26, 27, 453 28, 29, 47, 31, 32, 52, 34, 35, 36, 37, 454 38, 41, 42, 43, 44, 45, 46, 45, 48, 46, 455 50, 48, 52, 53, 50, 52, 54, 0, 0, 53, 456 2, 3, 4, 5, 6, 63, 64, 10, 11, 12, 457 13, 14, 53, 71, 61, 62, 53, 20, 21, 22, 458 23, 24, 25, 26, 27, 28, 29, 52, 31, 32, 459 46, 34, 35, 36, 37, 38, 52, 43, 44, 53, 460 40, 41, 42, 43, 44, 45, 46, 45, 48, 0, 461 50, 54, 52, 53, 41, 42, 43, 44, 46, 53, 462 63, 64, 53, 50, 52, 48, 52, 53, 71, 20, 463 21, 22, 23, 24, 25, 26, 27, 28, 29, 53, 464 31, 32, 46, 34, 35, 36, 37, 38, 52, 52, 465 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 466 48, 31, 32, 54, 34, 35, 36, 37, 38, 52, 467 53, 45, 63, 64, 41, 42, 43, 44, 151, 152, 468 71, 154, 155, 50, 54, 70, 71, 72, 73, 74, 469 75, 76, 77, 63, 64, 2, 3, 4, 5, 6, 470 50, 71, 20, 21, 22, 23, 24, 25, 26, 27, 471 28, 29, 53, 31, 32, 40, 34, 35, 36, 37, 472 38, 21, 22, 23, 24, 53, 26, 27, 28, 29, 473 53, 31, 32, 45, 34, 40, 54, 41, 42, 43, 474 44, 41, 42, 45, 48, 63, 64, 47, 45, 49, 475 46, 46, 46, 71, 54, 55, 52, 52, 52, 46, 476 60, 61, 62, 63, 64, 52, 50, 21, 22, 23, 477 24, 71, 26, 27, 28, 29, 46, 31, 32, 48, 478 34, 48, 52, 41, 42, 43, 44, 41, 42, 45, 479 46, 45, 48, 47, 50, 50, 52, 53, 245, 29, 480 54, 55, 286, 39, 11, 272, 60, 61, 62, 63, 481 64, 235, 276, 21, 22, 23, 24, 71, 26, 27, 482 28, 29, 252, 31, 32, 237, 34, 10, 11, 12, 483 13, 14, 50, 41, 42, 126, 201, 295, 327, 47, 484 50, 2, 3, 4, 5, 6, 54, 55, 324, 254, 485 38, 17, 60, 61, 62, 63, 64, -1, -1, 21, 486 22, 23, 24, 71, 26, 27, 28, 29, -1, 31, 487 32, 33, 34, 35, 36, 37, -1, -1, -1, -1, 488 21, 22, 23, 24, 46, 26, 27, 28, 29, 30, 489 31, 32, 54, 34, -1, -1, -1, -1, -1, -1, 490 -1, 63, -1, -1, -1, 46, -1, -1, -1, 71, 491 -1, -1, -1, 54, -1, -1, -1, -1, 21, 22, 492 23, 24, 63, 26, 27, 28, 29, -1, 31, 32, 493 71, 34, 21, 22, 23, 24, -1, 26, 27, 28, 494 29, -1, 31, 32, -1, 34, 49, -1, -1, -1, 495 -1, 54, -1, -1, -1, -1, -1, 46, -1, -1, 496 63, -1, -1, -1, -1, 54, -1, -1, 71, -1, 497 21, 22, 23, 24, 63, 26, 27, 28, 29, -1, 498 31, 32, 71, 34, -1, -1, 21, 22, 23, 24, 499 -1, 26, 27, 28, 29, 46, 31, 32, -1, 34, 500 -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, 501 -1, 46, 63, -1, -1, -1, -1, -1, -1, 54, 502 71, -1, -1, -1, 21, 22, 23, 24, 63, 26, 503 27, 28, 29, -1, 31, 32, 71, 34, -1, -1, 504 -1, -1, -1, -1, -1, 21, 22, 23, 24, 46, 505 26, 27, 28, 29, 30, 31, 32, 54, 34, -1, 506 -1, -1, 21, 22, 23, 24, 63, 26, 27, 28, 507 29, -1, 31, 32, 71, 34, -1, -1, 54, -1, 508 -1, -1, -1, 21, 22, 23, 24, 63, 26, 27, 509 28, 29, -1, 31, 32, 71, 34, -1, -1, -1, 510 -1, -1, 61, -1, 63, -1, -1, -1, -1, -1, 511 -1, -1, 71, -1, -1, -1, 54, -1, -1, -1, 512 -1, 21, 22, 23, 24, 63, 26, 27, 28, 29, 513 -1, 31, 32, 71, 34, 1, 2, 3, 4, 5, 514 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 515 8, 1, 2, 3, 4, 5, 6, 7, 8, -1, 516 -1, -1, -1, 63, -1, -1, -1, -1, -1, -1, 517 -1, 71, 518}; 519#define YYFINAL 9 520#ifndef YYDEBUG 521#define YYDEBUG 0 522#endif 523#define YYMAXTOKEN 255 524#if YYDEBUG 525static const char *yyname[] = { 526 527"end-of-file","XKB_KEYMAP","XKB_KEYCODES","XKB_TYPES","XKB_SYMBOLS", 528"XKB_COMPATMAP","XKB_GEOMETRY","XKB_SEMANTICS","XKB_LAYOUT",0,"INCLUDE", 529"OVERRIDE","AUGMENT","REPLACE","ALTERNATE",0,0,0,0,0,"VIRTUAL_MODS","TYPE", 530"INTERPRET","ACTION_TOK","KEY","ALIAS","GROUP","MODIFIER_MAP","INDICATOR", 531"SHAPE","KEYS","ROW","SECTION","OVERLAY","TEXT","OUTLINE","SOLID","LOGO", 532"VIRTUAL",0,"EQUALS","PLUS","MINUS","DIVIDE","TIMES","OBRACE","CBRACE","OPAREN", 533"CPAREN","OBRACKET","CBRACKET","DOT","COMMA","SEMI","EXCLAM","INVERT",0,0,0,0, 534"STRING","INTEGER","FLOAT","IDENT","KEYNAME",0,0,0,0,0,"PARTIAL","DEFAULT", 535"HIDDEN","ALPHANUMERIC_KEYS","MODIFIER_KEYS","KEYPAD_KEYS","FUNCTION_KEYS", 536"ALTERNATE_GROUP",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5370,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5380,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5390,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 5400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"ERROR_TOK", 541}; 542static const char *yyrule[] = { 543"$accept : XkbFile", 544"XkbFile : XkbCompMapList", 545"XkbFile : XkbMapConfigList", 546"XkbFile : XkbConfig", 547"XkbCompMapList : XkbCompMapList XkbCompositeMap", 548"XkbCompMapList : XkbCompositeMap", 549"XkbCompositeMap : OptFlags XkbCompositeType OptMapName OBRACE XkbMapConfigList CBRACE SEMI", 550"XkbCompositeType : XKB_KEYMAP", 551"XkbCompositeType : XKB_SEMANTICS", 552"XkbCompositeType : XKB_LAYOUT", 553"XkbMapConfigList : XkbMapConfigList XkbMapConfig", 554"XkbMapConfigList : XkbMapConfig", 555"XkbMapConfig : OptFlags FileType OptMapName OBRACE DeclList CBRACE SEMI", 556"XkbConfig : OptFlags FileType OptMapName DeclList", 557"FileType : XKB_KEYCODES", 558"FileType : XKB_TYPES", 559"FileType : XKB_COMPATMAP", 560"FileType : XKB_SYMBOLS", 561"FileType : XKB_GEOMETRY", 562"OptFlags : Flags", 563"OptFlags :", 564"Flags : Flags Flag", 565"Flags : Flag", 566"Flag : PARTIAL", 567"Flag : DEFAULT", 568"Flag : HIDDEN", 569"Flag : ALPHANUMERIC_KEYS", 570"Flag : MODIFIER_KEYS", 571"Flag : KEYPAD_KEYS", 572"Flag : FUNCTION_KEYS", 573"Flag : ALTERNATE_GROUP", 574"DeclList : DeclList Decl", 575"DeclList :", 576"Decl : OptMergeMode VarDecl", 577"Decl : OptMergeMode VModDecl", 578"Decl : OptMergeMode InterpretDecl", 579"Decl : OptMergeMode KeyNameDecl", 580"Decl : OptMergeMode KeyAliasDecl", 581"Decl : OptMergeMode KeyTypeDecl", 582"Decl : OptMergeMode SymbolsDecl", 583"Decl : OptMergeMode ModMapDecl", 584"Decl : OptMergeMode GroupCompatDecl", 585"Decl : OptMergeMode IndicatorMapDecl", 586"Decl : OptMergeMode IndicatorNameDecl", 587"Decl : OptMergeMode ShapeDecl", 588"Decl : OptMergeMode SectionDecl", 589"Decl : OptMergeMode DoodadDecl", 590"Decl : MergeMode STRING", 591"VarDecl : Lhs EQUALS Expr SEMI", 592"VarDecl : Ident SEMI", 593"VarDecl : EXCLAM Ident SEMI", 594"KeyNameDecl : KeyName EQUALS Expr SEMI", 595"KeyAliasDecl : ALIAS KeyName EQUALS KeyName SEMI", 596"VModDecl : VIRTUAL_MODS VModDefList SEMI", 597"VModDefList : VModDefList COMMA VModDef", 598"VModDefList : VModDef", 599"VModDef : Ident", 600"VModDef : Ident EQUALS Expr", 601"InterpretDecl : INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI", 602"InterpretMatch : KeySym PLUS Expr", 603"InterpretMatch : KeySym", 604"VarDeclList : VarDeclList VarDecl", 605"VarDeclList : VarDecl", 606"KeyTypeDecl : TYPE String OBRACE VarDeclList CBRACE SEMI", 607"SymbolsDecl : KEY KeyName OBRACE SymbolsBody CBRACE SEMI", 608"SymbolsBody : SymbolsBody COMMA SymbolsVarDecl", 609"SymbolsBody : SymbolsVarDecl", 610"SymbolsBody :", 611"SymbolsVarDecl : Lhs EQUALS Expr", 612"SymbolsVarDecl : Lhs EQUALS ArrayInit", 613"SymbolsVarDecl : Ident", 614"SymbolsVarDecl : EXCLAM Ident", 615"SymbolsVarDecl : ArrayInit", 616"ArrayInit : OBRACKET OptKeySymList CBRACKET", 617"ArrayInit : OBRACKET ActionList CBRACKET", 618"GroupCompatDecl : GROUP Integer EQUALS Expr SEMI", 619"ModMapDecl : MODIFIER_MAP Ident OBRACE ExprList CBRACE SEMI", 620"IndicatorMapDecl : INDICATOR String OBRACE VarDeclList CBRACE SEMI", 621"IndicatorNameDecl : INDICATOR Integer EQUALS Expr SEMI", 622"IndicatorNameDecl : VIRTUAL INDICATOR Integer EQUALS Expr SEMI", 623"ShapeDecl : SHAPE String OBRACE OutlineList CBRACE SEMI", 624"ShapeDecl : SHAPE String OBRACE CoordList CBRACE SEMI", 625"SectionDecl : SECTION String OBRACE SectionBody CBRACE SEMI", 626"SectionBody : SectionBody SectionBodyItem", 627"SectionBody : SectionBodyItem", 628"SectionBodyItem : ROW OBRACE RowBody CBRACE SEMI", 629"SectionBodyItem : VarDecl", 630"SectionBodyItem : DoodadDecl", 631"SectionBodyItem : IndicatorMapDecl", 632"SectionBodyItem : OverlayDecl", 633"RowBody : RowBody RowBodyItem", 634"RowBody : RowBodyItem", 635"RowBodyItem : KEYS OBRACE Keys CBRACE SEMI", 636"RowBodyItem : VarDecl", 637"Keys : Keys COMMA Key", 638"Keys : Key", 639"Key : KeyName", 640"Key : OBRACE ExprList CBRACE", 641"OverlayDecl : OVERLAY String OBRACE OverlayKeyList CBRACE SEMI", 642"OverlayKeyList : OverlayKeyList COMMA OverlayKey", 643"OverlayKeyList : OverlayKey", 644"OverlayKey : KeyName EQUALS KeyName", 645"OutlineList : OutlineList COMMA OutlineInList", 646"OutlineList : OutlineInList", 647"OutlineInList : OBRACE CoordList CBRACE", 648"OutlineInList : Ident EQUALS OBRACE CoordList CBRACE", 649"OutlineInList : Ident EQUALS Expr", 650"CoordList : CoordList COMMA Coord", 651"CoordList : Coord", 652"Coord : OBRACKET SignedNumber COMMA SignedNumber CBRACKET", 653"DoodadDecl : DoodadType String OBRACE VarDeclList CBRACE SEMI", 654"DoodadType : TEXT", 655"DoodadType : OUTLINE", 656"DoodadType : SOLID", 657"DoodadType : LOGO", 658"FieldSpec : Ident", 659"FieldSpec : Element", 660"Element : ACTION_TOK", 661"Element : INTERPRET", 662"Element : TYPE", 663"Element : KEY", 664"Element : GROUP", 665"Element : MODIFIER_MAP", 666"Element : INDICATOR", 667"Element : SHAPE", 668"Element : ROW", 669"Element : SECTION", 670"Element : TEXT", 671"OptMergeMode : MergeMode", 672"OptMergeMode :", 673"MergeMode : INCLUDE", 674"MergeMode : AUGMENT", 675"MergeMode : OVERRIDE", 676"MergeMode : REPLACE", 677"MergeMode : ALTERNATE", 678"OptExprList : ExprList", 679"OptExprList :", 680"ExprList : ExprList COMMA Expr", 681"ExprList : Expr", 682"Expr : Expr DIVIDE Expr", 683"Expr : Expr PLUS Expr", 684"Expr : Expr MINUS Expr", 685"Expr : Expr TIMES Expr", 686"Expr : Lhs EQUALS Expr", 687"Expr : Term", 688"Term : MINUS Term", 689"Term : PLUS Term", 690"Term : EXCLAM Term", 691"Term : INVERT Term", 692"Term : Lhs", 693"Term : FieldSpec OPAREN OptExprList CPAREN", 694"Term : Terminal", 695"Term : OPAREN Expr CPAREN", 696"ActionList : ActionList COMMA Action", 697"ActionList : Action", 698"Action : FieldSpec OPAREN OptExprList CPAREN", 699"Lhs : FieldSpec", 700"Lhs : FieldSpec DOT FieldSpec", 701"Lhs : FieldSpec OBRACKET Expr CBRACKET", 702"Lhs : FieldSpec DOT FieldSpec OBRACKET Expr CBRACKET", 703"Terminal : String", 704"Terminal : Integer", 705"Terminal : Float", 706"Terminal : KeyName", 707"OptKeySymList : KeySymList", 708"OptKeySymList :", 709"KeySymList : KeySymList COMMA KeySym", 710"KeySymList : KeySym", 711"KeySym : IDENT", 712"KeySym : SECTION", 713"KeySym : Integer", 714"SignedNumber : MINUS Number", 715"SignedNumber : Number", 716"Number : FLOAT", 717"Number : INTEGER", 718"Float : FLOAT", 719"Integer : INTEGER", 720"KeyName : KEYNAME", 721"Ident : IDENT", 722"Ident : DEFAULT", 723"String : STRING", 724"OptMapName : MapName", 725"OptMapName :", 726"MapName : STRING", 727 728}; 729#endif 730#if YYDEBUG 731#include <stdio.h> 732#endif 733 734/* define the initial stack-sizes */ 735#ifdef YYSTACKSIZE 736#undef YYMAXDEPTH 737#define YYMAXDEPTH YYSTACKSIZE 738#else 739#ifdef YYMAXDEPTH 740#define YYSTACKSIZE YYMAXDEPTH 741#else 742#define YYSTACKSIZE 500 743#define YYMAXDEPTH 500 744#endif 745#endif 746 747#define YYINITSTACKSIZE 500 748 749int yydebug; 750int yynerrs; 751 752typedef struct { 753 unsigned stacksize; 754 short *s_base; 755 short *s_mark; 756 short *s_last; 757 YYSTYPE *l_base; 758 YYSTYPE *l_mark; 759} YYSTACKDATA; 760 761#define YYPURE 0 762 763int yyerrflag; 764int yychar; 765YYSTYPE yyval; 766YYSTYPE yylval; 767 768/* variables for the parser stack */ 769static YYSTACKDATA yystack; 770#line 764 "xkbparse.y" 771void 772yyerror(const char *s) 773{ 774 if (warningLevel>0) { 775 (void)fprintf(stderr,"%s: line %d of %s\n",s,lineNum, 776 (scanFile?scanFile:"(unknown)")); 777 if ((warningLevel>3)) 778 (void)fprintf(stderr,"last scanned symbol is: %s\n",scanBuf); 779 } 780 return; 781} 782 783 784int 785yywrap(void) 786{ 787 return 1; 788} 789 790#line 790 "xkbparse.c" 791/* allocate initial stack or double stack size, up to YYMAXDEPTH */ 792static int yygrowstack(YYSTACKDATA *data) 793{ 794 int i; 795 unsigned newsize; 796 short *newss; 797 YYSTYPE *newvs; 798 799 if ((newsize = data->stacksize) == 0) 800 newsize = YYINITSTACKSIZE; 801 else if (newsize >= YYMAXDEPTH) 802 return -1; 803 else if ((newsize *= 2) > YYMAXDEPTH) 804 newsize = YYMAXDEPTH; 805 806 i = data->s_mark - data->s_base; 807 newss = (data->s_base != 0) 808 ? (short *)realloc(data->s_base, newsize * sizeof(*newss)) 809 : (short *)malloc(newsize * sizeof(*newss)); 810 if (newss == 0) 811 return -1; 812 813 data->s_base = newss; 814 data->s_mark = newss + i; 815 816 newvs = (data->l_base != 0) 817 ? (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)) 818 : (YYSTYPE *)malloc(newsize * sizeof(*newvs)); 819 if (newvs == 0) 820 return -1; 821 822 data->l_base = newvs; 823 data->l_mark = newvs + i; 824 825 data->stacksize = newsize; 826 data->s_last = data->s_base + newsize - 1; 827 return 0; 828} 829 830#if YYPURE || defined(YY_NO_LEAKS) 831static void yyfreestack(YYSTACKDATA *data) 832{ 833 free(data->s_base); 834 free(data->l_base); 835 memset(data, 0, sizeof(*data)); 836} 837#else 838#define yyfreestack(data) /* nothing */ 839#endif 840 841#define YYABORT goto yyabort 842#define YYREJECT goto yyabort 843#define YYACCEPT goto yyaccept 844#define YYERROR goto yyerrlab 845 846int 847YYPARSE_DECL() 848{ 849 int yym, yyn, yystate; 850#if YYDEBUG 851 const char *yys; 852 853 if ((yys = getenv("YYDEBUG")) != 0) 854 { 855 yyn = *yys; 856 if (yyn >= '0' && yyn <= '9') 857 yydebug = yyn - '0'; 858 } 859#endif 860 861 yynerrs = 0; 862 yyerrflag = 0; 863 yychar = YYEMPTY; 864 yystate = 0; 865 866#if YYPURE 867 memset(&yystack, 0, sizeof(yystack)); 868#endif 869 870 if (yystack.s_base == NULL && yygrowstack(&yystack)) goto yyoverflow; 871 yystack.s_mark = yystack.s_base; 872 yystack.l_mark = yystack.l_base; 873 yystate = 0; 874 *yystack.s_mark = 0; 875 876yyloop: 877 if ((yyn = yydefred[yystate]) != 0) goto yyreduce; 878 if (yychar < 0) 879 { 880 if ((yychar = yylex()) < 0) yychar = 0; 881#if YYDEBUG 882 if (yydebug) 883 { 884 yys = 0; 885 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 886 if (!yys) yys = "illegal-symbol"; 887 printf("%sdebug: state %d, reading %d (%s)\n", 888 YYPREFIX, yystate, yychar, yys); 889 } 890#endif 891 } 892 if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && 893 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 894 { 895#if YYDEBUG 896 if (yydebug) 897 printf("%sdebug: state %d, shifting to state %d\n", 898 YYPREFIX, yystate, yytable[yyn]); 899#endif 900 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 901 { 902 goto yyoverflow; 903 } 904 yystate = yytable[yyn]; 905 *++yystack.s_mark = yytable[yyn]; 906 *++yystack.l_mark = yylval; 907 yychar = YYEMPTY; 908 if (yyerrflag > 0) --yyerrflag; 909 goto yyloop; 910 } 911 if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && 912 yyn <= YYTABLESIZE && yycheck[yyn] == yychar) 913 { 914 yyn = yytable[yyn]; 915 goto yyreduce; 916 } 917 if (yyerrflag) goto yyinrecovery; 918 919 yyerror("syntax error"); 920 921 goto yyerrlab; 922 923yyerrlab: 924 ++yynerrs; 925 926yyinrecovery: 927 if (yyerrflag < 3) 928 { 929 yyerrflag = 3; 930 for (;;) 931 { 932 if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && 933 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) 934 { 935#if YYDEBUG 936 if (yydebug) 937 printf("%sdebug: state %d, error recovery shifting\ 938 to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); 939#endif 940 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 941 { 942 goto yyoverflow; 943 } 944 yystate = yytable[yyn]; 945 *++yystack.s_mark = yytable[yyn]; 946 *++yystack.l_mark = yylval; 947 goto yyloop; 948 } 949 else 950 { 951#if YYDEBUG 952 if (yydebug) 953 printf("%sdebug: error recovery discarding state %d\n", 954 YYPREFIX, *yystack.s_mark); 955#endif 956 if (yystack.s_mark <= yystack.s_base) goto yyabort; 957 --yystack.s_mark; 958 --yystack.l_mark; 959 } 960 } 961 } 962 else 963 { 964 if (yychar == 0) goto yyabort; 965#if YYDEBUG 966 if (yydebug) 967 { 968 yys = 0; 969 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 970 if (!yys) yys = "illegal-symbol"; 971 printf("%sdebug: state %d, error recovery discards token %d (%s)\n", 972 YYPREFIX, yystate, yychar, yys); 973 } 974#endif 975 yychar = YYEMPTY; 976 goto yyloop; 977 } 978 979yyreduce: 980#if YYDEBUG 981 if (yydebug) 982 printf("%sdebug: state %d, reducing by rule %d (%s)\n", 983 YYPREFIX, yystate, yyn, yyrule[yyn]); 984#endif 985 yym = yylen[yyn]; 986 if (yym) 987 yyval = yystack.l_mark[1-yym]; 988 else 989 memset(&yyval, 0, sizeof yyval); 990 switch (yyn) 991 { 992case 1: 993#line 169 "xkbparse.y" 994 { yyval.file= rtrnValue= yystack.l_mark[0].file; } 995break; 996case 2: 997#line 171 "xkbparse.y" 998 { yyval.file= rtrnValue= yystack.l_mark[0].file; } 999break; 1000case 3: 1001#line 173 "xkbparse.y" 1002 { yyval.file= rtrnValue= yystack.l_mark[0].file; } 1003break; 1004case 4: 1005#line 177 "xkbparse.y" 1006 { yyval.file= (XkbFile *)AppendStmt(&yystack.l_mark[-1].file->common,&yystack.l_mark[0].file->common); } 1007break; 1008case 5: 1009#line 179 "xkbparse.y" 1010 { yyval.file= yystack.l_mark[0].file; } 1011break; 1012case 6: 1013#line 185 "xkbparse.y" 1014 { yyval.file= CreateXKBFile(yystack.l_mark[-5].uval,yystack.l_mark[-4].str,&yystack.l_mark[-2].file->common,yystack.l_mark[-6].uval); } 1015break; 1016case 7: 1017#line 188 "xkbparse.y" 1018 { yyval.uval= XkmKeymapFile; } 1019break; 1020case 8: 1021#line 189 "xkbparse.y" 1022 { yyval.uval= XkmSemanticsFile; } 1023break; 1024case 9: 1025#line 190 "xkbparse.y" 1026 { yyval.uval= XkmLayoutFile; } 1027break; 1028case 10: 1029#line 194 "xkbparse.y" 1030 { yyval.file= (XkbFile *)AppendStmt(&yystack.l_mark[-1].file->common,&yystack.l_mark[0].file->common); } 1031break; 1032case 11: 1033#line 196 "xkbparse.y" 1034 { yyval.file= yystack.l_mark[0].file; } 1035break; 1036case 12: 1037#line 202 "xkbparse.y" 1038 { yyval.file= CreateXKBFile(yystack.l_mark[-5].uval,yystack.l_mark[-4].str,yystack.l_mark[-2].any,yystack.l_mark[-6].uval); } 1039break; 1040case 13: 1041#line 206 "xkbparse.y" 1042 { yyval.file= CreateXKBFile(yystack.l_mark[-2].uval,yystack.l_mark[-1].str,yystack.l_mark[0].any,yystack.l_mark[-3].uval); } 1043break; 1044case 14: 1045#line 210 "xkbparse.y" 1046 { yyval.uval= XkmKeyNamesIndex; } 1047break; 1048case 15: 1049#line 211 "xkbparse.y" 1050 { yyval.uval= XkmTypesIndex; } 1051break; 1052case 16: 1053#line 212 "xkbparse.y" 1054 { yyval.uval= XkmCompatMapIndex; } 1055break; 1056case 17: 1057#line 213 "xkbparse.y" 1058 { yyval.uval= XkmSymbolsIndex; } 1059break; 1060case 18: 1061#line 214 "xkbparse.y" 1062 { yyval.uval= XkmGeometryIndex; } 1063break; 1064case 19: 1065#line 217 "xkbparse.y" 1066 { yyval.uval= yystack.l_mark[0].uval; } 1067break; 1068case 20: 1069#line 218 "xkbparse.y" 1070 { yyval.uval= 0; } 1071break; 1072case 21: 1073#line 221 "xkbparse.y" 1074 { yyval.uval= ((yystack.l_mark[-1].uval)|(yystack.l_mark[0].uval)); } 1075break; 1076case 22: 1077#line 222 "xkbparse.y" 1078 { yyval.uval= yystack.l_mark[0].uval; } 1079break; 1080case 23: 1081#line 225 "xkbparse.y" 1082 { yyval.uval= XkbLC_Partial; } 1083break; 1084case 24: 1085#line 226 "xkbparse.y" 1086 { yyval.uval= XkbLC_Default; } 1087break; 1088case 25: 1089#line 227 "xkbparse.y" 1090 { yyval.uval= XkbLC_Hidden; } 1091break; 1092case 26: 1093#line 228 "xkbparse.y" 1094 { yyval.uval= XkbLC_AlphanumericKeys; } 1095break; 1096case 27: 1097#line 229 "xkbparse.y" 1098 { yyval.uval= XkbLC_ModifierKeys; } 1099break; 1100case 28: 1101#line 230 "xkbparse.y" 1102 { yyval.uval= XkbLC_KeypadKeys; } 1103break; 1104case 29: 1105#line 231 "xkbparse.y" 1106 { yyval.uval= XkbLC_FunctionKeys; } 1107break; 1108case 30: 1109#line 232 "xkbparse.y" 1110 { yyval.uval= XkbLC_AlternateGroup; } 1111break; 1112case 31: 1113#line 236 "xkbparse.y" 1114 { yyval.any= AppendStmt(yystack.l_mark[-1].any,yystack.l_mark[0].any); } 1115break; 1116case 32: 1117#line 237 "xkbparse.y" 1118 { yyval.any= NULL; } 1119break; 1120case 33: 1121#line 241 "xkbparse.y" 1122 { 1123 yystack.l_mark[0].var->merge= StmtSetMerge(&yystack.l_mark[0].var->common,yystack.l_mark[-1].uval); 1124 yyval.any= &yystack.l_mark[0].var->common; 1125 } 1126break; 1127case 34: 1128#line 246 "xkbparse.y" 1129 { 1130 yystack.l_mark[0].vmod->merge= StmtSetMerge(&yystack.l_mark[0].vmod->common,yystack.l_mark[-1].uval); 1131 yyval.any= &yystack.l_mark[0].vmod->common; 1132 } 1133break; 1134case 35: 1135#line 251 "xkbparse.y" 1136 { 1137 yystack.l_mark[0].interp->merge= StmtSetMerge(&yystack.l_mark[0].interp->common,yystack.l_mark[-1].uval); 1138 yyval.any= &yystack.l_mark[0].interp->common; 1139 } 1140break; 1141case 36: 1142#line 256 "xkbparse.y" 1143 { 1144 yystack.l_mark[0].keyName->merge= StmtSetMerge(&yystack.l_mark[0].keyName->common,yystack.l_mark[-1].uval); 1145 yyval.any= &yystack.l_mark[0].keyName->common; 1146 } 1147break; 1148case 37: 1149#line 261 "xkbparse.y" 1150 { 1151 yystack.l_mark[0].keyAlias->merge= StmtSetMerge(&yystack.l_mark[0].keyAlias->common,yystack.l_mark[-1].uval); 1152 yyval.any= &yystack.l_mark[0].keyAlias->common; 1153 } 1154break; 1155case 38: 1156#line 266 "xkbparse.y" 1157 { 1158 yystack.l_mark[0].keyType->merge= StmtSetMerge(&yystack.l_mark[0].keyType->common,yystack.l_mark[-1].uval); 1159 yyval.any= &yystack.l_mark[0].keyType->common; 1160 } 1161break; 1162case 39: 1163#line 271 "xkbparse.y" 1164 { 1165 yystack.l_mark[0].syms->merge= StmtSetMerge(&yystack.l_mark[0].syms->common,yystack.l_mark[-1].uval); 1166 yyval.any= &yystack.l_mark[0].syms->common; 1167 } 1168break; 1169case 40: 1170#line 276 "xkbparse.y" 1171 { 1172 yystack.l_mark[0].modMask->merge= StmtSetMerge(&yystack.l_mark[0].modMask->common,yystack.l_mark[-1].uval); 1173 yyval.any= &yystack.l_mark[0].modMask->common; 1174 } 1175break; 1176case 41: 1177#line 281 "xkbparse.y" 1178 { 1179 yystack.l_mark[0].groupCompat->merge= StmtSetMerge(&yystack.l_mark[0].groupCompat->common,yystack.l_mark[-1].uval); 1180 yyval.any= &yystack.l_mark[0].groupCompat->common; 1181 } 1182break; 1183case 42: 1184#line 286 "xkbparse.y" 1185 { 1186 yystack.l_mark[0].ledMap->merge= StmtSetMerge(&yystack.l_mark[0].ledMap->common,yystack.l_mark[-1].uval); 1187 yyval.any= &yystack.l_mark[0].ledMap->common; 1188 } 1189break; 1190case 43: 1191#line 291 "xkbparse.y" 1192 { 1193 yystack.l_mark[0].ledName->merge= StmtSetMerge(&yystack.l_mark[0].ledName->common,yystack.l_mark[-1].uval); 1194 yyval.any= &yystack.l_mark[0].ledName->common; 1195 } 1196break; 1197case 44: 1198#line 296 "xkbparse.y" 1199 { 1200 yystack.l_mark[0].shape->merge= StmtSetMerge(&yystack.l_mark[0].shape->common,yystack.l_mark[-1].uval); 1201 yyval.any= &yystack.l_mark[0].shape->common; 1202 } 1203break; 1204case 45: 1205#line 301 "xkbparse.y" 1206 { 1207 yystack.l_mark[0].section->merge= StmtSetMerge(&yystack.l_mark[0].section->common,yystack.l_mark[-1].uval); 1208 yyval.any= &yystack.l_mark[0].section->common; 1209 } 1210break; 1211case 46: 1212#line 306 "xkbparse.y" 1213 { 1214 yystack.l_mark[0].doodad->merge= StmtSetMerge(&yystack.l_mark[0].doodad->common,yystack.l_mark[-1].uval); 1215 yyval.any= &yystack.l_mark[0].doodad->common; 1216 } 1217break; 1218case 47: 1219#line 311 "xkbparse.y" 1220 { 1221 if (yystack.l_mark[-1].uval==MergeAltForm) { 1222 yyerror("cannot use 'alternate' to include other maps"); 1223 yyval.any= &IncludeCreate(scanBuf,MergeDefault)->common; 1224 } 1225 else { 1226 yyval.any= &IncludeCreate(scanBuf,yystack.l_mark[-1].uval)->common; 1227 } 1228 } 1229break; 1230case 48: 1231#line 323 "xkbparse.y" 1232 { yyval.var= VarCreate(yystack.l_mark[-3].expr,yystack.l_mark[-1].expr); } 1233break; 1234case 49: 1235#line 325 "xkbparse.y" 1236 { yyval.var= BoolVarCreate(yystack.l_mark[-1].sval,1); } 1237break; 1238case 50: 1239#line 327 "xkbparse.y" 1240 { yyval.var= BoolVarCreate(yystack.l_mark[-1].sval,0); } 1241break; 1242case 51: 1243#line 331 "xkbparse.y" 1244 { 1245 KeycodeDef *def; 1246 1247 def= KeycodeCreate(yystack.l_mark[-3].str,yystack.l_mark[-1].expr); 1248 if (yystack.l_mark[-3].str) 1249 free(yystack.l_mark[-3].str); 1250 yyval.keyName= def; 1251 } 1252break; 1253case 52: 1254#line 342 "xkbparse.y" 1255 { 1256 KeyAliasDef *def; 1257 def= KeyAliasCreate(yystack.l_mark[-3].str,yystack.l_mark[-1].str); 1258 if (yystack.l_mark[-3].str) free(yystack.l_mark[-3].str); 1259 if (yystack.l_mark[-1].str) free(yystack.l_mark[-1].str); 1260 yyval.keyAlias= def; 1261 } 1262break; 1263case 53: 1264#line 352 "xkbparse.y" 1265 { yyval.vmod= yystack.l_mark[-1].vmod; } 1266break; 1267case 54: 1268#line 356 "xkbparse.y" 1269 { yyval.vmod= (VModDef *)AppendStmt(&yystack.l_mark[-2].vmod->common,&yystack.l_mark[0].vmod->common); } 1270break; 1271case 55: 1272#line 358 "xkbparse.y" 1273 { yyval.vmod= yystack.l_mark[0].vmod; } 1274break; 1275case 56: 1276#line 362 "xkbparse.y" 1277 { yyval.vmod= VModCreate(yystack.l_mark[0].sval,NULL); } 1278break; 1279case 57: 1280#line 364 "xkbparse.y" 1281 { yyval.vmod= VModCreate(yystack.l_mark[-2].sval,yystack.l_mark[0].expr); } 1282break; 1283case 58: 1284#line 370 "xkbparse.y" 1285 { 1286 yystack.l_mark[-4].interp->def= yystack.l_mark[-2].var; 1287 yyval.interp= yystack.l_mark[-4].interp; 1288 } 1289break; 1290case 59: 1291#line 377 "xkbparse.y" 1292 { yyval.interp= InterpCreate(XStringToKeysym(yystack.l_mark[-2].str), yystack.l_mark[0].expr); } 1293break; 1294case 60: 1295#line 379 "xkbparse.y" 1296 { yyval.interp= InterpCreate(XStringToKeysym(yystack.l_mark[0].str), NULL); } 1297break; 1298case 61: 1299#line 383 "xkbparse.y" 1300 { yyval.var= (VarDef *)AppendStmt(&yystack.l_mark[-1].var->common,&yystack.l_mark[0].var->common); } 1301break; 1302case 62: 1303#line 385 "xkbparse.y" 1304 { yyval.var= yystack.l_mark[0].var; } 1305break; 1306case 63: 1307#line 391 "xkbparse.y" 1308 { yyval.keyType= KeyTypeCreate(yystack.l_mark[-4].sval,yystack.l_mark[-2].var); } 1309break; 1310case 64: 1311#line 397 "xkbparse.y" 1312 { yyval.syms= SymbolsCreate(yystack.l_mark[-4].str,(ExprDef *)yystack.l_mark[-2].var); } 1313break; 1314case 65: 1315#line 401 "xkbparse.y" 1316 { yyval.var= (VarDef *)AppendStmt(&yystack.l_mark[-2].var->common,&yystack.l_mark[0].var->common); } 1317break; 1318case 66: 1319#line 403 "xkbparse.y" 1320 { yyval.var= yystack.l_mark[0].var; } 1321break; 1322case 67: 1323#line 404 "xkbparse.y" 1324 { yyval.var= NULL; } 1325break; 1326case 68: 1327#line 408 "xkbparse.y" 1328 { yyval.var= VarCreate(yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1329break; 1330case 69: 1331#line 410 "xkbparse.y" 1332 { yyval.var= VarCreate(yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1333break; 1334case 70: 1335#line 412 "xkbparse.y" 1336 { yyval.var= BoolVarCreate(yystack.l_mark[0].sval,1); } 1337break; 1338case 71: 1339#line 414 "xkbparse.y" 1340 { yyval.var= BoolVarCreate(yystack.l_mark[0].sval,0); } 1341break; 1342case 72: 1343#line 416 "xkbparse.y" 1344 { yyval.var= VarCreate(NULL,yystack.l_mark[0].expr); } 1345break; 1346case 73: 1347#line 420 "xkbparse.y" 1348 { yyval.expr= yystack.l_mark[-1].expr; } 1349break; 1350case 74: 1351#line 422 "xkbparse.y" 1352 { yyval.expr= ExprCreateUnary(ExprActionList,TypeAction,yystack.l_mark[-1].expr); } 1353break; 1354case 75: 1355#line 426 "xkbparse.y" 1356 { yyval.groupCompat= GroupCompatCreate(yystack.l_mark[-3].ival,yystack.l_mark[-1].expr); } 1357break; 1358case 76: 1359#line 430 "xkbparse.y" 1360 { yyval.modMask= ModMapCreate(yystack.l_mark[-4].sval,yystack.l_mark[-2].expr); } 1361break; 1362case 77: 1363#line 434 "xkbparse.y" 1364 { yyval.ledMap= IndicatorMapCreate(yystack.l_mark[-4].sval,yystack.l_mark[-2].var); } 1365break; 1366case 78: 1367#line 438 "xkbparse.y" 1368 { yyval.ledName= IndicatorNameCreate(yystack.l_mark[-3].ival,yystack.l_mark[-1].expr,False); } 1369break; 1370case 79: 1371#line 440 "xkbparse.y" 1372 { yyval.ledName= IndicatorNameCreate(yystack.l_mark[-3].ival,yystack.l_mark[-1].expr,True); } 1373break; 1374case 80: 1375#line 444 "xkbparse.y" 1376 { yyval.shape= ShapeDeclCreate(yystack.l_mark[-4].sval,(OutlineDef *)&yystack.l_mark[-2].outline->common); } 1377break; 1378case 81: 1379#line 446 "xkbparse.y" 1380 { 1381 OutlineDef *outlines; 1382 outlines= OutlineCreate(None,yystack.l_mark[-2].expr); 1383 yyval.shape= ShapeDeclCreate(yystack.l_mark[-4].sval,outlines); 1384 } 1385break; 1386case 82: 1387#line 454 "xkbparse.y" 1388 { yyval.section= SectionDeclCreate(yystack.l_mark[-4].sval,yystack.l_mark[-2].row); } 1389break; 1390case 83: 1391#line 458 "xkbparse.y" 1392 { yyval.row=(RowDef *)AppendStmt(&yystack.l_mark[-1].row->common,&yystack.l_mark[0].row->common);} 1393break; 1394case 84: 1395#line 460 "xkbparse.y" 1396 { yyval.row= yystack.l_mark[0].row; } 1397break; 1398case 85: 1399#line 464 "xkbparse.y" 1400 { yyval.row= RowDeclCreate(yystack.l_mark[-2].key); } 1401break; 1402case 86: 1403#line 466 "xkbparse.y" 1404 { yyval.row= (RowDef *)yystack.l_mark[0].var; } 1405break; 1406case 87: 1407#line 468 "xkbparse.y" 1408 { yyval.row= (RowDef *)yystack.l_mark[0].doodad; } 1409break; 1410case 88: 1411#line 470 "xkbparse.y" 1412 { yyval.row= (RowDef *)yystack.l_mark[0].ledMap; } 1413break; 1414case 89: 1415#line 472 "xkbparse.y" 1416 { yyval.row= (RowDef *)yystack.l_mark[0].overlay; } 1417break; 1418case 90: 1419#line 476 "xkbparse.y" 1420 { yyval.key=(KeyDef *)AppendStmt(&yystack.l_mark[-1].key->common,&yystack.l_mark[0].key->common);} 1421break; 1422case 91: 1423#line 478 "xkbparse.y" 1424 { yyval.key= yystack.l_mark[0].key; } 1425break; 1426case 92: 1427#line 482 "xkbparse.y" 1428 { yyval.key= yystack.l_mark[-2].key; } 1429break; 1430case 93: 1431#line 484 "xkbparse.y" 1432 { yyval.key= (KeyDef *)yystack.l_mark[0].var; } 1433break; 1434case 94: 1435#line 488 "xkbparse.y" 1436 { yyval.key=(KeyDef *)AppendStmt(&yystack.l_mark[-2].key->common,&yystack.l_mark[0].key->common);} 1437break; 1438case 95: 1439#line 490 "xkbparse.y" 1440 { yyval.key= yystack.l_mark[0].key; } 1441break; 1442case 96: 1443#line 494 "xkbparse.y" 1444 { yyval.key= KeyDeclCreate(yystack.l_mark[0].str,NULL); } 1445break; 1446case 97: 1447#line 496 "xkbparse.y" 1448 { yyval.key= KeyDeclCreate(NULL,yystack.l_mark[-1].expr); } 1449break; 1450case 98: 1451#line 500 "xkbparse.y" 1452 { yyval.overlay= OverlayDeclCreate(yystack.l_mark[-4].sval,yystack.l_mark[-2].olKey); } 1453break; 1454case 99: 1455#line 504 "xkbparse.y" 1456 { 1457 yyval.olKey= (OverlayKeyDef *) 1458 AppendStmt(&yystack.l_mark[-2].olKey->common,&yystack.l_mark[0].olKey->common); 1459 } 1460break; 1461case 100: 1462#line 509 "xkbparse.y" 1463 { yyval.olKey= yystack.l_mark[0].olKey; } 1464break; 1465case 101: 1466#line 513 "xkbparse.y" 1467 { yyval.olKey= OverlayKeyCreate(yystack.l_mark[-2].str,yystack.l_mark[0].str); } 1468break; 1469case 102: 1470#line 517 "xkbparse.y" 1471 { yyval.outline=(OutlineDef *)AppendStmt(&yystack.l_mark[-2].outline->common,&yystack.l_mark[0].outline->common);} 1472break; 1473case 103: 1474#line 519 "xkbparse.y" 1475 { yyval.outline= yystack.l_mark[0].outline; } 1476break; 1477case 104: 1478#line 523 "xkbparse.y" 1479 { yyval.outline= OutlineCreate(None,yystack.l_mark[-1].expr); } 1480break; 1481case 105: 1482#line 525 "xkbparse.y" 1483 { yyval.outline= OutlineCreate(yystack.l_mark[-4].sval,yystack.l_mark[-1].expr); } 1484break; 1485case 106: 1486#line 527 "xkbparse.y" 1487 { yyval.outline= OutlineCreate(yystack.l_mark[-2].sval,yystack.l_mark[0].expr); } 1488break; 1489case 107: 1490#line 531 "xkbparse.y" 1491 { yyval.expr= (ExprDef *)AppendStmt(&yystack.l_mark[-2].expr->common,&yystack.l_mark[0].expr->common); } 1492break; 1493case 108: 1494#line 533 "xkbparse.y" 1495 { yyval.expr= yystack.l_mark[0].expr; } 1496break; 1497case 109: 1498#line 537 "xkbparse.y" 1499 { 1500 ExprDef *expr; 1501 expr= ExprCreate(ExprCoord,TypeUnknown); 1502 expr->value.coord.x= yystack.l_mark[-3].ival; 1503 expr->value.coord.y= yystack.l_mark[-1].ival; 1504 yyval.expr= expr; 1505 } 1506break; 1507case 110: 1508#line 547 "xkbparse.y" 1509 { yyval.doodad= DoodadCreate(yystack.l_mark[-5].uval,yystack.l_mark[-4].sval,yystack.l_mark[-2].var); } 1510break; 1511case 111: 1512#line 550 "xkbparse.y" 1513 { yyval.uval= XkbTextDoodad; } 1514break; 1515case 112: 1516#line 551 "xkbparse.y" 1517 { yyval.uval= XkbOutlineDoodad; } 1518break; 1519case 113: 1520#line 552 "xkbparse.y" 1521 { yyval.uval= XkbSolidDoodad; } 1522break; 1523case 114: 1524#line 553 "xkbparse.y" 1525 { yyval.uval= XkbLogoDoodad; } 1526break; 1527case 115: 1528#line 556 "xkbparse.y" 1529 { yyval.sval= yystack.l_mark[0].sval; } 1530break; 1531case 116: 1532#line 557 "xkbparse.y" 1533 { yyval.sval= yystack.l_mark[0].sval; } 1534break; 1535case 117: 1536#line 561 "xkbparse.y" 1537 { yyval.sval= XkbInternAtom(NULL,"action",False); } 1538break; 1539case 118: 1540#line 563 "xkbparse.y" 1541 { yyval.sval= XkbInternAtom(NULL,"interpret",False); } 1542break; 1543case 119: 1544#line 565 "xkbparse.y" 1545 { yyval.sval= XkbInternAtom(NULL,"type",False); } 1546break; 1547case 120: 1548#line 567 "xkbparse.y" 1549 { yyval.sval= XkbInternAtom(NULL,"key",False); } 1550break; 1551case 121: 1552#line 569 "xkbparse.y" 1553 { yyval.sval= XkbInternAtom(NULL,"group",False); } 1554break; 1555case 122: 1556#line 571 "xkbparse.y" 1557 {yyval.sval=XkbInternAtom(NULL,"modifier_map",False);} 1558break; 1559case 123: 1560#line 573 "xkbparse.y" 1561 { yyval.sval= XkbInternAtom(NULL,"indicator",False); } 1562break; 1563case 124: 1564#line 575 "xkbparse.y" 1565 { yyval.sval= XkbInternAtom(NULL,"shape",False); } 1566break; 1567case 125: 1568#line 577 "xkbparse.y" 1569 { yyval.sval= XkbInternAtom(NULL,"row",False); } 1570break; 1571case 126: 1572#line 579 "xkbparse.y" 1573 { yyval.sval= XkbInternAtom(NULL,"section",False); } 1574break; 1575case 127: 1576#line 581 "xkbparse.y" 1577 { yyval.sval= XkbInternAtom(NULL,"text",False); } 1578break; 1579case 128: 1580#line 584 "xkbparse.y" 1581 { yyval.uval= yystack.l_mark[0].uval; } 1582break; 1583case 129: 1584#line 585 "xkbparse.y" 1585 { yyval.uval= MergeDefault; } 1586break; 1587case 130: 1588#line 588 "xkbparse.y" 1589 { yyval.uval= MergeDefault; } 1590break; 1591case 131: 1592#line 589 "xkbparse.y" 1593 { yyval.uval= MergeAugment; } 1594break; 1595case 132: 1596#line 590 "xkbparse.y" 1597 { yyval.uval= MergeOverride; } 1598break; 1599case 133: 1600#line 591 "xkbparse.y" 1601 { yyval.uval= MergeReplace; } 1602break; 1603case 134: 1604#line 592 "xkbparse.y" 1605 { yyval.uval= MergeAltForm; } 1606break; 1607case 135: 1608#line 595 "xkbparse.y" 1609 { yyval.expr= yystack.l_mark[0].expr; } 1610break; 1611case 136: 1612#line 596 "xkbparse.y" 1613 { yyval.expr= NULL; } 1614break; 1615case 137: 1616#line 600 "xkbparse.y" 1617 { yyval.expr= (ExprDef *)AppendStmt(&yystack.l_mark[-2].expr->common,&yystack.l_mark[0].expr->common); } 1618break; 1619case 138: 1620#line 602 "xkbparse.y" 1621 { yyval.expr= yystack.l_mark[0].expr; } 1622break; 1623case 139: 1624#line 606 "xkbparse.y" 1625 { yyval.expr= ExprCreateBinary(OpDivide,yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1626break; 1627case 140: 1628#line 608 "xkbparse.y" 1629 { yyval.expr= ExprCreateBinary(OpAdd,yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1630break; 1631case 141: 1632#line 610 "xkbparse.y" 1633 { yyval.expr= ExprCreateBinary(OpSubtract,yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1634break; 1635case 142: 1636#line 612 "xkbparse.y" 1637 { yyval.expr= ExprCreateBinary(OpMultiply,yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1638break; 1639case 143: 1640#line 614 "xkbparse.y" 1641 { yyval.expr= ExprCreateBinary(OpAssign,yystack.l_mark[-2].expr,yystack.l_mark[0].expr); } 1642break; 1643case 144: 1644#line 616 "xkbparse.y" 1645 { yyval.expr= yystack.l_mark[0].expr; } 1646break; 1647case 145: 1648#line 620 "xkbparse.y" 1649 { yyval.expr= ExprCreateUnary(OpNegate,yystack.l_mark[0].expr->type,yystack.l_mark[0].expr); } 1650break; 1651case 146: 1652#line 622 "xkbparse.y" 1653 { yyval.expr= ExprCreateUnary(OpUnaryPlus,yystack.l_mark[0].expr->type,yystack.l_mark[0].expr); } 1654break; 1655case 147: 1656#line 624 "xkbparse.y" 1657 { yyval.expr= ExprCreateUnary(OpNot,TypeBoolean,yystack.l_mark[0].expr); } 1658break; 1659case 148: 1660#line 626 "xkbparse.y" 1661 { yyval.expr= ExprCreateUnary(OpInvert,yystack.l_mark[0].expr->type,yystack.l_mark[0].expr); } 1662break; 1663case 149: 1664#line 628 "xkbparse.y" 1665 { yyval.expr= yystack.l_mark[0].expr; } 1666break; 1667case 150: 1668#line 630 "xkbparse.y" 1669 { yyval.expr= ActionCreate(yystack.l_mark[-3].sval,yystack.l_mark[-1].expr); } 1670break; 1671case 151: 1672#line 632 "xkbparse.y" 1673 { yyval.expr= yystack.l_mark[0].expr; } 1674break; 1675case 152: 1676#line 634 "xkbparse.y" 1677 { yyval.expr= yystack.l_mark[-1].expr; } 1678break; 1679case 153: 1680#line 638 "xkbparse.y" 1681 { yyval.expr= (ExprDef *)AppendStmt(&yystack.l_mark[-2].expr->common,&yystack.l_mark[0].expr->common); } 1682break; 1683case 154: 1684#line 640 "xkbparse.y" 1685 { yyval.expr= yystack.l_mark[0].expr; } 1686break; 1687case 155: 1688#line 644 "xkbparse.y" 1689 { yyval.expr= ActionCreate(yystack.l_mark[-3].sval,yystack.l_mark[-1].expr); } 1690break; 1691case 156: 1692#line 648 "xkbparse.y" 1693 { 1694 ExprDef *expr; 1695 expr= ExprCreate(ExprIdent,TypeUnknown); 1696 expr->value.str= yystack.l_mark[0].sval; 1697 yyval.expr= expr; 1698 } 1699break; 1700case 157: 1701#line 655 "xkbparse.y" 1702 { 1703 ExprDef *expr; 1704 expr= ExprCreate(ExprFieldRef,TypeUnknown); 1705 expr->value.field.element= yystack.l_mark[-2].sval; 1706 expr->value.field.field= yystack.l_mark[0].sval; 1707 yyval.expr= expr; 1708 } 1709break; 1710case 158: 1711#line 663 "xkbparse.y" 1712 { 1713 ExprDef *expr; 1714 expr= ExprCreate(ExprArrayRef,TypeUnknown); 1715 expr->value.array.element= None; 1716 expr->value.array.field= yystack.l_mark[-3].sval; 1717 expr->value.array.entry= yystack.l_mark[-1].expr; 1718 yyval.expr= expr; 1719 } 1720break; 1721case 159: 1722#line 672 "xkbparse.y" 1723 { 1724 ExprDef *expr; 1725 expr= ExprCreate(ExprArrayRef,TypeUnknown); 1726 expr->value.array.element= yystack.l_mark[-5].sval; 1727 expr->value.array.field= yystack.l_mark[-3].sval; 1728 expr->value.array.entry= yystack.l_mark[-1].expr; 1729 yyval.expr= expr; 1730 } 1731break; 1732case 160: 1733#line 683 "xkbparse.y" 1734 { 1735 ExprDef *expr; 1736 expr= ExprCreate(ExprValue,TypeString); 1737 expr->value.str= yystack.l_mark[0].sval; 1738 yyval.expr= expr; 1739 } 1740break; 1741case 161: 1742#line 690 "xkbparse.y" 1743 { 1744 ExprDef *expr; 1745 expr= ExprCreate(ExprValue,TypeInt); 1746 expr->value.ival= yystack.l_mark[0].ival; 1747 yyval.expr= expr; 1748 } 1749break; 1750case 162: 1751#line 697 "xkbparse.y" 1752 { 1753 ExprDef *expr; 1754 expr= ExprCreate(ExprValue,TypeFloat); 1755 expr->value.ival= yystack.l_mark[0].ival; 1756 yyval.expr= expr; 1757 } 1758break; 1759case 163: 1760#line 704 "xkbparse.y" 1761 { 1762 ExprDef *expr; 1763 expr= ExprCreate(ExprValue,TypeKeyName); 1764 memset(expr->value.keyName,0,5); 1765 strncpy(expr->value.keyName,yystack.l_mark[0].str,4); 1766 free(yystack.l_mark[0].str); 1767 yyval.expr= expr; 1768 } 1769break; 1770case 164: 1771#line 714 "xkbparse.y" 1772 { yyval.expr= yystack.l_mark[0].expr; } 1773break; 1774case 165: 1775#line 715 "xkbparse.y" 1776 { yyval.expr= NULL; } 1777break; 1778case 166: 1779#line 719 "xkbparse.y" 1780 { yyval.expr= AppendKeysymList(yystack.l_mark[-2].expr,yystack.l_mark[0].str); } 1781break; 1782case 167: 1783#line 721 "xkbparse.y" 1784 { yyval.expr= CreateKeysymList(yystack.l_mark[0].str); } 1785break; 1786case 168: 1787#line 724 "xkbparse.y" 1788 { yyval.str= strdup(scanBuf); } 1789break; 1790case 169: 1791#line 725 "xkbparse.y" 1792 { yyval.str= strdup("section"); } 1793break; 1794case 170: 1795#line 727 "xkbparse.y" 1796 { 1797 if (yystack.l_mark[0].ival<10) { yyval.str= malloc(2); yyval.str[0]= '0' + yystack.l_mark[0].ival; yyval.str[1]= '\0'; } 1798 else { yyval.str= malloc(19); snprintf(yyval.str, 19, "0x%x", yystack.l_mark[0].ival); } 1799 } 1800break; 1801case 171: 1802#line 733 "xkbparse.y" 1803 { yyval.ival= -yystack.l_mark[0].ival; } 1804break; 1805case 172: 1806#line 734 "xkbparse.y" 1807 { yyval.ival= yystack.l_mark[0].ival; } 1808break; 1809case 173: 1810#line 737 "xkbparse.y" 1811 { yyval.ival= scanInt; } 1812break; 1813case 174: 1814#line 738 "xkbparse.y" 1815 { yyval.ival= scanInt*XkbGeomPtsPerMM; } 1816break; 1817case 175: 1818#line 741 "xkbparse.y" 1819 { yyval.ival= scanInt; } 1820break; 1821case 176: 1822#line 744 "xkbparse.y" 1823 { yyval.ival= scanInt; } 1824break; 1825case 177: 1826#line 747 "xkbparse.y" 1827 { yyval.str= strdup(scanBuf); } 1828break; 1829case 178: 1830#line 750 "xkbparse.y" 1831 { yyval.sval= XkbInternAtom(NULL,scanBuf,False); } 1832break; 1833case 179: 1834#line 751 "xkbparse.y" 1835 { yyval.sval= XkbInternAtom(NULL,"default",False); } 1836break; 1837case 180: 1838#line 754 "xkbparse.y" 1839 { yyval.sval= XkbInternAtom(NULL,scanBuf,False); } 1840break; 1841case 181: 1842#line 757 "xkbparse.y" 1843 { yyval.str= yystack.l_mark[0].str; } 1844break; 1845case 182: 1846#line 758 "xkbparse.y" 1847 { yyval.str= NULL; } 1848break; 1849case 183: 1850#line 761 "xkbparse.y" 1851 { yyval.str= strdup(scanBuf); } 1852break; 1853#line 1853 "xkbparse.c" 1854 } 1855 yystack.s_mark -= yym; 1856 yystate = *yystack.s_mark; 1857 yystack.l_mark -= yym; 1858 yym = yylhs[yyn]; 1859 if (yystate == 0 && yym == 0) 1860 { 1861#if YYDEBUG 1862 if (yydebug) 1863 printf("%sdebug: after reduction, shifting from state 0 to\ 1864 state %d\n", YYPREFIX, YYFINAL); 1865#endif 1866 yystate = YYFINAL; 1867 *++yystack.s_mark = YYFINAL; 1868 *++yystack.l_mark = yyval; 1869 if (yychar < 0) 1870 { 1871 if ((yychar = yylex()) < 0) yychar = 0; 1872#if YYDEBUG 1873 if (yydebug) 1874 { 1875 yys = 0; 1876 if (yychar <= YYMAXTOKEN) yys = yyname[yychar]; 1877 if (!yys) yys = "illegal-symbol"; 1878 printf("%sdebug: state %d, reading %d (%s)\n", 1879 YYPREFIX, YYFINAL, yychar, yys); 1880 } 1881#endif 1882 } 1883 if (yychar == 0) goto yyaccept; 1884 goto yyloop; 1885 } 1886 if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && 1887 yyn <= YYTABLESIZE && yycheck[yyn] == yystate) 1888 yystate = yytable[yyn]; 1889 else 1890 yystate = yydgoto[yym]; 1891#if YYDEBUG 1892 if (yydebug) 1893 printf("%sdebug: after reduction, shifting from state %d \ 1894to state %d\n", YYPREFIX, *yystack.s_mark, yystate); 1895#endif 1896 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack)) 1897 { 1898 goto yyoverflow; 1899 } 1900 *++yystack.s_mark = (short) yystate; 1901 *++yystack.l_mark = yyval; 1902 goto yyloop; 1903 1904yyoverflow: 1905 yyerror("yacc stack overflow"); 1906 1907yyabort: 1908 yyfreestack(&yystack); 1909 return (1); 1910 1911yyaccept: 1912 yyfreestack(&yystack); 1913 return (0); 1914} 1915