nsgenbind
Loading...
Searching...
No Matches
webidl-parser.c
Go to the documentation of this file.
1/* A Bison parser, made by GNU Bison 3.8.2. */
2
3/* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21/* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34/* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41/* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48/* Identify Bison output, and Bison version. */
49#define YYBISON 30802
50
51/* Bison version string. */
52#define YYBISON_VERSION "3.8.2"
53
54/* Skeleton name. */
55#define YYSKELETON_NAME "yacc.c"
56
57/* Pure parsers. */
58#define YYPURE 1
59
60/* Push parsers. */
61#define YYPUSH 0
62
63/* Pull parsers. */
64#define YYPULL 1
65
66/* Substitute the type names. */
67#define YYSTYPE WEBIDL_STYPE
68#define YYLTYPE WEBIDL_LTYPE
69/* Substitute the variable and function names. */
70#define yyparse webidl_parse
71#define yylex webidl_lex
72#define yyerror webidl_error
73#define yydebug webidl_debug
74#define yynerrs webidl_nerrs
75
76/* First part of user prologue. */
77#line 1 "src/webidl-parser.y"
78
79
80/* This is a bison parser for Web IDL
81 *
82 * This file is part of nsgenbind.
83 * Licensed under the MIT License,
84 * http://www.opensource.org/licenses/mit-license.php
85 * Copyright 2012 Vincent Sanders <vince@netsurf-browser.org>
86 *
87 * Derived from the the grammar in apendix A of W3C WEB IDL
88 * http://www.w3.org/TR/WebIDL/
89 *
90 * WebIDL now has a second edition draft (mid 2015) that the dom and
91 * html specs are using. https://heycam.github.io/webidl
92 */
93
94#include <stdio.h>
95#include <string.h>
96#include <stdbool.h>
97#include <stdint.h>
98#include <math.h>
99
100#define YYFPRINTF webidl_fprintf
101#define YY_LOCATION_PRINT(File, Loc) \
102 webidl_fprintf(File, "%d.%d-%d.%d", \
103 (Loc).first_line, (Loc).first_column, \
104 (Loc).last_line, (Loc).last_column)
105
106#include "utils.h"
107#include "webidl-parser.h"
108#include "webidl-lexer.h"
109
110#include "webidl-ast.h"
111
112static char *errtxt;
113
114static void
115webidl_error(YYLTYPE *locp, struct webidl_node **winbind_ast, const char *str)
116{
117 UNUSED(locp);
118 UNUSED(winbind_ast);
119 errtxt = strdup(str);
120}
121
122
123#line 124 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
124
125# ifndef YY_CAST
126# ifdef __cplusplus
127# define YY_CAST(Type, Val) static_cast<Type> (Val)
128# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
129# else
130# define YY_CAST(Type, Val) ((Type) (Val))
131# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
132# endif
133# endif
134# ifndef YY_NULLPTR
135# if defined __cplusplus
136# if 201103L <= __cplusplus
137# define YY_NULLPTR nullptr
138# else
139# define YY_NULLPTR 0
140# endif
141# else
142# define YY_NULLPTR ((void*)0)
143# endif
144# endif
145
146#include "webidl-parser.h"
147/* Symbol kind. */
149{
151 YYSYMBOL_YYEOF = 0, /* "end of file" */
152 YYSYMBOL_YYerror = 1, /* error */
153 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
154 YYSYMBOL_TOK_ANY = 3, /* TOK_ANY */
155 YYSYMBOL_TOK_ATTRIBUTE = 4, /* TOK_ATTRIBUTE */
156 YYSYMBOL_TOK_BOOLEAN = 5, /* TOK_BOOLEAN */
157 YYSYMBOL_TOK_BYTE = 6, /* TOK_BYTE */
158 YYSYMBOL_TOK_CALLBACK = 7, /* TOK_CALLBACK */
159 YYSYMBOL_TOK_CONST = 8, /* TOK_CONST */
160 YYSYMBOL_TOK_CONSTRUCTOR = 9, /* TOK_CONSTRUCTOR */
161 YYSYMBOL_TOK_CREATOR = 10, /* TOK_CREATOR */
162 YYSYMBOL_TOK_DATE = 11, /* TOK_DATE */
163 YYSYMBOL_TOK_DELETER = 12, /* TOK_DELETER */
164 YYSYMBOL_TOK_DICTIONARY = 13, /* TOK_DICTIONARY */
165 YYSYMBOL_TOK_DOUBLE = 14, /* TOK_DOUBLE */
166 YYSYMBOL_TOK_ELLIPSIS = 15, /* TOK_ELLIPSIS */
167 YYSYMBOL_TOK_ENUM = 16, /* TOK_ENUM */
168 YYSYMBOL_TOK_EOL = 17, /* TOK_EOL */
169 YYSYMBOL_TOK_EXCEPTION = 18, /* TOK_EXCEPTION */
170 YYSYMBOL_TOK_FALSE = 19, /* TOK_FALSE */
171 YYSYMBOL_TOK_FLOAT = 20, /* TOK_FLOAT */
172 YYSYMBOL_TOK_GETRAISES = 21, /* TOK_GETRAISES */
173 YYSYMBOL_TOK_GETTER = 22, /* TOK_GETTER */
174 YYSYMBOL_TOK_IMPLEMENTS = 23, /* TOK_IMPLEMENTS */
175 YYSYMBOL_TOK_IN = 24, /* TOK_IN */
176 YYSYMBOL_TOK_INFINITY = 25, /* TOK_INFINITY */
177 YYSYMBOL_TOK_INHERIT = 26, /* TOK_INHERIT */
178 YYSYMBOL_TOK_INTERFACE = 27, /* TOK_INTERFACE */
179 YYSYMBOL_TOK_ITERABLE = 28, /* TOK_ITERABLE */
180 YYSYMBOL_TOK_LEGACYCALLER = 29, /* TOK_LEGACYCALLER */
181 YYSYMBOL_TOK_LEGACYITERABLE = 30, /* TOK_LEGACYITERABLE */
182 YYSYMBOL_TOK_LONG = 31, /* TOK_LONG */
183 YYSYMBOL_TOK_MODULE = 32, /* TOK_MODULE */
184 YYSYMBOL_TOK_NAN = 33, /* TOK_NAN */
185 YYSYMBOL_TOK_NATIVE = 34, /* TOK_NATIVE */
186 YYSYMBOL_TOK_NAMEDCONSTRUCTOR = 35, /* TOK_NAMEDCONSTRUCTOR */
187 YYSYMBOL_TOK_NULL_LITERAL = 36, /* TOK_NULL_LITERAL */
188 YYSYMBOL_TOK_OBJECT = 37, /* TOK_OBJECT */
189 YYSYMBOL_TOK_OCTET = 38, /* TOK_OCTET */
190 YYSYMBOL_TOK_OMITTABLE = 39, /* TOK_OMITTABLE */
191 YYSYMBOL_TOK_OPTIONAL = 40, /* TOK_OPTIONAL */
192 YYSYMBOL_TOK_OR = 41, /* TOK_OR */
193 YYSYMBOL_TOK_PARTIAL = 42, /* TOK_PARTIAL */
194 YYSYMBOL_TOK_PROMISE = 43, /* TOK_PROMISE */
195 YYSYMBOL_TOK_RAISES = 44, /* TOK_RAISES */
196 YYSYMBOL_TOK_READONLY = 45, /* TOK_READONLY */
197 YYSYMBOL_TOK_REQUIRED = 46, /* TOK_REQUIRED */
198 YYSYMBOL_TOK_SETRAISES = 47, /* TOK_SETRAISES */
199 YYSYMBOL_TOK_SETTER = 48, /* TOK_SETTER */
200 YYSYMBOL_TOK_SEQUENCE = 49, /* TOK_SEQUENCE */
201 YYSYMBOL_TOK_SHORT = 50, /* TOK_SHORT */
202 YYSYMBOL_TOK_STATIC = 51, /* TOK_STATIC */
203 YYSYMBOL_TOK_STRING = 52, /* TOK_STRING */
204 YYSYMBOL_TOK_STRINGIFIER = 53, /* TOK_STRINGIFIER */
205 YYSYMBOL_TOK_TRUE = 54, /* TOK_TRUE */
206 YYSYMBOL_TOK_TYPEDEF = 55, /* TOK_TYPEDEF */
207 YYSYMBOL_TOK_UNRESTRICTED = 56, /* TOK_UNRESTRICTED */
208 YYSYMBOL_TOK_UNSIGNED = 57, /* TOK_UNSIGNED */
209 YYSYMBOL_TOK_VOID = 58, /* TOK_VOID */
210 YYSYMBOL_TOK_POUND_SIGN = 59, /* TOK_POUND_SIGN */
211 YYSYMBOL_TOK_IDENTIFIER = 60, /* TOK_IDENTIFIER */
212 YYSYMBOL_TOK_INT_LITERAL = 61, /* TOK_INT_LITERAL */
213 YYSYMBOL_TOK_FLOAT_LITERAL = 62, /* TOK_FLOAT_LITERAL */
214 YYSYMBOL_TOK_STRING_LITERAL = 63, /* TOK_STRING_LITERAL */
215 YYSYMBOL_TOK_OTHER_LITERAL = 64, /* TOK_OTHER_LITERAL */
216 YYSYMBOL_TOK_JAVADOC = 65, /* TOK_JAVADOC */
217 YYSYMBOL_66_ = 66, /* '{' */
218 YYSYMBOL_67_ = 67, /* '}' */
219 YYSYMBOL_68_ = 68, /* ';' */
220 YYSYMBOL_69_ = 69, /* '=' */
221 YYSYMBOL_70_ = 70, /* ':' */
222 YYSYMBOL_71_ = 71, /* ',' */
223 YYSYMBOL_72_ = 72, /* '(' */
224 YYSYMBOL_73_ = 73, /* ')' */
225 YYSYMBOL_74_ = 74, /* '-' */
226 YYSYMBOL_75_ = 75, /* '<' */
227 YYSYMBOL_76_ = 76, /* '>' */
228 YYSYMBOL_77_ = 77, /* '[' */
229 YYSYMBOL_78_ = 78, /* ']' */
230 YYSYMBOL_79_ = 79, /* '.' */
231 YYSYMBOL_80_ = 80, /* '?' */
232 YYSYMBOL_YYACCEPT = 81, /* $accept */
233 YYSYMBOL_Definitions = 82, /* Definitions */
234 YYSYMBOL_Definition = 83, /* Definition */
235 YYSYMBOL_CallbackOrInterface = 84, /* CallbackOrInterface */
236 YYSYMBOL_CallbackRestOrInterface = 85, /* CallbackRestOrInterface */
237 YYSYMBOL_Interface = 86, /* Interface */
238 YYSYMBOL_Partial = 87, /* Partial */
239 YYSYMBOL_PartialDefinition = 88, /* PartialDefinition */
240 YYSYMBOL_PartialInterface = 89, /* PartialInterface */
241 YYSYMBOL_InterfaceMembers = 90, /* InterfaceMembers */
242 YYSYMBOL_InterfaceMember = 91, /* InterfaceMember */
243 YYSYMBOL_Dictionary = 92, /* Dictionary */
244 YYSYMBOL_DictionaryMembers = 93, /* DictionaryMembers */
245 YYSYMBOL_DictionaryMember = 94, /* DictionaryMember */
246 YYSYMBOL_PartialDictionary = 95, /* PartialDictionary */
247 YYSYMBOL_Default = 96, /* Default */
248 YYSYMBOL_DefaultValue = 97, /* DefaultValue */
249 YYSYMBOL_Exception = 98, /* Exception */
250 YYSYMBOL_ExceptionMembers = 99, /* ExceptionMembers */
251 YYSYMBOL_Inheritance = 100, /* Inheritance */
252 YYSYMBOL_Enum = 101, /* Enum */
253 YYSYMBOL_EnumValueList = 102, /* EnumValueList */
254 YYSYMBOL_EnumValueListComma = 103, /* EnumValueListComma */
255 YYSYMBOL_EnumValueListString = 104, /* EnumValueListString */
256 YYSYMBOL_CallbackRest = 105, /* CallbackRest */
257 YYSYMBOL_Typedef = 106, /* Typedef */
258 YYSYMBOL_ImplementsStatement = 107, /* ImplementsStatement */
259 YYSYMBOL_Const = 108, /* Const */
260 YYSYMBOL_ConstValue = 109, /* ConstValue */
261 YYSYMBOL_BooleanLiteral = 110, /* BooleanLiteral */
262 YYSYMBOL_FloatLiteral = 111, /* FloatLiteral */
263 YYSYMBOL_AttributeOrOperation = 112, /* AttributeOrOperation */
264 YYSYMBOL_StringifierAttributeOrOperation = 113, /* StringifierAttributeOrOperation */
265 YYSYMBOL_Attribute = 114, /* Attribute */
266 YYSYMBOL_StaticMember = 115, /* StaticMember */
267 YYSYMBOL_StaticMemberRest = 116, /* StaticMemberRest */
268 YYSYMBOL_AttributeRest = 117, /* AttributeRest */
269 YYSYMBOL_AttributeName = 118, /* AttributeName */
270 YYSYMBOL_AttributeNameKeyword = 119, /* AttributeNameKeyword */
271 YYSYMBOL_Inherit = 120, /* Inherit */
272 YYSYMBOL_ReadOnly = 121, /* ReadOnly */
273 YYSYMBOL_Operation = 122, /* Operation */
274 YYSYMBOL_SpecialOperation = 123, /* SpecialOperation */
275 YYSYMBOL_Specials = 124, /* Specials */
276 YYSYMBOL_Special = 125, /* Special */
277 YYSYMBOL_OperationRest = 126, /* OperationRest */
278 YYSYMBOL_OptionalIdentifier = 127, /* OptionalIdentifier */
279 YYSYMBOL_ArgumentList = 128, /* ArgumentList */
280 YYSYMBOL_Arguments = 129, /* Arguments */
281 YYSYMBOL_Argument = 130, /* Argument */
282 YYSYMBOL_OptionalOrRequiredArgument = 131, /* OptionalOrRequiredArgument */
283 YYSYMBOL_ArgumentName = 132, /* ArgumentName */
284 YYSYMBOL_Ellipsis = 133, /* Ellipsis */
285 YYSYMBOL_Iterable = 134, /* Iterable */
286 YYSYMBOL_OptionalType = 135, /* OptionalType */
287 YYSYMBOL_ExceptionMember = 136, /* ExceptionMember */
288 YYSYMBOL_ExceptionField = 137, /* ExceptionField */
289 YYSYMBOL_ExtendedAttributeList = 138, /* ExtendedAttributeList */
290 YYSYMBOL_ExtendedAttributes = 139, /* ExtendedAttributes */
291 YYSYMBOL_ExtendedAttribute = 140, /* ExtendedAttribute */
292 YYSYMBOL_ExtendedAttributeRest = 141, /* ExtendedAttributeRest */
293 YYSYMBOL_ExtendedAttributeInner = 142, /* ExtendedAttributeInner */
294 YYSYMBOL_Other = 143, /* Other */
295 YYSYMBOL_ArgumentNameKeyword = 144, /* ArgumentNameKeyword */
296 YYSYMBOL_OtherOrComma = 145, /* OtherOrComma */
297 YYSYMBOL_Type = 146, /* Type */
298 YYSYMBOL_SingleType = 147, /* SingleType */
299 YYSYMBOL_UnionType = 148, /* UnionType */
300 YYSYMBOL_UnionMemberType = 149, /* UnionMemberType */
301 YYSYMBOL_UnionMemberTypes = 150, /* UnionMemberTypes */
302 YYSYMBOL_NonAnyType = 151, /* NonAnyType */
303 YYSYMBOL_ConstType = 152, /* ConstType */
304 YYSYMBOL_PrimitiveType = 153, /* PrimitiveType */
305 YYSYMBOL_UnrestrictedFloatType = 154, /* UnrestrictedFloatType */
306 YYSYMBOL_FloatType = 155, /* FloatType */
307 YYSYMBOL_UnsignedIntegerType = 156, /* UnsignedIntegerType */
308 YYSYMBOL_IntegerType = 157, /* IntegerType */
309 YYSYMBOL_OptionalLong = 158, /* OptionalLong */
310 YYSYMBOL_PromiseType = 159, /* PromiseType */
311 YYSYMBOL_TypeSuffix = 160, /* TypeSuffix */
312 YYSYMBOL_TypeSuffixStartingWithArray = 161, /* TypeSuffixStartingWithArray */
313 YYSYMBOL_Null = 162, /* Null */
314 YYSYMBOL_ReturnType = 163 /* ReturnType */
317
318
319
320
321#ifdef short
322# undef short
323#endif
324
325/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
326 <limits.h> and (if available) <stdint.h> are included
327 so that the code can choose integer types of a good width. */
328
329#ifndef __PTRDIFF_MAX__
330# include <limits.h> /* INFRINGES ON USER NAME SPACE */
331# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
332# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
333# define YY_STDINT_H
334# endif
335#endif
336
337/* Narrow types that promote to a signed type and that can represent a
338 signed or unsigned integer of at least N bits. In tables they can
339 save space and decrease cache pressure. Promoting to a signed type
340 helps avoid bugs in integer arithmetic. */
341
342#ifdef __INT_LEAST8_MAX__
343typedef __INT_LEAST8_TYPE__ yytype_int8;
344#elif defined YY_STDINT_H
345typedef int_least8_t yytype_int8;
346#else
347typedef signed char yytype_int8;
348#endif
349
350#ifdef __INT_LEAST16_MAX__
351typedef __INT_LEAST16_TYPE__ yytype_int16;
352#elif defined YY_STDINT_H
353typedef int_least16_t yytype_int16;
354#else
355typedef short yytype_int16;
356#endif
357
358/* Work around bug in HP-UX 11.23, which defines these macros
359 incorrectly for preprocessor constants. This workaround can likely
360 be removed in 2023, as HPE has promised support for HP-UX 11.23
361 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
362 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
363#ifdef __hpux
364# undef UINT_LEAST8_MAX
365# undef UINT_LEAST16_MAX
366# define UINT_LEAST8_MAX 255
367# define UINT_LEAST16_MAX 65535
368#endif
369
370#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
371typedef __UINT_LEAST8_TYPE__ yytype_uint8;
372#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
373 && UINT_LEAST8_MAX <= INT_MAX)
374typedef uint_least8_t yytype_uint8;
375#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
376typedef unsigned char yytype_uint8;
377#else
378typedef short yytype_uint8;
379#endif
380
381#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
382typedef __UINT_LEAST16_TYPE__ yytype_uint16;
383#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
384 && UINT_LEAST16_MAX <= INT_MAX)
385typedef uint_least16_t yytype_uint16;
386#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
387typedef unsigned short yytype_uint16;
388#else
389typedef int yytype_uint16;
390#endif
391
392#ifndef YYPTRDIFF_T
393# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
394# define YYPTRDIFF_T __PTRDIFF_TYPE__
395# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
396# elif defined PTRDIFF_MAX
397# ifndef ptrdiff_t
398# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
399# endif
400# define YYPTRDIFF_T ptrdiff_t
401# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
402# else
403# define YYPTRDIFF_T long
404# define YYPTRDIFF_MAXIMUM LONG_MAX
405# endif
406#endif
407
408#ifndef YYSIZE_T
409# ifdef __SIZE_TYPE__
410# define YYSIZE_T __SIZE_TYPE__
411# elif defined size_t
412# define YYSIZE_T size_t
413# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
414# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
415# define YYSIZE_T size_t
416# else
417# define YYSIZE_T unsigned
418# endif
419#endif
420
421#define YYSIZE_MAXIMUM \
422 YY_CAST (YYPTRDIFF_T, \
423 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
424 ? YYPTRDIFF_MAXIMUM \
425 : YY_CAST (YYSIZE_T, -1)))
426
427#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
428
429
430/* Stored state numbers (used for stacks). */
432
433/* State numbers in computations. */
434typedef int yy_state_fast_t;
435
436#ifndef YY_
437# if defined YYENABLE_NLS && YYENABLE_NLS
438# if ENABLE_NLS
439# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
440# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
441# endif
442# endif
443# ifndef YY_
444# define YY_(Msgid) Msgid
445# endif
446#endif
447
448
449#ifndef YY_ATTRIBUTE_PURE
450# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
451# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
452# else
453# define YY_ATTRIBUTE_PURE
454# endif
455#endif
456
457#ifndef YY_ATTRIBUTE_UNUSED
458# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
459# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
460# else
461# define YY_ATTRIBUTE_UNUSED
462# endif
463#endif
464
465/* Suppress unused-variable warnings by "using" E. */
466#if ! defined lint || defined __GNUC__
467# define YY_USE(E) ((void) (E))
468#else
469# define YY_USE(E) /* empty */
470#endif
471
472/* Suppress an incorrect diagnostic about yylval being uninitialized. */
473#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
474# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
475# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
476 _Pragma ("GCC diagnostic push") \
477 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
478# else
479# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
480 _Pragma ("GCC diagnostic push") \
481 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
482 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
483# endif
484# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
485 _Pragma ("GCC diagnostic pop")
486#else
487# define YY_INITIAL_VALUE(Value) Value
488#endif
489#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
490# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
491# define YY_IGNORE_MAYBE_UNINITIALIZED_END
492#endif
493#ifndef YY_INITIAL_VALUE
494# define YY_INITIAL_VALUE(Value) /* Nothing. */
495#endif
496
497#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
498# define YY_IGNORE_USELESS_CAST_BEGIN \
499 _Pragma ("GCC diagnostic push") \
500 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
501# define YY_IGNORE_USELESS_CAST_END \
502 _Pragma ("GCC diagnostic pop")
503#endif
504#ifndef YY_IGNORE_USELESS_CAST_BEGIN
505# define YY_IGNORE_USELESS_CAST_BEGIN
506# define YY_IGNORE_USELESS_CAST_END
507#endif
508
509
510#define YY_ASSERT(E) ((void) (0 && (E)))
511
512#if 1
513
514/* The parser invokes alloca or malloc; define the necessary symbols. */
515
516# ifdef YYSTACK_USE_ALLOCA
517# if YYSTACK_USE_ALLOCA
518# ifdef __GNUC__
519# define YYSTACK_ALLOC __builtin_alloca
520# elif defined __BUILTIN_VA_ARG_INCR
521# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
522# elif defined _AIX
523# define YYSTACK_ALLOC __alloca
524# elif defined _MSC_VER
525# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
526# define alloca _alloca
527# else
528# define YYSTACK_ALLOC alloca
529# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
530# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
531 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
532# ifndef EXIT_SUCCESS
533# define EXIT_SUCCESS 0
534# endif
535# endif
536# endif
537# endif
538# endif
539
540# ifdef YYSTACK_ALLOC
541 /* Pacify GCC's 'empty if-body' warning. */
542# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
543# ifndef YYSTACK_ALLOC_MAXIMUM
544 /* The OS might guarantee only one guard page at the bottom of the stack,
545 and a page size can be as small as 4096 bytes. So we cannot safely
546 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
547 to allow for a few compiler-allocated temporary stack slots. */
548# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
549# endif
550# else
551# define YYSTACK_ALLOC YYMALLOC
552# define YYSTACK_FREE YYFREE
553# ifndef YYSTACK_ALLOC_MAXIMUM
554# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
555# endif
556# if (defined __cplusplus && ! defined EXIT_SUCCESS \
557 && ! ((defined YYMALLOC || defined malloc) \
558 && (defined YYFREE || defined free)))
559# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
560# ifndef EXIT_SUCCESS
561# define EXIT_SUCCESS 0
562# endif
563# endif
564# ifndef YYMALLOC
565# define YYMALLOC malloc
566# if ! defined malloc && ! defined EXIT_SUCCESS
567void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
568# endif
569# endif
570# ifndef YYFREE
571# define YYFREE free
572# if ! defined free && ! defined EXIT_SUCCESS
573void free (void *); /* INFRINGES ON USER NAME SPACE */
574# endif
575# endif
576# endif
577#endif /* 1 */
578
579#if (! defined yyoverflow \
580 && (! defined __cplusplus \
581 || (defined WEBIDL_LTYPE_IS_TRIVIAL && WEBIDL_LTYPE_IS_TRIVIAL \
582 && defined WEBIDL_STYPE_IS_TRIVIAL && WEBIDL_STYPE_IS_TRIVIAL)))
583
584/* A type that is properly aligned for any stack member. */
585union yyalloc
586{
587 yy_state_t yyss_alloc;
588 YYSTYPE yyvs_alloc;
589 YYLTYPE yyls_alloc;
590};
591
592/* The size of the maximum gap between one aligned stack and the next. */
593# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
594
595/* The size of an array large to enough to hold all stacks, each with
596 N elements. */
597# define YYSTACK_BYTES(N) \
598 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
599 + YYSIZEOF (YYLTYPE)) \
600 + 2 * YYSTACK_GAP_MAXIMUM)
601
602# define YYCOPY_NEEDED 1
603
604/* Relocate STACK from its old location to the new one. The
605 local variables YYSIZE and YYSTACKSIZE give the old and new number of
606 elements in the stack, and YYPTR gives the new location of the
607 stack. Advance YYPTR to a properly aligned location for the next
608 stack. */
609# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
610 do \
611 { \
612 YYPTRDIFF_T yynewbytes; \
613 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
614 Stack = &yyptr->Stack_alloc; \
615 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
616 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
617 } \
618 while (0)
619
620#endif
621
622#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
623/* Copy COUNT objects from SRC to DST. The source and destination do
624 not overlap. */
625# ifndef YYCOPY
626# if defined __GNUC__ && 1 < __GNUC__
627# define YYCOPY(Dst, Src, Count) \
628 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
629# else
630# define YYCOPY(Dst, Src, Count) \
631 do \
632 { \
633 YYPTRDIFF_T yyi; \
634 for (yyi = 0; yyi < (Count); yyi++) \
635 (Dst)[yyi] = (Src)[yyi]; \
636 } \
637 while (0)
638# endif
639# endif
640#endif /* !YYCOPY_NEEDED */
641
642/* YYFINAL -- State number of the termination state. */
643#define YYFINAL 3
644/* YYLAST -- Last index in YYTABLE. */
645#define YYLAST 819
646
647/* YYNTOKENS -- Number of terminals. */
648#define YYNTOKENS 81
649/* YYNNTS -- Number of nonterminals. */
650#define YYNNTS 83
651/* YYNRULES -- Number of rules. */
652#define YYNRULES 232
653/* YYNSTATES -- Number of states. */
654#define YYNSTATES 387
655
656/* YYMAXUTOK -- Last valid token kind. */
657#define YYMAXUTOK 320
658
659
660/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
661 as returned by yylex, with out-of-bounds checking. */
662#define YYTRANSLATE(YYX) \
663 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
664 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
665 : YYSYMBOL_YYUNDEF)
666
667/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
668 as returned by yylex. */
669static const yytype_int8 yytranslate[] =
670{
671 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
675 72, 73, 2, 2, 71, 74, 79, 2, 2, 2,
676 2, 2, 2, 2, 2, 2, 2, 2, 70, 68,
677 75, 69, 76, 80, 2, 2, 2, 2, 2, 2,
678 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
679 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
680 2, 77, 2, 78, 2, 2, 2, 2, 2, 2,
681 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
682 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
683 2, 2, 2, 66, 2, 67, 2, 2, 2, 2,
684 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
687 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
688 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
689 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
690 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
691 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
692 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
693 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
694 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
695 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
696 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
697 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
698 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
699 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
700 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
701 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
702 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
703 65
704};
705
706#if WEBIDL_DEBUG
707/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
708static const yytype_int16 yyrline[] =
709{
710 0, 230, 230, 234, 240, 250, 252, 254, 256, 258,
711 260, 262, 268, 273, 278, 280, 285, 326, 334, 336,
712 341, 372, 376, 428, 430, 432, 434, 439, 480, 484,
713 497, 508, 536, 573, 577, 586, 588, 596, 603, 606,
714 612, 616, 624, 634, 639, 640, 646, 647, 654, 662,
715 670, 702, 720, 722, 724, 731, 739, 746, 756, 766,
716 776, 786, 799, 804, 806, 811, 813, 819, 829, 860,
717 869, 890, 911, 919, 921, 926, 936, 940, 952, 956,
718 965, 973, 981, 997, 1001, 1009, 1016, 1023, 1033, 1040,
719 1050, 1062, 1066, 1078, 1082, 1091, 1095, 1104, 1112, 1121,
720 1133, 1135, 1141, 1145, 1153, 1158, 1167, 1171, 1179, 1181,
721 1186, 1192, 1196, 1207, 1211, 1223, 1228, 1234, 1240, 1248,
722 1260, 1274, 1286, 1290, 1299, 1303, 1312, 1322, 1332, 1343,
723 1350, 1355, 1360, 1365, 1370, 1375, 1380, 1385, 1390, 1395,
724 1400, 1405, 1410, 1415, 1420, 1425, 1430, 1435, 1440, 1445,
725 1450, 1455, 1460, 1465, 1470, 1475, 1480, 1485, 1490, 1495,
726 1500, 1505, 1510, 1515, 1520, 1530, 1535, 1540, 1545, 1550,
727 1555, 1560, 1565, 1570, 1575, 1580, 1585, 1590, 1595, 1600,
728 1605, 1610, 1615, 1620, 1625, 1630, 1635, 1643, 1648, 1656,
729 1661, 1670, 1672, 1683, 1691, 1696, 1702, 1711, 1715, 1726,
730 1731, 1737, 1744, 1753, 1760, 1767, 1777, 1782, 1796, 1798,
731 1800, 1807, 1814, 1824, 1831, 1836, 1843, 1853, 1860, 1865,
732 1872, 1889, 1893, 1901, 1910, 1914, 1919, 1928, 1932, 1939,
733 1942, 1947, 1949
734};
735#endif
736
738#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
739
740#if 1
741/* The user-facing name of the symbol whose (internal) number is
742 YYSYMBOL. No bounds checking. */
743static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
744
745/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
746 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
747static const char *const yytname[] =
748{
749 "\"end of file\"", "error", "\"invalid token\"", "TOK_ANY",
750 "TOK_ATTRIBUTE", "TOK_BOOLEAN", "TOK_BYTE", "TOK_CALLBACK", "TOK_CONST",
751 "TOK_CONSTRUCTOR", "TOK_CREATOR", "TOK_DATE", "TOK_DELETER",
752 "TOK_DICTIONARY", "TOK_DOUBLE", "TOK_ELLIPSIS", "TOK_ENUM", "TOK_EOL",
753 "TOK_EXCEPTION", "TOK_FALSE", "TOK_FLOAT", "TOK_GETRAISES", "TOK_GETTER",
754 "TOK_IMPLEMENTS", "TOK_IN", "TOK_INFINITY", "TOK_INHERIT",
755 "TOK_INTERFACE", "TOK_ITERABLE", "TOK_LEGACYCALLER",
756 "TOK_LEGACYITERABLE", "TOK_LONG", "TOK_MODULE", "TOK_NAN", "TOK_NATIVE",
757 "TOK_NAMEDCONSTRUCTOR", "TOK_NULL_LITERAL", "TOK_OBJECT", "TOK_OCTET",
758 "TOK_OMITTABLE", "TOK_OPTIONAL", "TOK_OR", "TOK_PARTIAL", "TOK_PROMISE",
759 "TOK_RAISES", "TOK_READONLY", "TOK_REQUIRED", "TOK_SETRAISES",
760 "TOK_SETTER", "TOK_SEQUENCE", "TOK_SHORT", "TOK_STATIC", "TOK_STRING",
761 "TOK_STRINGIFIER", "TOK_TRUE", "TOK_TYPEDEF", "TOK_UNRESTRICTED",
762 "TOK_UNSIGNED", "TOK_VOID", "TOK_POUND_SIGN", "TOK_IDENTIFIER",
763 "TOK_INT_LITERAL", "TOK_FLOAT_LITERAL", "TOK_STRING_LITERAL",
764 "TOK_OTHER_LITERAL", "TOK_JAVADOC", "'{'", "'}'", "';'", "'='", "':'",
765 "','", "'('", "')'", "'-'", "'<'", "'>'", "'['", "']'", "'.'", "'?'",
766 "$accept", "Definitions", "Definition", "CallbackOrInterface",
767 "CallbackRestOrInterface", "Interface", "Partial", "PartialDefinition",
768 "PartialInterface", "InterfaceMembers", "InterfaceMember", "Dictionary",
769 "DictionaryMembers", "DictionaryMember", "PartialDictionary", "Default",
770 "DefaultValue", "Exception", "ExceptionMembers", "Inheritance", "Enum",
771 "EnumValueList", "EnumValueListComma", "EnumValueListString",
772 "CallbackRest", "Typedef", "ImplementsStatement", "Const", "ConstValue",
773 "BooleanLiteral", "FloatLiteral", "AttributeOrOperation",
774 "StringifierAttributeOrOperation", "Attribute", "StaticMember",
775 "StaticMemberRest", "AttributeRest", "AttributeName",
776 "AttributeNameKeyword", "Inherit", "ReadOnly", "Operation",
777 "SpecialOperation", "Specials", "Special", "OperationRest",
778 "OptionalIdentifier", "ArgumentList", "Arguments", "Argument",
779 "OptionalOrRequiredArgument", "ArgumentName", "Ellipsis", "Iterable",
780 "OptionalType", "ExceptionMember", "ExceptionField",
781 "ExtendedAttributeList", "ExtendedAttributes", "ExtendedAttribute",
782 "ExtendedAttributeRest", "ExtendedAttributeInner", "Other",
783 "ArgumentNameKeyword", "OtherOrComma", "Type", "SingleType", "UnionType",
784 "UnionMemberType", "UnionMemberTypes", "NonAnyType", "ConstType",
785 "PrimitiveType", "UnrestrictedFloatType", "FloatType",
786 "UnsignedIntegerType", "IntegerType", "OptionalLong", "PromiseType",
787 "TypeSuffix", "TypeSuffixStartingWithArray", "Null", "ReturnType", YY_NULLPTR
788};
789
790static const char *
791yysymbol_name (yysymbol_kind_t yysymbol)
792{
793 return yytname[yysymbol];
794}
795#endif
796
797#define YYPACT_NINF (-289)
798
799#define yypact_value_is_default(Yyn) \
800 ((Yyn) == YYPACT_NINF)
801
802#define YYTABLE_NINF (-94)
803
804#define yytable_value_is_error(Yyn) \
805 0
806
807/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
808 STATE-NUM. */
809static const yytype_int16 yypact[] =
810{
811 16, -289, 11, -289, 256, 32, -289, -289, -289, -289,
812 -289, -289, 0, -289, -289, -289, -289, -289, -289, -289,
813 -289, -289, -289, -289, -289, -289, -289, -289, -289, -289,
814 -289, -289, -289, 12, -289, -289, -289, -289, -289, -289,
815 -289, -289, -289, -289, -289, -289, -289, -289, -289, -289,
816 -289, -289, -289, -289, -289, -289, -289, 334, -289, -289,
817 -289, 334, -289, -289, -289, 334, -289, -289, -20, 256,
818 -289, -3, 18, 34, 39, 41, 9, 27, 83, -289,
819 -289, -289, -289, -289, -289, -289, -289, -289, -10, 47,
820 334, -289, 334, 334, 51, -289, 334, 40, 36, 256,
821 42, -289, -289, 50, -289, -289, -289, 57, 55, 57,
822 57, 69, 79, -289, -289, -289, 660, 81, 70, 73,
823 460, 76, 78, 77, 74, 256, -289, 256, 256, -20,
824 -289, 508, 91, 87, 93, 88, 92, 94, 98, 80,
825 -289, -289, -15, -289, -289, 128, -15, -289, 90, 99,
826 -289, -15, 46, -1, -15, 708, 109, -289, -15, -289,
827 -15, -289, -289, -289, -289, -15, 108, -289, 27, -289,
828 660, -289, 165, -10, 334, 334, 334, -289, -289, -289,
829 -289, -289, -289, 110, -289, -42, 113, 123, -30, -289,
830 -42, -289, 107, -289, 116, 80, -289, -289, -289, -289,
831 508, 660, -289, -289, -289, -289, 114, -15, 158, -289,
832 132, -289, -289, -289, -289, 73, 759, -289, 759, 129,
833 -289, -289, -289, -10, 134, 556, 140, -289, 138, 141,
834 612, -21, 142, -13, -15, -15, -289, 131, 135, 136,
835 -289, 708, -289, -289, -289, 143, -289, -289, -289, 153,
836 145, 660, -42, 168, 113, -289, -289, 162, 111, -289,
837 -30, -289, 172, 166, 167, 169, 170, -289, -289, -289,
838 155, -15, 192, 737, -289, 173, -289, 176, -289, 143,
839 -289, -289, 155, 180, 155, -289, 174, -289, -289, -289,
840 -289, -289, 171, -289, 177, -289, 412, 1, -289, -289,
841 -289, -289, -289, 198, -289, -289, 118, -289, 184, -289,
842 -289, -289, -289, -289, 708, 175, -289, -289, -289, -289,
843 -289, -289, -289, -289, 222, -289, -289, -289, -289, -289,
844 181, 183, -289, 186, -289, -289, 660, 660, -289, -289,
845 249, 184, -289, -289, -289, -289, -289, 185, 249, 508,
846 118, -289, 192, -289, -289, -289, -289, 72, 202, 201,
847 660, -289, -289, -10, -289, 184, -289, -289, 188, 660,
848 204, 220, -18, 217, -289, -289, -289, 227, -289, -289,
849 -289, 231, -289, 232, -289, -289, -289
850};
851
852/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
853 Performed when YYTABLE does not specify something else to do. Zero
854 means the default is an error. */
855static const yytype_uint8 yydefact[] =
856{
857 0, 4, 111, 1, 0, 0, 147, 165, 148, 149,
858 166, 167, 118, 168, 143, 169, 170, 150, 136, 171,
859 172, 151, 152, 173, 174, 145, 175, 176, 177, 178,
860 179, 153, 146, 0, 154, 155, 156, 158, 157, 180,
861 181, 182, 159, 160, 183, 144, 184, 161, 185, 186,
862 162, 163, 131, 129, 130, 132, 133, 124, 138, 140,
863 137, 124, 134, 139, 141, 124, 135, 142, 113, 122,
864 164, 0, 0, 0, 0, 0, 0, 111, 0, 3,
865 5, 13, 6, 7, 8, 9, 10, 11, 111, 0,
866 124, 188, 124, 124, 0, 187, 124, 0, 0, 0,
867 0, 123, 121, 0, 12, 15, 14, 40, 0, 40,
868 40, 0, 0, 17, 18, 19, 0, 0, 0, 95,
869 0, 0, 0, 0, 0, 122, 128, 122, 122, 113,
870 112, 0, 0, 0, 0, 0, 0, 0, 0, 227,
871 210, 211, 224, 216, 215, 221, 224, 212, 0, 0,
872 219, 224, 0, 0, 224, 0, 0, 189, 224, 191,
873 224, 209, 214, 208, 218, 224, 0, 119, 111, 94,
874 0, 97, 102, 111, 124, 124, 124, 117, 115, 116,
875 114, 232, 231, 0, 41, 111, 45, 0, 111, 21,
876 111, 21, 0, 192, 0, 227, 205, 222, 220, 204,
877 0, 0, 201, 213, 217, 202, 0, 224, 0, 194,
878 0, 190, 199, 200, 50, 95, 0, 103, 0, 0,
879 127, 125, 126, 111, 0, 0, 47, 43, 0, 0,
880 0, 111, 0, 111, 224, 224, 226, 0, 0, 0,
881 195, 0, 49, 96, 101, 33, 100, 99, 120, 0,
882 0, 0, 111, 0, 45, 44, 42, 0, 0, 108,
883 111, 109, 0, 0, 76, 0, 0, 228, 225, 223,
884 229, 224, 197, 0, 98, 0, 27, 0, 29, 33,
885 46, 37, 229, 0, 229, 39, 0, 16, 87, 88,
886 85, 77, 0, 89, 0, 86, 78, 76, 22, 23,
887 24, 63, 25, 78, 64, 81, 83, 26, 91, 32,
888 20, 230, 203, 196, 0, 0, 57, 60, 61, 55,
889 56, 54, 58, 36, 0, 34, 35, 52, 53, 48,
890 0, 0, 207, 0, 206, 110, 0, 0, 79, 69,
891 0, 91, 92, 67, 62, 65, 66, 0, 0, 0,
892 83, 80, 197, 193, 59, 30, 31, 0, 106, 0,
893 0, 70, 71, 111, 68, 91, 84, 198, 0, 0,
894 0, 0, 0, 0, 82, 51, 107, 0, 105, 75,
895 74, 0, 73, 0, 104, 72, 90
896};
897
898/* YYPGOTO[NTERM-NUM]. */
899static const yytype_int16 yypgoto[] =
900{
901 -289, -289, -289, -289, -289, 230, -289, -289, -289, 112,
902 -289, -289, -172, -289, -289, 44, -289, -289, 61, 2,
903 -289, -289, 75, -289, -289, -289, -289, 63, -23, -289,
904 -289, -289, -289, 54, -289, -289, -33, -289, -289, -289,
905 52, -289, -289, -7, 102, -288, -289, -171, 154, 190,
906 -289, 150, -289, -289, -289, -289, -289, -2, 244, 4,
907 -43, -52, 10, -185, -289, -115, -289, -152, -231, 25,
908 -151, -289, 120, -289, 229, -289, 226, -289, -289, -139,
909 206, -184, -194
910};
911
912/* YYDEFGOTO[NTERM-NUM]. */
913static const yytype_int16 yydefgoto[] =
914{
915 0, 2, 79, 80, 104, 81, 82, 113, 114, 231,
916 298, 83, 224, 252, 115, 274, 325, 84, 229, 133,
917 85, 187, 227, 255, 106, 86, 87, 259, 326, 327,
918 328, 300, 344, 301, 302, 339, 361, 381, 382, 303,
919 340, 304, 305, 349, 350, 346, 347, 118, 169, 119,
920 171, 245, 218, 307, 370, 260, 261, 120, 100, 101,
921 102, 94, 95, 70, 96, 182, 157, 158, 208, 315,
922 159, 283, 160, 161, 162, 163, 164, 198, 165, 196,
923 193, 312, 183
924};
925
926/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
927 positive, shift that token. If negative, reduce the rule whose
928 number is the opposite. If YYTABLE_NINF, syntax error. */
929static const yytype_int16 yytable[] =
930{
931 5, 156, 219, 207, 209, 172, 237, 199, 68, 97,
932 272, 3, 202, 98, 69, 205, -2, 1, 232, 211,
933 351, 212, 111, -2, 75, -28, 213, 291, 379, -2,
934 145, 246, -2, 246, -2, 4, 112, -38, 122, 71,
935 123, 124, 380, -2, 126, 72, 263, 4, 73, 150,
936 74, 99, 249, 362, 266, 216, 4, 103, -2, 75,
937 143, 342, 194, -93, 4, 195, 144, 4, 240, 343,
938 308, -2, 88, -91, 76, 116, -2, 374, 107, 69,
939 278, 89, 177, 352, 178, 179, 238, 77, 4, 207,
940 209, 316, 78, -2, 108, 267, 268, 317, 332, 109,
941 334, 110, 341, 129, 4, 318, 117, 121, 319, 69,
942 253, 135, 136, 127, 128, 262, 140, 141, 125, 131,
943 130, 134, 220, 221, 222, 143, 320, 132, 288, 137,
944 289, 144, 313, 321, 322, 69, 277, 69, 69, 138,
945 290, 166, 145, 167, 168, 174, 324, 293, 173, 147,
946 175, 184, 176, 185, 188, 365, 186, 192, 189, 197,
947 190, 150, 207, 209, 191, 200, 295, 152, 153, 210,
948 139, 282, 140, 141, 201, 258, 214, 288, 142, 289,
949 217, 143, 223, 225, 226, 234, 230, 144, 225, 290,
950 228, 239, 373, 291, 235, 292, 293, 294, 145, 241,
951 242, 250, 248, 254, 146, 147, 256, 269, 257, 265,
952 148, 270, 273, 276, 271, 295, 149, 150, 296, 151,
953 297, 358, 359, 152, 153, 181, 275, 154, 279, 264,
954 281, 264, 286, 314, 287, 311, 330, 309, 310, 155,
955 333, 329, 335, 338, 342, 372, 336, 354, 353, 355,
956 225, 356, 337, 360, 376, 357, 375, 363, 230, 6,
957 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
958 17, 18, 19, 369, 20, 21, 22, 371, 23, 24,
959 377, 25, 26, 27, 28, 29, 30, 31, 378, 32,
960 383, 33, 34, 35, 36, 384, 37, 38, 39, 385,
961 386, 105, 40, 233, 41, 42, 43, 44, 45, 46,
962 47, 48, 49, 50, 51, 364, 52, 53, 54, 55,
963 56, 285, 57, 331, 58, 59, 60, 299, 61, 280,
964 62, 63, 64, 65, 368, 66, 67, 6, 7, 8,
965 9, 10, 11, 366, 13, 14, 15, 16, 17, 18,
966 19, 345, 20, 21, 22, 348, 23, 24, 215, 25,
967 26, 27, 28, 29, 30, 31, 306, 32, 247, 243,
968 34, 35, 36, 180, 37, 38, 39, 367, 284, 204,
969 40, 203, 41, 42, 43, 44, 45, 46, 47, 48,
970 49, 50, 51, 0, 52, 53, 54, 55, 56, 0,
971 90, 236, 58, 59, 60, 91, 92, 0, 62, 63,
972 64, 93, 0, 66, 67, 139, 0, 140, 141, 0,
973 0, 0, 0, 142, 0, 0, 143, 0, 0, 0,
974 0, 0, 144, 0, 0, 0, 0, 0, 0, 0,
975 0, 0, 0, 145, 0, 0, 0, 0, 0, 146,
976 147, 0, 0, 0, 0, 148, 0, 338, 0, 0,
977 0, 149, 150, 139, 151, 140, 141, 0, 152, 153,
978 181, 142, 154, 0, 143, 0, 0, 0, 0, 0,
979 144, 0, 0, 0, 155, 0, 0, 0, 0, 0,
980 0, 145, 0, 0, 0, 0, 0, 146, 147, 0,
981 170, 0, 0, 148, 0, 0, 0, 0, 0, 149,
982 150, 139, 151, 140, 141, 0, 152, 153, 0, 142,
983 154, 0, 143, 0, 0, 0, 0, 0, 144, 0,
984 0, 0, 155, 0, 0, 0, 0, 0, 0, 145,
985 0, 0, 0, 0, 0, 146, 147, 0, 0, 0,
986 0, 148, 0, 0, 0, 0, 0, 149, 150, 139,
987 151, 140, 141, 0, 152, 153, 181, 142, 154, 0,
988 143, 0, 0, 0, 0, 0, 144, 0, 0, 0,
989 155, 0, 0, 0, 0, 0, 0, 145, 0, 0,
990 0, 0, 0, 146, 147, 0, 0, 0, 0, 148,
991 0, 0, 251, 0, 0, 149, 150, 0, 151, 0,
992 0, 0, 152, 153, 0, 139, 154, 140, 141, 0,
993 258, 0, 0, 142, 0, 0, 143, 0, 155, 0,
994 0, 0, 144, 0, 0, 0, 0, 0, 0, 0,
995 0, 0, 0, 145, 0, 0, 0, 0, 0, 146,
996 147, 0, 0, 0, 0, 148, 0, 0, 0, 0,
997 0, 149, 150, 139, 151, 140, 141, 0, 152, 153,
998 0, 142, 154, 0, 143, 0, 0, 0, 0, 0,
999 144, 0, 0, 0, 155, 0, 0, 0, 0, 0,
1000 0, 145, 0, 0, 0, 0, 0, 146, 147, 0,
1001 0, 0, 0, 148, 0, 0, 0, 0, 0, 149,
1002 150, 206, 151, 140, 141, 0, 152, 153, 0, 142,
1003 154, 0, 143, 0, 0, 0, 0, 0, 144, 0,
1004 0, 0, 155, 0, 0, 0, 0, 0, 0, 145,
1005 0, 0, 0, 0, 0, 146, 147, 0, 0, 0,
1006 0, 148, 0, 0, 0, 0, 316, 149, 150, 0,
1007 151, 0, 317, 7, 152, 153, 10, 11, 154, 13,
1008 318, 15, 16, 319, 0, 19, 0, 20, 0, 0,
1009 155, 23, 24, 0, 0, 26, 27, 28, 29, 30,
1010 0, 320, 0, 0, 0, 0, 0, 0, 321, 322,
1011 323, 39, 0, 0, 0, 40, 0, 41, 0, 0,
1012 44, 324, 46, 0, 48, 49, 0, 0, 0, 244
1013};
1014
1015static const yytype_int16 yycheck[] =
1016{
1017 2, 116, 173, 155, 155, 120, 200, 146, 4, 61,
1018 241, 0, 151, 65, 4, 154, 0, 1, 190, 158,
1019 308, 160, 13, 7, 27, 67, 165, 26, 46, 13,
1020 31, 216, 16, 218, 18, 77, 27, 67, 90, 7,
1021 92, 93, 60, 27, 96, 13, 67, 77, 16, 50,
1022 18, 71, 223, 341, 67, 170, 77, 60, 42, 27,
1023 14, 60, 77, 73, 77, 80, 20, 77, 207, 68,
1024 264, 55, 72, 72, 42, 77, 60, 365, 60, 69,
1025 252, 69, 125, 314, 127, 128, 201, 55, 77, 241,
1026 241, 19, 60, 77, 60, 234, 235, 25, 282, 60,
1027 284, 60, 296, 99, 77, 33, 23, 60, 36, 99,
1028 225, 109, 110, 73, 78, 230, 5, 6, 67, 69,
1029 78, 66, 174, 175, 176, 14, 54, 70, 10, 60,
1030 12, 20, 271, 61, 62, 125, 251, 127, 128, 60,
1031 22, 60, 31, 73, 71, 67, 74, 29, 72, 38,
1032 73, 60, 78, 66, 66, 349, 63, 77, 66, 31,
1033 66, 50, 314, 314, 66, 75, 48, 56, 57, 60,
1034 3, 60, 5, 6, 75, 8, 68, 10, 11, 12,
1035 15, 14, 72, 185, 71, 78, 188, 20, 190, 22,
1036 67, 77, 363, 26, 78, 28, 29, 30, 31, 41,
1037 68, 67, 73, 63, 37, 38, 68, 76, 67, 67,
1038 43, 76, 69, 68, 78, 48, 49, 50, 51, 52,
1039 53, 336, 337, 56, 57, 58, 73, 60, 60, 231,
1040 68, 233, 60, 41, 68, 80, 60, 68, 68, 72,
1041 60, 68, 68, 45, 60, 360, 75, 25, 73, 68,
1042 252, 68, 75, 4, 369, 69, 68, 72, 260, 3,
1043 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1044 14, 15, 16, 71, 18, 19, 20, 76, 22, 23,
1045 76, 25, 26, 27, 28, 29, 30, 31, 68, 33,
1046 73, 35, 36, 37, 38, 68, 40, 41, 42, 68,
1047 68, 71, 46, 191, 48, 49, 50, 51, 52, 53,
1048 54, 55, 56, 57, 58, 348, 60, 61, 62, 63,
1049 64, 260, 66, 279, 68, 69, 70, 264, 72, 254,
1050 74, 75, 76, 77, 357, 79, 80, 3, 4, 5,
1051 6, 7, 8, 350, 10, 11, 12, 13, 14, 15,
1052 16, 297, 18, 19, 20, 303, 22, 23, 168, 25,
1053 26, 27, 28, 29, 30, 31, 264, 33, 218, 215,
1054 36, 37, 38, 129, 40, 41, 42, 352, 258, 153,
1055 46, 152, 48, 49, 50, 51, 52, 53, 54, 55,
1056 56, 57, 58, -1, 60, 61, 62, 63, 64, -1,
1057 66, 195, 68, 69, 70, 71, 72, -1, 74, 75,
1058 76, 77, -1, 79, 80, 3, -1, 5, 6, -1,
1059 -1, -1, -1, 11, -1, -1, 14, -1, -1, -1,
1060 -1, -1, 20, -1, -1, -1, -1, -1, -1, -1,
1061 -1, -1, -1, 31, -1, -1, -1, -1, -1, 37,
1062 38, -1, -1, -1, -1, 43, -1, 45, -1, -1,
1063 -1, 49, 50, 3, 52, 5, 6, -1, 56, 57,
1064 58, 11, 60, -1, 14, -1, -1, -1, -1, -1,
1065 20, -1, -1, -1, 72, -1, -1, -1, -1, -1,
1066 -1, 31, -1, -1, -1, -1, -1, 37, 38, -1,
1067 40, -1, -1, 43, -1, -1, -1, -1, -1, 49,
1068 50, 3, 52, 5, 6, -1, 56, 57, -1, 11,
1069 60, -1, 14, -1, -1, -1, -1, -1, 20, -1,
1070 -1, -1, 72, -1, -1, -1, -1, -1, -1, 31,
1071 -1, -1, -1, -1, -1, 37, 38, -1, -1, -1,
1072 -1, 43, -1, -1, -1, -1, -1, 49, 50, 3,
1073 52, 5, 6, -1, 56, 57, 58, 11, 60, -1,
1074 14, -1, -1, -1, -1, -1, 20, -1, -1, -1,
1075 72, -1, -1, -1, -1, -1, -1, 31, -1, -1,
1076 -1, -1, -1, 37, 38, -1, -1, -1, -1, 43,
1077 -1, -1, 46, -1, -1, 49, 50, -1, 52, -1,
1078 -1, -1, 56, 57, -1, 3, 60, 5, 6, -1,
1079 8, -1, -1, 11, -1, -1, 14, -1, 72, -1,
1080 -1, -1, 20, -1, -1, -1, -1, -1, -1, -1,
1081 -1, -1, -1, 31, -1, -1, -1, -1, -1, 37,
1082 38, -1, -1, -1, -1, 43, -1, -1, -1, -1,
1083 -1, 49, 50, 3, 52, 5, 6, -1, 56, 57,
1084 -1, 11, 60, -1, 14, -1, -1, -1, -1, -1,
1085 20, -1, -1, -1, 72, -1, -1, -1, -1, -1,
1086 -1, 31, -1, -1, -1, -1, -1, 37, 38, -1,
1087 -1, -1, -1, 43, -1, -1, -1, -1, -1, 49,
1088 50, 3, 52, 5, 6, -1, 56, 57, -1, 11,
1089 60, -1, 14, -1, -1, -1, -1, -1, 20, -1,
1090 -1, -1, 72, -1, -1, -1, -1, -1, -1, 31,
1091 -1, -1, -1, -1, -1, 37, 38, -1, -1, -1,
1092 -1, 43, -1, -1, -1, -1, 19, 49, 50, -1,
1093 52, -1, 25, 4, 56, 57, 7, 8, 60, 10,
1094 33, 12, 13, 36, -1, 16, -1, 18, -1, -1,
1095 72, 22, 23, -1, -1, 26, 27, 28, 29, 30,
1096 -1, 54, -1, -1, -1, -1, -1, -1, 61, 62,
1097 63, 42, -1, -1, -1, 46, -1, 48, -1, -1,
1098 51, 74, 53, -1, 55, 56, -1, -1, -1, 60
1099};
1100
1101/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1102 state STATE-NUM. */
1103static const yytype_uint8 yystos[] =
1104{
1105 0, 1, 82, 0, 77, 138, 3, 4, 5, 6,
1106 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1107 18, 19, 20, 22, 23, 25, 26, 27, 28, 29,
1108 30, 31, 33, 35, 36, 37, 38, 40, 41, 42,
1109 46, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1110 57, 58, 60, 61, 62, 63, 64, 66, 68, 69,
1111 70, 72, 74, 75, 76, 77, 79, 80, 140, 143,
1112 144, 7, 13, 16, 18, 27, 42, 55, 60, 83,
1113 84, 86, 87, 92, 98, 101, 106, 107, 72, 69,
1114 66, 71, 72, 77, 142, 143, 145, 142, 142, 71,
1115 139, 140, 141, 60, 85, 86, 105, 60, 60, 60,
1116 60, 13, 27, 88, 89, 95, 138, 23, 128, 130,
1117 138, 60, 142, 142, 142, 67, 142, 73, 78, 140,
1118 78, 69, 70, 100, 66, 100, 100, 60, 60, 3,
1119 5, 6, 11, 14, 20, 31, 37, 38, 43, 49,
1120 50, 52, 56, 57, 60, 72, 146, 147, 148, 151,
1121 153, 154, 155, 156, 157, 159, 60, 73, 71, 129,
1122 40, 131, 146, 72, 67, 73, 78, 141, 141, 141,
1123 139, 58, 146, 163, 60, 66, 63, 102, 66, 66,
1124 66, 66, 77, 161, 77, 80, 160, 31, 158, 160,
1125 75, 75, 160, 155, 157, 160, 3, 148, 149, 151,
1126 60, 160, 160, 160, 68, 130, 146, 15, 133, 128,
1127 142, 142, 142, 72, 93, 138, 71, 103, 67, 99,
1128 138, 90, 93, 90, 78, 78, 161, 163, 146, 77,
1129 160, 41, 68, 129, 60, 132, 144, 132, 73, 128,
1130 67, 46, 94, 146, 63, 104, 68, 67, 8, 108,
1131 136, 137, 146, 67, 138, 67, 67, 160, 160, 76,
1132 76, 78, 149, 69, 96, 73, 68, 146, 93, 60,
1133 103, 68, 60, 152, 153, 99, 60, 68, 10, 12,
1134 22, 26, 28, 29, 30, 48, 51, 53, 91, 108,
1135 112, 114, 115, 120, 122, 123, 125, 134, 163, 68,
1136 68, 80, 162, 160, 41, 150, 19, 25, 33, 36,
1137 54, 61, 62, 63, 74, 97, 109, 110, 111, 68,
1138 60, 96, 162, 60, 162, 68, 75, 75, 45, 116,
1139 121, 163, 60, 68, 113, 114, 126, 127, 121, 124,
1140 125, 126, 149, 73, 25, 68, 68, 69, 146, 146,
1141 4, 117, 126, 72, 117, 163, 124, 150, 109, 71,
1142 135, 76, 146, 128, 126, 68, 146, 76, 68, 46,
1143 60, 118, 119, 73, 68, 68, 68
1144};
1145
1146/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1147static const yytype_uint8 yyr1[] =
1148{
1149 0, 81, 82, 82, 82, 83, 83, 83, 83, 83,
1150 83, 83, 84, 84, 85, 85, 86, 87, 88, 88,
1151 89, 90, 90, 91, 91, 91, 91, 92, 93, 93,
1152 94, 94, 95, 96, 96, 97, 97, 98, 99, 99,
1153 100, 100, 101, 102, 103, 103, 104, 104, 105, 106,
1154 107, 108, 109, 109, 109, 109, 110, 110, 111, 111,
1155 111, 111, 112, 112, 112, 113, 113, 113, 114, 115,
1156 116, 116, 117, 118, 118, 119, 120, 120, 121, 121,
1157 122, 122, 123, 124, 124, 125, 125, 125, 125, 125,
1158 126, 127, 127, 128, 128, 129, 129, 130, 131, 131,
1159 132, 132, 133, 133, 134, 134, 135, 135, 136, 136,
1160 137, 138, 138, 139, 139, 140, 140, 140, 140, 140,
1161 140, 140, 141, 141, 142, 142, 142, 142, 142, 143,
1162 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1163 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1164 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1165 143, 143, 143, 143, 143, 144, 144, 144, 144, 144,
1166 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1167 144, 144, 144, 144, 144, 144, 144, 145, 145, 146,
1168 146, 147, 147, 148, 149, 149, 149, 150, 150, 151,
1169 151, 151, 151, 151, 151, 151, 152, 152, 153, 153,
1170 153, 153, 153, 154, 154, 155, 155, 156, 156, 157,
1171 157, 158, 158, 159, 160, 160, 160, 161, 161, 162,
1172 162, 163, 163
1173};
1174
1175/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1176static const yytype_int8 yyr2[] =
1177{
1178 0, 2, 0, 3, 1, 1, 1, 1, 1, 1,
1179 1, 1, 2, 1, 1, 1, 7, 2, 1, 1,
1180 6, 0, 3, 1, 1, 1, 1, 7, 0, 3,
1181 4, 4, 6, 0, 2, 1, 1, 7, 0, 3,
1182 0, 2, 6, 2, 2, 0, 2, 0, 7, 5,
1183 4, 6, 1, 1, 1, 1, 1, 1, 1, 2,
1184 1, 1, 2, 1, 1, 1, 1, 1, 3, 2,
1185 2, 2, 4, 1, 1, 1, 0, 1, 0, 1,
1186 2, 1, 4, 0, 2, 1, 1, 1, 1, 1,
1187 5, 0, 1, 0, 2, 0, 3, 2, 4, 3,
1188 1, 1, 0, 1, 6, 5, 0, 2, 1, 1,
1189 3, 0, 4, 0, 3, 4, 4, 4, 1, 4,
1190 6, 2, 0, 1, 0, 4, 4, 4, 2, 1,
1191 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1192 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1193 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1194 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1195 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1196 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1197 2, 1, 2, 6, 1, 2, 4, 0, 3, 2,
1198 2, 2, 2, 5, 2, 2, 2, 2, 1, 1,
1199 1, 1, 1, 2, 1, 1, 1, 2, 1, 1,
1200 2, 0, 1, 4, 0, 3, 2, 0, 3, 0,
1201 1, 1, 1
1202};
1203
1204
1205enum { YYENOMEM = -2 };
1206
1207#define yyerrok (yyerrstatus = 0)
1208#define yyclearin (yychar = WEBIDL_EMPTY)
1209
1210#define YYACCEPT goto yyacceptlab
1211#define YYABORT goto yyabortlab
1212#define YYERROR goto yyerrorlab
1213#define YYNOMEM goto yyexhaustedlab
1214
1215
1216#define YYRECOVERING() (!!yyerrstatus)
1217
1218#define YYBACKUP(Token, Value) \
1219 do \
1220 if (yychar == WEBIDL_EMPTY) \
1221 { \
1222 yychar = (Token); \
1223 yylval = (Value); \
1224 YYPOPSTACK (yylen); \
1225 yystate = *yyssp; \
1226 goto yybackup; \
1227 } \
1228 else \
1229 { \
1230 yyerror (&yylloc, webidl_ast, YY_("syntax error: cannot back up")); \
1231 YYERROR; \
1232 } \
1233 while (0)
1234
1235/* Backward compatibility with an undocumented macro.
1236 Use WEBIDL_error or WEBIDL_UNDEF. */
1237#define YYERRCODE WEBIDL_UNDEF
1238
1239/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1240 If N is 0, then set CURRENT to the empty location which ends
1241 the previous symbol: RHS[0] (always defined). */
1242
1243#ifndef YYLLOC_DEFAULT
1244# define YYLLOC_DEFAULT(Current, Rhs, N) \
1245 do \
1246 if (N) \
1247 { \
1248 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1249 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1250 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1251 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1252 } \
1253 else \
1254 { \
1255 (Current).first_line = (Current).last_line = \
1256 YYRHSLOC (Rhs, 0).last_line; \
1257 (Current).first_column = (Current).last_column = \
1258 YYRHSLOC (Rhs, 0).last_column; \
1259 } \
1260 while (0)
1261#endif
1262
1263#define YYRHSLOC(Rhs, K) ((Rhs)[K])
1264
1265
1266/* Enable debugging if requested. */
1267#if WEBIDL_DEBUG
1268
1269# ifndef YYFPRINTF
1270# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1271# define YYFPRINTF fprintf
1272# endif
1273
1274# define YYDPRINTF(Args) \
1275do { \
1276 if (yydebug) \
1277 YYFPRINTF Args; \
1278} while (0)
1279
1280
1281/* YYLOCATION_PRINT -- Print the location on the stream.
1282 This macro was not mandated originally: define only if we know
1283 we won't break user code: when these are the locations we know. */
1284
1285# ifndef YYLOCATION_PRINT
1286
1287# if defined YY_LOCATION_PRINT
1288
1289 /* Temporary convenience wrapper in case some people defined the
1290 undocumented and private YY_LOCATION_PRINT macros. */
1291# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
1292
1293# elif defined WEBIDL_LTYPE_IS_TRIVIAL && WEBIDL_LTYPE_IS_TRIVIAL
1294
1295/* Print *YYLOCP on YYO. Private, do not rely on its existence. */
1296
1298static int
1299yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
1300{
1301 int res = 0;
1302 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
1303 if (0 <= yylocp->first_line)
1304 {
1305 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
1306 if (0 <= yylocp->first_column)
1307 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
1308 }
1309 if (0 <= yylocp->last_line)
1310 {
1311 if (yylocp->first_line < yylocp->last_line)
1312 {
1313 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
1314 if (0 <= end_col)
1315 res += YYFPRINTF (yyo, ".%d", end_col);
1316 }
1317 else if (0 <= end_col && yylocp->first_column < end_col)
1318 res += YYFPRINTF (yyo, "-%d", end_col);
1319 }
1320 return res;
1321}
1322
1323# define YYLOCATION_PRINT yy_location_print_
1324
1325 /* Temporary convenience wrapper in case some people defined the
1326 undocumented and private YY_LOCATION_PRINT macros. */
1327# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
1328
1329# else
1330
1331# define YYLOCATION_PRINT(File, Loc) ((void) 0)
1332 /* Temporary convenience wrapper in case some people defined the
1333 undocumented and private YY_LOCATION_PRINT macros. */
1334# define YY_LOCATION_PRINT YYLOCATION_PRINT
1335
1336# endif
1337# endif /* !defined YYLOCATION_PRINT */
1338
1339
1340# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
1341do { \
1342 if (yydebug) \
1343 { \
1344 YYFPRINTF (stderr, "%s ", Title); \
1345 yy_symbol_print (stderr, \
1346 Kind, Value, Location, webidl_ast); \
1347 YYFPRINTF (stderr, "\n"); \
1348 } \
1349} while (0)
1350
1351
1352/*-----------------------------------.
1353| Print this symbol's value on YYO. |
1354`-----------------------------------*/
1355
1356static void
1357yy_symbol_value_print (FILE *yyo,
1358 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct webidl_node **webidl_ast)
1359{
1360 FILE *yyoutput = yyo;
1361 YY_USE (yyoutput);
1362 YY_USE (yylocationp);
1363 YY_USE (webidl_ast);
1364 if (!yyvaluep)
1365 return;
1367 YY_USE (yykind);
1369}
1370
1371
1372/*---------------------------.
1373| Print this symbol on YYO. |
1374`---------------------------*/
1375
1376static void
1377yy_symbol_print (FILE *yyo,
1378 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, struct webidl_node **webidl_ast)
1379{
1380 YYFPRINTF (yyo, "%s %s (",
1381 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
1382
1383 YYLOCATION_PRINT (yyo, yylocationp);
1384 YYFPRINTF (yyo, ": ");
1385 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, webidl_ast);
1386 YYFPRINTF (yyo, ")");
1387}
1388
1389/*------------------------------------------------------------------.
1390| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1391| TOP (included). |
1392`------------------------------------------------------------------*/
1393
1394static void
1395yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
1396{
1397 YYFPRINTF (stderr, "Stack now");
1398 for (; yybottom <= yytop; yybottom++)
1399 {
1400 int yybot = *yybottom;
1401 YYFPRINTF (stderr, " %d", yybot);
1402 }
1403 YYFPRINTF (stderr, "\n");
1404}
1405
1406# define YY_STACK_PRINT(Bottom, Top) \
1407do { \
1408 if (yydebug) \
1409 yy_stack_print ((Bottom), (Top)); \
1410} while (0)
1411
1412
1413/*------------------------------------------------.
1414| Report that the YYRULE is going to be reduced. |
1415`------------------------------------------------*/
1416
1417static void
1418yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
1419 int yyrule, struct webidl_node **webidl_ast)
1420{
1421 int yylno = yyrline[yyrule];
1422 int yynrhs = yyr2[yyrule];
1423 int yyi;
1424 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
1425 yyrule - 1, yylno);
1426 /* The symbols being reduced. */
1427 for (yyi = 0; yyi < yynrhs; yyi++)
1428 {
1429 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1430 yy_symbol_print (stderr,
1431 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1432 &yyvsp[(yyi + 1) - (yynrhs)],
1433 &(yylsp[(yyi + 1) - (yynrhs)]), webidl_ast);
1434 YYFPRINTF (stderr, "\n");
1435 }
1436}
1437
1438# define YY_REDUCE_PRINT(Rule) \
1439do { \
1440 if (yydebug) \
1441 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, webidl_ast); \
1442} while (0)
1443
1444/* Nonzero means print parse trace. It is left uninitialized so that
1445 multiple parsers can coexist. */
1447#else /* !WEBIDL_DEBUG */
1448# define YYDPRINTF(Args) ((void) 0)
1449# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1450# define YY_STACK_PRINT(Bottom, Top)
1451# define YY_REDUCE_PRINT(Rule)
1452#endif /* !WEBIDL_DEBUG */
1453
1454
1455/* YYINITDEPTH -- initial size of the parser's stacks. */
1456#ifndef YYINITDEPTH
1457# define YYINITDEPTH 200
1458#endif
1459
1460/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1461 if the built-in stack extension method is used).
1462
1463 Do not make this value too large; the results are undefined if
1464 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1465 evaluated with infinite-precision integer arithmetic. */
1466
1467#ifndef YYMAXDEPTH
1468# define YYMAXDEPTH 10000
1469#endif
1470
1471
1472/* Context of a parse error. */
1473typedef struct
1474{
1475 yy_state_t *yyssp;
1476 yysymbol_kind_t yytoken;
1477 YYLTYPE *yylloc;
1478} yypcontext_t;
1479
1480/* Put in YYARG at most YYARGN of the expected tokens given the
1481 current YYCTX, and return the number of tokens stored in YYARG. If
1482 YYARG is null, return the number of expected tokens (guaranteed to
1483 be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
1484 Return 0 if there are more than YYARGN expected tokens, yet fill
1485 YYARG up to YYARGN. */
1486static int
1487yypcontext_expected_tokens (const yypcontext_t *yyctx,
1488 yysymbol_kind_t yyarg[], int yyargn)
1489{
1490 /* Actual size of YYARG. */
1491 int yycount = 0;
1492 int yyn = yypact[+*yyctx->yyssp];
1493 if (!yypact_value_is_default (yyn))
1494 {
1495 /* Start YYX at -YYN if negative to avoid negative indexes in
1496 YYCHECK. In other words, skip the first -YYN actions for
1497 this state because they are default actions. */
1498 int yyxbegin = yyn < 0 ? -yyn : 0;
1499 /* Stay within bounds of both yycheck and yytname. */
1500 int yychecklim = YYLAST - yyn + 1;
1501 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1502 int yyx;
1503 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1504 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
1505 && !yytable_value_is_error (yytable[yyx + yyn]))
1506 {
1507 if (!yyarg)
1508 ++yycount;
1509 else if (yycount == yyargn)
1510 return 0;
1511 else
1512 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
1513 }
1514 }
1515 if (yyarg && yycount == 0 && 0 < yyargn)
1516 yyarg[0] = YYSYMBOL_YYEMPTY;
1517 return yycount;
1518}
1519
1520
1521
1522
1523#ifndef yystrlen
1524# if defined __GLIBC__ && defined _STRING_H
1525# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
1526# else
1527/* Return the length of YYSTR. */
1528static YYPTRDIFF_T
1529yystrlen (const char *yystr)
1530{
1531 YYPTRDIFF_T yylen;
1532 for (yylen = 0; yystr[yylen]; yylen++)
1533 continue;
1534 return yylen;
1535}
1536# endif
1537#endif
1538
1539#ifndef yystpcpy
1540# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1541# define yystpcpy stpcpy
1542# else
1543/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1544 YYDEST. */
1545static char *
1546yystpcpy (char *yydest, const char *yysrc)
1547{
1548 char *yyd = yydest;
1549 const char *yys = yysrc;
1550
1551 while ((*yyd++ = *yys++) != '\0')
1552 continue;
1553
1554 return yyd - 1;
1555}
1556# endif
1557#endif
1558
1559#ifndef yytnamerr
1560/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1561 quotes and backslashes, so that it's suitable for yyerror. The
1562 heuristic is that double-quoting is unnecessary unless the string
1563 contains an apostrophe, a comma, or backslash (other than
1564 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1565 null, do not copy; instead, return the length of what the result
1566 would have been. */
1567static YYPTRDIFF_T
1568yytnamerr (char *yyres, const char *yystr)
1569{
1570 if (*yystr == '"')
1571 {
1572 YYPTRDIFF_T yyn = 0;
1573 char const *yyp = yystr;
1574 for (;;)
1575 switch (*++yyp)
1576 {
1577 case '\'':
1578 case ',':
1579 goto do_not_strip_quotes;
1580
1581 case '\\':
1582 if (*++yyp != '\\')
1583 goto do_not_strip_quotes;
1584 else
1585 goto append;
1586
1587 append:
1588 default:
1589 if (yyres)
1590 yyres[yyn] = *yyp;
1591 yyn++;
1592 break;
1593
1594 case '"':
1595 if (yyres)
1596 yyres[yyn] = '\0';
1597 return yyn;
1598 }
1599 do_not_strip_quotes: ;
1600 }
1601
1602 if (yyres)
1603 return yystpcpy (yyres, yystr) - yyres;
1604 else
1605 return yystrlen (yystr);
1606}
1607#endif
1608
1609
1610static int
1611yy_syntax_error_arguments (const yypcontext_t *yyctx,
1612 yysymbol_kind_t yyarg[], int yyargn)
1613{
1614 /* Actual size of YYARG. */
1615 int yycount = 0;
1616 /* There are many possibilities here to consider:
1617 - If this state is a consistent state with a default action, then
1618 the only way this function was invoked is if the default action
1619 is an error action. In that case, don't check for expected
1620 tokens because there are none.
1621 - The only way there can be no lookahead present (in yychar) is if
1622 this state is a consistent state with a default action. Thus,
1623 detecting the absence of a lookahead is sufficient to determine
1624 that there is no unexpected or expected token to report. In that
1625 case, just report a simple "syntax error".
1626 - Don't assume there isn't a lookahead just because this state is a
1627 consistent state with a default action. There might have been a
1628 previous inconsistent state, consistent state with a non-default
1629 action, or user semantic action that manipulated yychar.
1630 - Of course, the expected token list depends on states to have
1631 correct lookahead information, and it depends on the parser not
1632 to perform extra reductions after fetching a lookahead from the
1633 scanner and before detecting a syntax error. Thus, state merging
1634 (from LALR or IELR) and default reductions corrupt the expected
1635 token list. However, the list is correct for canonical LR with
1636 one exception: it will still contain any token that will not be
1637 accepted due to an error action in a later state.
1638 */
1639 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
1640 {
1641 int yyn;
1642 if (yyarg)
1643 yyarg[yycount] = yyctx->yytoken;
1644 ++yycount;
1645 yyn = yypcontext_expected_tokens (yyctx,
1646 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
1647 if (yyn == YYENOMEM)
1648 return YYENOMEM;
1649 else
1650 yycount += yyn;
1651 }
1652 return yycount;
1653}
1654
1655/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1656 about the unexpected token YYTOKEN for the state stack whose top is
1657 YYSSP.
1658
1659 Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
1660 not large enough to hold the message. In that case, also set
1661 *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
1662 required number of bytes is too large to store. */
1663static int
1664yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
1665 const yypcontext_t *yyctx)
1666{
1667 enum { YYARGS_MAX = 5 };
1668 /* Internationalized format string. */
1669 const char *yyformat = YY_NULLPTR;
1670 /* Arguments of yyformat: reported tokens (one for the "unexpected",
1671 one per "expected"). */
1672 yysymbol_kind_t yyarg[YYARGS_MAX];
1673 /* Cumulated lengths of YYARG. */
1674 YYPTRDIFF_T yysize = 0;
1675
1676 /* Actual size of YYARG. */
1677 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
1678 if (yycount == YYENOMEM)
1679 return YYENOMEM;
1680
1681 switch (yycount)
1682 {
1683#define YYCASE_(N, S) \
1684 case N: \
1685 yyformat = S; \
1686 break
1687 default: /* Avoid compiler warnings. */
1688 YYCASE_(0, YY_("syntax error"));
1689 YYCASE_(1, YY_("syntax error, unexpected %s"));
1690 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1691 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1692 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1693 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1694#undef YYCASE_
1695 }
1696
1697 /* Compute error message size. Don't count the "%s"s, but reserve
1698 room for the terminator. */
1699 yysize = yystrlen (yyformat) - 2 * yycount + 1;
1700 {
1701 int yyi;
1702 for (yyi = 0; yyi < yycount; ++yyi)
1703 {
1704 YYPTRDIFF_T yysize1
1705 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
1706 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
1707 yysize = yysize1;
1708 else
1709 return YYENOMEM;
1710 }
1711 }
1712
1713 if (*yymsg_alloc < yysize)
1714 {
1715 *yymsg_alloc = 2 * yysize;
1716 if (! (yysize <= *yymsg_alloc
1717 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1718 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1719 return -1;
1720 }
1721
1722 /* Avoid sprintf, as that infringes on the user's name space.
1723 Don't have undefined behavior even if the translation
1724 produced a string with the wrong number of "%s"s. */
1725 {
1726 char *yyp = *yymsg;
1727 int yyi = 0;
1728 while ((*yyp = *yyformat) != '\0')
1729 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1730 {
1731 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
1732 yyformat += 2;
1733 }
1734 else
1735 {
1736 ++yyp;
1737 ++yyformat;
1738 }
1739 }
1740 return 0;
1741}
1742
1743
1744/*-----------------------------------------------.
1745| Release the memory associated to this symbol. |
1746`-----------------------------------------------*/
1747
1748static void
1749yydestruct (const char *yymsg,
1750 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, struct webidl_node **webidl_ast)
1751{
1752 YY_USE (yyvaluep);
1753 YY_USE (yylocationp);
1754 YY_USE (webidl_ast);
1755 if (!yymsg)
1756 yymsg = "Deleting";
1757 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
1758
1760 YY_USE (yykind);
1762}
1763
1764
1765
1766
1767
1768
1769/*----------.
1770| yyparse. |
1771`----------*/
1772
1773int
1774yyparse (struct webidl_node **webidl_ast)
1775{
1776/* Lookahead token kind. */
1777int yychar;
1778
1779
1780/* The semantic value of the lookahead symbol. */
1781/* Default value used for initialization, for pacifying older GCCs
1782 or non-GCC compilers. */
1783YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
1784YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
1785
1786/* Location data for the lookahead symbol. */
1787static YYLTYPE yyloc_default
1788# if defined WEBIDL_LTYPE_IS_TRIVIAL && WEBIDL_LTYPE_IS_TRIVIAL
1789 = { 1, 1, 1, 1 }
1790# endif
1791;
1792YYLTYPE yylloc = yyloc_default;
1793
1794 /* Number of syntax errors so far. */
1795 int yynerrs = 0;
1796
1797 yy_state_fast_t yystate = 0;
1798 /* Number of tokens to shift before error messages enabled. */
1799 int yyerrstatus = 0;
1800
1801 /* Refer to the stacks through separate pointers, to allow yyoverflow
1802 to reallocate them elsewhere. */
1803
1804 /* Their size. */
1805 YYPTRDIFF_T yystacksize = YYINITDEPTH;
1806
1807 /* The state stack: array, bottom, top. */
1808 yy_state_t yyssa[YYINITDEPTH];
1809 yy_state_t *yyss = yyssa;
1810 yy_state_t *yyssp = yyss;
1811
1812 /* The semantic value stack: array, bottom, top. */
1813 YYSTYPE yyvsa[YYINITDEPTH];
1814 YYSTYPE *yyvs = yyvsa;
1815 YYSTYPE *yyvsp = yyvs;
1816
1817 /* The location stack: array, bottom, top. */
1818 YYLTYPE yylsa[YYINITDEPTH];
1819 YYLTYPE *yyls = yylsa;
1820 YYLTYPE *yylsp = yyls;
1821
1822 int yyn;
1823 /* The return value of yyparse. */
1824 int yyresult;
1825 /* Lookahead symbol kind. */
1827 /* The variables used to return semantic value and location from the
1828 action routines. */
1829 YYSTYPE yyval;
1830 YYLTYPE yyloc;
1831
1832 /* The locations where the error started and ended. */
1833 YYLTYPE yyerror_range[3];
1834
1835 /* Buffer for error messages, and its allocated size. */
1836 char yymsgbuf[128];
1837 char *yymsg = yymsgbuf;
1838 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
1839
1840#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1841
1842 /* The number of symbols on the RHS of the reduced rule.
1843 Keep to zero when no symbol should be popped. */
1844 int yylen = 0;
1845
1846 YYDPRINTF ((stderr, "Starting parse\n"));
1847
1848 yychar = WEBIDL_EMPTY; /* Cause a token to be read. */
1849
1850 yylsp[0] = yylloc;
1851 goto yysetstate;
1852
1853
1854/*------------------------------------------------------------.
1855| yynewstate -- push a new state, which is found in yystate. |
1856`------------------------------------------------------------*/
1857yynewstate:
1858 /* In all cases, when you get here, the value and location stacks
1859 have just been pushed. So pushing a state here evens the stacks. */
1860 yyssp++;
1861
1862
1863/*--------------------------------------------------------------------.
1864| yysetstate -- set current state (the top of the stack) to yystate. |
1865`--------------------------------------------------------------------*/
1866yysetstate:
1867 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1868 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1870 *yyssp = YY_CAST (yy_state_t, yystate);
1872 YY_STACK_PRINT (yyss, yyssp);
1873
1874 if (yyss + yystacksize - 1 <= yyssp)
1875#if !defined yyoverflow && !defined YYSTACK_RELOCATE
1876 YYNOMEM;
1877#else
1878 {
1879 /* Get the current used size of the three stacks, in elements. */
1880 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1881
1882# if defined yyoverflow
1883 {
1884 /* Give user a chance to reallocate the stack. Use copies of
1885 these so that the &'s don't force the real ones into
1886 memory. */
1887 yy_state_t *yyss1 = yyss;
1888 YYSTYPE *yyvs1 = yyvs;
1889 YYLTYPE *yyls1 = yyls;
1890
1891 /* Each stack pointer address is followed by the size of the
1892 data in use in that stack, in bytes. This used to be a
1893 conditional around just the two extra args, but that might
1894 be undefined if yyoverflow is a macro. */
1895 yyoverflow (YY_("memory exhausted"),
1896 &yyss1, yysize * YYSIZEOF (*yyssp),
1897 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1898 &yyls1, yysize * YYSIZEOF (*yylsp),
1899 &yystacksize);
1900 yyss = yyss1;
1901 yyvs = yyvs1;
1902 yyls = yyls1;
1903 }
1904# else /* defined YYSTACK_RELOCATE */
1905 /* Extend the stack our own way. */
1906 if (YYMAXDEPTH <= yystacksize)
1907 YYNOMEM;
1908 yystacksize *= 2;
1909 if (YYMAXDEPTH < yystacksize)
1910 yystacksize = YYMAXDEPTH;
1911
1912 {
1913 yy_state_t *yyss1 = yyss;
1914 union yyalloc *yyptr =
1915 YY_CAST (union yyalloc *,
1916 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1917 if (! yyptr)
1918 YYNOMEM;
1919 YYSTACK_RELOCATE (yyss_alloc, yyss);
1920 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1921 YYSTACK_RELOCATE (yyls_alloc, yyls);
1922# undef YYSTACK_RELOCATE
1923 if (yyss1 != yyssa)
1924 YYSTACK_FREE (yyss1);
1925 }
1926# endif
1927
1928 yyssp = yyss + yysize - 1;
1929 yyvsp = yyvs + yysize - 1;
1930 yylsp = yyls + yysize - 1;
1931
1933 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1934 YY_CAST (long, yystacksize)));
1936
1937 if (yyss + yystacksize - 1 <= yyssp)
1938 YYABORT;
1939 }
1940#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1941
1942
1943 if (yystate == YYFINAL)
1944 YYACCEPT;
1945
1946 goto yybackup;
1947
1948
1949/*-----------.
1950| yybackup. |
1951`-----------*/
1952yybackup:
1953 /* Do appropriate processing given the current state. Read a
1954 lookahead token if we need one and don't already have one. */
1955
1956 /* First try to decide what to do without reference to lookahead token. */
1957 yyn = yypact[yystate];
1958 if (yypact_value_is_default (yyn))
1959 goto yydefault;
1960
1961 /* Not known => get a lookahead token if don't already have one. */
1962
1963 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1964 if (yychar == WEBIDL_EMPTY)
1965 {
1966 YYDPRINTF ((stderr, "Reading a token\n"));
1967 yychar = yylex (&yylval, &yylloc);
1968 }
1969
1970 if (yychar <= WEBIDL_EOF)
1971 {
1972 yychar = WEBIDL_EOF;
1973 yytoken = YYSYMBOL_YYEOF;
1974 YYDPRINTF ((stderr, "Now at end of input.\n"));
1975 }
1976 else if (yychar == WEBIDL_error)
1977 {
1978 /* The scanner already issued an error message, process directly
1979 to error recovery. But do not keep the error token as
1980 lookahead, it is too special and may lead us to an endless
1981 loop in error recovery. */
1982 yychar = WEBIDL_UNDEF;
1983 yytoken = YYSYMBOL_YYerror;
1984 yyerror_range[1] = yylloc;
1985 goto yyerrlab1;
1986 }
1987 else
1988 {
1989 yytoken = YYTRANSLATE (yychar);
1990 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1991 }
1992
1993 /* If the proper action on seeing token YYTOKEN is to reduce or to
1994 detect an error, take that action. */
1995 yyn += yytoken;
1996 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1997 goto yydefault;
1998 yyn = yytable[yyn];
1999 if (yyn <= 0)
2000 {
2001 if (yytable_value_is_error (yyn))
2002 goto yyerrlab;
2003 yyn = -yyn;
2004 goto yyreduce;
2005 }
2006
2007 /* Count tokens shifted since error; after three, turn off error
2008 status. */
2009 if (yyerrstatus)
2010 yyerrstatus--;
2011
2012 /* Shift the lookahead token. */
2013 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2014 yystate = yyn;
2016 *++yyvsp = yylval;
2018 *++yylsp = yylloc;
2019
2020 /* Discard the shifted token. */
2021 yychar = WEBIDL_EMPTY;
2022 goto yynewstate;
2023
2024
2025/*-----------------------------------------------------------.
2026| yydefault -- do the default action for the current state. |
2027`-----------------------------------------------------------*/
2028yydefault:
2029 yyn = yydefact[yystate];
2030 if (yyn == 0)
2031 goto yyerrlab;
2032 goto yyreduce;
2033
2034
2035/*-----------------------------.
2036| yyreduce -- do a reduction. |
2037`-----------------------------*/
2038yyreduce:
2039 /* yyn is the number of a rule to reduce with. */
2040 yylen = yyr2[yyn];
2041
2042 /* If YYLEN is nonzero, implement the default value of the action:
2043 '$$ = $1'.
2044
2045 Otherwise, the following line sets YYVAL to garbage.
2046 This behavior is undocumented and Bison
2047 users should not rely upon it. Assigning to YYVAL
2048 unconditionally makes the parser a bit smaller, and it avoids a
2049 GCC warning that YYVAL may be used uninitialized. */
2050 yyval = yyvsp[1-yylen];
2051
2052 /* Default location. */
2053 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
2054 yyerror_range[1] = yyloc;
2055 YY_REDUCE_PRINT (yyn);
2056 switch (yyn)
2057 {
2058 case 2: /* Definitions: %empty */
2059#line 230 "src/webidl-parser.y"
2060 {
2061 (yyval.node) = NULL;
2062 }
2063#line 2064 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2064 break;
2065
2066 case 3: /* Definitions: Definitions ExtendedAttributeList Definition */
2067#line 235 "src/webidl-parser.y"
2068 {
2069 webidl_node_add((yyvsp[0].node), (yyvsp[-1].node));
2070 (yyval.node) = *webidl_ast = webidl_node_prepend(*webidl_ast, (yyvsp[0].node));
2071 }
2072#line 2073 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2073 break;
2074
2075 case 4: /* Definitions: error */
2076#line 241 "src/webidl-parser.y"
2077 {
2078 fprintf(stderr, "%d: %s\n", yylloc.first_line, errtxt);
2079 free(errtxt);
2080 YYABORT ;
2081 }
2082#line 2083 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2083 break;
2084
2085 case 12: /* CallbackOrInterface: TOK_CALLBACK CallbackRestOrInterface */
2086#line 269 "src/webidl-parser.y"
2087 {
2088 (yyval.node) = (yyvsp[0].node);
2089 }
2090#line 2091 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2091 break;
2092
2093 case 16: /* Interface: TOK_INTERFACE TOK_IDENTIFIER Inheritance '{' InterfaceMembers '}' ';' */
2094#line 286 "src/webidl-parser.y"
2095 {
2096 /* extend interface with additional members */
2097 struct webidl_node *interface_node;
2098 struct webidl_node *members = NULL;
2099
2100 if ((yyvsp[-4].text) != NULL) {
2102 members,
2103 (yyvsp[-4].text));
2104 }
2105
2106 members = webidl_node_new(WEBIDL_NODE_TYPE_LIST, members, (yyvsp[-2].node));
2107
2108
2109 interface_node = webidl_node_find_type_ident(*webidl_ast,
2111 (yyvsp[-5].text));
2112
2113 if (interface_node == NULL) {
2114 /* no existing interface - create one with ident */
2116 members,
2117 (yyvsp[-5].text));
2118
2120 NULL,
2121 members);
2122 } else {
2123 /* update the existing interface */
2124
2125 /* link member node into interfaces_node */
2126 webidl_node_add(interface_node, members);
2127
2128 (yyval.node) = NULL; /* updating so no need to add a new node */
2129 }
2130 }
2131#line 2132 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2132 break;
2133
2134 case 17: /* Partial: TOK_PARTIAL PartialDefinition */
2135#line 327 "src/webidl-parser.y"
2136 {
2137 (yyval.node) = (yyvsp[0].node);
2138 }
2139#line 2140 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2140 break;
2141
2142 case 20: /* PartialInterface: TOK_INTERFACE TOK_IDENTIFIER '{' InterfaceMembers '}' ';' */
2143#line 342 "src/webidl-parser.y"
2144 {
2145 /* extend interface with additional members */
2146 struct webidl_node *members;
2147 struct webidl_node *interface_node;
2148
2149 interface_node = webidl_node_find_type_ident(*webidl_ast,
2151 (yyvsp[-4].text));
2152
2153 members = webidl_node_new(WEBIDL_NODE_TYPE_LIST, NULL, (yyvsp[-2].node));
2154
2155 if (interface_node == NULL) {
2156 /* doesnt already exist so create it */
2157
2158 members = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, members, (yyvsp[-4].text));
2159
2160 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_INTERFACE, NULL, members);
2161 } else {
2162 /* update the existing interface */
2163
2164 /* link member node into interfaces_node */
2165 webidl_node_add(interface_node, members);
2166
2167 (yyval.node) = NULL; /* updating so no need to add a new node */
2168 }
2169 }
2170#line 2171 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2171 break;
2172
2173 case 21: /* InterfaceMembers: %empty */
2174#line 372 "src/webidl-parser.y"
2175 {
2176 (yyval.node) = NULL; /* empty */
2177 }
2178#line 2179 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2179 break;
2180
2181 case 22: /* InterfaceMembers: InterfaceMembers ExtendedAttributeList InterfaceMember */
2182#line 377 "src/webidl-parser.y"
2183 {
2184 /* This needs to deal with members with the same
2185 * identifier which indicate polymorphism. this is
2186 * handled in the AST by adding the argument lists for
2187 * each polymorphism to the same
2188 * WEBIDL_NODE_TYPE_OPERATION
2189 *
2190 * @todo need to consider qualifer/stringifier compatibility
2191 */
2192 struct webidl_node *ident_node;
2193 struct webidl_node *list_node;
2194
2195 ident_node = webidl_node_find_type(webidl_node_getnode((yyvsp[0].node)),
2196 NULL,
2198
2199 list_node = webidl_node_find_type(webidl_node_getnode((yyvsp[0].node)),
2200 NULL,
2202
2203 if (ident_node == NULL) {
2204 /* something with no ident - possibly constructors? */
2205 /* @todo understand this better */
2206
2207 (yyval.node) = webidl_node_prepend((yyvsp[-2].node), (yyvsp[0].node));
2208
2209 } else if (list_node == NULL) {
2210 /* member with no argument list, usually an
2211 * attribute, cannot be polymorphic
2212 */
2213
2214 /* add extended attributes to parameter list */
2215 webidl_node_add((yyvsp[0].node), (yyvsp[-1].node));
2216
2217 (yyval.node) = webidl_node_prepend((yyvsp[-2].node), (yyvsp[0].node));
2218
2219 } else {
2220 /* add extended attributes to parameter list */
2221 webidl_node_add(list_node, (yyvsp[-1].node));
2222
2223 (yyval.node) = webidl_node_prepend((yyvsp[-2].node), (yyvsp[0].node));
2224 }
2225 }
2226#line 2227 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2227 break;
2228
2229 case 27: /* Dictionary: TOK_DICTIONARY TOK_IDENTIFIER Inheritance '{' DictionaryMembers '}' ';' */
2230#line 440 "src/webidl-parser.y"
2231 {
2232 /* extend dictionary with additional members */
2233 struct webidl_node *dictionary_node;
2234 struct webidl_node *members = NULL;
2235
2236 if ((yyvsp[-4].text) != NULL) {
2238 members,
2239 (yyvsp[-4].text));
2240 }
2241
2242 members = webidl_node_new(WEBIDL_NODE_TYPE_LIST, members, (yyvsp[-2].node));
2243
2244 dictionary_node = webidl_node_find_type_ident(
2245 *webidl_ast,
2247 (yyvsp[-5].text));
2248
2249 if (dictionary_node == NULL) {
2250 /* no existing interface - create one with ident */
2252 members,
2253 (yyvsp[-5].text));
2254
2256 NULL,
2257 members);
2258 } else {
2259 /* update the existing interface */
2260
2261 /* link member node into interfaces_node */
2262 webidl_node_add(dictionary_node, members);
2263
2264 (yyval.node) = NULL; /* updating so no need to add a new node */
2265 }
2266 }
2267#line 2268 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2268 break;
2269
2270 case 28: /* DictionaryMembers: %empty */
2271#line 480 "src/webidl-parser.y"
2272 {
2273 (yyval.node) = NULL; /* empty */
2274 }
2275#line 2276 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2276 break;
2277
2278 case 29: /* DictionaryMembers: ExtendedAttributeList DictionaryMember DictionaryMembers */
2279#line 485 "src/webidl-parser.y"
2280 {
2282 (yyval.node) = webidl_node_append((yyvsp[0].node), (yyvsp[-1].node));
2283 }
2284#line 2285 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2285 break;
2286
2287 case 30: /* DictionaryMember: TOK_REQUIRED Type TOK_IDENTIFIER ';' */
2288#line 498 "src/webidl-parser.y"
2289 {
2290 struct webidl_node *member;
2291 /* add name */
2292 member = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, (yyvsp[-1].text));
2293 /* add type node */
2294 member = webidl_node_prepend(member, (yyvsp[-2].node));
2295
2296 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_ARGUMENT, NULL, member);
2297 }
2298#line 2299 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2299 break;
2300
2301 case 31: /* DictionaryMember: Type TOK_IDENTIFIER Default ';' */
2302#line 509 "src/webidl-parser.y"
2303 {
2304 struct webidl_node *member;
2305 /* add name */
2306 member = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, (yyvsp[-2].text));
2307 /* add default */
2308 member = webidl_node_new(WEBIDL_NODE_TYPE_OPTIONAL, member, (yyvsp[-1].node));
2309 /* add type node */
2310 member = webidl_node_prepend(member, (yyvsp[-3].node));
2311
2312 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_ARGUMENT, NULL, member);
2313 }
2314#line 2315 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2315 break;
2316
2317 case 32: /* PartialDictionary: TOK_DICTIONARY TOK_IDENTIFIER '{' DictionaryMembers '}' ';' */
2318#line 537 "src/webidl-parser.y"
2319 {
2320 /* extend dictionary with additional members */
2321 struct webidl_node *members;
2322 struct webidl_node *dictionary_node;
2323
2324 dictionary_node = webidl_node_find_type_ident(
2325 *webidl_ast,
2327 (yyvsp[-4].text));
2328
2329 members = webidl_node_new(WEBIDL_NODE_TYPE_LIST, NULL, (yyvsp[-2].node));
2330
2331 if (dictionary_node == NULL) {
2332 /* doesnt already exist so create it */
2333
2335 members,
2336 (yyvsp[-4].text));
2337
2339 NULL,
2340 members);
2341 } else {
2342 /* update the existing dictionary */
2343
2344 /* link member node into dictionary node */
2345 webidl_node_add(dictionary_node, members);
2346
2347 (yyval.node) = NULL; /* updating so no need to add a new node */
2348 }
2349 }
2350#line 2351 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2351 break;
2352
2353 case 33: /* Default: %empty */
2354#line 573 "src/webidl-parser.y"
2355 {
2356 (yyval.node) = NULL;
2357 }
2358#line 2359 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2359 break;
2360
2361 case 34: /* Default: '=' DefaultValue */
2362#line 578 "src/webidl-parser.y"
2363 {
2364 (yyval.node) = (yyvsp[0].node);
2365 }
2366#line 2367 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2367 break;
2368
2369 case 36: /* DefaultValue: TOK_STRING_LITERAL */
2370#line 589 "src/webidl-parser.y"
2371 {
2372 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_LITERAL_STRING, NULL, (yyvsp[0].text));
2373 }
2374#line 2375 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2375 break;
2376
2377 case 37: /* Exception: TOK_EXCEPTION TOK_IDENTIFIER Inheritance '{' ExceptionMembers '}' ';' */
2378#line 597 "src/webidl-parser.y"
2379 {
2380 (yyval.node) = NULL;
2381 }
2382#line 2383 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2383 break;
2384
2385 case 40: /* Inheritance: %empty */
2386#line 612 "src/webidl-parser.y"
2387 {
2388 (yyval.text) = NULL;
2389 }
2390#line 2391 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2391 break;
2392
2393 case 41: /* Inheritance: ':' TOK_IDENTIFIER */
2394#line 617 "src/webidl-parser.y"
2395 {
2396 (yyval.text) = (yyvsp[0].text);
2397 }
2398#line 2399 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2399 break;
2400
2401 case 42: /* Enum: TOK_ENUM TOK_IDENTIFIER '{' EnumValueList '}' ';' */
2402#line 625 "src/webidl-parser.y"
2403 {
2404 (yyval.node) = NULL;
2405 }
2406#line 2407 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2407 break;
2408
2409 case 48: /* CallbackRest: TOK_IDENTIFIER '=' ReturnType '(' ArgumentList ')' ';' */
2410#line 655 "src/webidl-parser.y"
2411 {
2412 (yyval.node) = NULL;
2413 }
2414#line 2415 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2415 break;
2416
2417 case 49: /* Typedef: TOK_TYPEDEF ExtendedAttributeList Type TOK_IDENTIFIER ';' */
2418#line 663 "src/webidl-parser.y"
2419 {
2420 (yyval.node) = NULL;
2421 }
2422#line 2423 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2423 break;
2424
2425 case 50: /* ImplementsStatement: TOK_IDENTIFIER TOK_IMPLEMENTS TOK_IDENTIFIER ';' */
2426#line 671 "src/webidl-parser.y"
2427 {
2428 /* extend interface with implements members */
2429 struct webidl_node *implements;
2430 struct webidl_node *interface_node;
2431
2432
2433 interface_node = webidl_node_find_type_ident(*webidl_ast,
2435 (yyvsp[-3].text));
2436
2437 implements = webidl_node_new(WEBIDL_NODE_TYPE_INTERFACE_IMPLEMENTS, NULL, (yyvsp[-1].text));
2438
2439 if (interface_node == NULL) {
2440 /* interface doesnt already exist so create it */
2441
2442 implements = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, implements, (yyvsp[-3].text));
2443
2444 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_INTERFACE, NULL, implements);
2445 } else {
2446 /* update the existing interface */
2447
2448 /* link implements node into interfaces_node */
2449 webidl_node_add(interface_node, implements);
2450
2451 (yyval.node) = NULL; /* updating so no need to add a new node */
2452 }
2453 }
2454#line 2455 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2455 break;
2456
2457 case 51: /* Const: TOK_CONST ConstType TOK_IDENTIFIER '=' ConstValue ';' */
2458#line 703 "src/webidl-parser.y"
2459 {
2460 struct webidl_node *constant;
2461
2462 constant = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, (yyvsp[-3].text));
2463
2464 /* add constant type */
2465 constant = webidl_node_prepend(constant, (yyvsp[-4].node));
2466
2467 /* add constant value */
2468 constant = webidl_node_prepend(constant, (yyvsp[-1].node));
2469
2470 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_CONST, NULL, constant);
2471 }
2472#line 2473 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2473 break;
2474
2475 case 54: /* ConstValue: TOK_INT_LITERAL */
2476#line 725 "src/webidl-parser.y"
2477 {
2479 NULL,
2480 (yyvsp[0].value));
2481 }
2482#line 2483 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2483 break;
2484
2485 case 55: /* ConstValue: TOK_NULL_LITERAL */
2486#line 732 "src/webidl-parser.y"
2487 {
2488 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_LITERAL_NULL, NULL, NULL);
2489 }
2490#line 2491 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2491 break;
2492
2493 case 56: /* BooleanLiteral: TOK_TRUE */
2494#line 740 "src/webidl-parser.y"
2495 {
2497 NULL,
2498 (int)true);
2499 }
2500#line 2501 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2501 break;
2502
2503 case 57: /* BooleanLiteral: TOK_FALSE */
2504#line 747 "src/webidl-parser.y"
2505 {
2507 NULL,
2508 (int)false);
2509 }
2510#line 2511 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2511 break;
2512
2513 case 58: /* FloatLiteral: TOK_FLOAT_LITERAL */
2514#line 757 "src/webidl-parser.y"
2515 {
2516 float *value;
2517 value = malloc(sizeof(float));
2518 *value = strtof((yyvsp[0].text), NULL);
2520 NULL,
2521 value);
2522 }
2523#line 2524 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2524 break;
2525
2526 case 59: /* FloatLiteral: '-' TOK_INFINITY */
2527#line 767 "src/webidl-parser.y"
2528 {
2529 float *value;
2530 value = malloc(sizeof(float));
2531 *value = -INFINITY;
2533 NULL,
2534 value);
2535 }
2536#line 2537 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2537 break;
2538
2539 case 60: /* FloatLiteral: TOK_INFINITY */
2540#line 777 "src/webidl-parser.y"
2541 {
2542 float *value;
2543 value = malloc(sizeof(float));
2544 *value = INFINITY;
2546 NULL,
2547 value);
2548 }
2549#line 2550 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2550 break;
2551
2552 case 61: /* FloatLiteral: TOK_NAN */
2553#line 787 "src/webidl-parser.y"
2554 {
2555 float *value;
2556 value = malloc(sizeof(float));
2557 *value = NAN;
2559 NULL,
2560 value);
2561 }
2562#line 2563 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2563 break;
2564
2565 case 62: /* AttributeOrOperation: TOK_STRINGIFIER StringifierAttributeOrOperation */
2566#line 800 "src/webidl-parser.y"
2567 {
2568 (yyval.node) = (yyvsp[0].node);
2569 }
2570#line 2571 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2571 break;
2572
2573 case 66: /* StringifierAttributeOrOperation: OperationRest */
2574#line 814 "src/webidl-parser.y"
2575 {
2576 /* @todo deal with stringifier */
2577 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_OPERATION, NULL, (yyvsp[0].node));
2578 }
2579#line 2580 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2580 break;
2581
2582 case 67: /* StringifierAttributeOrOperation: ';' */
2583#line 820 "src/webidl-parser.y"
2584 {
2585 (yyval.node)=NULL;
2586 }
2587#line 2588 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2588 break;
2589
2590 case 68: /* Attribute: Inherit ReadOnly AttributeRest */
2591#line 830 "src/webidl-parser.y"
2592 {
2593 struct webidl_node *attribute;
2594
2595 attribute = (yyvsp[0].node);
2596
2597 /* deal with inherit modifier */
2598 if ((yyvsp[-2].isit)) {
2599 attribute = webidl_new_number_node(
2601 attribute,
2603 }
2604
2605 /* deal with readonly modifier */
2606 if ((yyvsp[-1].isit)) {
2607 attribute = webidl_new_number_node(
2609 attribute,
2611 }
2612
2614 NULL,
2615 attribute);
2616 }
2617#line 2618 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2618 break;
2619
2620 case 69: /* StaticMember: TOK_STATIC StaticMemberRest */
2621#line 861 "src/webidl-parser.y"
2622 {
2623 (yyval.node) = (yyvsp[0].node);
2624 }
2625#line 2626 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2626 break;
2627
2628 case 70: /* StaticMemberRest: ReadOnly AttributeRest */
2629#line 870 "src/webidl-parser.y"
2630 {
2631 struct webidl_node *attribute;
2632
2634 (yyvsp[0].node),
2636
2637 /* deal with readonly modifier */
2638 if ((yyvsp[-1].isit)) {
2639 attribute = webidl_new_number_node(
2641 attribute,
2643 }
2644
2646 NULL,
2647 attribute);
2648 }
2649#line 2650 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2650 break;
2651
2652 case 71: /* StaticMemberRest: ReturnType OperationRest */
2653#line 891 "src/webidl-parser.y"
2654 {
2655 struct webidl_node *operation;
2656
2657 /* add static modifier */
2659 (yyvsp[0].node),
2661
2662 /* put return type on the operation */
2663 operation = webidl_node_prepend((yyvsp[-1].node), operation);
2664
2666 NULL,
2667 operation);
2668 }
2669#line 2670 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2670 break;
2671
2672 case 72: /* AttributeRest: TOK_ATTRIBUTE Type AttributeName ';' */
2673#line 912 "src/webidl-parser.y"
2674 {
2675 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, (yyvsp[-2].node), (yyvsp[-1].text));
2676 }
2677#line 2678 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2678 break;
2679
2680 case 75: /* AttributeNameKeyword: TOK_REQUIRED */
2681#line 927 "src/webidl-parser.y"
2682 {
2683 (yyval.text) = strdup("required");
2684 }
2685#line 2686 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2686 break;
2687
2688 case 76: /* Inherit: %empty */
2689#line 936 "src/webidl-parser.y"
2690 {
2691 (yyval.isit) = false;
2692 }
2693#line 2694 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2694 break;
2695
2696 case 77: /* Inherit: TOK_INHERIT */
2697#line 941 "src/webidl-parser.y"
2698 {
2699 (yyval.isit) = true;
2700 }
2701#line 2702 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2702 break;
2703
2704 case 78: /* ReadOnly: %empty */
2705#line 952 "src/webidl-parser.y"
2706 {
2707 (yyval.isit) = false;
2708 }
2709#line 2710 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2710 break;
2711
2712 case 79: /* ReadOnly: TOK_READONLY */
2713#line 957 "src/webidl-parser.y"
2714 {
2715 (yyval.isit) = true;
2716 }
2717#line 2718 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2718 break;
2719
2720 case 80: /* Operation: ReturnType OperationRest */
2721#line 966 "src/webidl-parser.y"
2722 {
2723 /* put return type on the operation */
2724 (yyvsp[0].node) = webidl_node_prepend((yyvsp[-1].node), (yyvsp[0].node));
2725
2726 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_OPERATION, NULL, (yyvsp[0].node));
2727 }
2728#line 2729 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2729 break;
2730
2731 case 81: /* Operation: SpecialOperation */
2732#line 974 "src/webidl-parser.y"
2733 {
2734 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_OPERATION, NULL, (yyvsp[0].node));
2735 }
2736#line 2737 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2737 break;
2738
2739 case 82: /* SpecialOperation: Special Specials ReturnType OperationRest */
2740#line 982 "src/webidl-parser.y"
2741 {
2742 /* put return type on the operation */
2743 (yyval.node) = webidl_node_prepend((yyvsp[0].node), (yyvsp[-1].node));
2744
2745 /* specials */
2746 (yyval.node) = webidl_node_prepend((yyval.node), (yyvsp[-2].node));
2747
2748 /* special */
2749 (yyval.node) = webidl_node_prepend((yyval.node), (yyvsp[-3].node));
2750 }
2751#line 2752 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2752 break;
2753
2754 case 83: /* Specials: %empty */
2755#line 997 "src/webidl-parser.y"
2756 {
2757 (yyval.node) = NULL;
2758 }
2759#line 2760 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2760 break;
2761
2762 case 84: /* Specials: Special Specials */
2763#line 1002 "src/webidl-parser.y"
2764 {
2765 (yyval.node) = webidl_node_prepend((yyvsp[0].node), (yyvsp[-1].node));
2766 }
2767#line 2768 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2768 break;
2769
2770 case 85: /* Special: TOK_GETTER */
2771#line 1010 "src/webidl-parser.y"
2772 {
2774 NULL,
2776 }
2777#line 2778 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2778 break;
2779
2780 case 86: /* Special: TOK_SETTER */
2781#line 1017 "src/webidl-parser.y"
2782 {
2784 NULL,
2786 }
2787#line 2788 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2788 break;
2789
2790 case 87: /* Special: TOK_CREATOR */
2791#line 1024 "src/webidl-parser.y"
2792 {
2793 /* second edition removed this special but the
2794 * specifications still use it!
2795 */
2797 NULL,
2799 }
2800#line 2801 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2801 break;
2802
2803 case 88: /* Special: TOK_DELETER */
2804#line 1034 "src/webidl-parser.y"
2805 {
2807 NULL,
2809 }
2810#line 2811 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2811 break;
2812
2813 case 89: /* Special: TOK_LEGACYCALLER */
2814#line 1041 "src/webidl-parser.y"
2815 {
2817 NULL,
2819 }
2820#line 2821 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2821 break;
2822
2823 case 90: /* OperationRest: OptionalIdentifier '(' ArgumentList ')' ';' */
2824#line 1051 "src/webidl-parser.y"
2825 {
2826 /* argument list */
2827 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_LIST, NULL, (yyvsp[-2].node));
2828
2829 (yyval.node) = webidl_node_prepend((yyvsp[-4].node), (yyval.node)); /* identifier */
2830 }
2831#line 2832 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2832 break;
2833
2834 case 91: /* OptionalIdentifier: %empty */
2835#line 1062 "src/webidl-parser.y"
2836 {
2837 (yyval.node) = NULL;
2838 }
2839#line 2840 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2840 break;
2841
2842 case 92: /* OptionalIdentifier: TOK_IDENTIFIER */
2843#line 1067 "src/webidl-parser.y"
2844 {
2845 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, (yyvsp[0].text));
2846 }
2847#line 2848 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2848 break;
2849
2850 case 93: /* ArgumentList: %empty */
2851#line 1078 "src/webidl-parser.y"
2852 {
2853 (yyval.node) = NULL;
2854 }
2855#line 2856 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2856 break;
2857
2858 case 94: /* ArgumentList: Argument Arguments */
2859#line 1083 "src/webidl-parser.y"
2860 {
2861 (yyval.node) = webidl_node_append((yyvsp[0].node), (yyvsp[-1].node));
2862 }
2863#line 2864 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2864 break;
2865
2866 case 95: /* Arguments: %empty */
2867#line 1091 "src/webidl-parser.y"
2868 {
2869 (yyval.node) = NULL;
2870 }
2871#line 2872 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2872 break;
2873
2874 case 96: /* Arguments: ',' Argument Arguments */
2875#line 1096 "src/webidl-parser.y"
2876 {
2877 (yyval.node) = webidl_node_append((yyvsp[0].node), (yyvsp[-1].node));
2878 }
2879#line 2880 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2880 break;
2881
2882 case 97: /* Argument: ExtendedAttributeList OptionalOrRequiredArgument */
2883#line 1105 "src/webidl-parser.y"
2884 {
2885 (yyval.node) = (yyvsp[0].node);
2886 }
2887#line 2888 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2888 break;
2889
2890 case 98: /* OptionalOrRequiredArgument: TOK_OPTIONAL Type ArgumentName Default */
2891#line 1113 "src/webidl-parser.y"
2892 {
2893 struct webidl_node *argument;
2894 argument = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, (yyvsp[-1].text));
2895 argument = webidl_node_new(WEBIDL_NODE_TYPE_OPTIONAL, argument, (yyvsp[0].node));
2896 argument = webidl_node_prepend(argument, (yyvsp[-2].node)); /* add type node */
2897 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_ARGUMENT, NULL, argument);
2898 }
2899#line 2900 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2900 break;
2901
2902 case 99: /* OptionalOrRequiredArgument: Type Ellipsis ArgumentName */
2903#line 1122 "src/webidl-parser.y"
2904 {
2905 struct webidl_node *argument;
2906 argument = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, (yyvsp[0].text));
2907 argument = webidl_node_prepend(argument, (yyvsp[-1].node)); /* ellipsis node */
2908 argument = webidl_node_prepend(argument, (yyvsp[-2].node)); /* add type node */
2909 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_ARGUMENT, NULL, argument);
2910 }
2911#line 2912 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2912 break;
2913
2914 case 102: /* Ellipsis: %empty */
2915#line 1141 "src/webidl-parser.y"
2916 {
2917 (yyval.node) = NULL;
2918 }
2919#line 2920 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2920 break;
2921
2922 case 103: /* Ellipsis: TOK_ELLIPSIS */
2923#line 1146 "src/webidl-parser.y"
2924 {
2925 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_ELLIPSIS, NULL, NULL);
2926 }
2927#line 2928 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2928 break;
2929
2930 case 104: /* Iterable: TOK_ITERABLE '<' Type OptionalType '>' ';' */
2931#line 1154 "src/webidl-parser.y"
2932 {
2933 (yyval.node) = NULL;
2934 }
2935#line 2936 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2936 break;
2937
2938 case 105: /* Iterable: TOK_LEGACYITERABLE '<' Type '>' ';' */
2939#line 1159 "src/webidl-parser.y"
2940 {
2941 (yyval.node) = NULL;
2942 }
2943#line 2944 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2944 break;
2945
2946 case 106: /* OptionalType: %empty */
2947#line 1167 "src/webidl-parser.y"
2948 {
2949 (yyval.node) = NULL;
2950 }
2951#line 2952 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2952 break;
2953
2954 case 107: /* OptionalType: ',' Type */
2955#line 1172 "src/webidl-parser.y"
2956 {
2957 (yyval.node) = NULL;
2958 }
2959#line 2960 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2960 break;
2961
2962 case 111: /* ExtendedAttributeList: %empty */
2963#line 1192 "src/webidl-parser.y"
2964 {
2965 (yyval.node) = NULL;
2966 }
2967#line 2968 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2968 break;
2969
2970 case 112: /* ExtendedAttributeList: '[' ExtendedAttribute ExtendedAttributes ']' */
2971#line 1197 "src/webidl-parser.y"
2972 {
2974 (yyvsp[-1].node),
2975 (yyvsp[-2].node));
2976 }
2977#line 2978 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2978 break;
2979
2980 case 113: /* ExtendedAttributes: %empty */
2981#line 1207 "src/webidl-parser.y"
2982 {
2983 (yyval.node) = NULL;
2984 }
2985#line 2986 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2986 break;
2987
2988 case 114: /* ExtendedAttributes: ',' ExtendedAttribute ExtendedAttributes */
2989#line 1212 "src/webidl-parser.y"
2990 {
2992 (yyvsp[0].node),
2993 (yyvsp[-1].node));
2994 }
2995#line 2996 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
2996 break;
2997
2998 case 115: /* ExtendedAttribute: '(' ExtendedAttributeInner ')' ExtendedAttributeRest */
2999#line 1224 "src/webidl-parser.y"
3000 {
3001 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE, (yyvsp[0].node), (yyvsp[-2].node));
3002 }
3003#line 3004 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3004 break;
3005
3006 case 116: /* ExtendedAttribute: '[' ExtendedAttributeInner ']' ExtendedAttributeRest */
3007#line 1229 "src/webidl-parser.y"
3008 {
3009 /* @todo should be a WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE_SQUARE */
3010 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE, (yyvsp[0].node), (yyvsp[-2].node));
3011 }
3012#line 3013 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3013 break;
3014
3015 case 117: /* ExtendedAttribute: '{' ExtendedAttributeInner '}' ExtendedAttributeRest */
3016#line 1235 "src/webidl-parser.y"
3017 {
3018 /* @todo should be a WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE_CURLY */
3019 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE, (yyvsp[0].node), (yyvsp[-2].node));
3020 }
3021#line 3022 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3022 break;
3023
3024 case 118: /* ExtendedAttribute: TOK_CONSTRUCTOR */
3025#line 1241 "src/webidl-parser.y"
3026 {
3027 /* Constructor */
3029 NULL,
3030 strdup("Constructor"));
3031 }
3032#line 3033 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3033 break;
3034
3035 case 119: /* ExtendedAttribute: TOK_CONSTRUCTOR '(' ArgumentList ')' */
3036#line 1249 "src/webidl-parser.y"
3037 {
3038 /* Constructor */
3041 NULL,
3042 strdup("Constructor")),
3044 NULL,
3045 (yyvsp[-1].node)));
3046 }
3047#line 3048 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3048 break;
3049
3050 case 120: /* ExtendedAttribute: TOK_NAMEDCONSTRUCTOR '=' TOK_IDENTIFIER '(' ArgumentList ')' */
3051#line 1261 "src/webidl-parser.y"
3052 {
3053 /* Constructor */
3056 NULL,
3057 strdup("NamedConstructor")),
3060 NULL,
3061 (yyvsp[-3].text)),
3062 (yyvsp[-1].node)));
3063 }
3064#line 3065 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3065 break;
3066
3067 case 121: /* ExtendedAttribute: Other ExtendedAttributeRest */
3068#line 1275 "src/webidl-parser.y"
3069 {
3070 (yyval.node) = webidl_node_append((yyvsp[0].node),
3072 NULL,
3073 (yyvsp[-1].text)));
3074 }
3075#line 3076 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3076 break;
3077
3078 case 122: /* ExtendedAttributeRest: %empty */
3079#line 1286 "src/webidl-parser.y"
3080 {
3081 (yyval.node) = NULL;
3082 }
3083#line 3084 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3084 break;
3085
3086 case 123: /* ExtendedAttributeRest: ExtendedAttribute */
3087#line 1291 "src/webidl-parser.y"
3088 {
3089 (yyval.node) = (yyvsp[0].node);
3090 }
3091#line 3092 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3092 break;
3093
3094 case 124: /* ExtendedAttributeInner: %empty */
3095#line 1299 "src/webidl-parser.y"
3096 {
3097 (yyval.node) = NULL;
3098 }
3099#line 3100 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3100 break;
3101
3102 case 125: /* ExtendedAttributeInner: '(' ExtendedAttributeInner ')' ExtendedAttributeInner */
3103#line 1304 "src/webidl-parser.y"
3104 {
3105 (yyval.node) = webidl_node_prepend(
3107 NULL,
3108 (yyvsp[-2].node)),
3109 (yyvsp[0].node));
3110 }
3111#line 3112 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3112 break;
3113
3114 case 126: /* ExtendedAttributeInner: '[' ExtendedAttributeInner ']' ExtendedAttributeInner */
3115#line 1313 "src/webidl-parser.y"
3116 {
3117 /* @todo should be a WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE_SQUARE */
3118 (yyval.node) = webidl_node_prepend(
3120 NULL,
3121 (yyvsp[-2].node)),
3122 (yyvsp[0].node));
3123 }
3124#line 3125 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3125 break;
3126
3127 case 127: /* ExtendedAttributeInner: '{' ExtendedAttributeInner '}' ExtendedAttributeInner */
3128#line 1323 "src/webidl-parser.y"
3129 {
3130 /* @todo should be a WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE_CURLY */
3131 (yyval.node) = webidl_node_prepend(
3133 NULL,
3134 (yyvsp[-2].node)),
3135 (yyvsp[0].node));
3136 }
3137#line 3138 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3138 break;
3139
3140 case 128: /* ExtendedAttributeInner: OtherOrComma ExtendedAttributeInner */
3141#line 1333 "src/webidl-parser.y"
3142 {
3143 (yyval.node) = webidl_node_append((yyvsp[0].node),
3145 NULL,
3146 (yyvsp[-1].text)));
3147 }
3148#line 3149 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3149 break;
3150
3151 case 129: /* Other: TOK_INT_LITERAL */
3152#line 1344 "src/webidl-parser.y"
3153 {
3154 /* @todo loosing base info here might break the attribute */
3155 (yyval.text) = calloc(1, 32);
3156 snprintf((yyval.text), 32, "%ld", (yyvsp[0].value));
3157 }
3158#line 3159 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3159 break;
3160
3161 case 130: /* Other: TOK_FLOAT_LITERAL */
3162#line 1351 "src/webidl-parser.y"
3163 {
3164 (yyval.text) = (yyvsp[0].text);
3165 }
3166#line 3167 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3167 break;
3168
3169 case 131: /* Other: TOK_IDENTIFIER */
3170#line 1356 "src/webidl-parser.y"
3171 {
3172 (yyval.text) = (yyvsp[0].text);
3173 }
3174#line 3175 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3175 break;
3176
3177 case 132: /* Other: TOK_STRING_LITERAL */
3178#line 1361 "src/webidl-parser.y"
3179 {
3180 (yyval.text) = (yyvsp[0].text);
3181 }
3182#line 3183 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3183 break;
3184
3185 case 133: /* Other: TOK_OTHER_LITERAL */
3186#line 1366 "src/webidl-parser.y"
3187 {
3188 (yyval.text) = (yyvsp[0].text);
3189 }
3190#line 3191 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3191 break;
3192
3193 case 134: /* Other: '-' */
3194#line 1371 "src/webidl-parser.y"
3195 {
3196 (yyval.text) = strdup("-");
3197 }
3198#line 3199 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3199 break;
3200
3201 case 135: /* Other: '.' */
3202#line 1376 "src/webidl-parser.y"
3203 {
3204 (yyval.text) = strdup(".");
3205 }
3206#line 3207 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3207 break;
3208
3209 case 136: /* Other: TOK_ELLIPSIS */
3210#line 1381 "src/webidl-parser.y"
3211 {
3212 (yyval.text) = strdup("...");
3213 }
3214#line 3215 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3215 break;
3216
3217 case 137: /* Other: ':' */
3218#line 1386 "src/webidl-parser.y"
3219 {
3220 (yyval.text) = strdup(":");
3221 }
3222#line 3223 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3223 break;
3224
3225 case 138: /* Other: ';' */
3226#line 1391 "src/webidl-parser.y"
3227 {
3228 (yyval.text) = strdup(";");
3229 }
3230#line 3231 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3231 break;
3232
3233 case 139: /* Other: '<' */
3234#line 1396 "src/webidl-parser.y"
3235 {
3236 (yyval.text) = strdup("<");
3237 }
3238#line 3239 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3239 break;
3240
3241 case 140: /* Other: '=' */
3242#line 1401 "src/webidl-parser.y"
3243 {
3244 (yyval.text) = strdup("=");
3245 }
3246#line 3247 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3247 break;
3248
3249 case 141: /* Other: '>' */
3250#line 1406 "src/webidl-parser.y"
3251 {
3252 (yyval.text) = strdup(">");
3253 }
3254#line 3255 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3255 break;
3256
3257 case 142: /* Other: '?' */
3258#line 1411 "src/webidl-parser.y"
3259 {
3260 (yyval.text) = strdup("?");
3261 }
3262#line 3263 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3263 break;
3264
3265 case 143: /* Other: TOK_DATE */
3266#line 1416 "src/webidl-parser.y"
3267 {
3268 (yyval.text) = strdup("Date");
3269 }
3270#line 3271 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3271 break;
3272
3273 case 144: /* Other: TOK_STRING */
3274#line 1421 "src/webidl-parser.y"
3275 {
3276 (yyval.text) = strdup("DOMString");
3277 }
3278#line 3279 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3279 break;
3280
3281 case 145: /* Other: TOK_INFINITY */
3282#line 1426 "src/webidl-parser.y"
3283 {
3284 (yyval.text) = strdup("Infinity");
3285 }
3286#line 3287 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3287 break;
3288
3289 case 146: /* Other: TOK_NAN */
3290#line 1431 "src/webidl-parser.y"
3291 {
3292 (yyval.text) = strdup("NaN");
3293 }
3294#line 3295 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3295 break;
3296
3297 case 147: /* Other: TOK_ANY */
3298#line 1436 "src/webidl-parser.y"
3299 {
3300 (yyval.text) = strdup("any");
3301 }
3302#line 3303 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3303 break;
3304
3305 case 148: /* Other: TOK_BOOLEAN */
3306#line 1441 "src/webidl-parser.y"
3307 {
3308 (yyval.text) = strdup("boolean");
3309 }
3310#line 3311 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3311 break;
3312
3313 case 149: /* Other: TOK_BYTE */
3314#line 1446 "src/webidl-parser.y"
3315 {
3316 (yyval.text) = strdup("byte");
3317 }
3318#line 3319 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3319 break;
3320
3321 case 150: /* Other: TOK_DOUBLE */
3322#line 1451 "src/webidl-parser.y"
3323 {
3324 (yyval.text) = strdup("double");
3325 }
3326#line 3327 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3327 break;
3328
3329 case 151: /* Other: TOK_FALSE */
3330#line 1456 "src/webidl-parser.y"
3331 {
3332 (yyval.text) = strdup("false");
3333 }
3334#line 3335 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3335 break;
3336
3337 case 152: /* Other: TOK_FLOAT */
3338#line 1461 "src/webidl-parser.y"
3339 {
3340 (yyval.text) = strdup("float");
3341 }
3342#line 3343 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3343 break;
3344
3345 case 153: /* Other: TOK_LONG */
3346#line 1466 "src/webidl-parser.y"
3347 {
3348 (yyval.text) = strdup("long");
3349 }
3350#line 3351 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3351 break;
3352
3353 case 154: /* Other: TOK_NULL_LITERAL */
3354#line 1471 "src/webidl-parser.y"
3355 {
3356 (yyval.text) = strdup("null");
3357 }
3358#line 3359 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3359 break;
3360
3361 case 155: /* Other: TOK_OBJECT */
3362#line 1476 "src/webidl-parser.y"
3363 {
3364 (yyval.text) = strdup("object");
3365 }
3366#line 3367 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3367 break;
3368
3369 case 156: /* Other: TOK_OCTET */
3370#line 1481 "src/webidl-parser.y"
3371 {
3372 (yyval.text) = strdup("octet");
3373 }
3374#line 3375 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3375 break;
3376
3377 case 157: /* Other: TOK_OR */
3378#line 1486 "src/webidl-parser.y"
3379 {
3380 (yyval.text) = strdup("or");
3381 }
3382#line 3383 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3383 break;
3384
3385 case 158: /* Other: TOK_OPTIONAL */
3386#line 1491 "src/webidl-parser.y"
3387 {
3388 (yyval.text) = strdup("optional");
3389 }
3390#line 3391 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3391 break;
3392
3393 case 159: /* Other: TOK_SEQUENCE */
3394#line 1496 "src/webidl-parser.y"
3395 {
3396 (yyval.text) = strdup("sequence");
3397 }
3398#line 3399 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3399 break;
3400
3401 case 160: /* Other: TOK_SHORT */
3402#line 1501 "src/webidl-parser.y"
3403 {
3404 (yyval.text) = strdup("short");
3405 }
3406#line 3407 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3407 break;
3408
3409 case 161: /* Other: TOK_TRUE */
3410#line 1506 "src/webidl-parser.y"
3411 {
3412 (yyval.text) = strdup("true");
3413 }
3414#line 3415 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3415 break;
3416
3417 case 162: /* Other: TOK_UNSIGNED */
3418#line 1511 "src/webidl-parser.y"
3419 {
3420 (yyval.text) = strdup("unsigned");
3421 }
3422#line 3423 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3423 break;
3424
3425 case 163: /* Other: TOK_VOID */
3426#line 1516 "src/webidl-parser.y"
3427 {
3428 (yyval.text) = strdup("void");
3429 }
3430#line 3431 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3431 break;
3432
3433 case 164: /* Other: ArgumentNameKeyword */
3434#line 1521 "src/webidl-parser.y"
3435 {
3436 (yyval.text) = (yyvsp[0].text);
3437 }
3438#line 3439 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3439 break;
3440
3441 case 165: /* ArgumentNameKeyword: TOK_ATTRIBUTE */
3442#line 1531 "src/webidl-parser.y"
3443 {
3444 (yyval.text) = strdup("attribute");
3445 }
3446#line 3447 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3447 break;
3448
3449 case 166: /* ArgumentNameKeyword: TOK_CALLBACK */
3450#line 1536 "src/webidl-parser.y"
3451 {
3452 (yyval.text) = strdup("callback");
3453 }
3454#line 3455 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3455 break;
3456
3457 case 167: /* ArgumentNameKeyword: TOK_CONST */
3458#line 1541 "src/webidl-parser.y"
3459 {
3460 (yyval.text) = strdup("const");
3461 }
3462#line 3463 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3463 break;
3464
3465 case 168: /* ArgumentNameKeyword: TOK_CREATOR */
3466#line 1546 "src/webidl-parser.y"
3467 {
3468 (yyval.text) = strdup("creator");
3469 }
3470#line 3471 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3471 break;
3472
3473 case 169: /* ArgumentNameKeyword: TOK_DELETER */
3474#line 1551 "src/webidl-parser.y"
3475 {
3476 (yyval.text) = strdup("deleter");
3477 }
3478#line 3479 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3479 break;
3480
3481 case 170: /* ArgumentNameKeyword: TOK_DICTIONARY */
3482#line 1556 "src/webidl-parser.y"
3483 {
3484 (yyval.text) = strdup("dictionary");
3485 }
3486#line 3487 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3487 break;
3488
3489 case 171: /* ArgumentNameKeyword: TOK_ENUM */
3490#line 1561 "src/webidl-parser.y"
3491 {
3492 (yyval.text) = strdup("enum");
3493 }
3494#line 3495 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3495 break;
3496
3497 case 172: /* ArgumentNameKeyword: TOK_EXCEPTION */
3498#line 1566 "src/webidl-parser.y"
3499 {
3500 (yyval.text) = strdup("exception");
3501 }
3502#line 3503 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3503 break;
3504
3505 case 173: /* ArgumentNameKeyword: TOK_GETTER */
3506#line 1571 "src/webidl-parser.y"
3507 {
3508 (yyval.text) = strdup("getter");
3509 }
3510#line 3511 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3511 break;
3512
3513 case 174: /* ArgumentNameKeyword: TOK_IMPLEMENTS */
3514#line 1576 "src/webidl-parser.y"
3515 {
3516 (yyval.text) = strdup("implements");
3517 }
3518#line 3519 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3519 break;
3520
3521 case 175: /* ArgumentNameKeyword: TOK_INHERIT */
3522#line 1581 "src/webidl-parser.y"
3523 {
3524 (yyval.text) = strdup("inherit");
3525 }
3526#line 3527 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3527 break;
3528
3529 case 176: /* ArgumentNameKeyword: TOK_INTERFACE */
3530#line 1586 "src/webidl-parser.y"
3531 {
3532 (yyval.text) = strdup("interface");
3533 }
3534#line 3535 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3535 break;
3536
3537 case 177: /* ArgumentNameKeyword: TOK_ITERABLE */
3538#line 1591 "src/webidl-parser.y"
3539 {
3540 (yyval.text) = strdup("iterable");
3541 }
3542#line 3543 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3543 break;
3544
3545 case 178: /* ArgumentNameKeyword: TOK_LEGACYCALLER */
3546#line 1596 "src/webidl-parser.y"
3547 {
3548 (yyval.text) = strdup("legacycaller");
3549 }
3550#line 3551 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3551 break;
3552
3553 case 179: /* ArgumentNameKeyword: TOK_LEGACYITERABLE */
3554#line 1601 "src/webidl-parser.y"
3555 {
3556 (yyval.text) = strdup("legacyiterable");
3557 }
3558#line 3559 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3559 break;
3560
3561 case 180: /* ArgumentNameKeyword: TOK_PARTIAL */
3562#line 1606 "src/webidl-parser.y"
3563 {
3564 (yyval.text) = strdup("partial");
3565 }
3566#line 3567 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3567 break;
3568
3569 case 181: /* ArgumentNameKeyword: TOK_REQUIRED */
3570#line 1611 "src/webidl-parser.y"
3571 {
3572 (yyval.text) = strdup("required");
3573 }
3574#line 3575 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3575 break;
3576
3577 case 182: /* ArgumentNameKeyword: TOK_SETTER */
3578#line 1616 "src/webidl-parser.y"
3579 {
3580 (yyval.text) = strdup("setter");
3581 }
3582#line 3583 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3583 break;
3584
3585 case 183: /* ArgumentNameKeyword: TOK_STATIC */
3586#line 1621 "src/webidl-parser.y"
3587 {
3588 (yyval.text) = strdup("static");
3589 }
3590#line 3591 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3591 break;
3592
3593 case 184: /* ArgumentNameKeyword: TOK_STRINGIFIER */
3594#line 1626 "src/webidl-parser.y"
3595 {
3596 (yyval.text) = strdup("stringifier");
3597 }
3598#line 3599 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3599 break;
3600
3601 case 185: /* ArgumentNameKeyword: TOK_TYPEDEF */
3602#line 1631 "src/webidl-parser.y"
3603 {
3604 (yyval.text) = strdup("typedef");
3605 }
3606#line 3607 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3607 break;
3608
3609 case 186: /* ArgumentNameKeyword: TOK_UNRESTRICTED */
3610#line 1636 "src/webidl-parser.y"
3611 {
3612 (yyval.text) = strdup("unrestricted");
3613 }
3614#line 3615 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3615 break;
3616
3617 case 187: /* OtherOrComma: Other */
3618#line 1644 "src/webidl-parser.y"
3619 {
3620 (yyval.text) = (yyvsp[0].text);
3621 }
3622#line 3623 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3623 break;
3624
3625 case 188: /* OtherOrComma: ',' */
3626#line 1649 "src/webidl-parser.y"
3627 {
3628 (yyval.text) = strdup(",");
3629 }
3630#line 3631 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3631 break;
3632
3633 case 189: /* Type: SingleType */
3634#line 1657 "src/webidl-parser.y"
3635 {
3636 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE, NULL, (yyvsp[0].node));
3637 }
3638#line 3639 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3639 break;
3640
3641 case 190: /* Type: UnionType TypeSuffix */
3642#line 1662 "src/webidl-parser.y"
3643 {
3644 /* todo handle suffix */
3645 (yyval.node) = (yyvsp[-1].node);
3646 }
3647#line 3648 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3648 break;
3649
3650 case 192: /* SingleType: TOK_ANY TypeSuffixStartingWithArray */
3651#line 1673 "src/webidl-parser.y"
3652 {
3653 /* todo deal with TypeSuffixStartingWithArray */
3655 NULL,
3657 }
3658#line 3659 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3659 break;
3660
3661 case 193: /* UnionType: '(' UnionMemberType TOK_OR UnionMemberType UnionMemberTypes ')' */
3662#line 1684 "src/webidl-parser.y"
3663 {
3664 (yyval.node) = webidl_node_prepend((yyvsp[-4].node), webidl_node_prepend((yyvsp[-2].node), (yyvsp[-1].node)));
3665 }
3666#line 3667 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3667 break;
3668
3669 case 194: /* UnionMemberType: NonAnyType */
3670#line 1692 "src/webidl-parser.y"
3671 {
3672 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE, NULL, (yyvsp[0].node));
3673 }
3674#line 3675 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3675 break;
3676
3677 case 195: /* UnionMemberType: UnionType TypeSuffix */
3678#line 1697 "src/webidl-parser.y"
3679 {
3680 /* todo handle suffix */
3681 (yyval.node) = (yyvsp[-1].node);
3682 }
3683#line 3684 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3684 break;
3685
3686 case 196: /* UnionMemberType: TOK_ANY '[' ']' TypeSuffix */
3687#line 1703 "src/webidl-parser.y"
3688 {
3689 (yyval.node) = NULL;
3690 }
3691#line 3692 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3692 break;
3693
3694 case 197: /* UnionMemberTypes: %empty */
3695#line 1711 "src/webidl-parser.y"
3696 {
3697 (yyval.node) = NULL;
3698 }
3699#line 3700 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3700 break;
3701
3702 case 198: /* UnionMemberTypes: TOK_OR UnionMemberType UnionMemberTypes */
3703#line 1716 "src/webidl-parser.y"
3704 {
3705 (yyval.node) = webidl_node_prepend((yyvsp[-1].node), (yyvsp[0].node));
3706 }
3707#line 3708 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3708 break;
3709
3710 case 199: /* NonAnyType: PrimitiveType TypeSuffix */
3711#line 1727 "src/webidl-parser.y"
3712 {
3713 (yyval.node) = webidl_node_prepend((yyvsp[-1].node), (yyvsp[0].node));
3714 }
3715#line 3716 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3716 break;
3717
3718 case 200: /* NonAnyType: PromiseType TypeSuffix */
3719#line 1732 "src/webidl-parser.y"
3720 {
3721 /* second edition adds promise types */
3722 (yyval.node) = webidl_node_prepend((yyvsp[-1].node), (yyvsp[0].node));
3723 }
3724#line 3725 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3725 break;
3726
3727 case 201: /* NonAnyType: TOK_STRING TypeSuffix */
3728#line 1738 "src/webidl-parser.y"
3729 {
3731 (yyvsp[0].node),
3733 }
3734#line 3735 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3735 break;
3736
3737 case 202: /* NonAnyType: TOK_IDENTIFIER TypeSuffix */
3738#line 1745 "src/webidl-parser.y"
3739 {
3740 struct webidl_node *type;
3742 (yyvsp[0].node),
3744 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, type, (yyvsp[-1].text));
3745 }
3746#line 3747 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3747 break;
3748
3749 case 203: /* NonAnyType: TOK_SEQUENCE '<' Type '>' Null */
3750#line 1754 "src/webidl-parser.y"
3751 {
3753 (yyvsp[-2].node),
3755 }
3756#line 3757 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3757 break;
3758
3759 case 204: /* NonAnyType: TOK_OBJECT TypeSuffix */
3760#line 1761 "src/webidl-parser.y"
3761 {
3763 (yyvsp[0].node),
3765 }
3766#line 3767 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3767 break;
3768
3769 case 205: /* NonAnyType: TOK_DATE TypeSuffix */
3770#line 1768 "src/webidl-parser.y"
3771 {
3773 (yyvsp[0].node),
3775 }
3776#line 3777 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3777 break;
3778
3779 case 206: /* ConstType: PrimitiveType Null */
3780#line 1778 "src/webidl-parser.y"
3781 {
3782 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE, NULL, (yyvsp[-1].node));
3783 }
3784#line 3785 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3785 break;
3786
3787 case 207: /* ConstType: TOK_IDENTIFIER Null */
3788#line 1783 "src/webidl-parser.y"
3789 {
3790 struct webidl_node *type;
3792 NULL,
3795 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE, NULL, type);
3796 }
3797#line 3798 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3798 break;
3799
3800 case 210: /* PrimitiveType: TOK_BOOLEAN */
3801#line 1801 "src/webidl-parser.y"
3802 {
3804 NULL,
3806 }
3807#line 3808 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3808 break;
3809
3810 case 211: /* PrimitiveType: TOK_BYTE */
3811#line 1808 "src/webidl-parser.y"
3812 {
3814 NULL,
3816 }
3817#line 3818 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3818 break;
3819
3820 case 212: /* PrimitiveType: TOK_OCTET */
3821#line 1815 "src/webidl-parser.y"
3822 {
3824 NULL,
3826 }
3827#line 3828 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3828 break;
3829
3830 case 213: /* UnrestrictedFloatType: TOK_UNRESTRICTED FloatType */
3831#line 1825 "src/webidl-parser.y"
3832 {
3834 (yyvsp[0].node),
3836 }
3837#line 3838 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3838 break;
3839
3840 case 215: /* FloatType: TOK_FLOAT */
3841#line 1837 "src/webidl-parser.y"
3842 {
3844 NULL,
3846 }
3847#line 3848 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3848 break;
3849
3850 case 216: /* FloatType: TOK_DOUBLE */
3851#line 1844 "src/webidl-parser.y"
3852 {
3854 NULL,
3856 }
3857#line 3858 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3858 break;
3859
3860 case 217: /* UnsignedIntegerType: TOK_UNSIGNED IntegerType */
3861#line 1854 "src/webidl-parser.y"
3862 {
3864 (yyvsp[0].node),
3866 }
3867#line 3868 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3868 break;
3869
3870 case 219: /* IntegerType: TOK_SHORT */
3871#line 1866 "src/webidl-parser.y"
3872 {
3874 NULL,
3876 }
3877#line 3878 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3878 break;
3879
3880 case 220: /* IntegerType: TOK_LONG OptionalLong */
3881#line 1873 "src/webidl-parser.y"
3882 {
3883 if ((yyvsp[0].isit)) {
3885 NULL,
3887 } else {
3889 NULL,
3891 }
3892 }
3893#line 3894 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3894 break;
3895
3896 case 221: /* OptionalLong: %empty */
3897#line 1889 "src/webidl-parser.y"
3898 {
3899 (yyval.isit) = false;
3900 }
3901#line 3902 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3902 break;
3903
3904 case 222: /* OptionalLong: TOK_LONG */
3905#line 1894 "src/webidl-parser.y"
3906 {
3907 (yyval.isit) = true;
3908 }
3909#line 3910 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3910 break;
3911
3912 case 223: /* PromiseType: TOK_PROMISE '<' ReturnType '>' */
3913#line 1902 "src/webidl-parser.y"
3914 {
3915 (yyval.node) = NULL;
3916 }
3917#line 3918 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3918 break;
3919
3920 case 224: /* TypeSuffix: %empty */
3921#line 1910 "src/webidl-parser.y"
3922 {
3923 (yyval.node) = NULL;
3924 }
3925#line 3926 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3926 break;
3927
3928 case 225: /* TypeSuffix: '[' ']' TypeSuffix */
3929#line 1915 "src/webidl-parser.y"
3930 {
3931 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_ARRAY, (yyvsp[0].node), NULL);
3932 }
3933#line 3934 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3934 break;
3935
3936 case 226: /* TypeSuffix: '?' TypeSuffixStartingWithArray */
3937#line 1920 "src/webidl-parser.y"
3938 {
3939 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_NULLABLE, (yyvsp[0].node), NULL);
3940 }
3941#line 3942 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3942 break;
3943
3944 case 227: /* TypeSuffixStartingWithArray: %empty */
3945#line 1928 "src/webidl-parser.y"
3946 {
3947 (yyval.node) = NULL;
3948 }
3949#line 3950 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3950 break;
3951
3952 case 228: /* TypeSuffixStartingWithArray: '[' ']' TypeSuffix */
3953#line 1933 "src/webidl-parser.y"
3954 {
3955 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_ARRAY, (yyvsp[0].node), NULL);
3956 }
3957#line 3958 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3958 break;
3959
3960 case 232: /* ReturnType: TOK_VOID */
3961#line 1950 "src/webidl-parser.y"
3962 {
3963 struct webidl_node *type;
3965 NULL,
3967 (yyval.node) = webidl_node_new(WEBIDL_NODE_TYPE_TYPE, NULL, type);
3968 }
3969#line 3970 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3970 break;
3971
3972
3973#line 3974 "build-x86_64-linux-gnu-x86_64-linux-gnu-release-binary/webidl-parser.c"
3974
3975 default: break;
3976 }
3977 /* User semantic actions sometimes alter yychar, and that requires
3978 that yytoken be updated with the new translation. We take the
3979 approach of translating immediately before every use of yytoken.
3980 One alternative is translating here after every semantic action,
3981 but that translation would be missed if the semantic action invokes
3982 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3983 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3984 incorrect destructor might then be invoked immediately. In the
3985 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3986 to an incorrect destructor call or verbose syntax error message
3987 before the lookahead is translated. */
3988 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3989
3990 YYPOPSTACK (yylen);
3991 yylen = 0;
3992
3993 *++yyvsp = yyval;
3994 *++yylsp = yyloc;
3995
3996 /* Now 'shift' the result of the reduction. Determine what state
3997 that goes to, based on the state we popped back to and the rule
3998 number reduced by. */
3999 {
4000 const int yylhs = yyr1[yyn] - YYNTOKENS;
4001 const int yyi = yypgoto[yylhs] + *yyssp;
4002 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
4003 ? yytable[yyi]
4004 : yydefgoto[yylhs]);
4005 }
4006
4007 goto yynewstate;
4008
4009
4010/*--------------------------------------.
4011| yyerrlab -- here on detecting error. |
4012`--------------------------------------*/
4013yyerrlab:
4014 /* Make sure we have latest lookahead translation. See comments at
4015 user semantic actions for why this is necessary. */
4016 yytoken = yychar == WEBIDL_EMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
4017 /* If not already recovering from an error, report this error. */
4018 if (!yyerrstatus)
4019 {
4020 ++yynerrs;
4021 {
4022 yypcontext_t yyctx
4023 = {yyssp, yytoken, &yylloc};
4024 char const *yymsgp = YY_("syntax error");
4025 int yysyntax_error_status;
4026 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
4027 if (yysyntax_error_status == 0)
4028 yymsgp = yymsg;
4029 else if (yysyntax_error_status == -1)
4030 {
4031 if (yymsg != yymsgbuf)
4032 YYSTACK_FREE (yymsg);
4033 yymsg = YY_CAST (char *,
4034 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
4035 if (yymsg)
4036 {
4037 yysyntax_error_status
4038 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
4039 yymsgp = yymsg;
4040 }
4041 else
4042 {
4043 yymsg = yymsgbuf;
4044 yymsg_alloc = sizeof yymsgbuf;
4045 yysyntax_error_status = YYENOMEM;
4046 }
4047 }
4048 yyerror (&yylloc, webidl_ast, yymsgp);
4049 if (yysyntax_error_status == YYENOMEM)
4050 YYNOMEM;
4051 }
4052 }
4053
4054 yyerror_range[1] = yylloc;
4055 if (yyerrstatus == 3)
4056 {
4057 /* If just tried and failed to reuse lookahead token after an
4058 error, discard it. */
4059
4060 if (yychar <= WEBIDL_EOF)
4061 {
4062 /* Return failure if at end of input. */
4063 if (yychar == WEBIDL_EOF)
4064 YYABORT;
4065 }
4066 else
4067 {
4068 yydestruct ("Error: discarding",
4069 yytoken, &yylval, &yylloc, webidl_ast);
4070 yychar = WEBIDL_EMPTY;
4071 }
4072 }
4073
4074 /* Else will try to reuse lookahead token after shifting the error
4075 token. */
4076 goto yyerrlab1;
4077
4078
4079/*---------------------------------------------------.
4080| yyerrorlab -- error raised explicitly by YYERROR. |
4081`---------------------------------------------------*/
4082yyerrorlab:
4083 /* Pacify compilers when the user code never invokes YYERROR and the
4084 label yyerrorlab therefore never appears in user code. */
4085 if (0)
4086 YYERROR;
4087 ++yynerrs;
4088
4089 /* Do not reclaim the symbols of the rule whose action triggered
4090 this YYERROR. */
4091 YYPOPSTACK (yylen);
4092 yylen = 0;
4093 YY_STACK_PRINT (yyss, yyssp);
4094 yystate = *yyssp;
4095 goto yyerrlab1;
4096
4097
4098/*-------------------------------------------------------------.
4099| yyerrlab1 -- common code for both syntax error and YYERROR. |
4100`-------------------------------------------------------------*/
4101yyerrlab1:
4102 yyerrstatus = 3; /* Each real token shifted decrements this. */
4103
4104 /* Pop stack until we find a state that shifts the error token. */
4105 for (;;)
4106 {
4107 yyn = yypact[yystate];
4108 if (!yypact_value_is_default (yyn))
4109 {
4110 yyn += YYSYMBOL_YYerror;
4111 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
4112 {
4113 yyn = yytable[yyn];
4114 if (0 < yyn)
4115 break;
4116 }
4117 }
4118
4119 /* Pop the current state because it cannot handle the error token. */
4120 if (yyssp == yyss)
4121 YYABORT;
4122
4123 yyerror_range[1] = *yylsp;
4124 yydestruct ("Error: popping",
4125 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, webidl_ast);
4126 YYPOPSTACK (1);
4127 yystate = *yyssp;
4128 YY_STACK_PRINT (yyss, yyssp);
4129 }
4130
4132 *++yyvsp = yylval;
4134
4135 yyerror_range[2] = yylloc;
4136 ++yylsp;
4137 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
4138
4139 /* Shift the error token. */
4140 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
4141
4142 yystate = yyn;
4143 goto yynewstate;
4144
4145
4146/*-------------------------------------.
4147| yyacceptlab -- YYACCEPT comes here. |
4148`-------------------------------------*/
4149yyacceptlab:
4150 yyresult = 0;
4151 goto yyreturnlab;
4152
4153
4154/*-----------------------------------.
4155| yyabortlab -- YYABORT comes here. |
4156`-----------------------------------*/
4157yyabortlab:
4158 yyresult = 1;
4159 goto yyreturnlab;
4160
4161
4162/*-----------------------------------------------------------.
4163| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
4164`-----------------------------------------------------------*/
4165yyexhaustedlab:
4166 yyerror (&yylloc, webidl_ast, YY_("memory exhausted"));
4167 yyresult = 2;
4168 goto yyreturnlab;
4169
4170
4171/*----------------------------------------------------------.
4172| yyreturnlab -- parsing is finished, clean up and return. |
4173`----------------------------------------------------------*/
4174yyreturnlab:
4175 if (yychar != WEBIDL_EMPTY)
4176 {
4177 /* Make sure we have latest lookahead translation. See comments at
4178 user semantic actions for why this is necessary. */
4179 yytoken = YYTRANSLATE (yychar);
4180 yydestruct ("Cleanup: discarding lookahead",
4181 yytoken, &yylval, &yylloc, webidl_ast);
4182 }
4183 /* Do not reclaim the symbols of the rule whose action triggered
4184 this YYABORT or YYACCEPT. */
4185 YYPOPSTACK (yylen);
4186 YY_STACK_PRINT (yyss, yyssp);
4187 while (yyssp != yyss)
4188 {
4189 yydestruct ("Cleanup: popping",
4190 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, webidl_ast);
4191 YYPOPSTACK (1);
4192 }
4193#ifndef yyoverflow
4194 if (yyss != yyssa)
4195 YYSTACK_FREE (yyss);
4196#endif
4197 if (yymsg != yymsgbuf)
4198 YYSTACK_FREE (yymsg);
4199 return yyresult;
4200}
4201
4202#line 1960 "src/webidl-parser.y"
4203
#define YYSTYPE
YYLTYPE * yylloc
YYSTYPE * yylval
yysymbol_kind_t
short yytype_int16
unsigned char yytype_uint8
int yy_state_fast_t
signed char yytype_int8
yytype_int8 yy_state_t
char * text
Definition webidl-ast.c:36
struct webidl_node * node
Definition webidl-ast.c:35
void * value
Definition webidl-ast.c:34
enum webidl_node_type type
Definition webidl-ast.c:31
yysymbol_kind_t yytoken
yy_state_t * yyssp
#define UNUSED(x)
Definition utils.h:50
struct webidl_node * webidl_node_getnode(struct webidl_node *node)
Definition webidl-ast.c:335
struct webidl_node * webidl_node_new(enum webidl_node_type type, struct webidl_node *l, void *r)
Definition webidl-ast.c:124
struct webidl_node * webidl_node_find_type_ident(struct webidl_node *root_node, enum webidl_node_type type, const char *ident)
Definition webidl-ast.c:246
struct webidl_node * webidl_node_append(struct webidl_node *list, struct webidl_node *node)
Definition webidl-ast.c:64
struct webidl_node * webidl_node_prepend(struct webidl_node *list, struct webidl_node *inst)
Definition webidl-ast.c:44
struct webidl_node * webidl_node_add(struct webidl_node *node, struct webidl_node *list)
Definition webidl-ast.c:87
struct webidl_node * webidl_new_number_node(enum webidl_node_type type, struct webidl_node *l, int number)
Definition webidl-ast.c:138
struct webidl_node * webidl_node_find_type(struct webidl_node *node, struct webidl_node *prev, enum webidl_node_type type)
Definition webidl-ast.c:233
@ WEBIDL_TYPE_DOUBLE
Definition webidl-ast.h:58
@ WEBIDL_TYPE_SHORT
Definition webidl-ast.h:59
@ WEBIDL_TYPE_STRING
Definition webidl-ast.h:62
@ WEBIDL_TYPE_ANY
Definition webidl-ast.h:52
@ WEBIDL_TYPE_BOOL
Definition webidl-ast.h:54
@ WEBIDL_TYPE_OBJECT
Definition webidl-ast.h:64
@ WEBIDL_TYPE_DATE
Definition webidl-ast.h:65
@ WEBIDL_TYPE_OCTET
Definition webidl-ast.h:56
@ WEBIDL_TYPE_SEQUENCE
Definition webidl-ast.h:63
@ WEBIDL_TYPE_LONGLONG
Definition webidl-ast.h:61
@ WEBIDL_TYPE_USER
Definition webidl-ast.h:53
@ WEBIDL_TYPE_VOID
Definition webidl-ast.h:66
@ WEBIDL_TYPE_BYTE
Definition webidl-ast.h:55
@ WEBIDL_TYPE_LONG
Definition webidl-ast.h:60
@ WEBIDL_TYPE_FLOAT
Definition webidl-ast.h:57
@ WEBIDL_TYPE_SPECIAL_CREATOR
Definition webidl-ast.h:83
@ WEBIDL_TYPE_SPECIAL_SETTER
Definition webidl-ast.h:82
@ WEBIDL_TYPE_SPECIAL_DELETER
Definition webidl-ast.h:84
@ WEBIDL_TYPE_SPECIAL_GETTER
Definition webidl-ast.h:81
@ WEBIDL_TYPE_SPECIAL_LEGACYCALLER
Definition webidl-ast.h:85
@ WEBIDL_NODE_TYPE_TYPE_ARRAY
Definition webidl-ast.h:39
@ WEBIDL_NODE_TYPE_LITERAL_STRING
Definition webidl-ast.h:45
@ WEBIDL_NODE_TYPE_IDENT
Definition webidl-ast.h:15
@ WEBIDL_NODE_TYPE_CONST
Definition webidl-ast.h:27
@ WEBIDL_NODE_TYPE_DICTIONARY
Definition webidl-ast.h:29
@ WEBIDL_NODE_TYPE_LIST
Definition webidl-ast.h:19
@ WEBIDL_NODE_TYPE_TYPE_BASE
Definition webidl-ast.h:37
@ WEBIDL_NODE_TYPE_LITERAL_NULL
Definition webidl-ast.h:41
@ WEBIDL_NODE_TYPE_OPERATION
Definition webidl-ast.h:26
@ WEBIDL_NODE_TYPE_INTERFACE
Definition webidl-ast.h:22
@ WEBIDL_NODE_TYPE_EXTENDED_ATTRIBUTE
Definition webidl-ast.h:47
@ WEBIDL_NODE_TYPE_TYPE
Definition webidl-ast.h:36
@ WEBIDL_NODE_TYPE_SPECIAL
Definition webidl-ast.h:32
@ WEBIDL_NODE_TYPE_TYPE_NULLABLE
Definition webidl-ast.h:38
@ WEBIDL_NODE_TYPE_INHERITANCE
Definition webidl-ast.h:31
@ WEBIDL_NODE_TYPE_ATTRIBUTE
Definition webidl-ast.h:25
@ WEBIDL_NODE_TYPE_MODIFIER
Definition webidl-ast.h:17
@ WEBIDL_NODE_TYPE_OPTIONAL
Definition webidl-ast.h:34
@ WEBIDL_NODE_TYPE_LITERAL_BOOL
Definition webidl-ast.h:43
@ WEBIDL_NODE_TYPE_ARGUMENT
Definition webidl-ast.h:33
@ WEBIDL_NODE_TYPE_ELLIPSIS
Definition webidl-ast.h:35
@ WEBIDL_NODE_TYPE_LITERAL_INT
Definition webidl-ast.h:42
@ WEBIDL_NODE_TYPE_INTERFACE_IMPLEMENTS
Definition webidl-ast.h:23
@ WEBIDL_NODE_TYPE_LITERAL_FLOAT
Definition webidl-ast.h:44
@ WEBIDL_TYPE_MODIFIER_INHERIT
Definition webidl-ast.h:76
@ WEBIDL_TYPE_MODIFIER_UNSIGNED
Definition webidl-ast.h:72
@ WEBIDL_TYPE_MODIFIER_STATIC
Definition webidl-ast.h:75
@ WEBIDL_TYPE_MODIFIER_UNRESTRICTED
Definition webidl-ast.h:73
@ WEBIDL_TYPE_MODIFIER_READONLY
Definition webidl-ast.h:74
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
#define YYMAXDEPTH
#define YYSTACK_FREE
yysymbol_kind_t
@ YYSYMBOL_77_
@ YYSYMBOL_TOK_LEGACYCALLER
@ YYSYMBOL_TOK_INTERFACE
@ YYSYMBOL_ReadOnly
@ YYSYMBOL_Typedef
@ YYSYMBOL_74_
@ YYSYMBOL_TOK_REQUIRED
@ YYSYMBOL_68_
@ YYSYMBOL_TOK_FLOAT_LITERAL
@ YYSYMBOL_TOK_DATE
@ YYSYMBOL_TOK_TRUE
@ YYSYMBOL_ArgumentList
@ YYSYMBOL_TOK_OBJECT
@ YYSYMBOL_OptionalIdentifier
@ YYSYMBOL_TOK_CONSTRUCTOR
@ YYSYMBOL_Interface
@ YYSYMBOL_Other
@ YYSYMBOL_UnionMemberType
@ YYSYMBOL_Partial
@ YYSYMBOL_TOK_DELETER
@ YYSYMBOL_YYUNDEF
@ YYSYMBOL_TOK_OR
@ YYSYMBOL_ConstType
@ YYSYMBOL_71_
@ YYSYMBOL_StaticMember
@ YYSYMBOL_ArgumentNameKeyword
@ YYSYMBOL_Special
@ YYSYMBOL_TOK_NATIVE
@ YYSYMBOL_ExtendedAttribute
@ YYSYMBOL_CallbackRest
@ YYSYMBOL_InterfaceMember
@ YYSYMBOL_IntegerType
@ YYSYMBOL_PrimitiveType
@ YYSYMBOL_ReturnType
@ YYSYMBOL_DictionaryMember
@ YYSYMBOL_TOK_CONST
@ YYSYMBOL_OtherOrComma
@ YYSYMBOL_TOK_GETTER
@ YYSYMBOL_TOK_EXCEPTION
@ YYSYMBOL_ExtendedAttributeRest
@ YYSYMBOL_OperationRest
@ YYSYMBOL_Null
@ YYSYMBOL_TOK_FALSE
@ YYSYMBOL_Definitions
@ YYSYMBOL_TOK_ANY
@ YYSYMBOL_Default
@ YYSYMBOL_Argument
@ YYSYMBOL_AttributeOrOperation
@ YYSYMBOL_TOK_READONLY
@ YYSYMBOL_StaticMemberRest
@ YYSYMBOL_AttributeNameKeyword
@ YYSYMBOL_TOK_ATTRIBUTE
@ YYSYMBOL_Inherit
@ YYSYMBOL_YYerror
@ YYSYMBOL_TOK_UNSIGNED
@ YYSYMBOL_SingleType
@ YYSYMBOL_TOK_ITERABLE
@ YYSYMBOL_PartialDefinition
@ YYSYMBOL_PromiseType
@ YYSYMBOL_TOK_PARTIAL
@ YYSYMBOL_TOK_NULL_LITERAL
@ YYSYMBOL_Const
@ YYSYMBOL_TOK_OMITTABLE
@ YYSYMBOL_Enum
@ YYSYMBOL_TOK_VOID
@ YYSYMBOL_76_
@ YYSYMBOL_TOK_NAN
@ YYSYMBOL_75_
@ YYSYMBOL_TOK_SHORT
@ YYSYMBOL_TOK_SEQUENCE
@ YYSYMBOL_AttributeName
@ YYSYMBOL_CallbackRestOrInterface
@ YYSYMBOL_78_
@ YYSYMBOL_UnsignedIntegerType
@ YYSYMBOL_BooleanLiteral
@ YYSYMBOL_OptionalLong
@ YYSYMBOL_TOK_DOUBLE
@ YYSYMBOL_Ellipsis
@ YYSYMBOL_PartialInterface
@ YYSYMBOL_TOK_CREATOR
@ YYSYMBOL_EnumValueListString
@ YYSYMBOL_StringifierAttributeOrOperation
@ YYSYMBOL_TOK_TYPEDEF
@ YYSYMBOL_ImplementsStatement
@ YYSYMBOL_TypeSuffixStartingWithArray
@ YYSYMBOL_Inheritance
@ YYSYMBOL_TOK_STRINGIFIER
@ YYSYMBOL_TOK_IN
@ YYSYMBOL_TOK_STRING_LITERAL
@ YYSYMBOL_TOK_GETRAISES
@ YYSYMBOL_TOK_INT_LITERAL
@ YYSYMBOL_67_
@ YYSYMBOL_Definition
@ YYSYMBOL_TOK_BOOLEAN
@ YYSYMBOL_TOK_INFINITY
@ YYSYMBOL_TOK_ENUM
@ YYSYMBOL_Exception
@ YYSYMBOL_TOK_IDENTIFIER
@ YYSYMBOL_Specials
@ YYSYMBOL_Dictionary
@ YYSYMBOL_TOK_EOL
@ YYSYMBOL_OptionalOrRequiredArgument
@ YYSYMBOL_TOK_NAMEDCONSTRUCTOR
@ YYSYMBOL_ExceptionMembers
@ YYSYMBOL_TOK_MODULE
@ YYSYMBOL_70_
@ YYSYMBOL_TOK_FLOAT
@ YYSYMBOL_ExtendedAttributeInner
@ YYSYMBOL_TOK_SETTER
@ YYSYMBOL_79_
@ YYSYMBOL_UnionMemberTypes
@ YYSYMBOL_TOK_INHERIT
@ YYSYMBOL_YYACCEPT
@ YYSYMBOL_TOK_LEGACYITERABLE
@ YYSYMBOL_TOK_STATIC
@ YYSYMBOL_TOK_LONG
@ YYSYMBOL_TOK_POUND_SIGN
@ YYSYMBOL_ExceptionField
@ YYSYMBOL_TOK_UNRESTRICTED
@ YYSYMBOL_80_
@ YYSYMBOL_TOK_JAVADOC
@ YYSYMBOL_TOK_RAISES
@ YYSYMBOL_FloatLiteral
@ YYSYMBOL_YYEOF
@ YYSYMBOL_TOK_STRING
@ YYSYMBOL_ArgumentName
@ YYSYMBOL_Type
@ YYSYMBOL_TOK_PROMISE
@ YYSYMBOL_CallbackOrInterface
@ YYSYMBOL_ExtendedAttributeList
@ YYSYMBOL_DictionaryMembers
@ YYSYMBOL_FloatType
@ YYSYMBOL_DefaultValue
@ YYSYMBOL_ExtendedAttributes
@ YYSYMBOL_TOK_SETRAISES
@ YYSYMBOL_EnumValueList
@ YYSYMBOL_TOK_OCTET
@ YYSYMBOL_UnrestrictedFloatType
@ YYSYMBOL_TOK_BYTE
@ YYSYMBOL_UnionType
@ YYSYMBOL_73_
@ YYSYMBOL_YYEMPTY
@ YYSYMBOL_72_
@ YYSYMBOL_TOK_OPTIONAL
@ YYSYMBOL_Arguments
@ YYSYMBOL_TOK_OTHER_LITERAL
@ YYSYMBOL_Attribute
@ YYSYMBOL_ConstValue
@ YYSYMBOL_69_
@ YYSYMBOL_OptionalType
@ YYSYMBOL_TOK_DICTIONARY
@ YYSYMBOL_66_
@ YYSYMBOL_Iterable
@ YYSYMBOL_ExceptionMember
@ YYSYMBOL_NonAnyType
@ YYSYMBOL_TOK_CALLBACK
@ YYSYMBOL_InterfaceMembers
@ YYSYMBOL_PartialDictionary
@ YYSYMBOL_AttributeRest
@ YYSYMBOL_TOK_ELLIPSIS
@ YYSYMBOL_TypeSuffix
@ YYSYMBOL_TOK_IMPLEMENTS
@ YYSYMBOL_SpecialOperation
@ YYSYMBOL_EnumValueListComma
@ YYSYMBOL_Operation
#define YY_ASSERT(E)
#define YY_(Msgid)
#define YYNOMEM
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
#define YYNSTATES
#define YYSTYPE
#define YY_IGNORE_USELESS_CAST_END
short yytype_int16
#define YYABORT
#define YYSTACK_BYTES(N)
yytype_int16 yy_state_t
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define YY_REDUCE_PRINT(Rule)
#define YY_CAST(Type, Val)
#define yylex
#define YYCASE_(N, S)
#define YY_NULLPTR
#define YYFINAL
#define YY_ACCESSING_SYMBOL(State)
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
#define YY_INITIAL_VALUE(Value)
#define yyparse
#define YYNTOKENS
unsigned char yytype_uint8
#define YY_STACK_PRINT(Bottom, Top)
#define YYSIZE_T
#define YYSTACK_ALLOC_MAXIMUM
#define yydebug
#define YY_IGNORE_USELESS_CAST_BEGIN
void * malloc(YYSIZE_T)
#define YYLOCATION_PRINT(File, Loc)
#define YYPTRDIFF_T
#define yynerrs
#define YYACCEPT
#define yytable_value_is_error(Yyn)
#define YYTRANSLATE(YYX)
#define YY_ATTRIBUTE_UNUSED
#define YYPOPSTACK(N)
int yy_state_fast_t
unsigned short yytype_uint16
@ YYENOMEM
#define YYLAST
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
#define yypact_value_is_default(Yyn)
#define YYINITDEPTH
signed char yytype_int8
void free(void *)
#define YYERROR
#define YYSIZEOF(X)
#define YYFPRINTF
#define YYSTACK_ALLOC
#define YYDPRINTF(Args)
#define YY_USE(E)
#define yyerror
@ WEBIDL_EOF
@ WEBIDL_error
@ WEBIDL_EMPTY
@ WEBIDL_UNDEF