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