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