Kannel: Open Source WAP and SMS gateway  $Revision: 5037 $
wsgram.c
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 2.3. */
2 
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6  Free Software Foundation, 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 2, or (at your option)
11  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, write to the Free Software
20  Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  Boston, MA 02110-1301, USA. */
22 
23 /* As a special exception, you may create a larger work that contains
24  part or all of the Bison parser skeleton and distribute that work
25  under terms of your choice, so long as that work isn't itself a
26  parser generator using the skeleton or a modified version thereof
27  as a parser skeleton. Alternatively, if you modify or redistribute
28  the parser skeleton itself, you may (at your option) remove this
29  special exception, which will cause the skeleton and the resulting
30  Bison output files to be licensed under the GNU General Public
31  License without this special exception.
32 
33  This special exception was added by the Free Software Foundation in
34  version 2.2 of Bison. */
35 
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37  simplifying the original so-called "semantic" parser. */
38 
39 /* All symbols defined below should begin with yy or YY, to avoid
40  infringing on user name space. This should be done even for local
41  variables, as they might otherwise be expanded by user macros.
42  There are some unavoidable exceptions within include files to
43  define necessary library symbols; they are noted "INFRINGES ON
44  USER NAME SPACE" below. */
45 
46 /* Identify Bison output. */
47 #define YYBISON 1
48 
49 /* Bison version. */
50 #define YYBISON_VERSION "2.3"
51 
52 /* Skeleton name. */
53 #define YYSKELETON_NAME "yacc.c"
54 
55 /* Pure parsers. */
56 #define YYPURE 1
57 
58 /* Using locations. */
59 #define YYLSP_NEEDED 1
60 
61 /* Substitute the variable and function names. */
62 #define yyparse ws_yy_parse
63 #define yylex ws_yy_lex
64 #define yyerror ws_yy_error
65 #define yylval ws_yy_lval
66 #define yychar ws_yy_char
67 #define yydebug ws_yy_debug
68 #define yynerrs ws_yy_nerrs
69 #define yylloc ws_yy_lloc
70 
71 /* Tokens. */
72 #ifndef YYTOKENTYPE
73 # define YYTOKENTYPE
74  /* Put the tokens into the symbol table, so that GDB and other debuggers
75  know about them. */
76  enum yytokentype {
77  tINVALID = 258,
78  tTRUE = 259,
79  tFALSE = 260,
80  tINTEGER = 261,
81  tFLOAT = 262,
82  tSTRING = 263,
83  tIDENTIFIER = 264,
84  tACCESS = 265,
85  tAGENT = 266,
86  tBREAK = 267,
87  tCONTINUE = 268,
88  tIDIV = 269,
89  tIDIVA = 270,
90  tDOMAIN = 271,
91  tELSE = 272,
92  tEQUIV = 273,
93  tEXTERN = 274,
94  tFOR = 275,
95  tFUNCTION = 276,
96  tHEADER = 277,
97  tHTTP = 278,
98  tIF = 279,
99  tISVALID = 280,
100  tMETA = 281,
101  tNAME = 282,
102  tPATH = 283,
103  tRETURN = 284,
104  tTYPEOF = 285,
105  tUSE = 286,
106  tUSER = 287,
107  tVAR = 288,
108  tWHILE = 289,
109  tURL = 290,
110  tDELETE = 291,
111  tIN = 292,
112  tLIB = 293,
113  tNEW = 294,
114  tNULL = 295,
115  tTHIS = 296,
116  tVOID = 297,
117  tWITH = 298,
118  tCASE = 299,
119  tCATCH = 300,
120  tCLASS = 301,
121  tCONST = 302,
122  tDEBUGGER = 303,
123  tDEFAULT = 304,
124  tDO = 305,
125  tENUM = 306,
126  tEXPORT = 307,
127  tEXTENDS = 308,
128  tFINALLY = 309,
129  tIMPORT = 310,
130  tPRIVATE = 311,
131  tPUBLIC = 312,
132  tSIZEOF = 313,
133  tSTRUCT = 314,
134  tSUPER = 315,
135  tSWITCH = 316,
136  tTHROW = 317,
137  tTRY = 318,
138  tEQ = 319,
139  tLE = 320,
140  tGE = 321,
141  tNE = 322,
142  tAND = 323,
143  tOR = 324,
144  tPLUSPLUS = 325,
145  tMINUSMINUS = 326,
146  tLSHIFT = 327,
147  tRSSHIFT = 328,
148  tRSZSHIFT = 329,
149  tADDA = 330,
150  tSUBA = 331,
151  tMULA = 332,
152  tDIVA = 333,
153  tANDA = 334,
154  tORA = 335,
155  tXORA = 336,
156  tREMA = 337,
157  tLSHIFTA = 338,
158  tRSSHIFTA = 339,
160  };
161 #endif
162 /* Tokens. */
163 #define tINVALID 258
164 #define tTRUE 259
165 #define tFALSE 260
166 #define tINTEGER 261
167 #define tFLOAT 262
168 #define tSTRING 263
169 #define tIDENTIFIER 264
170 #define tACCESS 265
171 #define tAGENT 266
172 #define tBREAK 267
173 #define tCONTINUE 268
174 #define tIDIV 269
175 #define tIDIVA 270
176 #define tDOMAIN 271
177 #define tELSE 272
178 #define tEQUIV 273
179 #define tEXTERN 274
180 #define tFOR 275
181 #define tFUNCTION 276
182 #define tHEADER 277
183 #define tHTTP 278
184 #define tIF 279
185 #define tISVALID 280
186 #define tMETA 281
187 #define tNAME 282
188 #define tPATH 283
189 #define tRETURN 284
190 #define tTYPEOF 285
191 #define tUSE 286
192 #define tUSER 287
193 #define tVAR 288
194 #define tWHILE 289
195 #define tURL 290
196 #define tDELETE 291
197 #define tIN 292
198 #define tLIB 293
199 #define tNEW 294
200 #define tNULL 295
201 #define tTHIS 296
202 #define tVOID 297
203 #define tWITH 298
204 #define tCASE 299
205 #define tCATCH 300
206 #define tCLASS 301
207 #define tCONST 302
208 #define tDEBUGGER 303
209 #define tDEFAULT 304
210 #define tDO 305
211 #define tENUM 306
212 #define tEXPORT 307
213 #define tEXTENDS 308
214 #define tFINALLY 309
215 #define tIMPORT 310
216 #define tPRIVATE 311
217 #define tPUBLIC 312
218 #define tSIZEOF 313
219 #define tSTRUCT 314
220 #define tSUPER 315
221 #define tSWITCH 316
222 #define tTHROW 317
223 #define tTRY 318
224 #define tEQ 319
225 #define tLE 320
226 #define tGE 321
227 #define tNE 322
228 #define tAND 323
229 #define tOR 324
230 #define tPLUSPLUS 325
231 #define tMINUSMINUS 326
232 #define tLSHIFT 327
233 #define tRSSHIFT 328
234 #define tRSZSHIFT 329
235 #define tADDA 330
236 #define tSUBA 331
237 #define tMULA 332
238 #define tDIVA 333
239 #define tANDA 334
240 #define tORA 335
241 #define tXORA 336
242 #define tREMA 337
243 #define tLSHIFTA 338
244 #define tRSSHIFTA 339
245 #define tRSZSHIFTA 340
246 
247 
248 
249 
250 /* Copy the first part of user declarations. */
251 #line 1 "wmlscript/wsgram.y"
252 
253 /*
254  *
255  * wsgram.y
256  *
257  * Author: Markku Rossi <mtr@iki.fi>
258  *
259  * Copyright (c) 1999-2000 WAPIT OY LTD.
260  * All rights reserved.
261  *
262  * Bison grammar for the WMLScript compiler.
263  *
264  */
265 
266 #include "wmlscript/wsint.h"
267 
268 #define YYPARSE_PARAM pctx
269 #define YYLEX_PARAM pctx
270 
271 /* The required yyerror() function. This is actually not used but to
272  report the internal parser errors. All other errors are reported
273  by using the `wserror.h' functions. */
274 extern void yyerror(char *msg);
275 
276 #if WS_DEBUG
277 /* Just for debugging purposes. */
278 WsCompilerPtr global_compiler = NULL;
279 #endif /* WS_DEBUG */
280 
281 
282 
283 /* Enabling traces. */
284 #ifndef YYDEBUG
285 # define YYDEBUG 0
286 #endif
287 
288 /* Enabling verbose error messages. */
289 #ifdef YYERROR_VERBOSE
290 # undef YYERROR_VERBOSE
291 # define YYERROR_VERBOSE 1
292 #else
293 # define YYERROR_VERBOSE 0
294 #endif
295 
296 /* Enabling the token table. */
297 #ifndef YYTOKEN_TABLE
298 # define YYTOKEN_TABLE 0
299 #endif
300 
301 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
302 typedef union YYSTYPE
303 #line 34 "wmlscript/wsgram.y"
304 {
307  char *identifier;
309 
314 
316 
319 }
320 /* Line 193 of yacc.c. */
321 #line 322 "y.tab.c"
322  YYSTYPE;
323 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
324 # define YYSTYPE_IS_DECLARED 1
325 # define YYSTYPE_IS_TRIVIAL 1
326 #endif
327 
328 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
329 typedef struct YYLTYPE
330 {
335 } YYLTYPE;
336 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
337 # define YYLTYPE_IS_DECLARED 1
338 # define YYLTYPE_IS_TRIVIAL 1
339 #endif
340 
341 
342 /* Copy the second part of user declarations. */
343 
344 
345 /* Line 216 of yacc.c. */
346 #line 347 "y.tab.c"
347 
348 #ifdef short
349 # undef short
350 #endif
351 
352 #ifdef YYTYPE_UINT8
353 typedef YYTYPE_UINT8 yytype_uint8;
354 #else
355 typedef unsigned char yytype_uint8;
356 #endif
357 
358 #ifdef YYTYPE_INT8
359 typedef YYTYPE_INT8 yytype_int8;
360 #elif (defined __STDC__ || defined __C99__FUNC__ \
361  || defined __cplusplus || defined _MSC_VER)
362 typedef signed char yytype_int8;
363 #else
364 typedef short int yytype_int8;
365 #endif
366 
367 #ifdef YYTYPE_UINT16
368 typedef YYTYPE_UINT16 yytype_uint16;
369 #else
370 typedef unsigned short int yytype_uint16;
371 #endif
372 
373 #ifdef YYTYPE_INT16
374 typedef YYTYPE_INT16 yytype_int16;
375 #else
376 typedef short int yytype_int16;
377 #endif
378 
379 #ifndef YYSIZE_T
380 # ifdef __SIZE_TYPE__
381 # define YYSIZE_T __SIZE_TYPE__
382 # elif defined size_t
383 # define YYSIZE_T size_t
384 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
385  || defined __cplusplus || defined _MSC_VER)
386 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
387 # define YYSIZE_T size_t
388 # else
389 # define YYSIZE_T unsigned int
390 # endif
391 #endif
392 
393 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
394 
395 #ifndef YY_
396 # if defined YYENABLE_NLS && YYENABLE_NLS
397 # if ENABLE_NLS
398 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
399 # define YY_(msgid) dgettext ("bison-runtime", msgid)
400 # endif
401 # endif
402 # ifndef YY_
403 # define YY_(msgid) msgid
404 # endif
405 #endif
406 
407 /* Suppress unused-variable warnings by "using" E. */
408 #if ! defined lint || defined __GNUC__
409 # define YYUSE(e) ((void) (e))
410 #else
411 # define YYUSE(e) /* empty */
412 #endif
413 
414 /* Identity function, used to suppress warnings about constant conditions. */
415 #ifndef lint
416 # define YYID(n) (n)
417 #else
418 #if (defined __STDC__ || defined __C99__FUNC__ \
419  || defined __cplusplus || defined _MSC_VER)
420 static int
421 YYID (int i)
422 #else
423 static int
424 YYID (i)
425  int i;
426 #endif
427 {
428  return i;
429 }
430 #endif
431 
432 #if ! defined yyoverflow || YYERROR_VERBOSE
433 
434 /* The parser invokes alloca or malloc; define the necessary symbols. */
435 
436 # ifdef YYSTACK_USE_ALLOCA
437 # if YYSTACK_USE_ALLOCA
438 # ifdef __GNUC__
439 # define YYSTACK_ALLOC __builtin_alloca
440 # elif defined __BUILTIN_VA_ARG_INCR
441 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
442 # elif defined _AIX
443 # define YYSTACK_ALLOC __alloca
444 # elif defined _MSC_VER
445 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
446 # define alloca _alloca
447 # else
448 # define YYSTACK_ALLOC alloca
449 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
450  || defined __cplusplus || defined _MSC_VER)
451 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
452 # ifndef _STDLIB_H
453 # define _STDLIB_H 1
454 # endif
455 # endif
456 # endif
457 # endif
458 # endif
459 
460 # ifdef YYSTACK_ALLOC
461  /* Pacify GCC's `empty if-body' warning. */
462 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
463 # ifndef YYSTACK_ALLOC_MAXIMUM
464  /* The OS might guarantee only one guard page at the bottom of the stack,
465  and a page size can be as small as 4096 bytes. So we cannot safely
466  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
467  to allow for a few compiler-allocated temporary stack slots. */
468 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
469 # endif
470 # else
471 # define YYSTACK_ALLOC YYMALLOC
472 # define YYSTACK_FREE YYFREE
473 # ifndef YYSTACK_ALLOC_MAXIMUM
474 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
475 # endif
476 # if (defined __cplusplus && ! defined _STDLIB_H \
477  && ! ((defined YYMALLOC || defined malloc) \
478  && (defined YYFREE || defined free)))
479 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
480 # ifndef _STDLIB_H
481 # define _STDLIB_H 1
482 # endif
483 # endif
484 # ifndef YYMALLOC
485 # define YYMALLOC malloc
486 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
487  || defined __cplusplus || defined _MSC_VER)
488 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
489 # endif
490 # endif
491 # ifndef YYFREE
492 # define YYFREE free
493 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
494  || defined __cplusplus || defined _MSC_VER)
495 void free (void *); /* INFRINGES ON USER NAME SPACE */
496 # endif
497 # endif
498 # endif
499 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
500 
501 
502 #if (! defined yyoverflow \
503  && (! defined __cplusplus \
504  || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
505  && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
506 
507 /* A type that is properly aligned for any stack member. */
508 union yyalloc
509 {
513 };
514 
515 /* The size of the maximum gap between one aligned stack and the next. */
516 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
517 
518 /* The size of an array large to enough to hold all stacks, each with
519  N elements. */
520 # define YYSTACK_BYTES(N) \
521  ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
522  + 2 * YYSTACK_GAP_MAXIMUM)
523 
524 /* Copy COUNT objects from FROM to TO. The source and destination do
525  not overlap. */
526 # ifndef YYCOPY
527 # if defined __GNUC__ && 1 < __GNUC__
528 # define YYCOPY(To, From, Count) \
529  __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
530 # else
531 # define YYCOPY(To, From, Count) \
532  do \
533  { \
534  YYSIZE_T yyi; \
535  for (yyi = 0; yyi < (Count); yyi++) \
536  (To)[yyi] = (From)[yyi]; \
537  } \
538  while (YYID (0))
539 # endif
540 # endif
541 
542 /* Relocate STACK from its old location to the new one. The
543  local variables YYSIZE and YYSTACKSIZE give the old and new number of
544  elements in the stack, and YYPTR gives the new location of the
545  stack. Advance YYPTR to a properly aligned location for the next
546  stack. */
547 # define YYSTACK_RELOCATE(Stack) \
548  do \
549  { \
550  YYSIZE_T yynewbytes; \
551  YYCOPY (&yyptr->Stack, Stack, yysize); \
552  Stack = &yyptr->Stack; \
553  yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
554  yyptr += yynewbytes / sizeof (*yyptr); \
555  } \
556  while (YYID (0))
557 
558 #endif
559 
560 /* YYFINAL -- State number of the termination state. */
561 #define YYFINAL 17
562 /* YYLAST -- Last index in YYTABLE. */
563 #define YYLAST 448
564 
565 /* YYNTOKENS -- Number of terminals. */
566 #define YYNTOKENS 109
567 /* YYNNTS -- Number of nonterminals. */
568 #define YYNNTS 55
569 /* YYNRULES -- Number of rules. */
570 #define YYNRULES 146
571 /* YYNRULES -- Number of states. */
572 #define YYNSTATES 257
573 
574 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
575 #define YYUNDEFTOK 2
576 #define YYMAXUTOK 340
577 
578 #define YYTRANSLATE(YYX) \
579  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
580 
581 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
582 static const yytype_uint8 yytranslate[] =
583 {
584  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
585  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
586  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
587  2, 2, 2, 106, 2, 107, 2, 104, 97, 2,
588  87, 88, 102, 100, 89, 101, 108, 103, 2, 2,
589  2, 2, 2, 2, 2, 2, 2, 2, 94, 86,
590  98, 92, 99, 93, 2, 2, 2, 2, 2, 2,
591  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
592  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
593  2, 2, 2, 2, 96, 2, 2, 2, 2, 2,
594  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
595  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
596  2, 2, 2, 90, 95, 91, 105, 2, 2, 2,
597  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
598  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
599  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
600  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
601  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
602  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
603  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
604  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
605  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
606  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
607  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
608  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
609  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
610  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
611  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
612  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
613  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
614  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
615  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
616  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
617  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
618  85
619 };
620 
621 #if YYDEBUG
622 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
623  YYRHS. */
624 static const yytype_uint16 yyprhs[] =
625 {
626  0, 0, 3, 6, 8, 10, 12, 15, 19, 21,
627  23, 25, 27, 31, 34, 37, 40, 45, 48, 50,
628  52, 54, 57, 61, 65, 68, 72, 74, 76, 78,
629  80, 83, 92, 93, 95, 96, 98, 99, 101, 103,
630  107, 109, 111, 113, 116, 118, 120, 123, 126, 128,
631  132, 134, 135, 137, 139, 142, 146, 149, 151, 155,
632  158, 159, 162, 170, 176, 182, 184, 194, 205, 209,
633  210, 212, 214, 218, 220, 224, 228, 232, 236, 240,
634  244, 248, 252, 256, 260, 264, 268, 272, 274, 280,
635  282, 286, 288, 292, 294, 298, 300, 304, 306, 310,
636  312, 316, 320, 322, 326, 330, 334, 338, 340, 344,
637  348, 352, 354, 358, 362, 364, 368, 372, 376, 380,
638  382, 385, 388, 391, 394, 397, 400, 403, 406, 408,
639  411, 414, 416, 419, 424, 429, 431, 433, 435, 437,
640  439, 441, 443, 447, 450, 454, 456
641 };
642 
643 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
644 static const yytype_int16 yyrhs[] =
645 {
646  110, 0, -1, 111, 126, -1, 126, -1, 1, -1,
647  112, -1, 111, 112, -1, 31, 113, 86, -1, 1,
648  -1, 114, -1, 115, -1, 117, -1, 35, 9, 8,
649  -1, 10, 116, -1, 16, 8, -1, 28, 8, -1,
650  16, 8, 28, 8, -1, 26, 118, -1, 119, -1,
651  120, -1, 121, -1, 27, 122, -1, 23, 18, 122,
652  -1, 32, 11, 122, -1, 123, 124, -1, 123, 124,
653  125, -1, 8, -1, 8, -1, 8, -1, 127, -1,
654  126, 127, -1, 128, 21, 9, 87, 129, 88, 133,
655  130, -1, -1, 19, -1, -1, 131, -1, -1, 86,
656  -1, 9, -1, 131, 89, 9, -1, 133, -1, 136,
657  -1, 86, -1, 145, 86, -1, 140, -1, 141, -1,
658  13, 86, -1, 12, 86, -1, 143, -1, 90, 134,
659  91, -1, 1, -1, -1, 135, -1, 132, -1, 135,
660  132, -1, 33, 137, 86, -1, 33, 1, -1, 138,
661  -1, 137, 89, 138, -1, 9, 139, -1, -1, 92,
662  147, -1, 24, 87, 145, 88, 132, 17, 132, -1,
663  24, 87, 145, 88, 132, -1, 34, 87, 145, 88,
664  132, -1, 142, -1, 20, 87, 144, 86, 144, 86,
665  144, 88, 132, -1, 20, 87, 33, 137, 86, 144,
666  86, 144, 88, 132, -1, 29, 144, 86, -1, -1,
667  145, -1, 146, -1, 145, 89, 146, -1, 147, -1,
668  9, 92, 146, -1, 9, 77, 146, -1, 9, 78,
669  146, -1, 9, 82, 146, -1, 9, 75, 146, -1,
670  9, 76, 146, -1, 9, 83, 146, -1, 9, 84,
671  146, -1, 9, 85, 146, -1, 9, 79, 146, -1,
672  9, 81, 146, -1, 9, 80, 146, -1, 9, 15,
673  146, -1, 148, -1, 148, 93, 146, 94, 146, -1,
674  149, -1, 148, 69, 149, -1, 150, -1, 149, 68,
675  150, -1, 151, -1, 150, 95, 151, -1, 152, -1,
676  151, 96, 152, -1, 153, -1, 152, 97, 153, -1,
677  154, -1, 153, 64, 154, -1, 153, 67, 154, -1,
678  155, -1, 154, 98, 155, -1, 154, 99, 155, -1,
679  154, 65, 155, -1, 154, 66, 155, -1, 156, -1,
680  155, 72, 156, -1, 155, 73, 156, -1, 155, 74,
681  156, -1, 157, -1, 156, 100, 157, -1, 156, 101,
682  157, -1, 158, -1, 157, 102, 158, -1, 157, 103,
683  158, -1, 157, 14, 158, -1, 157, 104, 158, -1,
684  159, -1, 30, 158, -1, 25, 158, -1, 70, 9,
685  -1, 71, 9, -1, 100, 158, -1, 101, 158, -1,
686  105, 158, -1, 106, 158, -1, 160, -1, 9, 70,
687  -1, 9, 71, -1, 161, -1, 9, 162, -1, 9,
688  107, 9, 162, -1, 9, 108, 9, 162, -1, 9,
689  -1, 3, -1, 4, -1, 5, -1, 6, -1, 7,
690  -1, 8, -1, 87, 145, 88, -1, 87, 88, -1,
691  87, 163, 88, -1, 146, -1, 163, 89, 146, -1
692 };
693 
694 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
695 static const yytype_uint16 yyrline[] =
696 {
697  0, 122, 122, 123, 124, 131, 132, 136, 137, 142,
698  143, 144, 148, 153, 157, 167, 178, 201, 205, 206,
699  207, 211, 229, 249, 284, 286, 290, 291, 292, 297,
700  298, 302, 317, 318, 323, 324, 327, 329, 333, 351,
701  372, 380, 381, 383, 385, 386, 387, 389, 391, 394,
702  402, 411, 412, 416, 421, 426, 428, 433, 438, 443,
703  459, 460, 465, 467, 472, 474, 478, 481, 487, 494,
704  495, 500, 501, 506, 507, 509, 511, 513, 515, 517,
705  519, 521, 523, 525, 527, 529, 531, 536, 537, 542,
706  543, 548, 549, 554, 555, 560, 561, 566, 567, 572,
707  573, 575, 580, 581, 583, 585, 587, 592, 593, 595,
708  597, 602, 603, 605, 610, 611, 613, 615, 617, 622,
709  623, 625, 627, 629, 631, 647, 649, 651, 656, 657,
710  659, 664, 665, 675, 677, 682, 684, 686, 688, 690,
711  692, 694, 696, 701, 703, 708, 713
712 };
713 #endif
714 
715 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
716 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
717  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
718 static const char *const yytname[] =
719 {
720  "$end", "error", "$undefined", "tINVALID", "tTRUE", "tFALSE",
721  "tINTEGER", "tFLOAT", "tSTRING", "tIDENTIFIER", "tACCESS", "tAGENT",
722  "tBREAK", "tCONTINUE", "tIDIV", "tIDIVA", "tDOMAIN", "tELSE", "tEQUIV",
723  "tEXTERN", "tFOR", "tFUNCTION", "tHEADER", "tHTTP", "tIF", "tISVALID",
724  "tMETA", "tNAME", "tPATH", "tRETURN", "tTYPEOF", "tUSE", "tUSER", "tVAR",
725  "tWHILE", "tURL", "tDELETE", "tIN", "tLIB", "tNEW", "tNULL", "tTHIS",
726  "tVOID", "tWITH", "tCASE", "tCATCH", "tCLASS", "tCONST", "tDEBUGGER",
727  "tDEFAULT", "tDO", "tENUM", "tEXPORT", "tEXTENDS", "tFINALLY", "tIMPORT",
728  "tPRIVATE", "tPUBLIC", "tSIZEOF", "tSTRUCT", "tSUPER", "tSWITCH",
729  "tTHROW", "tTRY", "tEQ", "tLE", "tGE", "tNE", "tAND", "tOR", "tPLUSPLUS",
730  "tMINUSMINUS", "tLSHIFT", "tRSSHIFT", "tRSZSHIFT", "tADDA", "tSUBA",
731  "tMULA", "tDIVA", "tANDA", "tORA", "tXORA", "tREMA", "tLSHIFTA",
732  "tRSSHIFTA", "tRSZSHIFTA", "';'", "'('", "')'", "','", "'{'", "'}'",
733  "'='", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'",
734  "'*'", "'/'", "'%'", "'~'", "'!'", "'#'", "'.'", "$accept",
735  "CompilationUnit", "Pragmas", "Pragma", "PragmaDeclaration",
736  "ExternalCompilationUnitPragma", "AccessControlPragma",
737  "AccessControlSpecifier", "MetaPragma", "MetaSpecifier", "MetaName",
738  "MetaHttpEquiv", "MetaUserAgent", "MetaBody", "MetaPropertyName",
739  "MetaContent", "MetaScheme", "FunctionDeclarations",
740  "FunctionDeclaration", "ExternOpt", "FormalParameterListOpt",
741  "SemicolonOpt", "FormalParameterList", "Statement", "Block",
742  "StatementListOpt", "StatementList", "VariableStatement",
743  "VariableDeclarationList", "VariableDeclaration",
744  "VariableInitializedOpt", "IfStatement", "IterationStatement",
745  "ForStatement", "ReturnStatement", "ExpressionOpt", "Expression",
746  "AssignmentExpression", "ConditionalExpression", "LogicalORExpression",
747  "LogicalANDExpression", "BitwiseORExpression", "BitwiseXORExpression",
748  "BitwiseANDExpression", "EqualityExpression", "RelationalExpression",
749  "ShiftExpression", "AdditiveExpression", "MultiplicativeExpression",
750  "UnaryExpression", "PostfixExpression", "CallExpression",
751  "PrimaryExpression", "Arguments", "ArgumentList", 0
752 };
753 #endif
754 
755 # ifdef YYPRINT
756 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
757  token YYLEX-NUM. */
758 static const yytype_uint16 yytoknum[] =
759 {
760  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
761  265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
762  275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
763  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
764  295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
765  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
766  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
767  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
768  335, 336, 337, 338, 339, 340, 59, 40, 41, 44,
769  123, 125, 61, 63, 58, 124, 94, 38, 60, 62,
770  43, 45, 42, 47, 37, 126, 33, 35, 46
771 };
772 # endif
773 
774 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
775 static const yytype_uint8 yyr1[] =
776 {
777  0, 109, 110, 110, 110, 111, 111, 112, 112, 113,
778  113, 113, 114, 115, 116, 116, 116, 117, 118, 118,
779  118, 119, 120, 121, 122, 122, 123, 124, 125, 126,
780  126, 127, 128, 128, 129, 129, 130, 130, 131, 131,
781  132, 132, 132, 132, 132, 132, 132, 132, 132, 133,
782  133, 134, 134, 135, 135, 136, 136, 137, 137, 138,
783  139, 139, 140, 140, 141, 141, 142, 142, 143, 144,
784  144, 145, 145, 146, 146, 146, 146, 146, 146, 146,
785  146, 146, 146, 146, 146, 146, 146, 147, 147, 148,
786  148, 149, 149, 150, 150, 151, 151, 152, 152, 153,
787  153, 153, 154, 154, 154, 154, 154, 155, 155, 155,
788  155, 156, 156, 156, 157, 157, 157, 157, 157, 158,
789  158, 158, 158, 158, 158, 158, 158, 158, 159, 159,
790  159, 160, 160, 160, 160, 161, 161, 161, 161, 161,
791  161, 161, 161, 162, 162, 163, 163
792 };
793 
794 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
795 static const yytype_uint8 yyr2[] =
796 {
797  0, 2, 2, 1, 1, 1, 2, 3, 1, 1,
798  1, 1, 3, 2, 2, 2, 4, 2, 1, 1,
799  1, 2, 3, 3, 2, 3, 1, 1, 1, 1,
800  2, 8, 0, 1, 0, 1, 0, 1, 1, 3,
801  1, 1, 1, 2, 1, 1, 2, 2, 1, 3,
802  1, 0, 1, 1, 2, 3, 2, 1, 3, 2,
803  0, 2, 7, 5, 5, 1, 9, 10, 3, 0,
804  1, 1, 3, 1, 3, 3, 3, 3, 3, 3,
805  3, 3, 3, 3, 3, 3, 3, 1, 5, 1,
806  3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
807  3, 3, 1, 3, 3, 3, 3, 1, 3, 3,
808  3, 1, 3, 3, 1, 3, 3, 3, 3, 1,
809  2, 2, 2, 2, 2, 2, 2, 2, 1, 2,
810  2, 1, 2, 4, 4, 1, 1, 1, 1, 1,
811  1, 1, 3, 2, 3, 1, 3
812 };
813 
814 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
815  STATE-NUM when YYTABLE doesn't specify something else to do. Zero
816  means the default is an error. */
817 static const yytype_uint8 yydefact[] =
818 {
819  0, 8, 33, 0, 0, 0, 5, 3, 29, 0,
820  0, 0, 0, 0, 9, 10, 11, 1, 8, 6,
821  2, 30, 0, 0, 0, 13, 0, 0, 0, 17,
822  18, 19, 20, 0, 7, 0, 14, 15, 0, 26,
823  21, 0, 0, 12, 34, 0, 22, 27, 24, 23,
824  38, 0, 35, 16, 28, 25, 0, 0, 50, 0,
825  36, 39, 136, 137, 138, 139, 140, 141, 135, 0,
826  0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
827  42, 0, 0, 0, 0, 0, 53, 40, 0, 0,
828  41, 44, 45, 65, 48, 0, 71, 73, 87, 89,
829  91, 93, 95, 97, 99, 102, 107, 111, 114, 119,
830  128, 131, 37, 31, 0, 129, 130, 0, 0, 0,
831  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
832  0, 0, 132, 47, 46, 69, 0, 135, 121, 0,
833  70, 120, 56, 60, 0, 57, 0, 122, 123, 0,
834  124, 125, 126, 127, 49, 54, 43, 0, 0, 0,
835  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
836  0, 0, 0, 0, 0, 0, 0, 0, 0, 86,
837  78, 79, 75, 76, 83, 85, 84, 77, 80, 81,
838  82, 143, 145, 0, 74, 0, 0, 0, 0, 0,
839  68, 0, 59, 55, 0, 0, 142, 72, 90, 0,
840  92, 94, 96, 98, 100, 101, 105, 106, 103, 104,
841  108, 109, 110, 112, 113, 117, 115, 116, 118, 144,
842  0, 133, 134, 0, 69, 0, 61, 58, 0, 0,
843  146, 69, 0, 63, 64, 88, 0, 69, 0, 69,
844  0, 62, 0, 0, 0, 66, 67
845 };
846 
847 /* YYDEFGOTO[NTERM-NUM]. */
848 static const yytype_int16 yydefgoto[] =
849 {
850  -1, 4, 5, 6, 13, 14, 15, 25, 16, 29,
851  30, 31, 32, 40, 41, 48, 55, 7, 8, 9,
852  51, 113, 52, 86, 87, 88, 89, 90, 144, 145,
853  202, 91, 92, 93, 94, 139, 95, 96, 97, 98,
854  99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
855  109, 110, 111, 132, 193
856 };
857 
858 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
859  STATE-NUM. */
860 #define YYPACT_NINF -135
861 static const yytype_int16 yypact[] =
862 {
863  59, 39, -135, 28, 68, 63, -135, 38, -135, 62,
864  37, 54, 13, -43, -135, -135, -135, -135, -135, -135,
865  38, -135, 57, 67, 87, -135, 92, 108, 109, -135,
866  -135, -135, -135, 121, -135, 47, 123, -135, 108, -135,
867  -135, 141, 108, -135, 155, 164, -135, -135, 166, -135,
868  -135, 89, 107, -135, -135, -135, 1, 188, -135, 132,
869  112, -135, -135, -135, -135, -135, -135, -135, 340, 115,
870  120, 124, 125, 296, 308, 296, 35, 126, 198, 201,
871  -135, 308, 296, 296, 296, 296, -135, -135, 129, 175,
872  -135, -135, -135, -135, -135, -83, -135, -135, -48, 146,
873  122, 119, 127, 12, -25, 45, 5, 44, -135, -135,
874  -135, -135, -135, -135, 308, -135, -135, 308, 308, 308,
875  308, 308, 308, 308, 308, 308, 308, 308, 222, 308,
876  207, 212, -135, -135, -135, 264, 308, -38, -135, 148,
877  147, -135, -135, 143, -1, -135, 308, -135, -135, 43,
878  -135, -135, -135, -135, -135, -135, -135, 308, 296, 308,
879  296, 296, 296, 296, 296, 296, 296, 296, 296, 296,
880  296, 296, 296, 296, 296, 296, 296, 296, 296, -135,
881  -135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
882  -135, -135, -135, 66, -135, 152, 152, 231, 156, 70,
883  -135, 296, -135, -135, 231, 82, -135, -135, 146, 149,
884  122, 119, 127, 12, -25, -25, 45, 45, 45, 45,
885  5, 5, 5, 44, 44, -135, -135, -135, -135, -135,
886  308, -135, -135, 25, 308, 22, -135, -135, 22, 308,
887  -135, 308, 158, 224, -135, -135, 162, 308, 22, 308,
888  161, -135, 163, 22, 22, -135, -135
889 };
890 
891 /* YYPGOTO[NTERM-NUM]. */
892 static const yytype_int16 yypgoto[] =
893 {
894  -135, -135, -135, 245, -135, -135, -135, -135, -135, -135,
895  -135, -135, -135, 29, -135, -135, -135, 248, 17, -135,
896  -135, -135, -135, -85, 199, -135, -135, -135, 60, 50,
897  -135, -135, -135, -135, -135, -134, -74, -109, 55, -135,
898  100, 99, 102, 98, 101, -22, -65, -46, 20, 14,
899  -135, -135, -135, -10, -135
900 };
901 
902 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
903  positive, shift that token. If negative, reduce the rule which
904  number is the opposite. If zero, do what YYDEFACT says.
905  If YYTABLE_NINF, syntax error. */
906 #define YYTABLE_NINF -53
907 static const yytype_int16 yytable[] =
908 {
909  140, 198, 58, 156, 155, 179, 157, 149, 180, 181,
910  182, 183, 184, 185, 186, 187, 188, 189, 190, 192,
911  194, 158, 33, 58, 21, 62, 63, 64, 65, 66,
912  67, 68, 115, 116, 69, 70, 142, 21, 10, -4,
913  166, 167, 71, 34, 143, 159, 72, 73, 207, 128,
914  209, 74, 75, 23, 11, 76, 77, 2, 175, -32,
915  1, 140, 199, 12, 18, 24, 35, 46, 17, 130,
916  131, 49, 205, 168, 169, 36, 164, 26, 2, 165,
917  -32, 27, 2, 22, -32, 203, 28, 138, 204, 141,
918  3, 59, 78, 79, 3, 37, 150, 151, 152, 153,
919  242, 216, 217, 218, 219, 173, 174, 246, 80, 81,
920  38, 241, 59, 250, 204, 252, 39, 170, 171, 172,
921  42, 240, 82, 83, 220, 221, 222, 84, 85, 43,
922  245, 206, 157, 58, 44, 62, 63, 64, 65, 66,
923  67, 68, 214, 215, 69, 70, 176, 177, 178, 47,
924  243, 45, 71, 244, 229, 230, 72, 73, 235, 157,
925  140, 74, 75, 251, 50, 76, 77, 140, 255, 256,
926  238, 157, 53, 140, 54, 140, 58, 56, 62, 63,
927  64, 65, 66, 67, 68, 231, 232, 69, 70, 225,
928  226, 227, 228, 223, 224, 71, 57, 61, 112, 72,
929  73, 133, 78, 79, 74, 75, 134, 147, 76, 77,
930  148, 135, 136, 146, 160, 162, 195, 161, 80, 81,
931  154, 196, 59, -51, 163, 62, 63, 64, 65, 66,
932  67, 68, 82, 83, 200, 201, 157, 84, 85, 128,
933  143, 248, 234, 239, 247, 78, 79, 73, 249, 253,
934  19, 254, 75, 20, 237, 60, 236, 233, 208, 210,
935  212, 80, 81, 211, 213, 59, -52, 62, 63, 64,
936  65, 66, 67, 68, 0, 82, 83, 0, 0, 0,
937  84, 85, 0, 0, 0, 0, 0, 0, 0, 73,
938  0, 0, 78, 79, 75, 0, 0, 197, 0, 62,
939  63, 64, 65, 66, 67, 137, 0, 0, 0, 81,
940  191, 62, 63, 64, 65, 66, 67, 68, 0, 0,
941  0, 73, 82, 83, 0, 0, 75, 84, 85, 0,
942  0, 0, 0, 73, 78, 79, 0, 0, 75, 0,
943  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944  0, 81, 0, 0, 0, 114, 0, 0, 0, 0,
945  0, 0, 0, 0, 82, 83, 78, 79, 0, 84,
946  85, 0, 0, 0, 0, 0, 0, 0, 78, 79,
947  0, 0, 0, 81, 0, 0, 0, 0, 0, 0,
948  0, 0, 0, 0, 0, 81, 82, 83, 0, 0,
949  0, 84, 85, 0, 0, 0, 0, 0, 82, 83,
950  115, 116, 0, 84, 85, 117, 118, 119, 120, 121,
951  122, 123, 124, 125, 126, 127, 0, 128, 0, 0,
952  0, 0, 129, 0, 0, 0, 0, 0, 0, 0,
953  0, 0, 0, 0, 0, 0, 0, 130, 131
954 };
955 
956 static const yytype_int16 yycheck[] =
957 {
958  74, 135, 1, 86, 89, 114, 89, 81, 117, 118,
959  119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
960  129, 69, 9, 1, 7, 3, 4, 5, 6, 7,
961  8, 9, 70, 71, 12, 13, 1, 20, 10, 0,
962  65, 66, 20, 86, 9, 93, 24, 25, 157, 87,
963  159, 29, 30, 16, 26, 33, 34, 19, 14, 21,
964  1, 135, 136, 35, 1, 28, 9, 38, 0, 107,
965  108, 42, 146, 98, 99, 8, 64, 23, 19, 67,
966  21, 27, 19, 21, 21, 86, 32, 73, 89, 75,
967  31, 90, 70, 71, 31, 8, 82, 83, 84, 85,
968  234, 166, 167, 168, 169, 100, 101, 241, 86, 87,
969  18, 86, 90, 247, 89, 249, 8, 72, 73, 74,
970  11, 230, 100, 101, 170, 171, 172, 105, 106, 8,
971  239, 88, 89, 1, 87, 3, 4, 5, 6, 7,
972  8, 9, 164, 165, 12, 13, 102, 103, 104, 8,
973  235, 28, 20, 238, 88, 89, 24, 25, 88, 89,
974  234, 29, 30, 248, 9, 33, 34, 241, 253, 254,
975  88, 89, 8, 247, 8, 249, 1, 88, 3, 4,
976  5, 6, 7, 8, 9, 195, 196, 12, 13, 175,
977  176, 177, 178, 173, 174, 20, 89, 9, 86, 24,
978  25, 86, 70, 71, 29, 30, 86, 9, 33, 34,
979  9, 87, 87, 87, 68, 96, 9, 95, 86, 87,
980  91, 9, 90, 91, 97, 3, 4, 5, 6, 7,
981  8, 9, 100, 101, 86, 92, 89, 105, 106, 87,
982  9, 17, 86, 94, 86, 70, 71, 25, 86, 88,
983  5, 88, 30, 5, 204, 56, 201, 197, 158, 160,
984  162, 86, 87, 161, 163, 90, 91, 3, 4, 5,
985  6, 7, 8, 9, -1, 100, 101, -1, -1, -1,
986  105, 106, -1, -1, -1, -1, -1, -1, -1, 25,
987  -1, -1, 70, 71, 30, -1, -1, 33, -1, 3,
988  4, 5, 6, 7, 8, 9, -1, -1, -1, 87,
989  88, 3, 4, 5, 6, 7, 8, 9, -1, -1,
990  -1, 25, 100, 101, -1, -1, 30, 105, 106, -1,
991  -1, -1, -1, 25, 70, 71, -1, -1, 30, -1,
992  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
993  -1, 87, -1, -1, -1, 15, -1, -1, -1, -1,
994  -1, -1, -1, -1, 100, 101, 70, 71, -1, 105,
995  106, -1, -1, -1, -1, -1, -1, -1, 70, 71,
996  -1, -1, -1, 87, -1, -1, -1, -1, -1, -1,
997  -1, -1, -1, -1, -1, 87, 100, 101, -1, -1,
998  -1, 105, 106, -1, -1, -1, -1, -1, 100, 101,
999  70, 71, -1, 105, 106, 75, 76, 77, 78, 79,
1000  80, 81, 82, 83, 84, 85, -1, 87, -1, -1,
1001  -1, -1, 92, -1, -1, -1, -1, -1, -1, -1,
1002  -1, -1, -1, -1, -1, -1, -1, 107, 108
1003 };
1004 
1005 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1006  symbol of state STATE-NUM. */
1007 static const yytype_uint8 yystos[] =
1008 {
1009  0, 1, 19, 31, 110, 111, 112, 126, 127, 128,
1010  10, 26, 35, 113, 114, 115, 117, 0, 1, 112,
1011  126, 127, 21, 16, 28, 116, 23, 27, 32, 118,
1012  119, 120, 121, 9, 86, 9, 8, 8, 18, 8,
1013  122, 123, 11, 8, 87, 28, 122, 8, 124, 122,
1014  9, 129, 131, 8, 8, 125, 88, 89, 1, 90,
1015  133, 9, 3, 4, 5, 6, 7, 8, 9, 12,
1016  13, 20, 24, 25, 29, 30, 33, 34, 70, 71,
1017  86, 87, 100, 101, 105, 106, 132, 133, 134, 135,
1018  136, 140, 141, 142, 143, 145, 146, 147, 148, 149,
1019  150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
1020  160, 161, 86, 130, 15, 70, 71, 75, 76, 77,
1021  78, 79, 80, 81, 82, 83, 84, 85, 87, 92,
1022  107, 108, 162, 86, 86, 87, 87, 9, 158, 144,
1023  145, 158, 1, 9, 137, 138, 87, 9, 9, 145,
1024  158, 158, 158, 158, 91, 132, 86, 89, 69, 93,
1025  68, 95, 96, 97, 64, 67, 65, 66, 98, 99,
1026  72, 73, 74, 100, 101, 14, 102, 103, 104, 146,
1027  146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1028  146, 88, 146, 163, 146, 9, 9, 33, 144, 145,
1029  86, 92, 139, 86, 89, 145, 88, 146, 149, 146,
1030  150, 151, 152, 153, 154, 154, 155, 155, 155, 155,
1031  156, 156, 156, 157, 157, 158, 158, 158, 158, 88,
1032  89, 162, 162, 137, 86, 88, 147, 138, 88, 94,
1033  146, 86, 144, 132, 132, 146, 144, 86, 17, 86,
1034  144, 132, 144, 88, 88, 132, 132
1035 };
1036 
1037 #define yyerrok (yyerrstatus = 0)
1038 #define yyclearin (yychar = YYEMPTY)
1039 #define YYEMPTY (-2)
1040 #define YYEOF 0
1041 
1042 #define YYACCEPT goto yyacceptlab
1043 #define YYABORT goto yyabortlab
1044 #define YYERROR goto yyerrorlab
1045 
1046 
1047 /* Like YYERROR except do call yyerror. This remains here temporarily
1048  to ease the transition to the new meaning of YYERROR, for GCC.
1049  Once GCC version 2 has supplanted version 1, this can go. */
1050 
1051 #define YYFAIL goto yyerrlab
1052 
1053 #define YYRECOVERING() (!!yyerrstatus)
1054 
1055 #define YYBACKUP(Token, Value) \
1056 do \
1057  if (yychar == YYEMPTY && yylen == 1) \
1058  { \
1059  yychar = (Token); \
1060  yylval = (Value); \
1061  yytoken = YYTRANSLATE (yychar); \
1062  YYPOPSTACK (1); \
1063  goto yybackup; \
1064  } \
1065  else \
1066  { \
1067  yyerror (YY_("syntax error: cannot back up")); \
1068  YYERROR; \
1069  } \
1070 while (YYID (0))
1071 
1072 
1073 #define YYTERROR 1
1074 #define YYERRCODE 256
1075 
1076 
1077 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1078  If N is 0, then set CURRENT to the empty location which ends
1079  the previous symbol: RHS[0] (always defined). */
1080 
1081 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1082 #ifndef YYLLOC_DEFAULT
1083 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1084  do \
1085  if (YYID (N)) \
1086  { \
1087  (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
1088  (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
1089  (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
1090  (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
1091  } \
1092  else \
1093  { \
1094  (Current).first_line = (Current).last_line = \
1095  YYRHSLOC (Rhs, 0).last_line; \
1096  (Current).first_column = (Current).last_column = \
1097  YYRHSLOC (Rhs, 0).last_column; \
1098  } \
1099  while (YYID (0))
1100 #endif
1101 
1102 
1103 /* YY_LOCATION_PRINT -- Print the location on the stream.
1104  This macro was not mandated originally: define only if we know
1105  we won't break user code: when these are the locations we know. */
1106 
1107 #ifndef YY_LOCATION_PRINT
1108 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1109 # define YY_LOCATION_PRINT(File, Loc) \
1110  fprintf (File, "%d.%d-%d.%d", \
1111  (Loc).first_line, (Loc).first_column, \
1112  (Loc).last_line, (Loc).last_column)
1113 # else
1114 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1115 # endif
1116 #endif
1117 
1118 
1119 /* YYLEX -- calling `yylex' with the right arguments. */
1120 
1121 #ifdef YYLEX_PARAM
1122 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
1123 #else
1124 # define YYLEX yylex (&yylval, &yylloc)
1125 #endif
1126 
1127 /* Enable debugging if requested. */
1128 #if YYDEBUG
1129 
1130 # ifndef YYFPRINTF
1131 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1132 # define YYFPRINTF fprintf
1133 # endif
1134 
1135 # define YYDPRINTF(Args) \
1136 do { \
1137  if (yydebug) \
1138  YYFPRINTF Args; \
1139 } while (YYID (0))
1140 
1141 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1142 do { \
1143  if (yydebug) \
1144  { \
1145  YYFPRINTF (stderr, "%s ", Title); \
1146  yy_symbol_print (stderr, \
1147  Type, Value, Location); \
1148  YYFPRINTF (stderr, "\n"); \
1149  } \
1150 } while (YYID (0))
1151 
1152 
1153 /*--------------------------------.
1154 | Print this symbol on YYOUTPUT. |
1155 `--------------------------------*/
1156 
1157 /*ARGSUSED*/
1158 #if (defined __STDC__ || defined __C99__FUNC__ \
1159  || defined __cplusplus || defined _MSC_VER)
1160 static void
1161 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
1162 #else
1163 static void
1164 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
1165  FILE *yyoutput;
1166  int yytype;
1167  YYSTYPE const * const yyvaluep;
1168  YYLTYPE const * const yylocationp;
1169 #endif
1170 {
1171  if (!yyvaluep)
1172  return;
1173  YYUSE (yylocationp);
1174 # ifdef YYPRINT
1175  if (yytype < YYNTOKENS)
1176  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1177 # else
1178  YYUSE (yyoutput);
1179 # endif
1180  switch (yytype)
1181  {
1182  default:
1183  break;
1184  }
1185 }
1186 
1187 
1188 /*--------------------------------.
1189 | Print this symbol on YYOUTPUT. |
1190 `--------------------------------*/
1191 
1192 #if (defined __STDC__ || defined __C99__FUNC__ \
1193  || defined __cplusplus || defined _MSC_VER)
1194 static void
1195 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
1196 #else
1197 static void
1198 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
1199  FILE *yyoutput;
1200  int yytype;
1201  YYSTYPE const * const yyvaluep;
1202  YYLTYPE const * const yylocationp;
1203 #endif
1204 {
1205  if (yytype < YYNTOKENS)
1206  YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1207  else
1208  YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1209 
1210  YY_LOCATION_PRINT (yyoutput, *yylocationp);
1211  YYFPRINTF (yyoutput, ": ");
1212  yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
1213  YYFPRINTF (yyoutput, ")");
1214 }
1215 
1216 /*------------------------------------------------------------------.
1217 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1218 | TOP (included). |
1219 `------------------------------------------------------------------*/
1220 
1221 #if (defined __STDC__ || defined __C99__FUNC__ \
1222  || defined __cplusplus || defined _MSC_VER)
1223 static void
1224 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1225 #else
1226 static void
1227 yy_stack_print (bottom, top)
1228  yytype_int16 *bottom;
1229  yytype_int16 *top;
1230 #endif
1231 {
1232  YYFPRINTF (stderr, "Stack now");
1233  for (; bottom <= top; ++bottom)
1234  YYFPRINTF (stderr, " %d", *bottom);
1235  YYFPRINTF (stderr, "\n");
1236 }
1237 
1238 # define YY_STACK_PRINT(Bottom, Top) \
1239 do { \
1240  if (yydebug) \
1241  yy_stack_print ((Bottom), (Top)); \
1242 } while (YYID (0))
1243 
1244 
1245 /*------------------------------------------------.
1246 | Report that the YYRULE is going to be reduced. |
1247 `------------------------------------------------*/
1248 
1249 #if (defined __STDC__ || defined __C99__FUNC__ \
1250  || defined __cplusplus || defined _MSC_VER)
1251 static void
1252 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
1253 #else
1254 static void
1255 yy_reduce_print (yyvsp, yylsp, yyrule)
1256  YYSTYPE *yyvsp;
1257  YYLTYPE *yylsp;
1258  int yyrule;
1259 #endif
1260 {
1261  int yynrhs = yyr2[yyrule];
1262  int yyi;
1263  unsigned long int yylno = yyrline[yyrule];
1264  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1265  yyrule - 1, yylno);
1266  /* The symbols being reduced. */
1267  for (yyi = 0; yyi < yynrhs; yyi++)
1268  {
1269  fprintf (stderr, " $%d = ", yyi + 1);
1270  yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1271  &(yyvsp[(yyi + 1) - (yynrhs)])
1272  , &(yylsp[(yyi + 1) - (yynrhs)]) );
1273  fprintf (stderr, "\n");
1274  }
1275 }
1276 
1277 # define YY_REDUCE_PRINT(Rule) \
1278 do { \
1279  if (yydebug) \
1280  yy_reduce_print (yyvsp, yylsp, Rule); \
1281 } while (YYID (0))
1282 
1283 /* Nonzero means print parse trace. It is left uninitialized so that
1284  multiple parsers can coexist. */
1285 int yydebug;
1286 #else /* !YYDEBUG */
1287 # define YYDPRINTF(Args)
1288 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1289 # define YY_STACK_PRINT(Bottom, Top)
1290 # define YY_REDUCE_PRINT(Rule)
1291 #endif /* !YYDEBUG */
1292 
1293 
1294 /* YYINITDEPTH -- initial size of the parser's stacks. */
1295 #ifndef YYINITDEPTH
1296 # define YYINITDEPTH 200
1297 #endif
1298 
1299 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1300  if the built-in stack extension method is used).
1301 
1302  Do not make this value too large; the results are undefined if
1303  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1304  evaluated with infinite-precision integer arithmetic. */
1305 
1306 #ifndef YYMAXDEPTH
1307 # define YYMAXDEPTH 10000
1308 #endif
1309 
1310 
1311 
1312 #if YYERROR_VERBOSE
1313 
1314 # ifndef yystrlen
1315 # if defined __GLIBC__ && defined _STRING_H
1316 # define yystrlen strlen
1317 # else
1318 /* Return the length of YYSTR. */
1319 #if (defined __STDC__ || defined __C99__FUNC__ \
1320  || defined __cplusplus || defined _MSC_VER)
1321 static YYSIZE_T
1322 yystrlen (const char *yystr)
1323 #else
1324 static YYSIZE_T
1325 yystrlen (yystr)
1326  const char *yystr;
1327 #endif
1328 {
1329  YYSIZE_T yylen;
1330  for (yylen = 0; yystr[yylen]; yylen++)
1331  continue;
1332  return yylen;
1333 }
1334 # endif
1335 # endif
1336 
1337 # ifndef yystpcpy
1338 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1339 # define yystpcpy stpcpy
1340 # else
1341 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1342  YYDEST. */
1343 #if (defined __STDC__ || defined __C99__FUNC__ \
1344  || defined __cplusplus || defined _MSC_VER)
1345 static char *
1346 yystpcpy (char *yydest, const char *yysrc)
1347 #else
1348 static char *
1349 yystpcpy (yydest, yysrc)
1350  char *yydest;
1351  const char *yysrc;
1352 #endif
1353 {
1354  char *yyd = yydest;
1355  const char *yys = yysrc;
1356 
1357  while ((*yyd++ = *yys++) != '\0')
1358  continue;
1359 
1360  return yyd - 1;
1361 }
1362 # endif
1363 # endif
1364 
1365 # ifndef yytnamerr
1366 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1367  quotes and backslashes, so that it's suitable for yyerror. The
1368  heuristic is that double-quoting is unnecessary unless the string
1369  contains an apostrophe, a comma, or backslash (other than
1370  backslash-backslash). YYSTR is taken from yytname. If YYRES is
1371  null, do not copy; instead, return the length of what the result
1372  would have been. */
1373 static YYSIZE_T
1374 yytnamerr (char *yyres, const char *yystr)
1375 {
1376  if (*yystr == '"')
1377  {
1378  YYSIZE_T yyn = 0;
1379  char const *yyp = yystr;
1380 
1381  for (;;)
1382  switch (*++yyp)
1383  {
1384  case '\'':
1385  case ',':
1386  goto do_not_strip_quotes;
1387 
1388  case '\\':
1389  if (*++yyp != '\\')
1390  goto do_not_strip_quotes;
1391  /* Fall through. */
1392  default:
1393  if (yyres)
1394  yyres[yyn] = *yyp;
1395  yyn++;
1396  break;
1397 
1398  case '"':
1399  if (yyres)
1400  yyres[yyn] = '\0';
1401  return yyn;
1402  }
1403  do_not_strip_quotes: ;
1404  }
1405 
1406  if (! yyres)
1407  return yystrlen (yystr);
1408 
1409  return yystpcpy (yyres, yystr) - yyres;
1410 }
1411 # endif
1412 
1413 /* Copy into YYRESULT an error message about the unexpected token
1414  YYCHAR while in state YYSTATE. Return the number of bytes copied,
1415  including the terminating null byte. If YYRESULT is null, do not
1416  copy anything; just return the number of bytes that would be
1417  copied. As a special case, return 0 if an ordinary "syntax error"
1418  message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1419  size calculation. */
1420 static YYSIZE_T
1421 yysyntax_error (char *yyresult, int yystate, int yychar)
1422 {
1423  int yyn = yypact[yystate];
1424 
1425  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1426  return 0;
1427  else
1428  {
1429  int yytype = YYTRANSLATE (yychar);
1430  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1431  YYSIZE_T yysize = yysize0;
1432  YYSIZE_T yysize1;
1433  int yysize_overflow = 0;
1434  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1435  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1436  int yyx;
1437 
1438 # if 0
1439  /* This is so xgettext sees the translatable formats that are
1440  constructed on the fly. */
1441  YY_("syntax error, unexpected %s");
1442  YY_("syntax error, unexpected %s, expecting %s");
1443  YY_("syntax error, unexpected %s, expecting %s or %s");
1444  YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1445  YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1446 # endif
1447  char *yyfmt;
1448  char const *yyf;
1449  static char const yyunexpected[] = "syntax error, unexpected %s";
1450  static char const yyexpecting[] = ", expecting %s";
1451  static char const yyor[] = " or %s";
1452  char yyformat[sizeof yyunexpected
1453  + sizeof yyexpecting - 1
1454  + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1455  * (sizeof yyor - 1))];
1456  char const *yyprefix = yyexpecting;
1457 
1458  /* Start YYX at -YYN if negative to avoid negative indexes in
1459  YYCHECK. */
1460  int yyxbegin = yyn < 0 ? -yyn : 0;
1461 
1462  /* Stay within bounds of both yycheck and yytname. */
1463  int yychecklim = YYLAST - yyn + 1;
1464  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1465  int yycount = 1;
1466 
1467  yyarg[0] = yytname[yytype];
1468  yyfmt = yystpcpy (yyformat, yyunexpected);
1469 
1470  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1471  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1472  {
1473  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1474  {
1475  yycount = 1;
1476  yysize = yysize0;
1477  yyformat[sizeof yyunexpected - 1] = '\0';
1478  break;
1479  }
1480  yyarg[yycount++] = yytname[yyx];
1481  yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1482  yysize_overflow |= (yysize1 < yysize);
1483  yysize = yysize1;
1484  yyfmt = yystpcpy (yyfmt, yyprefix);
1485  yyprefix = yyor;
1486  }
1487 
1488  yyf = YY_(yyformat);
1489  yysize1 = yysize + yystrlen (yyf);
1490  yysize_overflow |= (yysize1 < yysize);
1491  yysize = yysize1;
1492 
1493  if (yysize_overflow)
1494  return YYSIZE_MAXIMUM;
1495 
1496  if (yyresult)
1497  {
1498  /* Avoid sprintf, as that infringes on the user's name space.
1499  Don't have undefined behavior even if the translation
1500  produced a string with the wrong number of "%s"s. */
1501  char *yyp = yyresult;
1502  int yyi = 0;
1503  while ((*yyp = *yyf) != '\0')
1504  {
1505  if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1506  {
1507  yyp += yytnamerr (yyp, yyarg[yyi++]);
1508  yyf += 2;
1509  }
1510  else
1511  {
1512  yyp++;
1513  yyf++;
1514  }
1515  }
1516  }
1517  return yysize;
1518  }
1519 }
1520 #endif /* YYERROR_VERBOSE */
1521 
1522 
1523 /*-----------------------------------------------.
1524 | Release the memory associated to this symbol. |
1525 `-----------------------------------------------*/
1526 
1527 /*ARGSUSED*/
1528 #if (defined __STDC__ || defined __C99__FUNC__ \
1529  || defined __cplusplus || defined _MSC_VER)
1530 static void
1531 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1532 #else
1533 static void
1534 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1535  const char *yymsg;
1536  int yytype;
1537  YYSTYPE *yyvaluep;
1538  YYLTYPE *yylocationp;
1539 #endif
1540 {
1541  YYUSE (yyvaluep);
1542  YYUSE (yylocationp);
1543 
1544  if (!yymsg)
1545  yymsg = "Deleting";
1546  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1547 
1548  switch (yytype)
1549  {
1550 
1551  default:
1552  break;
1553  }
1554 }
1555 
1556 
1557 /* Prevent warnings from -Wmissing-prototypes. */
1558 
1559 #ifdef YYPARSE_PARAM
1560 #if defined __STDC__ || defined __cplusplus
1561 int yyparse (void *YYPARSE_PARAM);
1562 #else
1563 int yyparse ();
1564 #endif
1565 #else /* ! YYPARSE_PARAM */
1566 #if defined __STDC__ || defined __cplusplus
1567 int yyparse (void);
1568 #else
1569 int yyparse ();
1570 #endif
1571 #endif /* ! YYPARSE_PARAM */
1572 
1573 
1574 
1575 
1576 
1577 
1578 /*----------.
1579 | yyparse. |
1580 `----------*/
1581 
1582 #ifdef YYPARSE_PARAM
1583 #if (defined __STDC__ || defined __C99__FUNC__ \
1584  || defined __cplusplus || defined _MSC_VER)
1585 int
1586 yyparse (void *YYPARSE_PARAM)
1587 #else
1588 int
1589 yyparse (YYPARSE_PARAM)
1590  void *YYPARSE_PARAM;
1591 #endif
1592 #else /* ! YYPARSE_PARAM */
1593 #if (defined __STDC__ || defined __C99__FUNC__ \
1594  || defined __cplusplus || defined _MSC_VER)
1595 int
1596 yyparse (void)
1597 #else
1598 int
1599 yyparse ()
1600 
1601 #endif
1602 #endif
1603 {
1604  /* The look-ahead symbol. */
1605 int yychar;
1606 
1607 /* The semantic value of the look-ahead symbol. */
1608 YYSTYPE yylval;
1609 
1610 /* Number of syntax errors so far. */
1611 int yynerrs;
1612 /* Location data for the look-ahead symbol. */
1613 YYLTYPE yylloc;
1614 
1615  int yystate;
1616  int yyn;
1617  int yyresult;
1618  /* Number of tokens to shift before error messages enabled. */
1619  int yyerrstatus;
1620  /* Look-ahead token as an internal (translated) token number. */
1621  int yytoken = 0;
1622 #if YYERROR_VERBOSE
1623  /* Buffer for error messages, and its allocated size. */
1624  char yymsgbuf[128];
1625  char *yymsg = yymsgbuf;
1626  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1627 #endif
1628 
1629  /* Three stacks and their tools:
1630  `yyss': related to states,
1631  `yyvs': related to semantic values,
1632  `yyls': related to locations.
1633 
1634  Refer to the stacks thru separate pointers, to allow yyoverflow
1635  to reallocate them elsewhere. */
1636 
1637  /* The state stack. */
1638  yytype_int16 yyssa[YYINITDEPTH];
1639  yytype_int16 *yyss = yyssa;
1640  yytype_int16 *yyssp;
1641 
1642  /* The semantic value stack. */
1643  YYSTYPE yyvsa[YYINITDEPTH];
1644  YYSTYPE *yyvs = yyvsa;
1645  YYSTYPE *yyvsp;
1646 
1647  /* The location stack. */
1648  YYLTYPE yylsa[YYINITDEPTH];
1649  YYLTYPE *yyls = yylsa;
1650  YYLTYPE *yylsp;
1651  /* The locations where the error started and ended. */
1652  YYLTYPE yyerror_range[2];
1653 
1654 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1655 
1656  YYSIZE_T yystacksize = YYINITDEPTH;
1657 
1658  /* The variables used to return semantic value and location from the
1659  action routines. */
1660  YYSTYPE yyval;
1661  YYLTYPE yyloc;
1662 
1663  /* The number of symbols on the RHS of the reduced rule.
1664  Keep to zero when no symbol should be popped. */
1665  int yylen = 0;
1666 
1667  YYDPRINTF ((stderr, "Starting parse\n"));
1668 
1669  yystate = 0;
1670  yyerrstatus = 0;
1671  yynerrs = 0;
1672  yychar = YYEMPTY; /* Cause a token to be read. */
1673 
1674  /* Initialize stack pointers.
1675  Waste one element of value and location stack
1676  so that they stay on the same level as the state stack.
1677  The wasted elements are never initialized. */
1678 
1679  yyssp = yyss;
1680  yyvsp = yyvs;
1681  yylsp = yyls;
1682 #if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1683  /* Initialize the default location before parsing starts. */
1684  yylloc.first_line = yylloc.last_line = 1;
1685  yylloc.first_column = yylloc.last_column = 0;
1686 #endif
1687 
1688  goto yysetstate;
1689 
1690 /*------------------------------------------------------------.
1691 | yynewstate -- Push a new state, which is found in yystate. |
1692 `------------------------------------------------------------*/
1693  yynewstate:
1694  /* In all cases, when you get here, the value and location stacks
1695  have just been pushed. So pushing a state here evens the stacks. */
1696  yyssp++;
1697 
1698  yysetstate:
1699  *yyssp = yystate;
1700 
1701  if (yyss + yystacksize - 1 <= yyssp)
1702  {
1703  /* Get the current used size of the three stacks, in elements. */
1704  YYSIZE_T yysize = yyssp - yyss + 1;
1705 
1706 #ifdef yyoverflow
1707  {
1708  /* Give user a chance to reallocate the stack. Use copies of
1709  these so that the &'s don't force the real ones into
1710  memory. */
1711  YYSTYPE *yyvs1 = yyvs;
1712  yytype_int16 *yyss1 = yyss;
1713  YYLTYPE *yyls1 = yyls;
1714 
1715  /* Each stack pointer address is followed by the size of the
1716  data in use in that stack, in bytes. This used to be a
1717  conditional around just the two extra args, but that might
1718  be undefined if yyoverflow is a macro. */
1719  yyoverflow (YY_("memory exhausted"),
1720  &yyss1, yysize * sizeof (*yyssp),
1721  &yyvs1, yysize * sizeof (*yyvsp),
1722  &yyls1, yysize * sizeof (*yylsp),
1723  &yystacksize);
1724  yyls = yyls1;
1725  yyss = yyss1;
1726  yyvs = yyvs1;
1727  }
1728 #else /* no yyoverflow */
1729 # ifndef YYSTACK_RELOCATE
1730  goto yyexhaustedlab;
1731 # else
1732  /* Extend the stack our own way. */
1733  if (YYMAXDEPTH <= yystacksize)
1734  goto yyexhaustedlab;
1735  yystacksize *= 2;
1736  if (YYMAXDEPTH < yystacksize)
1737  yystacksize = YYMAXDEPTH;
1738 
1739  {
1740  yytype_int16 *yyss1 = yyss;
1741  union yyalloc *yyptr =
1742  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1743  if (! yyptr)
1744  goto yyexhaustedlab;
1745  YYSTACK_RELOCATE (yyss);
1746  YYSTACK_RELOCATE (yyvs);
1747  YYSTACK_RELOCATE (yyls);
1748 # undef YYSTACK_RELOCATE
1749  if (yyss1 != yyssa)
1750  YYSTACK_FREE (yyss1);
1751  }
1752 # endif
1753 #endif /* no yyoverflow */
1754 
1755  yyssp = yyss + yysize - 1;
1756  yyvsp = yyvs + yysize - 1;
1757  yylsp = yyls + yysize - 1;
1758 
1759  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1760  (unsigned long int) yystacksize));
1761 
1762  if (yyss + yystacksize - 1 <= yyssp)
1763  YYABORT;
1764  }
1765 
1766  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1767 
1768  goto yybackup;
1769 
1770 /*-----------.
1771 | yybackup. |
1772 `-----------*/
1773 yybackup:
1774 
1775  /* Do appropriate processing given the current state. Read a
1776  look-ahead token if we need one and don't already have one. */
1777 
1778  /* First try to decide what to do without reference to look-ahead token. */
1779  yyn = yypact[yystate];
1780  if (yyn == YYPACT_NINF)
1781  goto yydefault;
1782 
1783  /* Not known => get a look-ahead token if don't already have one. */
1784 
1785  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1786  if (yychar == YYEMPTY)
1787  {
1788  YYDPRINTF ((stderr, "Reading a token: "));
1789  yychar = YYLEX;
1790  }
1791 
1792  if (yychar <= YYEOF)
1793  {
1794  yychar = yytoken = YYEOF;
1795  YYDPRINTF ((stderr, "Now at end of input.\n"));
1796  }
1797  else
1798  {
1799  yytoken = YYTRANSLATE (yychar);
1800  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1801  }
1802 
1803  /* If the proper action on seeing token YYTOKEN is to reduce or to
1804  detect an error, take that action. */
1805  yyn += yytoken;
1806  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1807  goto yydefault;
1808  yyn = yytable[yyn];
1809  if (yyn <= 0)
1810  {
1811  if (yyn == 0 || yyn == YYTABLE_NINF)
1812  goto yyerrlab;
1813  yyn = -yyn;
1814  goto yyreduce;
1815  }
1816 
1817  if (yyn == YYFINAL)
1818  YYACCEPT;
1819 
1820  /* Count tokens shifted since error; after three, turn off error
1821  status. */
1822  if (yyerrstatus)
1823  yyerrstatus--;
1824 
1825  /* Shift the look-ahead token. */
1826  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1827 
1828  /* Discard the shifted token unless it is eof. */
1829  if (yychar != YYEOF)
1830  yychar = YYEMPTY;
1831 
1832  yystate = yyn;
1833  *++yyvsp = yylval;
1834  *++yylsp = yylloc;
1835  goto yynewstate;
1836 
1837 
1838 /*-----------------------------------------------------------.
1839 | yydefault -- do the default action for the current state. |
1840 `-----------------------------------------------------------*/
1841 yydefault:
1842  yyn = yydefact[yystate];
1843  if (yyn == 0)
1844  goto yyerrlab;
1845  goto yyreduce;
1846 
1847 
1848 /*-----------------------------.
1849 | yyreduce -- Do a reduction. |
1850 `-----------------------------*/
1851 yyreduce:
1852  /* yyn is the number of a rule to reduce with. */
1853  yylen = yyr2[yyn];
1854 
1855  /* If YYLEN is nonzero, implement the default value of the action:
1856  `$$ = $1'.
1857 
1858  Otherwise, the following line sets YYVAL to garbage.
1859  This behavior is undocumented and Bison
1860  users should not rely upon it. Assigning to YYVAL
1861  unconditionally makes the parser a bit smaller, and it avoids a
1862  GCC warning that YYVAL may be used uninitialized. */
1863  yyval = yyvsp[1-yylen];
1864 
1865  /* Default location. */
1866  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
1867  YY_REDUCE_PRINT (yyn);
1868  switch (yyn)
1869  {
1870  case 4:
1871 #line 125 "wmlscript/wsgram.y"
1872  { ws_error_syntax(pctx, (yylsp[(1) - (1)]).first_line); }
1873  break;
1874 
1875  case 8:
1876 #line 138 "wmlscript/wsgram.y"
1877  { ws_error_syntax(pctx, (yylsp[(1) - (1)]).first_line); }
1878  break;
1879 
1880  case 12:
1881 #line 149 "wmlscript/wsgram.y"
1882  { ws_pragma_use(pctx, (yylsp[(2) - (3)]).first_line, (yyvsp[(2) - (3)].identifier), (yyvsp[(3) - (3)].string)); }
1883  break;
1884 
1885  case 14:
1886 #line 158 "wmlscript/wsgram.y"
1887  {
1888  WsCompiler *compiler = (WsCompiler *) pctx;
1889 
1890  /* Pass this to the byte-code */
1891  if (!ws_bc_add_pragma_access_domain(compiler->bc, (yyvsp[(2) - (2)].string)->data,
1892  (yyvsp[(2) - (2)].string)->len))
1893  ws_error_memory(pctx);
1894  ws_lexer_free_utf8(compiler, (yyvsp[(2) - (2)].string));
1895  }
1896  break;
1897 
1898  case 15:
1899 #line 168 "wmlscript/wsgram.y"
1900  {
1901  WsCompiler *compiler = (WsCompiler *) pctx;
1902 
1903  /* Pass this to the byte-code */
1904  if (!ws_bc_add_pragma_access_path(compiler->bc, (yyvsp[(2) - (2)].string)->data,
1905  (yyvsp[(2) - (2)].string)->len))
1906  ws_error_memory(pctx);
1907 
1908  ws_lexer_free_utf8(compiler, (yyvsp[(2) - (2)].string));
1909  }
1910  break;
1911 
1912  case 16:
1913 #line 179 "wmlscript/wsgram.y"
1914  {
1915  WsCompiler *compiler = (WsCompiler *) pctx;
1916  WsBool success = WS_TRUE;
1917 
1918  /* Pass these to the byte-code */
1919  if (!ws_bc_add_pragma_access_domain(compiler->bc, (yyvsp[(2) - (4)].string)->data,
1920  (yyvsp[(2) - (4)].string)->len))
1921  success = WS_FALSE;
1922 
1923  if (!ws_bc_add_pragma_access_path(compiler->bc, (yyvsp[(4) - (4)].string)->data,
1924  (yyvsp[(4) - (4)].string)->len))
1925  success = WS_FALSE;
1926 
1927  if (!success)
1928  ws_error_memory(pctx);
1929 
1930  ws_lexer_free_utf8(compiler, (yyvsp[(2) - (4)].string));
1931  ws_lexer_free_utf8(compiler, (yyvsp[(4) - (4)].string));
1932  }
1933  break;
1934 
1935  case 21:
1936 #line 212 "wmlscript/wsgram.y"
1937  {
1938  WsCompiler *compiler = (WsCompiler *) pctx;
1939 
1940  /* Meta information for the origin servers. Show it
1941  * to the user if requested. */
1942  if (compiler->params.meta_name_cb)
1943  (*compiler->params.meta_name_cb)(
1944  (yyvsp[(2) - (2)].meta_body)->property_name, (yyvsp[(2) - (2)].meta_body)->content,
1945  (yyvsp[(2) - (2)].meta_body)->scheme,
1946  compiler->params.meta_name_cb_context);
1947 
1948  /* We do not need the MetaBody anymore. */
1949  ws_pragma_meta_body_free(compiler, (yyvsp[(2) - (2)].meta_body));
1950  }
1951  break;
1952 
1953  case 22:
1954 #line 230 "wmlscript/wsgram.y"
1955  {
1956  WsCompiler *compiler = (WsCompiler *) pctx;
1957 
1958  /* Meta information HTTP header that should be
1959  * included to an HTTP response header. Show it to
1960  * the user if requested. */
1961  if (compiler->params.meta_http_equiv_cb)
1962  (*compiler->params.meta_http_equiv_cb)(
1963  (yyvsp[(3) - (3)].meta_body)->property_name,
1964  (yyvsp[(3) - (3)].meta_body)->content,
1965  (yyvsp[(3) - (3)].meta_body)->scheme,
1967 
1968  /* We do not need the MetaBody anymore. */
1969  ws_pragma_meta_body_free(compiler, (yyvsp[(3) - (3)].meta_body));
1970  }
1971  break;
1972 
1973  case 23:
1974 #line 250 "wmlscript/wsgram.y"
1975  {
1976  WsBool success;
1977  WsCompiler *compiler = (WsCompiler *) pctx;
1978 
1979  /* Pass this pragma to the byte-code */
1980  if ((yyvsp[(3) - (3)].meta_body)) {
1981  if ((yyvsp[(3) - (3)].meta_body)->scheme)
1982  success
1984  compiler->bc,
1985  (yyvsp[(3) - (3)].meta_body)->property_name->data,
1986  (yyvsp[(3) - (3)].meta_body)->property_name->len,
1987  (yyvsp[(3) - (3)].meta_body)->content->data,
1988  (yyvsp[(3) - (3)].meta_body)->content->len,
1989  (yyvsp[(3) - (3)].meta_body)->scheme->data,
1990  (yyvsp[(3) - (3)].meta_body)->scheme->len);
1991  else
1993  compiler->bc,
1994  (yyvsp[(3) - (3)].meta_body)->property_name->data,
1995  (yyvsp[(3) - (3)].meta_body)->property_name->len,
1996  (yyvsp[(3) - (3)].meta_body)->content->data,
1997  (yyvsp[(3) - (3)].meta_body)->content->len);
1998 
1999  /* Free the MetaBody. */
2000  ws_pragma_meta_body_free(compiler, (yyvsp[(3) - (3)].meta_body));
2001 
2002  if (!success)
2003  ws_error_memory(pctx);
2004  }
2005  }
2006  break;
2007 
2008  case 24:
2009 #line 285 "wmlscript/wsgram.y"
2010  { (yyval.meta_body) = ws_pragma_meta_body(pctx, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].string), NULL); }
2011  break;
2012 
2013  case 25:
2014 #line 287 "wmlscript/wsgram.y"
2015  { (yyval.meta_body) = ws_pragma_meta_body(pctx, (yyvsp[(1) - (3)].string), (yyvsp[(2) - (3)].string), (yyvsp[(3) - (3)].string)); }
2016  break;
2017 
2018  case 31:
2019 #line 304 "wmlscript/wsgram.y"
2020  {
2021  char *name = ws_strdup((yyvsp[(3) - (8)].identifier));
2022 
2023  ws_lexer_free_block(pctx, (yyvsp[(3) - (8)].identifier));
2024 
2025  if (name)
2026  ws_function(pctx, (yyvsp[(1) - (8)].boolean), name, (yylsp[(3) - (8)]).first_line, (yyvsp[(5) - (8)].list), (yyvsp[(7) - (8)].list));
2027  else
2028  ws_error_memory(pctx);
2029  }
2030  break;
2031 
2032  case 32:
2033 #line 317 "wmlscript/wsgram.y"
2034  { (yyval.boolean) = WS_FALSE; }
2035  break;
2036 
2037  case 33:
2038 #line 318 "wmlscript/wsgram.y"
2039  { (yyval.boolean) = WS_TRUE; }
2040  break;
2041 
2042  case 34:
2043 #line 323 "wmlscript/wsgram.y"
2044  { (yyval.list) = ws_list_new(pctx); }
2045  break;
2046 
2047  case 38:
2048 #line 334 "wmlscript/wsgram.y"
2049  {
2050  char *id;
2051  WsFormalParm *parm;
2052 
2053  id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, (yyvsp[(1) - (1)].identifier));
2054  parm = ws_formal_parameter(pctx, (yylsp[(1) - (1)]).first_line, id);
2055 
2056  ws_lexer_free_block(pctx, (yyvsp[(1) - (1)].identifier));
2057 
2058  if (id == NULL || parm == NULL) {
2059  ws_error_memory(pctx);
2060  (yyval.list) = NULL;
2061  } else {
2062  (yyval.list) = ws_list_new(pctx);
2063  ws_list_append(pctx, (yyval.list), parm);
2064  }
2065  }
2066  break;
2067 
2068  case 39:
2069 #line 352 "wmlscript/wsgram.y"
2070  {
2071  char *id;
2072  WsFormalParm *parm;
2073 
2074  id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree, (yyvsp[(3) - (3)].identifier));
2075  parm = ws_formal_parameter(pctx, (yylsp[(1) - (3)]).first_line, id);
2076 
2077  ws_lexer_free_block(pctx, (yyvsp[(3) - (3)].identifier));
2078 
2079  if (id == NULL || parm == NULL) {
2080  ws_error_memory(pctx);
2081  (yyval.list) = NULL;
2082  } else
2083  ws_list_append(pctx, (yyvsp[(1) - (3)].list), parm);
2084  }
2085  break;
2086 
2087  case 40:
2088 #line 373 "wmlscript/wsgram.y"
2089  {
2090  if ((yyvsp[(1) - (1)].list))
2091  (yyval.stmt) = ws_stmt_block(pctx, (yyvsp[(1) - (1)].list)->first_line, (yyvsp[(1) - (1)].list)->last_line,
2092  (yyvsp[(1) - (1)].list));
2093  else
2094  (yyval.stmt) = NULL;
2095  }
2096  break;
2097 
2098  case 42:
2099 #line 382 "wmlscript/wsgram.y"
2100  { (yyval.stmt) = ws_stmt_empty(pctx, (yylsp[(1) - (1)]).first_line); }
2101  break;
2102 
2103  case 43:
2104 #line 384 "wmlscript/wsgram.y"
2105  { (yyval.stmt) = ws_stmt_expr(pctx, (yyvsp[(1) - (2)].expr)->line, (yyvsp[(1) - (2)].expr)); }
2106  break;
2107 
2108  case 46:
2109 #line 388 "wmlscript/wsgram.y"
2110  { (yyval.stmt) = ws_stmt_continue(pctx, (yylsp[(1) - (2)]).first_line); }
2111  break;
2112 
2113  case 47:
2114 #line 390 "wmlscript/wsgram.y"
2115  { (yyval.stmt) = ws_stmt_break(pctx, (yylsp[(1) - (2)]).first_line); }
2116  break;
2117 
2118  case 49:
2119 #line 395 "wmlscript/wsgram.y"
2120  {
2121  (yyval.list) = (yyvsp[(2) - (3)].list);
2122  if ((yyval.list)) {
2123  (yyval.list)->first_line = (yylsp[(1) - (3)]).first_line;
2124  (yyval.list)->last_line = (yylsp[(3) - (3)]).first_line;
2125  }
2126  }
2127  break;
2128 
2129  case 50:
2130 #line 403 "wmlscript/wsgram.y"
2131  {
2132  ws_error_syntax(pctx, (yylsp[(1) - (1)]).first_line);
2133  (yyval.list) = NULL;
2134  }
2135  break;
2136 
2137  case 51:
2138 #line 411 "wmlscript/wsgram.y"
2139  { (yyval.list) = ws_list_new(pctx); }
2140  break;
2141 
2142  case 53:
2143 #line 417 "wmlscript/wsgram.y"
2144  {
2145  (yyval.list) = ws_list_new(pctx);
2146  ws_list_append(pctx, (yyval.list), (yyvsp[(1) - (1)].stmt));
2147  }
2148  break;
2149 
2150  case 54:
2151 #line 422 "wmlscript/wsgram.y"
2152  { ws_list_append(pctx, (yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].stmt)); }
2153  break;
2154 
2155  case 55:
2156 #line 427 "wmlscript/wsgram.y"
2157  { (yyval.stmt) = ws_stmt_variable(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(2) - (3)].list)); }
2158  break;
2159 
2160  case 56:
2161 #line 429 "wmlscript/wsgram.y"
2162  { ws_error_syntax(pctx, (yylsp[(2) - (2)]).first_line); }
2163  break;
2164 
2165  case 57:
2166 #line 434 "wmlscript/wsgram.y"
2167  {
2168  (yyval.list) = ws_list_new(pctx);
2169  ws_list_append(pctx, (yyval.list), (yyvsp[(1) - (1)].vardec));
2170  }
2171  break;
2172 
2173  case 58:
2174 #line 439 "wmlscript/wsgram.y"
2175  { ws_list_append(pctx, (yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].vardec)); }
2176  break;
2177 
2178  case 59:
2179 #line 444 "wmlscript/wsgram.y"
2180  {
2181  char *id = ws_f_strdup(((WsCompiler *) pctx)->pool_stree,
2182  (yyvsp[(1) - (2)].identifier));
2183 
2184  ws_lexer_free_block(pctx, (yyvsp[(1) - (2)].identifier));
2185  if (id == NULL) {
2186  ws_error_memory(pctx);
2187  (yyval.vardec) = NULL;
2188  } else
2189  (yyval.vardec) = ws_variable_declaration(pctx, id, (yyvsp[(2) - (2)].expr));
2190  }
2191  break;
2192 
2193  case 60:
2194 #line 459 "wmlscript/wsgram.y"
2195  { (yyval.expr) = NULL; }
2196  break;
2197 
2198  case 61:
2199 #line 461 "wmlscript/wsgram.y"
2200  { (yyval.expr) = (yyvsp[(2) - (2)].expr); }
2201  break;
2202 
2203  case 62:
2204 #line 466 "wmlscript/wsgram.y"
2205  { (yyval.stmt) = ws_stmt_if(pctx, (yylsp[(1) - (7)]).first_line, (yyvsp[(3) - (7)].expr), (yyvsp[(5) - (7)].stmt), (yyvsp[(7) - (7)].stmt)); }
2206  break;
2207 
2208  case 63:
2209 #line 468 "wmlscript/wsgram.y"
2210  { (yyval.stmt) = ws_stmt_if(pctx, (yylsp[(1) - (5)]).first_line, (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].stmt), NULL); }
2211  break;
2212 
2213  case 64:
2214 #line 473 "wmlscript/wsgram.y"
2215  { (yyval.stmt) = ws_stmt_while(pctx, (yylsp[(1) - (5)]).first_line, (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].stmt)); }
2216  break;
2217 
2218  case 66:
2219 #line 480 "wmlscript/wsgram.y"
2220  { (yyval.stmt) = ws_stmt_for(pctx, (yylsp[(1) - (9)]).first_line, NULL, (yyvsp[(3) - (9)].expr), (yyvsp[(5) - (9)].expr), (yyvsp[(7) - (9)].expr), (yyvsp[(9) - (9)].stmt)); }
2221  break;
2222 
2223  case 67:
2224 #line 483 "wmlscript/wsgram.y"
2225  { (yyval.stmt) = ws_stmt_for(pctx, (yylsp[(1) - (10)]).first_line, (yyvsp[(4) - (10)].list), NULL, (yyvsp[(6) - (10)].expr), (yyvsp[(8) - (10)].expr), (yyvsp[(10) - (10)].stmt)); }
2226  break;
2227 
2228  case 68:
2229 #line 488 "wmlscript/wsgram.y"
2230  { (yyval.stmt) = ws_stmt_return(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(2) - (3)].expr)); }
2231  break;
2232 
2233  case 69:
2234 #line 494 "wmlscript/wsgram.y"
2235  { (yyval.expr) = NULL; }
2236  break;
2237 
2238  case 72:
2239 #line 502 "wmlscript/wsgram.y"
2240  { (yyval.expr) = ws_expr_comma(pctx, (yylsp[(2) - (3)]).first_line, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2241  break;
2242 
2243  case 74:
2244 #line 508 "wmlscript/wsgram.y"
2245  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), '=', (yyvsp[(3) - (3)].expr)); }
2246  break;
2247 
2248  case 75:
2249 #line 510 "wmlscript/wsgram.y"
2250  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tMULA, (yyvsp[(3) - (3)].expr)); }
2251  break;
2252 
2253  case 76:
2254 #line 512 "wmlscript/wsgram.y"
2255  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tDIVA, (yyvsp[(3) - (3)].expr)); }
2256  break;
2257 
2258  case 77:
2259 #line 514 "wmlscript/wsgram.y"
2260  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tREMA, (yyvsp[(3) - (3)].expr)); }
2261  break;
2262 
2263  case 78:
2264 #line 516 "wmlscript/wsgram.y"
2265  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tADDA, (yyvsp[(3) - (3)].expr)); }
2266  break;
2267 
2268  case 79:
2269 #line 518 "wmlscript/wsgram.y"
2270  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tSUBA, (yyvsp[(3) - (3)].expr)); }
2271  break;
2272 
2273  case 80:
2274 #line 520 "wmlscript/wsgram.y"
2275  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tLSHIFTA, (yyvsp[(3) - (3)].expr)); }
2276  break;
2277 
2278  case 81:
2279 #line 522 "wmlscript/wsgram.y"
2280  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tRSSHIFTA, (yyvsp[(3) - (3)].expr)); }
2281  break;
2282 
2283  case 82:
2284 #line 524 "wmlscript/wsgram.y"
2285  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tRSZSHIFTA, (yyvsp[(3) - (3)].expr)); }
2286  break;
2287 
2288  case 83:
2289 #line 526 "wmlscript/wsgram.y"
2290  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tANDA, (yyvsp[(3) - (3)].expr)); }
2291  break;
2292 
2293  case 84:
2294 #line 528 "wmlscript/wsgram.y"
2295  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tXORA, (yyvsp[(3) - (3)].expr)); }
2296  break;
2297 
2298  case 85:
2299 #line 530 "wmlscript/wsgram.y"
2300  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tORA, (yyvsp[(3) - (3)].expr)); }
2301  break;
2302 
2303  case 86:
2304 #line 532 "wmlscript/wsgram.y"
2305  { (yyval.expr) = ws_expr_assign(pctx, (yylsp[(1) - (3)]).first_line, (yyvsp[(1) - (3)].identifier), tIDIVA, (yyvsp[(3) - (3)].expr)); }
2306  break;
2307 
2308  case 88:
2309 #line 538 "wmlscript/wsgram.y"
2310  { (yyval.expr) = ws_expr_conditional(pctx, (yylsp[(2) - (5)]).first_line, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); }
2311  break;
2312 
2313  case 90:
2314 #line 544 "wmlscript/wsgram.y"
2315  { (yyval.expr) = ws_expr_logical(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_SCOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2316  break;
2317 
2318  case 92:
2319 #line 550 "wmlscript/wsgram.y"
2320  { (yyval.expr) = ws_expr_logical(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_SCAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2321  break;
2322 
2323  case 94:
2324 #line 556 "wmlscript/wsgram.y"
2325  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_B_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2326  break;
2327 
2328  case 96:
2329 #line 562 "wmlscript/wsgram.y"
2330  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_B_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2331  break;
2332 
2333  case 98:
2334 #line 568 "wmlscript/wsgram.y"
2335  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_B_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2336  break;
2337 
2338  case 100:
2339 #line 574 "wmlscript/wsgram.y"
2340  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_EQ, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2341  break;
2342 
2343  case 101:
2344 #line 576 "wmlscript/wsgram.y"
2345  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_NE, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2346  break;
2347 
2348  case 103:
2349 #line 582 "wmlscript/wsgram.y"
2350  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_LT, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2351  break;
2352 
2353  case 104:
2354 #line 584 "wmlscript/wsgram.y"
2355  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_GT, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2356  break;
2357 
2358  case 105:
2359 #line 586 "wmlscript/wsgram.y"
2360  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_LE, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2361  break;
2362 
2363  case 106:
2364 #line 588 "wmlscript/wsgram.y"
2365  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_GE, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2366  break;
2367 
2368  case 108:
2369 #line 594 "wmlscript/wsgram.y"
2370  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_B_LSHIFT, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2371  break;
2372 
2373  case 109:
2374 #line 596 "wmlscript/wsgram.y"
2375  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_B_RSSHIFT, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2376  break;
2377 
2378  case 110:
2379 #line 598 "wmlscript/wsgram.y"
2380  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_B_RSZSHIFT, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2381  break;
2382 
2383  case 112:
2384 #line 604 "wmlscript/wsgram.y"
2385  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2386  break;
2387 
2388  case 113:
2389 #line 606 "wmlscript/wsgram.y"
2390  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2391  break;
2392 
2393  case 115:
2394 #line 612 "wmlscript/wsgram.y"
2395  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2396  break;
2397 
2398  case 116:
2399 #line 614 "wmlscript/wsgram.y"
2400  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2401  break;
2402 
2403  case 117:
2404 #line 616 "wmlscript/wsgram.y"
2405  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_IDIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2406  break;
2407 
2408  case 118:
2409 #line 618 "wmlscript/wsgram.y"
2410  { (yyval.expr) = ws_expr_binary(pctx, (yylsp[(2) - (3)]).first_line, WS_ASM_REM, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
2411  break;
2412 
2413  case 120:
2414 #line 624 "wmlscript/wsgram.y"
2415  { (yyval.expr) = ws_expr_unary(pctx, (yylsp[(1) - (2)]).first_line, WS_ASM_TYPEOF, (yyvsp[(2) - (2)].expr)); }
2416  break;
2417 
2418  case 121:
2419 #line 626 "wmlscript/wsgram.y"
2420  { (yyval.expr) = ws_expr_unary(pctx, (yylsp[(1) - (2)]).first_line, WS_ASM_ISVALID, (yyvsp[(2) - (2)].expr)); }
2421  break;
2422 
2423  case 122:
2424 #line 628 "wmlscript/wsgram.y"
2425  { (yyval.expr) = ws_expr_unary_var(pctx, (yylsp[(1) - (2)]).first_line, WS_TRUE, (yyvsp[(2) - (2)].identifier)); }
2426  break;
2427 
2428  case 123:
2429 #line 630 "wmlscript/wsgram.y"
2430  { (yyval.expr) = ws_expr_unary_var(pctx, (yylsp[(1) - (2)]).first_line, WS_FALSE, (yyvsp[(2) - (2)].identifier)); }
2431  break;
2432 
2433  case 124:
2434 #line 632 "wmlscript/wsgram.y"
2435  {
2436  /* There is no direct way to compile unary `+'.
2437  * It doesn't do anything except require type conversion
2438  * (section 7.2, 7.3.2), and we do that by converting
2439  * it to a binary expression: `UnaryExpression - 0'.
2440  * Using `--UnaryExpression' would not be correct because
2441  * it might overflow if UnaryExpression is the smallest
2442  * possible integer value (see 6.2.7.1).
2443  * Using `UnaryExpression + 0' would not be correct
2444  * because binary `+' accepts strings, which makes the
2445  * type conversion different.
2446  */
2447  (yyval.expr) = ws_expr_binary(pctx, (yylsp[(1) - (2)]).first_line, WS_ASM_SUB, (yyvsp[(2) - (2)].expr),
2448  ws_expr_const_integer(pctx, (yylsp[(1) - (2)]).first_line, 0));
2449  }
2450  break;
2451 
2452  case 125:
2453 #line 648 "wmlscript/wsgram.y"
2454  { (yyval.expr) = ws_expr_unary(pctx, (yylsp[(1) - (2)]).first_line, WS_ASM_UMINUS, (yyvsp[(2) - (2)].expr)); }
2455  break;
2456 
2457  case 126:
2458 #line 650 "wmlscript/wsgram.y"
2459  { (yyval.expr) = ws_expr_unary(pctx, (yylsp[(1) - (2)]).first_line, WS_ASM_B_NOT, (yyvsp[(2) - (2)].expr)); }
2460  break;
2461 
2462  case 127:
2463 #line 652 "wmlscript/wsgram.y"
2464  { (yyval.expr) = ws_expr_unary(pctx, (yylsp[(1) - (2)]).first_line, WS_ASM_NOT, (yyvsp[(2) - (2)].expr)); }
2465  break;
2466 
2467  case 129:
2468 #line 658 "wmlscript/wsgram.y"
2469  { (yyval.expr) = ws_expr_postfix_var(pctx, (yylsp[(1) - (2)]).first_line, WS_TRUE, (yyvsp[(1) - (2)].identifier)); }
2470  break;
2471 
2472  case 130:
2473 #line 660 "wmlscript/wsgram.y"
2474  { (yyval.expr) = ws_expr_postfix_var(pctx, (yylsp[(1) - (2)]).first_line, WS_FALSE, (yyvsp[(1) - (2)].identifier)); }
2475  break;
2476 
2477  case 132:
2478 #line 666 "wmlscript/wsgram.y"
2479  {
2480  WsFunctionHash *f = ws_function_hash(pctx, (yyvsp[(1) - (2)].identifier));
2481 
2482  /* Add an usage count for the local script function. */
2483  if (f)
2484  f->usage_count++;
2485 
2486  (yyval.expr) = ws_expr_call(pctx, (yylsp[(1) - (2)]).first_line, ' ', NULL, (yyvsp[(1) - (2)].identifier), (yyvsp[(2) - (2)].list));
2487  }
2488  break;
2489 
2490  case 133:
2491 #line 676 "wmlscript/wsgram.y"
2492  { (yyval.expr) = ws_expr_call(pctx, (yylsp[(3) - (4)]).first_line, '#', (yyvsp[(1) - (4)].identifier), (yyvsp[(3) - (4)].identifier), (yyvsp[(4) - (4)].list)); }
2493  break;
2494 
2495  case 134:
2496 #line 678 "wmlscript/wsgram.y"
2497  { (yyval.expr) = ws_expr_call(pctx, (yylsp[(3) - (4)]).first_line, '.', (yyvsp[(1) - (4)].identifier), (yyvsp[(3) - (4)].identifier), (yyvsp[(4) - (4)].list)); }
2498  break;
2499 
2500  case 135:
2501 #line 683 "wmlscript/wsgram.y"
2502  { (yyval.expr) = ws_expr_symbol(pctx, (yylsp[(1) - (1)]).first_line, (yyvsp[(1) - (1)].identifier)); }
2503  break;
2504 
2505  case 136:
2506 #line 685 "wmlscript/wsgram.y"
2507  { (yyval.expr) = ws_expr_const_invalid(pctx, (yylsp[(1) - (1)]).first_line); }
2508  break;
2509 
2510  case 137:
2511 #line 687 "wmlscript/wsgram.y"
2512  { (yyval.expr) = ws_expr_const_true(pctx, (yylsp[(1) - (1)]).first_line); }
2513  break;
2514 
2515  case 138:
2516 #line 689 "wmlscript/wsgram.y"
2517  { (yyval.expr) = ws_expr_const_false(pctx, (yylsp[(1) - (1)]).first_line); }
2518  break;
2519 
2520  case 139:
2521 #line 691 "wmlscript/wsgram.y"
2522  { (yyval.expr) = ws_expr_const_integer(pctx, (yylsp[(1) - (1)]).first_line, (yyvsp[(1) - (1)].integer)); }
2523  break;
2524 
2525  case 140:
2526 #line 693 "wmlscript/wsgram.y"
2527  { (yyval.expr) = ws_expr_const_float(pctx, (yylsp[(1) - (1)]).first_line, (yyvsp[(1) - (1)].vfloat)); }
2528  break;
2529 
2530  case 141:
2531 #line 695 "wmlscript/wsgram.y"
2532  { (yyval.expr) = ws_expr_const_string(pctx, (yylsp[(1) - (1)]).first_line, (yyvsp[(1) - (1)].string)); }
2533  break;
2534 
2535  case 142:
2536 #line 697 "wmlscript/wsgram.y"
2537  { (yyval.expr) = (yyvsp[(2) - (3)].expr); }
2538  break;
2539 
2540  case 143:
2541 #line 702 "wmlscript/wsgram.y"
2542  { (yyval.list) = ws_list_new(pctx); }
2543  break;
2544 
2545  case 144:
2546 #line 704 "wmlscript/wsgram.y"
2547  { (yyval.list) = (yyvsp[(2) - (3)].list); }
2548  break;
2549 
2550  case 145:
2551 #line 709 "wmlscript/wsgram.y"
2552  {
2553  (yyval.list) = ws_list_new(pctx);
2554  ws_list_append(pctx, (yyval.list), (yyvsp[(1) - (1)].expr));
2555  }
2556  break;
2557 
2558  case 146:
2559 #line 714 "wmlscript/wsgram.y"
2560  { ws_list_append(pctx, (yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].expr)); }
2561  break;
2562 
2563 
2564 /* Line 1267 of yacc.c. */
2565 #line 2566 "y.tab.c"
2566  default: break;
2567  }
2568  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2569 
2570  YYPOPSTACK (yylen);
2571  yylen = 0;
2572  YY_STACK_PRINT (yyss, yyssp);
2573 
2574  *++yyvsp = yyval;
2575  *++yylsp = yyloc;
2576 
2577  /* Now `shift' the result of the reduction. Determine what state
2578  that goes to, based on the state we popped back to and the rule
2579  number reduced by. */
2580 
2581  yyn = yyr1[yyn];
2582 
2583  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2584  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2585  yystate = yytable[yystate];
2586  else
2587  yystate = yydefgoto[yyn - YYNTOKENS];
2588 
2589  goto yynewstate;
2590 
2591 
2592 /*------------------------------------.
2593 | yyerrlab -- here on detecting error |
2594 `------------------------------------*/
2595 yyerrlab:
2596  /* If not already recovering from an error, report this error. */
2597  if (!yyerrstatus)
2598  {
2599  ++yynerrs;
2600 #if ! YYERROR_VERBOSE
2601  yyerror (YY_("syntax error"));
2602 #else
2603  {
2604  YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2605  if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2606  {
2607  YYSIZE_T yyalloc = 2 * yysize;
2608  if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2609  yyalloc = YYSTACK_ALLOC_MAXIMUM;
2610  if (yymsg != yymsgbuf)
2611  YYSTACK_FREE (yymsg);
2612  yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2613  if (yymsg)
2614  yymsg_alloc = yyalloc;
2615  else
2616  {
2617  yymsg = yymsgbuf;
2618  yymsg_alloc = sizeof yymsgbuf;
2619  }
2620  }
2621 
2622  if (0 < yysize && yysize <= yymsg_alloc)
2623  {
2624  (void) yysyntax_error (yymsg, yystate, yychar);
2625  yyerror (yymsg);
2626  }
2627  else
2628  {
2629  yyerror (YY_("syntax error"));
2630  if (yysize != 0)
2631  goto yyexhaustedlab;
2632  }
2633  }
2634 #endif
2635  }
2636 
2637  yyerror_range[0] = yylloc;
2638 
2639  if (yyerrstatus == 3)
2640  {
2641  /* If just tried and failed to reuse look-ahead token after an
2642  error, discard it. */
2643 
2644  if (yychar <= YYEOF)
2645  {
2646  /* Return failure if at end of input. */
2647  if (yychar == YYEOF)
2648  YYABORT;
2649  }
2650  else
2651  {
2652  yydestruct ("Error: discarding",
2653  yytoken, &yylval, &yylloc);
2654  yychar = YYEMPTY;
2655  }
2656  }
2657 
2658  /* Else will try to reuse look-ahead token after shifting the error
2659  token. */
2660  goto yyerrlab1;
2661 
2662 
2663 /*---------------------------------------------------.
2664 | yyerrorlab -- error raised explicitly by YYERROR. |
2665 `---------------------------------------------------*/
2666 yyerrorlab:
2667 
2668  /* Pacify compilers like GCC when the user code never invokes
2669  YYERROR and the label yyerrorlab therefore never appears in user
2670  code. */
2671  if (/*CONSTCOND*/ 0)
2672  goto yyerrorlab;
2673 
2674  yyerror_range[0] = yylsp[1-yylen];
2675  /* Do not reclaim the symbols of the rule which action triggered
2676  this YYERROR. */
2677  YYPOPSTACK (yylen);
2678  yylen = 0;
2679  YY_STACK_PRINT (yyss, yyssp);
2680  yystate = *yyssp;
2681  goto yyerrlab1;
2682 
2683 
2684 /*-------------------------------------------------------------.
2685 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2686 `-------------------------------------------------------------*/
2687 yyerrlab1:
2688  yyerrstatus = 3; /* Each real token shifted decrements this. */
2689 
2690  for (;;)
2691  {
2692  yyn = yypact[yystate];
2693  if (yyn != YYPACT_NINF)
2694  {
2695  yyn += YYTERROR;
2696  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2697  {
2698  yyn = yytable[yyn];
2699  if (0 < yyn)
2700  break;
2701  }
2702  }
2703 
2704  /* Pop the current state because it cannot handle the error token. */
2705  if (yyssp == yyss)
2706  YYABORT;
2707 
2708  yyerror_range[0] = *yylsp;
2709  yydestruct ("Error: popping",
2710  yystos[yystate], yyvsp, yylsp);
2711  YYPOPSTACK (1);
2712  yystate = *yyssp;
2713  YY_STACK_PRINT (yyss, yyssp);
2714  }
2715 
2716  if (yyn == YYFINAL)
2717  YYACCEPT;
2718 
2719  *++yyvsp = yylval;
2720 
2721  yyerror_range[1] = yylloc;
2722  /* Using YYLLOC is tempting, but would change the location of
2723  the look-ahead. YYLOC is available though. */
2724  YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
2725  *++yylsp = yyloc;
2726 
2727  /* Shift the error token. */
2728  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2729 
2730  yystate = yyn;
2731  goto yynewstate;
2732 
2733 
2734 /*-------------------------------------.
2735 | yyacceptlab -- YYACCEPT comes here. |
2736 `-------------------------------------*/
2737 yyacceptlab:
2738  yyresult = 0;
2739  goto yyreturn;
2740 
2741 /*-----------------------------------.
2742 | yyabortlab -- YYABORT comes here. |
2743 `-----------------------------------*/
2744 yyabortlab:
2745  yyresult = 1;
2746  goto yyreturn;
2747 
2748 #ifndef yyoverflow
2749 /*-------------------------------------------------.
2750 | yyexhaustedlab -- memory exhaustion comes here. |
2751 `-------------------------------------------------*/
2752 yyexhaustedlab:
2753  yyerror (YY_("memory exhausted"));
2754  yyresult = 2;
2755  /* Fall through. */
2756 #endif
2757 
2758 yyreturn:
2759  if (yychar != YYEOF && yychar != YYEMPTY)
2760  yydestruct ("Cleanup: discarding lookahead",
2761  yytoken, &yylval, &yylloc);
2762  /* Do not reclaim the symbols of the rule which action triggered
2763  this YYABORT or YYACCEPT. */
2764  YYPOPSTACK (yylen);
2765  YY_STACK_PRINT (yyss, yyssp);
2766  while (yyssp != yyss)
2767  {
2768  yydestruct ("Cleanup: popping",
2769  yystos[*yyssp], yyvsp, yylsp);
2770  YYPOPSTACK (1);
2771  }
2772 #ifndef yyoverflow
2773  if (yyss != yyssa)
2774  YYSTACK_FREE (yyss);
2775 #endif
2776 #if YYERROR_VERBOSE
2777  if (yymsg != yymsgbuf)
2778  YYSTACK_FREE (yymsg);
2779 #endif
2780  /* Make sure YYID is used. */
2781  return YYID (yyresult);
2782 }
2783 
2784 
2785 #line 717 "wmlscript/wsgram.y"
2786 
2787 
2788 void
2789 yyerror(char *msg)
2790 {
2791 #if WS_DEBUG
2792  fprintf(stderr, "*** %s:%ld: wsc: %s - this msg will be removed ***\n",
2793  global_compiler->input_name, global_compiler->linenum, msg);
2794 #endif /* WS_DEBUG */
2795 }
2796 
WsFormalParm * parm
Definition: wsgram.c:312
void ws_function(WsCompiler *compiler, WsBool externp, char *name, WsUInt32 line, WsList *params, WsList *block)
Definition: wsstree.c:343
WsUtf8String * string
Definition: wsgram.c:308
#define tDELETE
Definition: wsgram.c:196
int first_column
Definition: wsgram.c:332
struct YYLTYPE YYLTYPE
#define YYSIZE_MAXIMUM
Definition: wsgram.c:393
#define YYUSE(e)
Definition: wsgram.c:409
static void yydestruct(char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) const
Definition: wsgram.c:1534
YYSTYPE yyvs
Definition: wsgram.c:511
#define tTHROW
Definition: wsgram.c:222
#define tVAR
Definition: wsgram.c:193
#define tIMPORT
Definition: wsgram.c:215
WsStatement * ws_stmt_empty(WsCompiler *compiler, WsUInt32 line)
Definition: wsstree.c:1413
#define WS_ASM_SCOR
Definition: wsasm.h:207
#define WS_ASM_B_RSSHIFT
Definition: wsasm.h:195
#define tSWITCH
Definition: wsgram.c:221
#define tNULL
Definition: wsgram.c:200
Definition: wsint.h:131
WsStatement * ws_stmt_for(WsCompilerPtr compiler, WsUInt32 line, WsList *init, WsExpression *e1, WsExpression *e2, WsExpression *e3, WsStatement *stmt_body)
Definition: wsstree.c:1447
#define YYID(n)
Definition: wsgram.c:416
WsExpression * ws_expr_postfix_var(WsCompilerPtr compiler, WsUInt32 line, WsBool addp, char *variable)
Definition: wsstree.c:1010
#define tFOR
Definition: wsgram.c:180
#define tFALSE
Definition: wsgram.c:165
#define YYABORT
Definition: wsgram.c:1043
WsExpression * ws_expr_call(WsCompiler *compiler, WsUInt32 line, int type, char *base, char *name, WsList *arguments)
Definition: wsstree.c:1028
#define tEXTENDS
Definition: wsgram.c:213
#define tPLUSPLUS
Definition: wsgram.c:230
static const yytype_uint8 yytranslate[]
Definition: wsgram.c:582
unsigned long WsUInt32
Definition: wsint.h:122
#define tDIVA
Definition: wsgram.c:238
WsVarDec * vardec
Definition: wsgram.c:313
WsStatement * ws_stmt_return(WsCompilerPtr compiler, WsUInt32 line, WsExpression *expr)
Definition: wsstree.c:1491
#define tRSSHIFT
Definition: wsgram.c:233
#define tLIB
Definition: wsgram.c:198
#define YYSTACK_BYTES(N)
Definition: wsgram.c:520
WsBool ws_bc_add_pragma_access_domain(WsBc *bc, const unsigned char *domain, size_t domain_len)
Definition: wsbc.c:981
#define tRSZSHIFTA
Definition: wsgram.c:245
void ws_pragma_meta_body_free(WsCompilerPtr compiler, WsPragmaMetaBody *mb)
Definition: wsstree.c:291
WsStatement * ws_stmt_continue(WsCompiler *compiler, WsUInt32 line)
Definition: wsstree.c:1479
#define tUSE
Definition: wsgram.c:191
#define YYPACT_NINF
Definition: wsgram.c:860
double WsFloat
Definition: wsint.h:126
#define yylval
Definition: wsgram.c:65
#define tPUBLIC
Definition: wsgram.c:217
#define tAGENT
Definition: wsgram.c:171
WsExpression * ws_expr_binary(WsCompilerPtr compiler, WsUInt32 line, int type, WsExpression *left, WsExpression *right)
Definition: wsstree.c:956
#define WS_ASM_TYPEOF
Definition: wsasm.h:212
#define tGE
Definition: wsgram.c:226
#define tAND
Definition: wsgram.c:228
#define tDO
Definition: wsgram.c:210
int last_column
Definition: wsgram.c:334
#define tACCESS
Definition: wsgram.c:170
static const yytype_int16 yypact[]
Definition: wsgram.c:861
int last_line
Definition: wsgram.c:333
#define WS_ASM_NOT
Definition: wsasm.h:205
#define tCATCH
Definition: wsgram.c:205
#define yyerror
Definition: wsgram.c:64
WsBool ws_bc_add_pragma_access_path(WsBc *bc, const unsigned char *path, size_t path_len)
Definition: wsbc.c:996
#define YYSTACK_RELOCATE(Stack)
Definition: wsgram.c:547
#define tTYPEOF
Definition: wsgram.c:190
#define YYLLOC_DEFAULT(Current, Rhs, N)
Definition: wsgram.c:1083
#define tDOMAIN
Definition: wsgram.c:176
static const yytype_int16 yydefgoto[]
Definition: wsgram.c:848
#define tPATH
Definition: wsgram.c:188
static const yytype_int16 yytable[]
Definition: wsgram.c:907
#define YYTRANSLATE(YYX)
Definition: wsgram.c:578
#define YYFINAL
Definition: wsgram.c:561
#define tWITH
Definition: wsgram.c:203
#define tRSSHIFTA
Definition: wsgram.c:244
#define tIN
Definition: wsgram.c:197
#define WS_ASM_DIV
Definition: wsasm.h:186
#define yychar
Definition: wsgram.c:66
yytype_int16 yyss
Definition: wsgram.c:510
#define tREMA
Definition: wsgram.c:242
#define tEQUIV
Definition: wsgram.c:178
#define YYSTACK_FREE
Definition: wsgram.c:472
WsUInt32 linenum
Definition: wsint.h:201
WsVarDec * ws_variable_declaration(WsCompilerPtr compiler, char *name, WsExpression *expr)
Definition: wsstree.c:78
#define tLSHIFTA
Definition: wsgram.c:243
WsStatement * ws_stmt_expr(WsCompiler *compiler, WsUInt32 line, WsExpression *expr)
Definition: wsstree.c:1419
WsStatement * ws_stmt_while(WsCompiler *compiler, WsUInt32 line, WsExpression *expr, WsStatement *stmt_arg)
Definition: wsstree.c:1465
yytokentype
Definition: wsgram.c:76
#define YYTERROR
Definition: wsgram.c:1073
#define yynerrs
Definition: wsgram.c:68
#define tOR
Definition: wsgram.c:229
#define YYPOPSTACK(N)
#define WS_ASM_B_LSHIFT
Definition: wsasm.h:194
#define YYTABLE_NINF
Definition: wsgram.c:906
WsExpression * ws_expr_const_string(WsCompiler *compiler, WsUInt32 line, WsUtf8String *string)
Definition: wsstree.c:1112
#define YY_STACK_PRINT(Bottom, Top)
Definition: wsgram.c:1289
#define tIDIVA
Definition: wsgram.c:175
WsStatement * stmt
Definition: wsgram.c:317
#define tIF
Definition: wsgram.c:184
WsPragmaMetaBody * ws_pragma_meta_body(WsCompilerPtr compiler, WsUtf8String *property_name, WsUtf8String *content, WsUtf8String *scheme)
Definition: wsstree.c:271
const char * input_name
Definition: wsint.h:200
#define WS_ASM_ISVALID
Definition: wsasm.h:213
static const yytype_uint8 yyr1[]
Definition: wsgram.c:775
short int yytype_int8
Definition: wsgram.c:364
void ws_lexer_free_block(WsCompiler *compiler, void *ptr)
Definition: ws.c:281
#define tNAME
Definition: wsgram.c:187
#define tMETA
Definition: wsgram.c:186
WsExpression * ws_expr_const_float(WsCompiler *compiler, WsUInt32 line, WsFloat fval)
Definition: wsstree.c:1100
#define WS_ASM_B_NOT
Definition: wsasm.h:193
#define tWHILE
Definition: wsgram.c:194
#define tISVALID
Definition: wsgram.c:185
#define WS_ASM_LE
Definition: wsasm.h:199
#define WS_ASM_REM
Definition: wsasm.h:188
#define tFLOAT
Definition: wsgram.c:167
#define tNEW
Definition: wsgram.c:199
WsBc * bc
Definition: wsint.h:218
WsExpression * ws_expr_symbol(WsCompiler *compiler, WsUInt32 line, char *identifier)
Definition: wsstree.c:1051
WsExpression * ws_expr_const_integer(WsCompiler *compiler, WsUInt32 line, WsUInt32 ival)
Definition: wsstree.c:1086
static const yytype_uint8 yystos[]
Definition: wsgram.c:1007
WsUInt32 integer
Definition: wsgram.c:305
#define tTRUE
Definition: wsgram.c:164
WsExpression * expr
Definition: wsgram.c:318
#define tEXTERN
Definition: wsgram.c:179
WsFormalParm * ws_formal_parameter(WsCompilerPtr compiler, WsUInt32 line, char *name)
Definition: wsstree.c:93
#define YY_LOCATION_PRINT(File, Loc)
Definition: wsgram.c:1109
#define YYLEX
Definition: wsgram.c:1122
#define tPRIVATE
Definition: wsgram.c:216
WsStatement * ws_stmt_break(WsCompiler *compiler, WsUInt32 line)
Definition: wsstree.c:1485
int first_line
Definition: wsgram.c:331
#define free(p)
Definition: gwmem.h:194
#define tURL
Definition: wsgram.c:195
WsStatement * ws_stmt_if(WsCompiler *compiler, WsUInt32 line, WsExpression *expr, WsStatement *s_then, WsStatement *s_else)
Definition: wsstree.c:1431
void * meta_name_cb_context
Definition: ws.h:174
#define tBREAK
Definition: wsgram.c:172
#define tEQ
Definition: wsgram.c:224
void * ws_f_strdup(WsFastMalloc *pool, const char *str)
Definition: wsfalloc.c:177
void ws_error_syntax(WsCompilerPtr compiler, WsUInt32 line)
Definition: wserror.c:120
WsPragmaMetaProc meta_name_cb
Definition: ws.h:173
char * name
Definition: smsc_cimd2.c:212
#define tMULA
Definition: wsgram.c:237
#define WS_ASM_GT
Definition: wsasm.h:202
#define tNE
Definition: wsgram.c:227
#define tSUBA
Definition: wsgram.c:236
static const yytype_int16 yypgoto[]
Definition: wsgram.c:892
WsExpression * ws_expr_const_true(WsCompiler *compiler, WsUInt32 line)
Definition: wsstree.c:1074
#define tINVALID
Definition: wsgram.c:163
#define YYNTOKENS
Definition: wsgram.c:566
Definition: seewbmp.c:154
#define WS_ASM_NE
Definition: wsasm.h:203
void ws_pragma_use(WsCompilerPtr compiler, WsUInt32 line, char *identifier, WsUtf8String *url)
Definition: wsstree.c:220
#define tHEADER
Definition: wsgram.c:182
#define tRETURN
Definition: wsgram.c:189
#define tELSE
Definition: wsgram.c:177
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Definition: wsgram.c:1288
#define YYEMPTY
Definition: wsgram.c:1039
WsUInt32 first_line
Definition: wsstree.h:524
WsStatement * ws_stmt_variable(WsCompilerPtr compiler, WsUInt32 line, WsList *variables)
Definition: wsstree.c:1401
WsExpression * ws_expr_unary(WsCompilerPtr compiler, WsUInt32 line, int type, WsExpression *expression)
Definition: wsstree.c:971
#define malloc(n)
Definition: gwmem.h:191
#define tCONST
Definition: wsgram.c:207
#define YYMAXDEPTH
Definition: wsgram.c:1307
YYLTYPE yyls
Definition: wsgram.c:512
#define YYACCEPT
Definition: wsgram.c:1042
union YYSTYPE YYSTYPE
WsExpression * ws_expr_logical(WsCompilerPtr compiler, WsUInt32 line, int type, WsExpression *left, WsExpression *right)
Definition: wsstree.c:941
#define YYEOF
Definition: wsgram.c:1040
WsExpression * ws_expr_const_false(WsCompiler *compiler, WsUInt32 line)
Definition: wsstree.c:1080
#define WS_ASM_B_OR
Definition: wsasm.h:191
WsList * ws_list_new(WsCompiler *compiler)
Definition: wsstree.c:110
#define yydebug
Definition: wsgram.c:67
short int yytype_int16
Definition: wsgram.c:376
#define tENUM
Definition: wsgram.c:211
#define tLE
Definition: wsgram.c:225
unsigned char yytype_uint8
Definition: wsgram.c:355
#define tTRY
Definition: wsgram.c:223
#define WS_ASM_B_XOR
Definition: wsasm.h:192
WsList * list
Definition: wsgram.c:311
#define tMINUSMINUS
Definition: wsgram.c:231
WsFunctionHash * ws_function_hash(WsCompilerPtr compiler, char *name)
Definition: wsstree.c:318
WsBool
Definition: wsint.h:128
WsBool ws_bc_add_pragma_user_agent_property(WsBc *bc, const unsigned char *name, size_t name_len, const unsigned char *property, size_t property_len)
Definition: wsbc.c:1011
#define YY_(msgid)
Definition: wsgram.c:403
#define WS_ASM_EQ
Definition: wsasm.h:198
#define tSIZEOF
Definition: wsgram.c:218
#define tFUNCTION
Definition: wsgram.c:181
WsFloat vfloat
Definition: wsgram.c:306
#define tINTEGER
Definition: wsgram.c:166
#define tUSER
Definition: wsgram.c:192
#define tCLASS
Definition: wsgram.c:206
#define tXORA
Definition: wsgram.c:241
void * ws_strdup(const char *str)
Definition: wsalloc.c:119
#define tORA
Definition: wsgram.c:240
#define YYSTACK_ALLOC
Definition: wsgram.c:471
#define YYDPRINTF(Args)
Definition: wsgram.c:1287
#define tLSHIFT
Definition: wsgram.c:232
WsPragmaMetaProc meta_http_equiv_cb
Definition: ws.h:178
#define tHTTP
Definition: wsgram.c:183
#define tFINALLY
Definition: wsgram.c:214
#define YYPARSE_PARAM
Definition: wsgram.c:268
WsCompilerParams params
Definition: wsint.h:193
void * meta_http_equiv_cb_context
Definition: ws.h:179
#define tIDENTIFIER
Definition: wsgram.c:169
WsExpression * ws_expr_const_invalid(WsCompiler *compiler, WsUInt32 line)
Definition: wsstree.c:1068
WsExpression * ws_expr_conditional(WsCompilerPtr compiler, WsUInt32 line, WsExpression *e_cond, WsExpression *e_then, WsExpression *e_else)
Definition: wsstree.c:925
char * identifier
Definition: wsgram.c:307
WsExpression * ws_expr_comma(WsCompilerPtr compiler, WsUInt32 line, WsExpression *left, WsExpression *right)
Definition: wsstree.c:889
#define WS_ASM_B_RSZSHIFT
Definition: wsasm.h:196
#define tVOID
Definition: wsgram.c:202
#define yylloc
Definition: wsgram.c:69
WsStatement * ws_stmt_block(WsCompiler *compiler, WsUInt32 fline, WsUInt32 lline, WsList *block)
Definition: wsstree.c:1389
#define WS_ASM_UMINUS
Definition: wsasm.h:182
#define YYSTACK_ALLOC_MAXIMUM
Definition: wsgram.c:474
#define tEXPORT
Definition: wsgram.c:212
#define WS_ASM_GE
Definition: wsasm.h:201
WsPragmaMetaBody * meta_body
Definition: wsgram.c:315
#define tIDIV
Definition: wsgram.c:174
#define YYLAST
Definition: wsgram.c:563
WsBool boolean
Definition: wsgram.c:310
void ws_lexer_free_utf8(WsCompiler *compiler, WsUtf8String *string)
Definition: ws.c:305
#define tRSZSHIFT
Definition: wsgram.c:234
static const yytype_uint8 yyr2[]
Definition: wsgram.c:795
#define YY_REDUCE_PRINT(Rule)
Definition: wsgram.c:1290
#define YYINITDEPTH
Definition: wsgram.c:1296
#define tADDA
Definition: wsgram.c:235
#define WS_ASM_B_AND
Definition: wsasm.h:190
#define WS_ASM_IDIV
Definition: wsasm.h:187
WsBool ws_bc_add_pragma_user_agent_property_and_scheme(WsBc *bc, const unsigned char *name, size_t name_len, const unsigned char *property, size_t property_len, const unsigned char *scheme, size_t scheme_len)
Definition: wsbc.c:1030
#define yyparse
Definition: wsgram.c:62
#define tANDA
Definition: wsgram.c:239
#define WS_ASM_MUL
Definition: wsasm.h:185
WsExpression * ws_expr_unary_var(WsCompilerPtr compiler, WsUInt32 line, WsBool addp, char *variable)
Definition: wsstree.c:993
#define WS_ASM_ADD
Definition: wsasm.h:183
#define tDEBUGGER
Definition: wsgram.c:208
WsExpression * ws_expr_assign(WsCompilerPtr compiler, WsUInt32 line, char *identifier, int op, WsExpression *expr)
Definition: wsstree.c:903
#define tDEFAULT
Definition: wsgram.c:209
void ws_error_memory(WsCompilerPtr compiler)
Definition: wserror.c:107
#define YYSIZE_T
Definition: wsgram.c:389
#define tSTRUCT
Definition: wsgram.c:219
static XMLRPCDocument * msg
Definition: test_xmlrpc.c:86
void ws_list_append(WsCompiler *compiler, WsList *list, void *value)
Definition: wsstree.c:121
static const yytype_int16 yycheck[]
Definition: wsgram.c:956
#define tCONTINUE
Definition: wsgram.c:173
#define tTHIS
Definition: wsgram.c:201
WsUInt32 usage_count
Definition: wsstree.h:222
unsigned short int yytype_uint16
Definition: wsgram.c:370
static const yytype_uint8 yydefact[]
Definition: wsgram.c:817
#define tSUPER
Definition: wsgram.c:220
#define WS_ASM_SCAND
Definition: wsasm.h:206
#define WS_ASM_LT
Definition: wsasm.h:200
#define tCASE
Definition: wsgram.c:204
#define WS_ASM_SUB
Definition: wsasm.h:184
#define tSTRING
Definition: wsgram.c:168
See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.