KHtml

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

KDE's Doxygen guidelines are available online.