00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #define YYBISON 1
00038
00039
00040 #define YYSKELETON_NAME "yacc.c"
00041
00042
00043 #define YYPURE 1
00044
00045
00046 #define YYLSP_NEEDED 0
00047
00048
00049
00050 #define yyparse cssyyparse
00051 #define yylex cssyylex
00052 #define yyerror cssyyerror
00053 #define yylval cssyylval
00054 #define yychar cssyychar
00055 #define yydebug cssyydebug
00056 #define yynerrs cssyynerrs
00057
00058
00059
00060 #ifndef YYTOKENTYPE
00061 # define YYTOKENTYPE
00062
00063
00064 enum yytokentype {
00065 UNIMPORTANT_TOK = 258,
00066 S = 259,
00067 SGML_CD = 260,
00068 INCLUDES = 261,
00069 DASHMATCH = 262,
00070 BEGINSWITH = 263,
00071 ENDSWITH = 264,
00072 CONTAINS = 265,
00073 STRING = 266,
00074 IDENT = 267,
00075 HASH = 268,
00076 IMPORT_SYM = 269,
00077 PAGE_SYM = 270,
00078 MEDIA_SYM = 271,
00079 FONT_FACE_SYM = 272,
00080 CHARSET_SYM = 273,
00081 NAMESPACE_SYM = 274,
00082 KHTML_RULE_SYM = 275,
00083 KHTML_DECLS_SYM = 276,
00084 KHTML_VALUE_SYM = 277,
00085 IMPORTANT_SYM = 278,
00086 QEMS = 279,
00087 EMS = 280,
00088 EXS = 281,
00089 PXS = 282,
00090 CMS = 283,
00091 MMS = 284,
00092 INS = 285,
00093 PTS = 286,
00094 PCS = 287,
00095 DEGS = 288,
00096 RADS = 289,
00097 GRADS = 290,
00098 MSECS = 291,
00099 SECS = 292,
00100 HERZ = 293,
00101 KHERZ = 294,
00102 DIMEN = 295,
00103 PERCENTAGE = 296,
00104 NUMBER = 297,
00105 URI = 298,
00106 FUNCTION = 299,
00107 UNICODERANGE = 300
00108 };
00109 #endif
00110 #define UNIMPORTANT_TOK 258
00111 #define S 259
00112 #define SGML_CD 260
00113 #define INCLUDES 261
00114 #define DASHMATCH 262
00115 #define BEGINSWITH 263
00116 #define ENDSWITH 264
00117 #define CONTAINS 265
00118 #define STRING 266
00119 #define IDENT 267
00120 #define HASH 268
00121 #define IMPORT_SYM 269
00122 #define PAGE_SYM 270
00123 #define MEDIA_SYM 271
00124 #define FONT_FACE_SYM 272
00125 #define CHARSET_SYM 273
00126 #define NAMESPACE_SYM 274
00127 #define KHTML_RULE_SYM 275
00128 #define KHTML_DECLS_SYM 276
00129 #define KHTML_VALUE_SYM 277
00130 #define IMPORTANT_SYM 278
00131 #define QEMS 279
00132 #define EMS 280
00133 #define EXS 281
00134 #define PXS 282
00135 #define CMS 283
00136 #define MMS 284
00137 #define INS 285
00138 #define PTS 286
00139 #define PCS 287
00140 #define DEGS 288
00141 #define RADS 289
00142 #define GRADS 290
00143 #define MSECS 291
00144 #define SECS 292
00145 #define HERZ 293
00146 #define KHERZ 294
00147 #define DIMEN 295
00148 #define PERCENTAGE 296
00149 #define NUMBER 297
00150 #define URI 298
00151 #define FUNCTION 299
00152 #define UNICODERANGE 300
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183 #ifdef HAVE_CONFIG_H
00184 #include <config.h>
00185 #endif
00186 #include <string.h>
00187 #include <stdlib.h>
00188
00189 #include <dom/dom_string.h>
00190 #include <xml/dom_docimpl.h>
00191 #include <css/css_ruleimpl.h>
00192 #include <css/css_stylesheetimpl.h>
00193 #include <css/css_valueimpl.h>
00194 #include <misc/htmlhashes.h>
00195 #include "cssparser.h"
00196
00197 #include <assert.h>
00198 #include <kdebug.h>
00199
00200
00201 using namespace DOM;
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211 #undef __inline
00212 #define __inline
00213 #include "cssproperties.c"
00214 #include "cssvalues.c"
00215 #undef __inline
00216
00217 int DOM::getPropertyID(const char *tagStr, int len)
00218 {
00219 const struct props *propsPtr = findProp(tagStr, len);
00220 if (!propsPtr)
00221 return 0;
00222
00223 return propsPtr->id;
00224 }
00225
00226 static inline int getValueID(const char *tagStr, int len)
00227 {
00228 const struct css_value *val = findValue(tagStr, len);
00229 if (!val)
00230 return 0;
00231
00232 return val->id;
00233 }
00234
00235
00236 #define YYDEBUG 0
00237 #define YYMAXDEPTH 0
00238 #define YYPARSE_PARAM parser
00239
00240
00241
00242 #ifndef YYDEBUG
00243 # define YYDEBUG 0
00244 #endif
00245
00246
00247 #ifdef YYERROR_VERBOSE
00248 # undef YYERROR_VERBOSE
00249 # define YYERROR_VERBOSE 1
00250 #else
00251 # define YYERROR_VERBOSE 0
00252 #endif
00253
00254 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
00255
00256 typedef union YYSTYPE {
00257 CSSRuleImpl *rule;
00258 CSSSelector *selector;
00259 QPtrList<CSSSelector> *selectorList;
00260 bool ok;
00261 MediaListImpl *mediaList;
00262 CSSMediaRuleImpl *mediaRule;
00263 CSSRuleListImpl *ruleList;
00264 ParseString string;
00265 float val;
00266 int prop_id;
00267 unsigned int attribute;
00268 unsigned int element;
00269 unsigned int ns;
00270 CSSSelector::Relation relation;
00271 bool b;
00272 char tok;
00273 Value value;
00274 ValueList *valueList;
00275 } YYSTYPE;
00276
00277
00278 # define yystype YYSTYPE
00279 # define YYSTYPE_IS_DECLARED 1
00280 # define YYSTYPE_IS_TRIVIAL 1
00281 #endif
00282
00283
00284
00285
00286
00287
00288
00289 static inline int cssyyerror(const char *x )
00290 {
00291 #ifdef CSS_DEBUG
00292 qDebug( "%s", x );
00293 #else
00294 Q_UNUSED( x );
00295 #endif
00296 return 1;
00297 }
00298
00299 static int cssyylex( YYSTYPE *yylval ) {
00300 return CSSParser::current()->lex( yylval );
00301 }
00302
00303 #define null 1
00304
00305
00306
00307
00308
00309
00310 #if ! defined (yyoverflow) || YYERROR_VERBOSE
00311
00312
00313
00314 # if YYSTACK_USE_ALLOCA
00315 # define YYSTACK_ALLOC alloca
00316 # else
00317 # ifndef YYSTACK_USE_ALLOCA
00318 # if defined (alloca) || defined (_ALLOCA_H)
00319 # define YYSTACK_ALLOC alloca
00320 # else
00321 # ifdef __GNUC__
00322 # define YYSTACK_ALLOC __builtin_alloca
00323 # endif
00324 # endif
00325 # endif
00326 # endif
00327
00328 # ifdef YYSTACK_ALLOC
00329
00330 # define YYSTACK_FREE(Ptr) do { ; } while (0)
00331 # else
00332 # if defined (__STDC__) || defined (__cplusplus)
00333 # include <stdlib.h>
00334 # define YYSIZE_T size_t
00335 # endif
00336 # define YYSTACK_ALLOC malloc
00337 # define YYSTACK_FREE free
00338 # endif
00339 #endif
00340
00341
00342 #if (! defined (yyoverflow) \
00343 && (! defined (__cplusplus) \
00344 || (YYSTYPE_IS_TRIVIAL)))
00345
00346
00347 union yyalloc
00348 {
00349 short yyss;
00350 YYSTYPE yyvs;
00351 };
00352
00353
00354 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00355
00356
00357
00358 # define YYSTACK_BYTES(N) \
00359 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
00360 + YYSTACK_GAP_MAXIMUM)
00361
00362
00363
00364 # ifndef YYCOPY
00365 # if 1 < __GNUC__
00366 # define YYCOPY(To, From, Count) \
00367 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00368 # else
00369 # define YYCOPY(To, From, Count) \
00370 do \
00371 { \
00372 register YYSIZE_T yyi; \
00373 for (yyi = 0; yyi < (Count); yyi++) \
00374 (To)[yyi] = (From)[yyi]; \
00375 } \
00376 while (0)
00377 # endif
00378 # endif
00379
00380
00381
00382
00383
00384
00385 # define YYSTACK_RELOCATE(Stack) \
00386 do \
00387 { \
00388 YYSIZE_T yynewbytes; \
00389 YYCOPY (&yyptr->Stack, Stack, yysize); \
00390 Stack = &yyptr->Stack; \
00391 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00392 yyptr += yynewbytes / sizeof (*yyptr); \
00393 } \
00394 while (0)
00395
00396 #endif
00397
00398 #if defined (__STDC__) || defined (__cplusplus)
00399 typedef signed char yysigned_char;
00400 #else
00401 typedef short yysigned_char;
00402 #endif
00403
00404
00405 #define YYFINAL 16
00406
00407 #define YYLAST 447
00408
00409
00410 #define YYNTOKENS 63
00411
00412 #define YYNNTS 57
00413
00414 #define YYNRULES 154
00415
00416 #define YYNSTATES 281
00417
00418
00419 #define YYUNDEFTOK 2
00420 #define YYMAXUTOK 300
00421
00422 #define YYTRANSLATE(YYX) \
00423 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00424
00425
00426 static const unsigned char yytranslate[] =
00427 {
00428 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00432 2, 60, 17, 55, 54, 57, 15, 61, 2, 2,
00433 2, 2, 2, 2, 2, 2, 2, 2, 14, 53,
00434 2, 59, 56, 2, 62, 2, 2, 2, 2, 2,
00435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00437 2, 16, 2, 58, 2, 2, 2, 2, 2, 2,
00438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00440 2, 2, 2, 51, 18, 52, 2, 2, 2, 2,
00441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00452 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00453 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
00454 5, 6, 7, 8, 9, 10, 11, 12, 13, 19,
00455 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
00456 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00457 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
00458 50
00459 };
00460
00461 #if YYDEBUG
00462
00463
00464 static const unsigned short yyprhs[] =
00465 {
00466 0, 0, 3, 9, 12, 15, 18, 25, 28, 34,
00467 35, 38, 39, 42, 45, 46, 52, 56, 60, 61,
00468 65, 72, 76, 80, 81, 84, 91, 93, 94, 97,
00469 98, 102, 104, 106, 108, 110, 112, 114, 117, 119,
00470 121, 122, 124, 126, 131, 134, 142, 143, 147, 150,
00471 154, 158, 162, 166, 169, 172, 173, 175, 177, 180,
00472 182, 187, 190, 192, 196, 199, 202, 206, 209, 212,
00473 214, 216, 219, 222, 224, 226, 228, 231, 234, 236,
00474 238, 240, 242, 245, 248, 250, 253, 258, 267, 269,
00475 271, 273, 275, 277, 279, 281, 283, 286, 290, 296,
00476 301, 306, 311, 317, 323, 327, 331, 336, 341, 347,
00477 350, 353, 356, 357, 359, 363, 366, 369, 370, 372,
00478 375, 378, 381, 384, 387, 390, 392, 394, 397, 400,
00479 403, 406, 409, 412, 415, 418, 421, 424, 427, 430,
00480 433, 436, 439, 442, 445, 448, 454, 458, 461, 465,
00481 469, 472, 478, 482, 484
00482 };
00483
00484
00485 static const yysigned_char yyrhs[] =
00486 {
00487 64, 0, -1, 70, 69, 71, 73, 77, -1, 65,
00488 68, -1, 66, 68, -1, 67, 68, -1, 25, 51,
00489 68, 89, 68, 52, -1, 26, 105, -1, 27, 51,
00490 68, 110, 52, -1, -1, 68, 4, -1, -1, 69,
00491 5, -1, 69, 4, -1, -1, 23, 68, 11, 68,
00492 53, -1, 23, 1, 118, -1, 23, 1, 53, -1,
00493 -1, 71, 72, 69, -1, 19, 68, 79, 68, 80,
00494 53, -1, 19, 1, 118, -1, 19, 1, 53, -1,
00495 -1, 74, 69, -1, 24, 68, 76, 79, 68, 53,
00496 -1, 12, -1, -1, 75, 68, -1, -1, 77, 78,
00497 69, -1, 89, -1, 82, -1, 85, -1, 86, -1,
00498 117, -1, 116, -1, 72, 1, -1, 11, -1, 48,
00499 -1, -1, 81, -1, 84, -1, 81, 54, 68, 84,
00500 -1, 81, 1, -1, 21, 68, 81, 51, 68, 83,
00501 52, -1, -1, 83, 89, 68, -1, 12, 68, -1,
00502 20, 1, 118, -1, 20, 1, 53, -1, 22, 1,
00503 118, -1, 22, 1, 53, -1, 55, 68, -1, 56,
00504 68, -1, -1, 57, -1, 55, -1, 90, 105, -1,
00505 91, -1, 90, 54, 68, 91, -1, 90, 1, -1,
00506 92, -1, 91, 87, 92, -1, 91, 1, -1, 93,
00507 68, -1, 93, 96, 68, -1, 96, 68, -1, 94,
00508 95, -1, 95, -1, 18, -1, 12, 18, -1, 17,
00509 18, -1, 12, -1, 17, -1, 97, -1, 96, 97,
00510 -1, 96, 1, -1, 13, -1, 98, -1, 101, -1,
00511 104, -1, 15, 12, -1, 94, 100, -1, 100, -1,
00512 12, 68, -1, 16, 68, 99, 58, -1, 16, 68,
00513 99, 102, 68, 103, 68, 58, -1, 59, -1, 6,
00514 -1, 7, -1, 8, -1, 9, -1, 10, -1, 12,
00515 -1, 11, -1, 14, 12, -1, 14, 14, 12, -1,
00516 14, 49, 68, 92, 60, -1, 51, 68, 107, 52,
00517 -1, 51, 68, 1, 52, -1, 51, 68, 106, 52,
00518 -1, 51, 68, 106, 107, 52, -1, 51, 68, 106,
00519 1, 52, -1, 107, 53, 68, -1, 1, 53, 68,
00520 -1, 106, 107, 53, 68, -1, 106, 1, 53, 68,
00521 -1, 108, 14, 68, 110, 109, -1, 1, 118, -1,
00522 12, 68, -1, 28, 68, -1, -1, 112, -1, 110,
00523 111, 112, -1, 61, 68, -1, 54, 68, -1, -1,
00524 113, -1, 88, 113, -1, 45, 68, -1, 11, 68,
00525 -1, 12, 68, -1, 48, 68, -1, 50, 68, -1,
00526 115, -1, 114, -1, 47, 68, -1, 46, 68, -1,
00527 32, 68, -1, 33, 68, -1, 34, 68, -1, 35,
00528 68, -1, 36, 68, -1, 37, 68, -1, 38, 68,
00529 -1, 39, 68, -1, 40, 68, -1, 41, 68, -1,
00530 42, 68, -1, 43, 68, -1, 44, 68, -1, 30,
00531 68, -1, 29, 68, -1, 31, 68, -1, 49, 68,
00532 110, 60, 68, -1, 49, 68, 1, -1, 13, 68,
00533 -1, 62, 1, 118, -1, 62, 1, 53, -1, 1,
00534 118, -1, 51, 1, 119, 1, 52, -1, 51, 1,
00535 52, -1, 118, -1, 119, 1, 118, -1
00536 };
00537
00538
00539 static const unsigned short yyrline[] =
00540 {
00541 0, 253, 253, 254, 255, 256, 260, 267, 273, 298,
00542 299, 302, 304, 305, 308, 310, 315, 316, 319, 321,
00543 332, 342, 345, 351, 352, 356, 360, 364, 365, 368,
00544 370, 381, 382, 383, 384, 385, 386, 387, 391, 392,
00545 396, 399, 404, 408, 413, 420, 434, 435, 445, 467,
00546 470, 476, 479, 485, 486, 487, 491, 492, 496, 516,
00547 529, 543, 550, 553, 574, 581, 585, 590, 598, 599,
00548 608, 609, 610, 615, 635, 639, 643, 653, 660, 666,
00549 667, 668, 672, 681, 682, 689, 713, 718, 727, 730,
00550 733, 736, 739, 742, 748, 749, 753, 759, 764, 773,
00551 776, 779, 782, 787, 793, 797, 800, 805, 811, 833,
00552 839, 846, 847, 851, 855, 871, 874, 877, 883, 884,
00553 886, 887, 888, 894, 895, 896, 898, 904, 905, 906,
00554 907, 908, 909, 910, 911, 912, 913, 914, 915, 916,
00555 917, 918, 919, 920, 921, 926, 934, 950, 957, 963,
00556 972, 998, 999, 1003, 1004
00557 };
00558 #endif
00559
00560 #if YYDEBUG || YYERROR_VERBOSE
00561
00562
00563 static const char *const yytname[] =
00564 {
00565 "$end", "error", "$undefined", "UNIMPORTANT_TOK", "S", "SGML_CD",
00566 "INCLUDES", "DASHMATCH", "BEGINSWITH", "ENDSWITH", "CONTAINS", "STRING",
00567 "IDENT", "HASH", "':'", "'.'", "'['", "'*'", "'|'", "IMPORT_SYM",
00568 "PAGE_SYM", "MEDIA_SYM", "FONT_FACE_SYM", "CHARSET_SYM",
00569 "NAMESPACE_SYM", "KHTML_RULE_SYM", "KHTML_DECLS_SYM", "KHTML_VALUE_SYM",
00570 "IMPORTANT_SYM", "QEMS", "EMS", "EXS", "PXS", "CMS", "MMS", "INS",
00571 "PTS", "PCS", "DEGS", "RADS", "GRADS", "MSECS", "SECS", "HERZ", "KHERZ",
00572 "DIMEN", "PERCENTAGE", "NUMBER", "URI", "FUNCTION", "UNICODERANGE",
00573 "'{'", "'}'", "';'", "','", "'+'", "'>'", "'-'", "']'", "'='", "')'",
00574 "'/'", "'@'", "$accept", "stylesheet", "khtml_rule", "khtml_decls",
00575 "khtml_value", "maybe_space", "maybe_sgml", "maybe_charset",
00576 "import_list", "import", "maybe_namespace", "namespace", "ns_prefix",
00577 "maybe_ns_prefix", "rule_list", "rule", "string_or_uri",
00578 "maybe_media_list", "media_list", "media", "ruleset_list", "medium",
00579 "page", "font_face", "combinator", "unary_operator", "ruleset",
00580 "selector_list", "selector", "simple_selector", "ns_element",
00581 "ns_selector", "element_name", "specifier_list", "specifier", "class",
00582 "ns_attrib_id", "attrib_id", "attrib", "match", "ident_or_string",
00583 "pseudo", "declaration_block", "declaration_list", "declaration",
00584 "property", "prio", "expr", "operator", "term", "unary_term",
00585 "function", "hexcolor", "invalid_at", "invalid_rule", "invalid_block",
00586 "invalid_block_list", 0
00587 };
00588 #endif
00589
00590 # ifdef YYPRINT
00591
00592
00593 static const unsigned short yytoknum[] =
00594 {
00595 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
00596 265, 266, 267, 268, 58, 46, 91, 42, 124, 269,
00597 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
00598 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
00599 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
00600 300, 123, 125, 59, 44, 43, 62, 45, 93, 61,
00601 41, 47, 64
00602 };
00603 # endif
00604
00605
00606 static const unsigned char yyr1[] =
00607 {
00608 0, 63, 64, 64, 64, 64, 65, 66, 67, 68,
00609 68, 69, 69, 69, 70, 70, 70, 70, 71, 71,
00610 72, 72, 72, 73, 73, 74, 75, 76, 76, 77,
00611 77, 78, 78, 78, 78, 78, 78, 78, 79, 79,
00612 80, 80, 81, 81, 81, 82, 83, 83, 84, 85,
00613 85, 86, 86, 87, 87, 87, 88, 88, 89, 90,
00614 90, 90, 91, 91, 91, 92, 92, 92, 93, 93,
00615 94, 94, 94, 95, 95, 96, 96, 96, 97, 97,
00616 97, 97, 98, 99, 99, 100, 101, 101, 102, 102,
00617 102, 102, 102, 102, 103, 103, 104, 104, 104, 105,
00618 105, 105, 105, 105, 106, 106, 106, 106, 107, 107,
00619 108, 109, 109, 110, 110, 111, 111, 111, 112, 112,
00620 112, 112, 112, 112, 112, 112, 112, 113, 113, 113,
00621 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
00622 113, 113, 113, 113, 113, 114, 114, 115, 116, 116,
00623 117, 118, 118, 119, 119
00624 };
00625
00626
00627 static const unsigned char yyr2[] =
00628 {
00629 0, 2, 5, 2, 2, 2, 6, 2, 5, 0,
00630 2, 0, 2, 2, 0, 5, 3, 3, 0, 3,
00631 6, 3, 3, 0, 2, 6, 1, 0, 2, 0,
00632 3, 1, 1, 1, 1, 1, 1, 2, 1, 1,
00633 0, 1, 1, 4, 2, 7, 0, 3, 2, 3,
00634 3, 3, 3, 2, 2, 0, 1, 1, 2, 1,
00635 4, 2, 1, 3, 2, 2, 3, 2, 2, 1,
00636 1, 2, 2, 1, 1, 1, 2, 2, 1, 1,
00637 1, 1, 2, 2, 1, 2, 4, 8, 1, 1,
00638 1, 1, 1, 1, 1, 1, 2, 3, 5, 4,
00639 4, 4, 5, 5, 3, 3, 4, 4, 5, 2,
00640 2, 2, 0, 1, 3, 2, 2, 0, 1, 2,
00641 2, 2, 2, 2, 2, 1, 1, 2, 2, 2,
00642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00643 2, 2, 2, 2, 2, 5, 3, 2, 3, 3,
00644 2, 5, 3, 1, 3
00645 };
00646
00647
00648
00649
00650 static const unsigned char yydefact[] =
00651 {
00652 14, 0, 0, 0, 0, 0, 9, 9, 9, 11,
00653 0, 0, 9, 9, 7, 9, 1, 3, 4, 5,
00654 18, 0, 17, 16, 10, 9, 0, 0, 0, 13,
00655 12, 23, 0, 0, 73, 78, 0, 0, 9, 74,
00656 70, 9, 0, 0, 62, 9, 0, 69, 0, 75,
00657 79, 80, 81, 0, 9, 0, 0, 0, 9, 9,
00658 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
00659 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
00660 9, 9, 9, 57, 56, 0, 117, 113, 118, 126,
00661 125, 0, 9, 11, 29, 11, 152, 153, 0, 15,
00662 71, 96, 0, 9, 82, 0, 72, 0, 61, 9,
00663 58, 64, 9, 9, 0, 65, 0, 73, 74, 68,
00664 77, 67, 76, 100, 9, 109, 110, 0, 101, 0,
00665 99, 9, 9, 121, 122, 147, 143, 142, 144, 129,
00666 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
00667 140, 141, 120, 128, 127, 123, 0, 124, 119, 8,
00668 9, 9, 0, 0, 0, 27, 19, 0, 24, 0,
00669 97, 0, 9, 0, 0, 0, 84, 6, 0, 53,
00670 54, 63, 66, 105, 103, 9, 102, 9, 104, 0,
00671 146, 117, 116, 115, 114, 22, 21, 38, 39, 9,
00672 26, 9, 0, 0, 0, 9, 0, 0, 0, 11,
00673 32, 33, 34, 31, 36, 35, 151, 154, 0, 85,
00674 9, 83, 89, 90, 91, 92, 93, 86, 88, 9,
00675 0, 107, 106, 117, 9, 40, 28, 9, 150, 0,
00676 0, 0, 0, 37, 30, 98, 0, 9, 108, 145,
00677 9, 0, 0, 42, 0, 50, 49, 0, 52, 51,
00678 149, 148, 95, 94, 9, 111, 48, 20, 44, 9,
00679 25, 9, 0, 0, 46, 87, 43, 0, 45, 9,
00680 47
00681 };
00682
00683
00684 static const short yydefgoto[] =
00685 {
00686 -1, 5, 6, 7, 8, 219, 20, 9, 31, 93,
00687 94, 95, 201, 202, 167, 209, 199, 251, 252, 210,
00688 277, 253, 211, 212, 114, 85, 41, 42, 43, 44,
00689 45, 46, 47, 48, 49, 50, 175, 176, 51, 229,
00690 264, 52, 14, 55, 56, 57, 248, 86, 162, 87,
00691 88, 89, 90, 214, 215, 125, 98
00692 };
00693
00694
00695
00696 #define YYPACT_NINF -159
00697 static const short yypact[] =
00698 {
00699 214, 15, -34, -18, -5, 95, -159, -159, -159, -159,
00700 127, 94, -159, -159, -159, -159, -159, 89, 89, 89,
00701 251, 98, -159, -159, -159, -159, 310, 9, 331, -159,
00702 -159, 129, -9, 50, 92, -159, 112, 115, -159, 126,
00703 -159, -159, 31, 175, -159, 229, 6, -159, 151, -159,
00704 -159, -159, -159, 122, -159, 44, 206, 133, -159, -159,
00705 -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
00706 -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
00707 -159, -159, -159, -159, -159, 400, -23, -159, -159, -159,
00708 -159, 103, -159, -159, -159, -159, -159, -159, 153, -159,
00709 -159, -159, 146, -159, -159, 18, -159, 93, -159, -159,
00710 -159, -159, -159, -159, 207, 89, 151, -159, -159, -159,
00711 -159, 89, -159, -159, -159, -159, 89, 157, -159, 208,
00712 -159, -159, -159, 89, 89, 89, 89, 89, 89, 89,
00713 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
00714 89, 89, 89, 89, 89, 89, 253, 89, -159, -159,
00715 -159, -159, 371, 130, 102, 16, 251, 120, 251, 220,
00716 -159, 310, 92, 126, 165, 42, -159, -159, 310, 89,
00717 89, -159, 89, 89, -159, -159, -159, -159, 89, 331,
00718 -159, 68, 89, 89, -159, -159, -159, -159, -159, -159,
00719 -159, -159, 77, 134, 193, -159, 202, 226, 237, -159,
00720 -159, -159, -159, -159, -159, -159, -159, -159, 187, 89,
00721 -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
00722 303, 89, 89, 118, -159, 145, 89, -159, -159, 144,
00723 145, 148, 197, -159, 251, -159, 105, -159, -159, 89,
00724 -159, 198, 33, -159, 90, -159, -159, 38, -159, -159,
00725 -159, -159, -159, -159, -159, 89, 89, -159, -159, -159,
00726 -159, -159, -3, 145, 89, -159, -159, 200, -159, -159,
00727 89
00728 };
00729
00730
00731 static const short yypgoto[] =
00732 {
00733 -159, -159, -159, -159, -159, -1, -91, -159, -159, 86,
00734 -159, -159, -159, -159, -159, -159, 60, -159, 27, -159,
00735 -159, -4, -159, -159, -159, -159, -158, -159, 96, -87,
00736 -159, 168, 230, 232, -33, -159, -159, 101, -159, -159,
00737 -159, -159, 238, -159, 224, -159, -159, -148, -159, 119,
00738 221, -159, -159, -159, -159, -7, -159
00739 };
00740
00741
00742
00743
00744
00745 #define YYTABLE_NINF -113
00746 static const short yytable[] =
00747 {
00748 11, 24, 166, 23, 168, 17, 18, 19, 191, 213,
00749 53, 26, 27, 24, 28, 122, 10, 12, 117, -9,
00750 24, 54, 24, 118, 33, 97, -9, 181, 200, 159,
00751 172, 160, 108, 13, 268, 173, 40, 105, 161, 268,
00752 107, 233, 21, 96, 115, 127, 15, 121, 222, 223,
00753 224, 225, 226, 126, 24, 275, 54, 133, 134, 135,
00754 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
00755 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
00756 156, 157, 13, 122, 218, 109, -41, 269, 197, 271,
00757 164, 165, 269, 24, 24, 16, 128, 24, 24, 32,
00758 227, 228, 171, 99, 163, 25, 24, -9, 178, 24,
00759 100, 179, 180, 197, -9, 182, 262, 263, 244, 279,
00760 -2, 203, 160, 183, 101, 198, 102, 104, 234, 161,
00761 188, 189, 34, 35, 36, 37, 38, 39, 40, 91,
00762 204, 205, 206, 270, 106, 177, 247, 132, 91, 24,
00763 198, -9, 120, 92, 169, -9, 196, 250, 170, 192,
00764 193, 103, 217, -9, 35, 36, 37, 38, -9, -9,
00765 -112, -112, 160, 21, 123, 124, 111, 220, 21, 161,
00766 22, 21, 207, 195, 231, 21, 232, -55, -55, -55,
00767 -55, -55, -55, -55, 239, 21, 238, 255, 235, 21,
00768 236, 258, -9, 241, 240, -9, -9, -9, 21, 184,
00769 185, -9, 34, 35, 36, 37, 38, 39, 40, 34,
00770 35, 36, 37, 38, 39, 40, -59, 242, 246, -59,
00771 112, 113, 256, 249, 259, 261, 254, 1, 243, 2,
00772 3, 4, 35, 36, 37, 38, 265, 245, 21, 266,
00773 260, 267, 278, 208, 190, 29, 30, 24, 130, 131,
00774 186, 187, 237, 272, 58, 59, 60, 257, 273, 276,
00775 274, 21, 216, 174, 230, 221, 119, 116, 280, 129,
00776 110, 194, 61, 62, 63, 64, 65, 66, 67, 68,
00777 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
00778 79, 80, 81, 82, 111, 0, 158, 0, 83, 0,
00779 84, 0, 0, 0, 24, -55, -55, -55, -55, -55,
00780 -55, -55, 34, 35, 36, 37, 38, 39, 40, 0,
00781 0, 0, 0, 0, 0, 24, 0, 0, 0, 0,
00782 0, 0, 58, 59, 60, 0, 0, 0, 0, 0,
00783 0, 0, 0, 0, -60, 0, 0, -60, 112, 113,
00784 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
00785 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
00786 81, 82, 58, 59, 60, 0, 83, 0, 84, 0,
00787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00788 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
00789 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
00790 81, 82, 0, 0, 0, 0, 83, 0, 84, 61,
00791 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
00792 72, 73, 74, 75, 76, 0, 78, 79
00793 };
00794
00795 static const short yycheck[] =
00796 {
00797 1, 4, 93, 10, 95, 6, 7, 8, 156, 167,
00798 1, 12, 13, 4, 15, 48, 1, 51, 12, 4,
00799 4, 12, 4, 17, 25, 32, 11, 114, 12, 52,
00800 12, 54, 1, 51, 1, 17, 18, 38, 61, 1,
00801 41, 189, 51, 52, 45, 1, 51, 48, 6, 7,
00802 8, 9, 10, 54, 4, 58, 12, 58, 59, 60,
00803 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
00804 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
00805 81, 82, 51, 116, 171, 54, 53, 54, 11, 51,
00806 91, 92, 54, 4, 4, 0, 52, 4, 4, 1,
00807 58, 59, 103, 53, 1, 11, 4, 4, 109, 4,
00808 18, 112, 113, 11, 11, 116, 11, 12, 209, 277,
00809 0, 1, 54, 124, 12, 48, 14, 12, 60, 61,
00810 131, 132, 12, 13, 14, 15, 16, 17, 18, 19,
00811 20, 21, 22, 53, 18, 52, 28, 14, 19, 4,
00812 48, 48, 1, 24, 1, 4, 163, 12, 12, 160,
00813 161, 49, 169, 12, 13, 14, 15, 16, 17, 18,
00814 52, 53, 54, 51, 52, 53, 1, 12, 51, 61,
00815 53, 51, 62, 53, 185, 51, 187, 12, 13, 14,
00816 15, 16, 17, 18, 1, 51, 203, 53, 199, 51,
00817 201, 53, 51, 1, 205, 54, 55, 56, 51, 52,
00818 53, 60, 12, 13, 14, 15, 16, 17, 18, 12,
00819 13, 14, 15, 16, 17, 18, 51, 1, 229, 54,
00820 55, 56, 239, 234, 241, 242, 237, 23, 1, 25,
00821 26, 27, 13, 14, 15, 16, 247, 60, 51, 250,
00822 53, 53, 52, 167, 1, 4, 5, 4, 52, 53,
00823 52, 53, 202, 264, 11, 12, 13, 240, 269, 273,
00824 271, 51, 52, 105, 178, 174, 46, 45, 279, 55,
00825 42, 162, 29, 30, 31, 32, 33, 34, 35, 36,
00826 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
00827 47, 48, 49, 50, 1, -1, 85, -1, 55, -1,
00828 57, -1, -1, -1, 4, 12, 13, 14, 15, 16,
00829 17, 18, 12, 13, 14, 15, 16, 17, 18, -1,
00830 -1, -1, -1, -1, -1, 4, -1, -1, -1, -1,
00831 -1, -1, 11, 12, 13, -1, -1, -1, -1, -1,
00832 -1, -1, -1, -1, 51, -1, -1, 54, 55, 56,
00833 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
00834 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00835 49, 50, 11, 12, 13, -1, 55, -1, 57, -1,
00836 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00837 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
00838 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
00839 49, 50, -1, -1, -1, -1, 55, -1, 57, 29,
00840 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
00841 40, 41, 42, 43, 44, -1, 46, 47
00842 };
00843
00844
00845
00846 static const unsigned char yystos[] =
00847 {
00848 0, 23, 25, 26, 27, 64, 65, 66, 67, 70,
00849 1, 68, 51, 51, 105, 51, 0, 68, 68, 68,
00850 69, 51, 53, 118, 4, 11, 68, 68, 68, 4,
00851 5, 71, 1, 68, 12, 13, 14, 15, 16, 17,
00852 18, 89, 90, 91, 92, 93, 94, 95, 96, 97,
00853 98, 101, 104, 1, 12, 106, 107, 108, 11, 12,
00854 13, 29, 30, 31, 32, 33, 34, 35, 36, 37,
00855 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
00856 48, 49, 50, 55, 57, 88, 110, 112, 113, 114,
00857 115, 19, 24, 72, 73, 74, 52, 118, 119, 53,
00858 18, 12, 14, 49, 12, 68, 18, 68, 1, 54,
00859 105, 1, 55, 56, 87, 68, 96, 12, 17, 95,
00860 1, 68, 97, 52, 53, 118, 68, 1, 52, 107,
00861 52, 53, 14, 68, 68, 68, 68, 68, 68, 68,
00862 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
00863 68, 68, 68, 68, 68, 68, 68, 68, 113, 52,
00864 54, 61, 111, 1, 68, 68, 69, 77, 69, 1,
00865 12, 68, 12, 17, 94, 99, 100, 52, 68, 68,
00866 68, 92, 68, 68, 52, 53, 52, 53, 68, 68,
00867 1, 110, 68, 68, 112, 53, 118, 11, 48, 79,
00868 12, 75, 76, 1, 20, 21, 22, 62, 72, 78,
00869 82, 85, 86, 89, 116, 117, 52, 118, 92, 68,
00870 12, 100, 6, 7, 8, 9, 10, 58, 59, 102,
00871 91, 68, 68, 110, 60, 68, 68, 79, 118, 1,
00872 68, 1, 1, 1, 69, 60, 68, 28, 109, 68,
00873 12, 80, 81, 84, 68, 53, 118, 81, 53, 118,
00874 53, 118, 11, 12, 103, 68, 68, 53, 1, 54,
00875 53, 51, 68, 68, 68, 58, 84, 83, 52, 89,
00876 68
00877 };
00878
00879 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
00880 # define YYSIZE_T __SIZE_TYPE__
00881 #endif
00882 #if ! defined (YYSIZE_T) && defined (size_t)
00883 # define YYSIZE_T size_t
00884 #endif
00885 #if ! defined (YYSIZE_T)
00886 # if defined (__STDC__) || defined (__cplusplus)
00887 # include <stddef.h>
00888 # define YYSIZE_T size_t
00889 # endif
00890 #endif
00891 #if ! defined (YYSIZE_T)
00892 # define YYSIZE_T unsigned int
00893 #endif
00894
00895 #define yyerrok (yyerrstatus = 0)
00896 #define yyclearin (yychar = YYEMPTY)
00897 #define YYEMPTY (-2)
00898 #define YYEOF 0
00899
00900 #define YYACCEPT goto yyacceptlab
00901 #define YYABORT goto yyabortlab
00902 #define YYERROR goto yyerrlab1
00903
00904
00905
00906
00907
00908 #define YYFAIL goto yyerrlab
00909
00910 #define YYRECOVERING() (!!yyerrstatus)
00911
00912 #define YYBACKUP(Token, Value) \
00913 do \
00914 if (yychar == YYEMPTY && yylen == 1) \
00915 { \
00916 yychar = (Token); \
00917 yylval = (Value); \
00918 yytoken = YYTRANSLATE (yychar); \
00919 YYPOPSTACK; \
00920 goto yybackup; \
00921 } \
00922 else \
00923 { \
00924 yyerror ("syntax error: cannot back up");\
00925 YYERROR; \
00926 } \
00927 while (0)
00928
00929 #define YYTERROR 1
00930 #define YYERRCODE 256
00931
00932
00933
00934
00935 #ifndef YYLLOC_DEFAULT
00936 # define YYLLOC_DEFAULT(Current, Rhs, N) \
00937 Current.first_line = Rhs[1].first_line; \
00938 Current.first_column = Rhs[1].first_column; \
00939 Current.last_line = Rhs[N].last_line; \
00940 Current.last_column = Rhs[N].last_column;
00941 #endif
00942
00943
00944
00945 #ifdef YYLEX_PARAM
00946 # define YYLEX yylex (&yylval, YYLEX_PARAM)
00947 #else
00948 # define YYLEX yylex (&yylval)
00949 #endif
00950
00951
00952 #if YYDEBUG
00953
00954 # ifndef YYFPRINTF
00955 # include <stdio.h>
00956 # define YYFPRINTF fprintf
00957 # endif
00958
00959 # define YYDPRINTF(Args) \
00960 do { \
00961 if (yydebug) \
00962 YYFPRINTF Args; \
00963 } while (0)
00964
00965 # define YYDSYMPRINT(Args) \
00966 do { \
00967 if (yydebug) \
00968 yysymprint Args; \
00969 } while (0)
00970
00971 # define YYDSYMPRINTF(Title, Token, Value, Location) \
00972 do { \
00973 if (yydebug) \
00974 { \
00975 YYFPRINTF (stderr, "%s ", Title); \
00976 yysymprint (stderr, \
00977 Token, Value); \
00978 YYFPRINTF (stderr, "\n"); \
00979 } \
00980 } while (0)
00981
00982
00983
00984
00985
00986
00987 #if defined (__STDC__) || defined (__cplusplus)
00988 static void
00989 yy_stack_print (short *bottom, short *top)
00990 #else
00991 static void
00992 yy_stack_print (bottom, top)
00993 short *bottom;
00994 short *top;
00995 #endif
00996 {
00997 YYFPRINTF (stderr, "Stack now");
00998 for (; bottom <= top; ++bottom)
00999 YYFPRINTF (stderr, " %d", *bottom);
01000 YYFPRINTF (stderr, "\n");
01001 }
01002
01003 # define YY_STACK_PRINT(Bottom, Top) \
01004 do { \
01005 if (yydebug) \
01006 yy_stack_print ((Bottom), (Top)); \
01007 } while (0)
01008
01009
01010
01011
01012
01013
01014 #if defined (__STDC__) || defined (__cplusplus)
01015 static void
01016 yy_reduce_print (int yyrule)
01017 #else
01018 static void
01019 yy_reduce_print (yyrule)
01020 int yyrule;
01021 #endif
01022 {
01023 int yyi;
01024 unsigned int yylineno = yyrline[yyrule];
01025 YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
01026 yyrule - 1, yylineno);
01027
01028 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
01029 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
01030 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
01031 }
01032
01033 # define YY_REDUCE_PRINT(Rule) \
01034 do { \
01035 if (yydebug) \
01036 yy_reduce_print (Rule); \
01037 } while (0)
01038
01039
01040
01041 int yydebug;
01042 #else
01043 # define YYDPRINTF(Args)
01044 # define YYDSYMPRINT(Args)
01045 # define YYDSYMPRINTF(Title, Token, Value, Location)
01046 # define YY_STACK_PRINT(Bottom, Top)
01047 # define YY_REDUCE_PRINT(Rule)
01048 #endif
01049
01050
01051
01052 #ifndef YYINITDEPTH
01053 # define YYINITDEPTH 200
01054 #endif
01055
01056
01057
01058
01059
01060
01061
01062
01063 #if YYMAXDEPTH == 0
01064 # undef YYMAXDEPTH
01065 #endif
01066
01067 #ifndef YYMAXDEPTH
01068 # define YYMAXDEPTH 10000
01069 #endif
01070
01071
01072
01073 #if YYERROR_VERBOSE
01074
01075 # ifndef yystrlen
01076 # if defined (__GLIBC__) && defined (_STRING_H)
01077 # define yystrlen strlen
01078 # else
01079
01080 static YYSIZE_T
01081 # if defined (__STDC__) || defined (__cplusplus)
01082 yystrlen (const char *yystr)
01083 # else
01084 yystrlen (yystr)
01085 const char *yystr;
01086 # endif
01087 {
01088 register const char *yys = yystr;
01089
01090 while (*yys++ != '\0')
01091 continue;
01092
01093 return yys - yystr - 1;
01094 }
01095 # endif
01096 # endif
01097
01098 # ifndef yystpcpy
01099 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
01100 # define yystpcpy stpcpy
01101 # else
01102
01103
01104 static char *
01105 # if defined (__STDC__) || defined (__cplusplus)
01106 yystpcpy (char *yydest, const char *yysrc)
01107 # else
01108 yystpcpy (yydest, yysrc)
01109 char *yydest;
01110 const char *yysrc;
01111 # endif
01112 {
01113 register char *yyd = yydest;
01114 register const char *yys = yysrc;
01115
01116 while ((*yyd++ = *yys++) != '\0')
01117 continue;
01118
01119 return yyd - 1;
01120 }
01121 # endif
01122 # endif
01123
01124 #endif
01125
01126
01127
01128 #if YYDEBUG
01129
01130
01131
01132
01133 #if defined (__STDC__) || defined (__cplusplus)
01134 static void
01135 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
01136 #else
01137 static void
01138 yysymprint (yyoutput, yytype, yyvaluep)
01139 FILE *yyoutput;
01140 int yytype;
01141 YYSTYPE *yyvaluep;
01142 #endif
01143 {
01144
01145 (void) yyvaluep;
01146
01147 if (yytype < YYNTOKENS)
01148 {
01149 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01150 # ifdef YYPRINT
01151 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01152 # endif
01153 }
01154 else
01155 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01156
01157 switch (yytype)
01158 {
01159 case 80:
01160
01161 (null);
01162
01163 break;
01164 case 81:
01165
01166 (null);
01167
01168 break;
01169 case 83:
01170
01171 (null);
01172
01173 break;
01174 case 90:
01175
01176 (null);
01177
01178 break;
01179 case 91:
01180
01181 (null);
01182
01183 break;
01184 case 92:
01185
01186 (null);
01187
01188 break;
01189 case 96:
01190
01191 (null);
01192
01193 break;
01194 case 97:
01195
01196 (null);
01197
01198 break;
01199 case 98:
01200
01201 (null);
01202
01203 break;
01204 case 101:
01205
01206 (null);
01207
01208 break;
01209 case 104:
01210
01211 (null);
01212
01213 break;
01214 case 110:
01215
01216 (null);
01217
01218 break;
01219 default:
01220 break;
01221 }
01222 YYFPRINTF (yyoutput, ")");
01223 }
01224
01225 #endif
01226
01227
01228
01229
01230 #if defined (__STDC__) || defined (__cplusplus)
01231 static void
01232 yydestruct (int yytype, YYSTYPE *yyvaluep)
01233 #else
01234 static void
01235 yydestruct (yytype, yyvaluep)
01236 int yytype;
01237 YYSTYPE *yyvaluep;
01238 #endif
01239 {
01240
01241 (void) yyvaluep;
01242
01243 switch (yytype)
01244 {
01245 case 80:
01246
01247 { delete yyvaluep->mediaList; yyvaluep->mediaList = 0; };
01248
01249 break;
01250 case 81:
01251
01252 { delete yyvaluep->mediaList; yyvaluep->mediaList = 0; };
01253
01254 break;
01255 case 83:
01256
01257 { delete yyvaluep->ruleList; yyvaluep->ruleList = 0; };
01258
01259 break;
01260 case 90:
01261
01262 { delete yyvaluep->selectorList; yyvaluep->selectorList = 0; };
01263
01264 break;
01265 case 91:
01266
01267 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01268
01269 break;
01270 case 92:
01271
01272 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01273
01274 break;
01275 case 96:
01276
01277 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01278
01279 break;
01280 case 97:
01281
01282 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01283
01284 break;
01285 case 98:
01286
01287 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01288
01289 break;
01290 case 101:
01291
01292 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01293
01294 break;
01295 case 104:
01296
01297 { delete yyvaluep->selector; yyvaluep->selector = 0; };
01298
01299 break;
01300 case 110:
01301
01302 { delete yyvaluep->valueList; yyvaluep->valueList = 0; };
01303
01304 break;
01305
01306 default:
01307 break;
01308 }
01309 }
01310
01311
01312
01313
01314 #ifdef YYPARSE_PARAM
01315 # if defined (__STDC__) || defined (__cplusplus)
01316 int yyparse (void *YYPARSE_PARAM);
01317 # else
01318 int yyparse ();
01319 # endif
01320 #else
01321 #if defined (__STDC__) || defined (__cplusplus)
01322 int yyparse (void);
01323 #else
01324 int yyparse ();
01325 #endif
01326 #endif
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336
01337 #ifdef YYPARSE_PARAM
01338 # if defined (__STDC__) || defined (__cplusplus)
01339 int yyparse (void *YYPARSE_PARAM)
01340 # else
01341 int yyparse (YYPARSE_PARAM)
01342 void *YYPARSE_PARAM;
01343 # endif
01344 #else
01345 #if defined (__STDC__) || defined (__cplusplus)
01346 int
01347 yyparse (void)
01348 #else
01349 int
01350 yyparse ()
01351
01352 #endif
01353 #endif
01354 {
01355
01356 int yychar;
01357
01358
01359 YYSTYPE yylval;
01360
01361
01362 int yynerrs;
01363
01364 register int yystate;
01365 register int yyn;
01366 int yyresult;
01367
01368 int yyerrstatus;
01369
01370 int yytoken = 0;
01371
01372
01373
01374
01375
01376
01377
01378
01379
01380
01381 short yyssa[YYINITDEPTH];
01382 short *yyss = yyssa;
01383 register short *yyssp;
01384
01385
01386 YYSTYPE yyvsa[YYINITDEPTH];
01387 YYSTYPE *yyvs = yyvsa;
01388 register YYSTYPE *yyvsp;
01389
01390
01391
01392 #define YYPOPSTACK (yyvsp--, yyssp--)
01393
01394 YYSIZE_T yystacksize = YYINITDEPTH;
01395
01396
01397
01398 YYSTYPE yyval;
01399
01400
01401
01402
01403 int yylen;
01404
01405 YYDPRINTF ((stderr, "Starting parse\n"));
01406
01407 yystate = 0;
01408 yyerrstatus = 0;
01409 yynerrs = 0;
01410 yychar = YYEMPTY;
01411
01412
01413
01414
01415
01416
01417 yyssp = yyss;
01418 yyvsp = yyvs;
01419
01420 goto yysetstate;
01421
01422
01423
01424
01425 yynewstate:
01426
01427
01428
01429 yyssp++;
01430
01431 yysetstate:
01432 *yyssp = yystate;
01433
01434 if (yyss + yystacksize - 1 <= yyssp)
01435 {
01436
01437 YYSIZE_T yysize = yyssp - yyss + 1;
01438
01439 #ifdef yyoverflow
01440 {
01441
01442
01443
01444 YYSTYPE *yyvs1 = yyvs;
01445 short *yyss1 = yyss;
01446
01447
01448
01449
01450
01451
01452 yyoverflow ("parser stack overflow",
01453 &yyss1, yysize * sizeof (*yyssp),
01454 &yyvs1, yysize * sizeof (*yyvsp),
01455
01456 &yystacksize);
01457
01458 yyss = yyss1;
01459 yyvs = yyvs1;
01460 }
01461 #else
01462 # ifndef YYSTACK_RELOCATE
01463 goto yyoverflowlab;
01464 # else
01465
01466 if (YYMAXDEPTH <= yystacksize)
01467 goto yyoverflowlab;
01468 yystacksize *= 2;
01469 if (YYMAXDEPTH < yystacksize)
01470 yystacksize = YYMAXDEPTH;
01471
01472 {
01473 short *yyss1 = yyss;
01474 union yyalloc *yyptr =
01475 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01476 if (! yyptr)
01477 goto yyoverflowlab;
01478 YYSTACK_RELOCATE (yyss);
01479 YYSTACK_RELOCATE (yyvs);
01480
01481 # undef YYSTACK_RELOCATE
01482 if (yyss1 != yyssa)
01483 YYSTACK_FREE (yyss1);
01484 }
01485 # endif
01486 #endif
01487
01488 yyssp = yyss + yysize - 1;
01489 yyvsp = yyvs + yysize - 1;
01490
01491
01492 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01493 (unsigned long int) yystacksize));
01494
01495 if (yyss + yystacksize - 1 <= yyssp)
01496 YYABORT;
01497 }
01498
01499 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01500
01501 goto yybackup;
01502
01503
01504
01505
01506 yybackup:
01507
01508
01509
01510
01511
01512
01513
01514 yyn = yypact[yystate];
01515 if (yyn == YYPACT_NINF)
01516 goto yydefault;
01517
01518
01519
01520
01521 if (yychar == YYEMPTY)
01522 {
01523 YYDPRINTF ((stderr, "Reading a token: "));
01524 yychar = YYLEX;
01525 }
01526
01527 if (yychar <= YYEOF)
01528 {
01529 yychar = yytoken = YYEOF;
01530 YYDPRINTF ((stderr, "Now at end of input.\n"));
01531 }
01532 else
01533 {
01534 yytoken = YYTRANSLATE (yychar);
01535 YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
01536 }
01537
01538
01539
01540 yyn += yytoken;
01541 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01542 goto yydefault;
01543 yyn = yytable[yyn];
01544 if (yyn <= 0)
01545 {
01546 if (yyn == 0 || yyn == YYTABLE_NINF)
01547 goto yyerrlab;
01548 yyn = -yyn;
01549 goto yyreduce;
01550 }
01551
01552 if (yyn == YYFINAL)
01553 YYACCEPT;
01554
01555
01556 YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
01557
01558
01559 if (yychar != YYEOF)
01560 yychar = YYEMPTY;
01561
01562 *++yyvsp = yylval;
01563
01564
01565
01566
01567 if (yyerrstatus)
01568 yyerrstatus--;
01569
01570 yystate = yyn;
01571 goto yynewstate;
01572
01573
01574
01575
01576
01577 yydefault:
01578 yyn = yydefact[yystate];
01579 if (yyn == 0)
01580 goto yyerrlab;
01581 goto yyreduce;
01582
01583
01584
01585
01586
01587 yyreduce:
01588
01589 yylen = yyr2[yyn];
01590
01591
01592
01593
01594
01595
01596
01597
01598
01599 yyval = yyvsp[1-yylen];
01600
01601
01602 YY_REDUCE_PRINT (yyn);
01603 switch (yyn)
01604 {
01605 case 6:
01606
01607 {
01608 CSSParser *p = static_cast<CSSParser *>(parser);
01609 p->rule = yyvsp[-2].rule;
01610 ;}
01611 break;
01612
01613 case 7:
01614
01615 {
01616
01617 ;}
01618 break;
01619
01620 case 8:
01621
01622 {
01623 CSSParser *p = static_cast<CSSParser *>(parser);
01624 if ( yyvsp[-1].valueList ) {
01625 p->valueList = yyvsp[-1].valueList;
01626 #ifdef CSS_DEBUG
01627 kdDebug( 6080 ) << " got property for " << p->id <<
01628 (p->important?" important":"")<< endl;
01629 bool ok =
01630 #endif
01631 p->parseValue( p->id, p->important );
01632 #ifdef CSS_DEBUG
01633 if ( !ok )
01634 kdDebug( 6080 ) << " couldn't parse value!" << endl;
01635 #endif
01636 }
01637 #ifdef CSS_DEBUG
01638 else
01639 kdDebug( 6080 ) << " no value found!" << endl;
01640 #endif
01641 delete p->valueList;
01642 p->valueList = 0;
01643 ;}
01644 break;
01645
01646 case 15:
01647
01648 {
01649 #ifdef CSS_DEBUG
01650 kdDebug( 6080 ) << "charset rule: " << qString(yyvsp[-2].string) << endl;
01651 #endif
01652 ;}
01653 break;
01654
01655 case 19:
01656
01657 {
01658 CSSParser *p = static_cast<CSSParser *>(parser);
01659 if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
01660 p->styleElement->append( yyvsp[-1].rule );
01661 } else {
01662 delete yyvsp[-1].rule;
01663 }
01664 ;}
01665 break;
01666
01667 case 20:
01668
01669 {
01670 #ifdef CSS_DEBUG
01671 kdDebug( 6080 ) << "@import: " << qString(yyvsp[-3].string) << endl;
01672 #endif
01673 CSSParser *p = static_cast<CSSParser *>(parser);
01674 if ( yyvsp[-1].mediaList && p->styleElement && p->styleElement->isCSSStyleSheet() )
01675 yyval.rule = new CSSImportRuleImpl( p->styleElement, domString(yyvsp[-3].string), yyvsp[-1].mediaList );
01676 else
01677 yyval.rule = 0;
01678 ;}
01679 break;
01680
01681 case 21:
01682
01683 {
01684 yyval.rule = 0;
01685 ;}
01686 break;
01687
01688 case 22:
01689
01690 {
01691 yyval.rule = 0;
01692 ;}
01693 break;
01694
01695 case 27:
01696
01697 { yyval.string.string = 0; yyval.string.length = 0; ;}
01698 break;
01699
01700 case 30:
01701
01702 {
01703 CSSParser *p = static_cast<CSSParser *>(parser);
01704 if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
01705 p->styleElement->append( yyvsp[-1].rule );
01706 } else {
01707 delete yyvsp[-1].rule;
01708 }
01709 ;}
01710 break;
01711
01712 case 37:
01713
01714 { delete yyvsp[-1].rule; yyval.rule = 0; ;}
01715 break;
01716
01717 case 40:
01718
01719 {
01720 yyval.mediaList = new MediaListImpl();
01721 ;}
01722 break;
01723
01724 case 42:
01725
01726 {
01727 yyval.mediaList = new MediaListImpl();
01728 yyval.mediaList->appendMedium( domString(yyvsp[0].string).lower() );
01729 ;}
01730 break;
01731
01732 case 43:
01733
01734 {
01735 yyval.mediaList = yyvsp[-3].mediaList;
01736 if (yyval.mediaList)
01737 yyval.mediaList->appendMedium( domString(yyvsp[0].string).lower() );
01738 ;}
01739 break;
01740
01741 case 44:
01742
01743 {
01744 delete yyvsp[-1].mediaList;
01745 yyval.mediaList = 0;
01746 ;}
01747 break;
01748
01749 case 45:
01750
01751 {
01752 CSSParser *p = static_cast<CSSParser *>(parser);
01753 if ( yyvsp[-4].mediaList && yyvsp[-1].ruleList &&
01754 p->styleElement && p->styleElement->isCSSStyleSheet() ) {
01755 yyval.rule = new CSSMediaRuleImpl( static_cast<CSSStyleSheetImpl*>(p->styleElement), yyvsp[-4].mediaList, yyvsp[-1].ruleList );
01756 } else {
01757 yyval.rule = 0;
01758 delete yyvsp[-4].mediaList;
01759 delete yyvsp[-1].ruleList;
01760 }
01761 ;}
01762 break;
01763
01764 case 46:
01765
01766 { yyval.ruleList = 0; ;}
01767 break;
01768
01769 case 47:
01770
01771 {
01772 yyval.ruleList = yyvsp[-2].ruleList;
01773 if ( yyvsp[-1].rule ) {
01774 if ( !yyval.ruleList ) yyval.ruleList = new CSSRuleListImpl();
01775 yyval.ruleList->append( yyvsp[-1].rule );
01776 }
01777 ;}
01778 break;
01779
01780 case 48:
01781
01782 {
01783 yyval.string = yyvsp[-1].string;
01784 ;}
01785 break;
01786
01787 case 49:
01788
01789 {
01790 yyval.rule = 0;
01791 ;}
01792 break;
01793
01794 case 50:
01795
01796 {
01797 yyval.rule = 0;
01798 ;}
01799 break;
01800
01801 case 51:
01802
01803 {
01804 yyval.rule = 0;
01805 ;}
01806 break;
01807
01808 case 52:
01809
01810 {
01811 yyval.rule = 0;
01812 ;}
01813 break;
01814
01815 case 53:
01816
01817 { yyval.relation = CSSSelector::Sibling; ;}
01818 break;
01819
01820 case 54:
01821
01822 { yyval.relation = CSSSelector::Child; ;}
01823 break;
01824
01825 case 55:
01826
01827 { yyval.relation = CSSSelector::Descendant; ;}
01828 break;
01829
01830 case 56:
01831
01832 { yyval.val = -1; ;}
01833 break;
01834
01835 case 57:
01836
01837 { yyval.val = 1; ;}
01838 break;
01839
01840 case 58:
01841
01842 {
01843 #ifdef CSS_DEBUG
01844 kdDebug( 6080 ) << "got ruleset" << endl << " selector:" << endl;
01845 #endif
01846 CSSParser *p = static_cast<CSSParser *>(parser);
01847 if ( yyvsp[-1].selectorList && yyvsp[0].ok && p->numParsedProperties ) {
01848 CSSStyleRuleImpl *rule = new CSSStyleRuleImpl( p->styleElement );
01849 CSSStyleDeclarationImpl *decl = p->createStyleDeclaration( rule );
01850 rule->setSelector( yyvsp[-1].selectorList );
01851 rule->setDeclaration(decl);
01852 yyval.rule = rule;
01853 } else {
01854 yyval.rule = 0;
01855 delete yyvsp[-1].selectorList;
01856 p->clearProperties();
01857 }
01858 ;}
01859 break;
01860
01861 case 59:
01862
01863 {
01864 if ( yyvsp[0].selector ) {
01865 yyval.selectorList = new QPtrList<CSSSelector>;
01866 yyval.selectorList->setAutoDelete( true );
01867 #ifdef CSS_DEBUG
01868 kdDebug( 6080 ) << " got simple selector:" << endl;
01869 yyvsp[0].selector->print();
01870 #endif
01871 yyval.selectorList->append( yyvsp[0].selector );
01872 } else {
01873 yyval.selectorList = 0;
01874 }
01875 ;}
01876 break;
01877
01878 case 60:
01879
01880 {
01881 if ( yyvsp[-3].selectorList && yyvsp[0].selector ) {
01882 yyval.selectorList = yyvsp[-3].selectorList;
01883 yyval.selectorList->append( yyvsp[0].selector );
01884 #ifdef CSS_DEBUG
01885 kdDebug( 6080 ) << " got simple selector:" << endl;
01886 yyvsp[0].selector->print();
01887 #endif
01888 } else {
01889 delete yyvsp[-3].selectorList;
01890 delete yyvsp[0].selector;
01891 yyval.selectorList = 0;
01892 }
01893 ;}
01894 break;
01895
01896 case 61:
01897
01898 {
01899 delete yyvsp[-1].selectorList;
01900 yyval.selectorList = 0;
01901 ;}
01902 break;
01903
01904 case 62:
01905
01906 {
01907 yyval.selector = yyvsp[0].selector;
01908 ;}
01909 break;
01910
01911 case 63:
01912
01913 {
01914 if ( !yyvsp[-2].selector || !yyvsp[0].selector ) {
01915 delete yyvsp[-2].selector;
01916 delete yyvsp[0].selector;
01917 yyval.selector = 0;
01918 } else {
01919 yyval.selector = yyvsp[0].selector;
01920 CSSSelector *end = yyvsp[0].selector;
01921 while( end->tagHistory )
01922 end = end->tagHistory;
01923 end->relation = yyvsp[-1].relation;
01924 end->tagHistory = yyvsp[-2].selector;
01925 if ( yyvsp[-1].relation == CSSSelector::Descendant ||
01926 yyvsp[-1].relation == CSSSelector::Child ) {
01927 CSSParser *p = static_cast<CSSParser *>(parser);
01928 DOM::DocumentImpl *doc = p->document();
01929 if ( doc )
01930 doc->setUsesDescendantRules(true);
01931 }
01932 }
01933 ;}
01934 break;
01935
01936 case 64:
01937
01938 {
01939 delete yyvsp[-1].selector;
01940 yyval.selector = 0;
01941 ;}
01942 break;
01943
01944 case 65:
01945
01946 {
01947 yyval.selector = new CSSSelector();
01948 yyval.selector->tag = yyvsp[-1].element;
01949 ;}
01950 break;
01951
01952 case 66:
01953
01954 {
01955 yyval.selector = yyvsp[-1].selector;
01956 if ( yyval.selector )
01957 yyval.selector->tag = yyvsp[-2].element;
01958 ;}
01959 break;
01960
01961 case 67:
01962
01963 {
01964 yyval.selector = yyvsp[-1].selector;
01965 if ( yyval.selector )
01966 yyval.selector->tag = 0xffffffff;
01967 ;}
01968 break;
01969
01970 case 68:
01971
01972 { yyval.element = (yyvsp[-1].ns<<16) | yyvsp[0].element; ;}
01973 break;
01974
01975 case 69:
01976
01977 {
01978
01979
01980 CSSParser *p = static_cast<CSSParser *>(parser);
01981 yyval.element = (p->defaultNamespace<<16) | yyvsp[0].element;
01982 ;}
01983 break;
01984
01985 case 70:
01986
01987 { yyval.ns = 0; ;}
01988 break;
01989
01990 case 71:
01991
01992 { yyval.ns = 1; ;}
01993 break;
01994
01995 case 72:
01996
01997 { yyval.ns = 0xffff; ;}
01998 break;
01999
02000 case 73:
02001
02002 {
02003 CSSParser *p = static_cast<CSSParser *>(parser);
02004 DOM::DocumentImpl *doc = p->document();
02005 QString tag = qString(yyvsp[0].string);
02006 if ( doc ) {
02007 if (doc->isHTMLDocument())
02008 tag = tag.lower();
02009 const DOMString dtag(tag);
02010 #ifdef APPLE_CHANGES
02011 yyval.element = doc->tagId(0, dtag.implementation(), false);
02012 #else
02013 yyval.element = doc->getId(NodeImpl::ElementId, dtag.implementation(), false, true);
02014 #endif
02015 } else {
02016 yyval.element = khtml::getTagID(tag.lower().ascii(), tag.length());
02017
02018
02019
02020 }
02021 ;}
02022 break;
02023
02024 case 74:
02025
02026 { yyval.element = 0xffff; ;}
02027 break;
02028
02029 case 75:
02030
02031 {
02032 yyval.selector = yyvsp[0].selector;
02033 yyval.selector->nonCSSHint = static_cast<CSSParser *>(parser)->nonCSSHint;
02034 ;}
02035 break;
02036
02037 case 76:
02038
02039 {
02040 yyval.selector = yyvsp[-1].selector;
02041 if ( yyval.selector ) {
02042 CSSSelector *end = yyvsp[-1].selector;
02043 while( end->tagHistory )
02044 end = end->tagHistory;
02045 end->relation = CSSSelector::SubSelector;
02046 end->tagHistory = yyvsp[0].selector;
02047 }
02048 ;}
02049 break;
02050
02051 case 77:
02052
02053 {
02054 delete yyvsp[-1].selector;
02055 yyval.selector = 0;
02056 ;}
02057 break;
02058
02059 case 78:
02060
02061 {
02062 yyval.selector = new CSSSelector();
02063 yyval.selector->match = CSSSelector::Id;
02064 yyval.selector->attr = ATTR_ID;
02065 yyval.selector->value = domString(yyvsp[0].string);
02066 ;}
02067 break;
02068
02069 case 82:
02070
02071 {
02072 yyval.selector = new CSSSelector();
02073 yyval.selector->match = CSSSelector::List;
02074 yyval.selector->attr = ATTR_CLASS;
02075 yyval.selector->value = domString(yyvsp[0].string);
02076 ;}
02077 break;
02078
02079 case 83:
02080
02081 { yyval.attribute = (yyvsp[-1].ns<<16) | yyvsp[0].attribute; ;}
02082 break;
02083
02084 case 84:
02085
02086 {
02087
02088 yyval.attribute = yyvsp[0].attribute;
02089 ;}
02090 break;
02091
02092 case 85:
02093
02094 {
02095 CSSParser *p = static_cast<CSSParser *>(parser);
02096 DOM::DocumentImpl *doc = p->document();
02097
02098 QString attr = qString(yyvsp[-1].string);
02099 if ( doc ) {
02100 if (doc->isHTMLDocument())
02101 attr = attr.lower();
02102 const DOMString dattr(attr);
02103 #ifdef APPLE_CHANGES
02104 yyval.attribute = doc->attrId(0, dattr.implementation(), false);
02105 #else
02106 yyval.attribute = doc->getId(NodeImpl::AttributeId, dattr.implementation(), false, true);
02107 #endif
02108 } else {
02109 yyval.attribute = khtml::getAttrID(attr.lower().ascii(), attr.length());
02110
02111
02112 assert(yyval.attribute != 0);
02113 }
02114 ;}
02115 break;
02116
02117 case 86:
02118
02119 {
02120 yyval.selector = new CSSSelector();
02121 yyval.selector->attr = yyvsp[-1].attribute;
02122 yyval.selector->match = CSSSelector::Set;
02123 ;}
02124 break;
02125
02126 case 87:
02127
02128 {
02129 yyval.selector = new CSSSelector();
02130 yyval.selector->attr = yyvsp[-5].attribute;
02131 yyval.selector->match = (CSSSelector::Match)yyvsp[-4].val;
02132 yyval.selector->value = domString(yyvsp[-2].string);
02133 ;}
02134 break;
02135
02136 case 88:
02137
02138 {
02139 yyval.val = CSSSelector::Exact;
02140 ;}
02141 break;
02142
02143 case 89:
02144
02145 {
02146 yyval.val = CSSSelector::List;
02147 ;}
02148 break;
02149
02150 case 90:
02151
02152 {
02153 yyval.val = CSSSelector::Hyphen;
02154 ;}
02155 break;
02156
02157 case 91:
02158
02159 {
02160 yyval.val = CSSSelector::Begin;
02161 ;}
02162 break;
02163
02164 case 92:
02165
02166 {
02167 yyval.val = CSSSelector::End;
02168 ;}
02169 break;
02170
02171 case 93:
02172
02173 {
02174 yyval.val = CSSSelector::Contain;
02175 ;}
02176 break;
02177
02178 case 96:
02179
02180 {
02181 yyval.selector = new CSSSelector();
02182 yyval.selector->match = CSSSelector::Pseudo;
02183 yyval.selector->value = domString(yyvsp[0].string);
02184 ;}
02185 break;
02186
02187 case 97:
02188
02189 {
02190 yyval.selector = new CSSSelector();
02191 yyval.selector->match = CSSSelector::Pseudo;
02192 yyval.selector->value = domString(yyvsp[0].string);
02193 ;}
02194 break;
02195
02196 case 98:
02197
02198 {
02199 yyval.selector = new CSSSelector();
02200 yyval.selector->match = CSSSelector::Pseudo;
02201 yyval.selector->simpleSelector = yyvsp[-1].selector;
02202 yyval.selector->value = domString(yyvsp[-3].string);
02203 ;}
02204 break;
02205
02206 case 99:
02207
02208 {
02209 yyval.ok = yyvsp[-1].ok;
02210 ;}
02211 break;
02212
02213 case 100:
02214
02215 {
02216 yyval.ok = false;
02217 ;}
02218 break;
02219
02220 case 101:
02221
02222 {
02223 yyval.ok = yyvsp[-1].ok;
02224 ;}
02225 break;
02226
02227 case 102:
02228
02229 {
02230 yyval.ok = yyvsp[-2].ok;
02231 if ( yyvsp[-1].ok )
02232 yyval.ok = yyvsp[-1].ok;
02233 ;}
02234 break;
02235
02236 case 103:
02237
02238 {
02239 yyval.ok = yyvsp[-2].ok;
02240 ;}
02241 break;
02242
02243 case 104:
02244
02245 {
02246 yyval.ok = yyvsp[-2].ok;
02247 ;}
02248 break;
02249
02250 case 105:
02251
02252 {
02253 yyval.ok = false;
02254 ;}
02255 break;
02256
02257 case 106:
02258
02259 {
02260 yyval.ok = yyvsp[-3].ok;
02261 if ( yyvsp[-2].ok )
02262 yyval.ok = yyvsp[-2].ok;
02263 ;}
02264 break;
02265
02266 case 107:
02267
02268 {
02269 yyval.ok = yyvsp[-3].ok;
02270 ;}
02271 break;
02272
02273 case 108:
02274
02275 {
02276 yyval.ok = false;
02277 CSSParser *p = static_cast<CSSParser *>(parser);
02278 if ( yyvsp[-4].prop_id && yyvsp[-1].valueList ) {
02279 p->valueList = yyvsp[-1].valueList;
02280 #ifdef CSS_DEBUG
02281 kdDebug( 6080 ) << " got property: " << yyvsp[-4].prop_id <<
02282 (yyvsp[0].b?" important":"")<< endl;
02283 #endif
02284 bool ok = p->parseValue( yyvsp[-4].prop_id, yyvsp[0].b );
02285 if ( ok )
02286 yyval.ok = ok;
02287 #ifdef CSS_DEBUG
02288 else
02289 kdDebug( 6080 ) << " couldn't parse value!" << endl;
02290 #endif
02291 } else {
02292 delete yyvsp[-1].valueList;
02293 }
02294 delete p->valueList;
02295 p->valueList = 0;
02296 ;}
02297 break;
02298
02299 case 109:
02300
02301 {
02302 yyval.ok = false;
02303 ;}
02304 break;
02305
02306 case 110:
02307
02308 {
02309 QString str = qString(yyvsp[-1].string);
02310 yyval.prop_id = getPropertyID( str.lower().latin1(), str.length() );
02311 ;}
02312 break;
02313
02314 case 111:
02315
02316 { yyval.b = true; ;}
02317 break;
02318
02319 case 112:
02320
02321 { yyval.b = false; ;}
02322 break;
02323
02324 case 113:
02325
02326 {
02327 yyval.valueList = new ValueList;
02328 yyval.valueList->addValue( yyvsp[0].value );
02329 ;}
02330 break;
02331
02332 case 114:
02333
02334 {
02335 yyval.valueList = yyvsp[-2].valueList;
02336 if ( yyval.valueList ) {
02337 if ( yyvsp[-1].tok ) {
02338 Value v;
02339 v.id = 0;
02340 v.unit = Value::Operator;
02341 v.iValue = yyvsp[-1].tok;
02342 yyval.valueList->addValue( v );
02343 }
02344 yyval.valueList->addValue( yyvsp[0].value );
02345 }
02346 ;}
02347 break;
02348
02349 case 115:
02350
02351 {
02352 yyval.tok = '/';
02353 ;}
02354 break;
02355
02356 case 116:
02357
02358 {
02359 yyval.tok = ',';
02360 ;}
02361 break;
02362
02363 case 117:
02364
02365 {
02366 yyval.tok = 0;
02367 ;}
02368 break;
02369
02370 case 118:
02371
02372 { yyval.value = yyvsp[0].value; ;}
02373 break;
02374
02375 case 119:
02376
02377 { yyval.value = yyvsp[0].value; yyval.value.fValue *= yyvsp[-1].val; ;}
02378 break;
02379
02380 case 120:
02381
02382 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_DIMENSION; ;}
02383 break;
02384
02385 case 121:
02386
02387 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_STRING; ;}
02388 break;
02389
02390 case 122:
02391
02392 {
02393 QString str = qString( yyvsp[-1].string );
02394 yyval.value.id = getValueID( str.lower().latin1(), str.length() );
02395 yyval.value.unit = CSSPrimitiveValue::CSS_IDENT;
02396 yyval.value.string = yyvsp[-1].string;
02397 ;}
02398 break;
02399
02400 case 123:
02401
02402 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_URI; ;}
02403 break;
02404
02405 case 124:
02406
02407 { yyval.value.id = 0; yyval.value.iValue = 0; yyval.value.unit = CSSPrimitiveValue::CSS_UNKNOWN; ;}
02408 break;
02409
02410 case 125:
02411
02412 { yyval.value.id = 0; yyval.value.string = yyvsp[0].string; yyval.value.unit = CSSPrimitiveValue::CSS_RGBCOLOR; ;}
02413 break;
02414
02415 case 126:
02416
02417 {
02418 yyval.value = yyvsp[0].value;
02419 ;}
02420 break;
02421
02422 case 127:
02423
02424 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_NUMBER; ;}
02425 break;
02426
02427 case 128:
02428
02429 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;}
02430 break;
02431
02432 case 129:
02433
02434 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PX; ;}
02435 break;
02436
02437 case 130:
02438
02439 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_CM; ;}
02440 break;
02441
02442 case 131:
02443
02444 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MM; ;}
02445 break;
02446
02447 case 132:
02448
02449 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_IN; ;}
02450 break;
02451
02452 case 133:
02453
02454 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PT; ;}
02455 break;
02456
02457 case 134:
02458
02459 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PC; ;}
02460 break;
02461
02462 case 135:
02463
02464 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_DEG; ;}
02465 break;
02466
02467 case 136:
02468
02469 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_RAD; ;}
02470 break;
02471
02472 case 137:
02473
02474 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_GRAD; ;}
02475 break;
02476
02477 case 138:
02478
02479 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MS; ;}
02480 break;
02481
02482 case 139:
02483
02484 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_S; ;}
02485 break;
02486
02487 case 140:
02488
02489 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_HZ; ;}
02490 break;
02491
02492 case 141:
02493
02494 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_KHZ; ;}
02495 break;
02496
02497 case 142:
02498
02499 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EMS; ;}
02500 break;
02501
02502 case 143:
02503
02504 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = Value::Q_EMS; ;}
02505 break;
02506
02507 case 144:
02508
02509 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EXS; ;}
02510 break;
02511
02512 case 145:
02513
02514 {
02515 Function *f = new Function;
02516 f->name = yyvsp[-4].string;
02517 f->args = yyvsp[-2].valueList;
02518 yyval.value.id = 0;
02519 yyval.value.unit = Value::Function;
02520 yyval.value.function = f;
02521 ;}
02522 break;
02523
02524 case 146:
02525
02526 {
02527 Function *f = new Function;
02528 f->name = yyvsp[-2].string;
02529 f->args = 0;
02530 yyval.value.id = 0;
02531 yyval.value.unit = Value::Function;
02532 yyval.value.function = f;
02533 ;}
02534 break;
02535
02536 case 147:
02537
02538 { yyval.string = yyvsp[-1].string; ;}
02539 break;
02540
02541 case 148:
02542
02543 {
02544 yyval.rule = 0;
02545 #ifdef CSS_DEBUG
02546 kdDebug( 6080 ) << "skipped invalid @-rule" << endl;
02547 #endif
02548 ;}
02549 break;
02550
02551 case 149:
02552
02553 {
02554 yyval.rule = 0;
02555 #ifdef CSS_DEBUG
02556 kdDebug( 6080 ) << "skipped invalid @-rule" << endl;
02557 #endif
02558 ;}
02559 break;
02560
02561 case 150:
02562
02563 {
02564 yyval.rule = 0;
02565 #ifdef CSS_DEBUG
02566 kdDebug( 6080 ) << "skipped invalid rule" << endl;
02567 #endif
02568 ;}
02569 break;
02570
02571
02572 }
02573
02574
02575
02576
02577 yyvsp -= yylen;
02578 yyssp -= yylen;
02579
02580
02581 YY_STACK_PRINT (yyss, yyssp);
02582
02583 *++yyvsp = yyval;
02584
02585
02586
02587
02588
02589
02590 yyn = yyr1[yyn];
02591
02592 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
02593 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02594 yystate = yytable[yystate];
02595 else
02596 yystate = yydefgoto[yyn - YYNTOKENS];
02597
02598 goto yynewstate;
02599
02600
02601
02602
02603
02604 yyerrlab:
02605
02606 if (!yyerrstatus)
02607 {
02608 ++yynerrs;
02609 #if YYERROR_VERBOSE
02610 yyn = yypact[yystate];
02611
02612 if (YYPACT_NINF < yyn && yyn < YYLAST)
02613 {
02614 YYSIZE_T yysize = 0;
02615 int yytype = YYTRANSLATE (yychar);
02616 char *yymsg;
02617 int yyx, yycount;
02618
02619 yycount = 0;
02620
02621
02622 for (yyx = yyn < 0 ? -yyn : 0;
02623 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
02624 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02625 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
02626 yysize += yystrlen ("syntax error, unexpected ") + 1;
02627 yysize += yystrlen (yytname[yytype]);
02628 yymsg = (char *) YYSTACK_ALLOC (yysize);
02629 if (yymsg != 0)
02630 {
02631 char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
02632 yyp = yystpcpy (yyp, yytname[yytype]);
02633
02634 if (yycount < 5)
02635 {
02636 yycount = 0;
02637 for (yyx = yyn < 0 ? -yyn : 0;
02638 yyx < (int) (sizeof (yytname) / sizeof (char *));
02639 yyx++)
02640 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02641 {
02642 const char *yyq = ! yycount ? ", expecting " : " or ";
02643 yyp = yystpcpy (yyp, yyq);
02644 yyp = yystpcpy (yyp, yytname[yyx]);
02645 yycount++;
02646 }
02647 }
02648 yyerror (yymsg);
02649 YYSTACK_FREE (yymsg);
02650 }
02651 else
02652 yyerror ("syntax error; also virtual memory exhausted");
02653 }
02654 else
02655 #endif
02656 yyerror ("syntax error");
02657 }
02658
02659
02660
02661 if (yyerrstatus == 3)
02662 {
02663
02664
02665
02666
02667 if (yychar == YYEOF)
02668 {
02669
02670 YYPOPSTACK;
02671
02672 while (yyss < yyssp)
02673 {
02674 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
02675 yydestruct (yystos[*yyssp], yyvsp);
02676 YYPOPSTACK;
02677 }
02678 YYABORT;
02679 }
02680
02681 YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
02682 yydestruct (yytoken, &yylval);
02683 yychar = YYEMPTY;
02684
02685 }
02686
02687
02688
02689 goto yyerrlab2;
02690
02691
02692
02693
02694
02695 yyerrlab2:
02696 yyerrstatus = 3;
02697
02698 for (;;)
02699 {
02700 yyn = yypact[yystate];
02701 if (yyn != YYPACT_NINF)
02702 {
02703 yyn += YYTERROR;
02704 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
02705 {
02706 yyn = yytable[yyn];
02707 if (0 < yyn)
02708 break;
02709 }
02710 }
02711
02712
02713 if (yyssp == yyss)
02714 YYABORT;
02715
02716 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
02717 yydestruct (yystos[yystate], yyvsp);
02718 yyvsp--;
02719 yystate = *--yyssp;
02720
02721 YY_STACK_PRINT (yyss, yyssp);
02722 }
02723
02724 if (yyn == YYFINAL)
02725 YYACCEPT;
02726
02727 YYDPRINTF ((stderr, "Shifting error token, "));
02728
02729 *++yyvsp = yylval;
02730
02731
02732 yystate = yyn;
02733 goto yynewstate;
02734
02735
02736
02737
02738
02739 yyacceptlab:
02740 yyresult = 0;
02741 goto yyreturn;
02742
02743
02744
02745
02746 yyabortlab:
02747 yyresult = 1;
02748 goto yyreturn;
02749
02750 #ifndef yyoverflow
02751
02752
02753
02754 yyoverflowlab:
02755 yyerror ("parser stack overflow");
02756 yyresult = 2;
02757
02758 #endif
02759
02760 yyreturn:
02761 #ifndef yyoverflow
02762 if (yyss != yyssa)
02763 YYSTACK_FREE (yyss);
02764 #endif
02765 return yyresult;
02766 }
02767
02768
02769
02770
02771
02772