test for late inner functions
[swftools.git] / lib / action / swf4compiler.tab.c
1 /* A Bison parser, made by GNU Bison 1.875.  */
2
3 /* Skeleton parser for Yacc-like parsing with Bison,
4    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2, or (at your option)
9    any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 02111-1307, USA.  */
20
21 /* As a special exception, when this file is copied by Bison into a
22    Bison output file, you may use that output file without restriction.
23    This special exception was added by the Free Software Foundation
24    in version 1.24 of Bison.  */
25
26 /* Written by Richard Stallman by simplifying the original so called
27    ``semantic'' parser.  */
28
29 /* All symbols defined below should begin with yy or YY, to avoid
30    infringing on user name space.  This should be done even for local
31    variables, as they might otherwise be expanded by user macros.
32    There are some unavoidable exceptions within include files to
33    define necessary library symbols; they are noted "INFRINGES ON
34    USER NAME SPACE" below.  */
35
36 /* Identify Bison output.  */
37 #define YYBISON 1
38
39 /* Skeleton name.  */
40 #define YYSKELETON_NAME "yacc.c"
41
42 /* Pure parsers.  */
43 #define YYPURE 0
44
45 /* Using locations.  */
46 #define YYLSP_NEEDED 0
47
48 /* If NAME_PREFIX is specified substitute the variables and functions
49    names.  */
50 #define yyparse swf4parse
51 #define yylex   swf4lex
52 #define yyerror swf4error
53 #define yylval  swf4lval
54 #define yychar  swf4char
55 #define yydebug swf4debug
56 #define yynerrs swf4nerrs
57
58
59 /* Tokens.  */
60 #ifndef YYTOKENTYPE
61 # define YYTOKENTYPE
62    /* Put the tokens into the symbol table, so that GDB and other debuggers
63       know about them.  */
64    enum yytokentype {
65      BREAK = 258,
66      FOR = 259,
67      CONTINUE = 260,
68      IF = 261,
69      ELSE = 262,
70      DO = 263,
71      WHILE = 264,
72      THIS = 265,
73      EVAL = 266,
74      TIME = 267,
75      RANDOM = 268,
76      LENGTH = 269,
77      INT = 270,
78      CONCAT = 271,
79      DUPLICATECLIP = 272,
80      REMOVECLIP = 273,
81      TRACE = 274,
82      STARTDRAG = 275,
83      STOPDRAG = 276,
84      ORD = 277,
85      CHR = 278,
86      CALLFRAME = 279,
87      GETURL = 280,
88      GETURL1 = 281,
89      LOADMOVIE = 282,
90      LOADVARIABLES = 283,
91      POSTURL = 284,
92      SUBSTR = 285,
93      GETPROPERTY = 286,
94      NEXTFRAME = 287,
95      PREVFRAME = 288,
96      PLAY = 289,
97      STOP = 290,
98      TOGGLEQUALITY = 291,
99      STOPSOUNDS = 292,
100      GOTOFRAME = 293,
101      GOTOANDPLAY = 294,
102      FRAMELOADED = 295,
103      SETTARGET = 296,
104      TELLTARGET = 297,
105      STRING = 298,
106      NUMBER = 299,
107      IDENTIFIER = 300,
108      PATH = 301,
109      GETURL_METHOD = 302,
110      EQ = 303,
111      LE = 304,
112      GE = 305,
113      NE = 306,
114      LAN = 307,
115      LOR = 308,
116      INC = 309,
117      DEC = 310,
118      IEQ = 311,
119      DEQ = 312,
120      MEQ = 313,
121      SEQ = 314,
122      STREQ = 315,
123      STRNE = 316,
124      STRCMP = 317,
125      PARENT = 318,
126      END = 319,
127      UMINUS = 320,
128      POSTFIX = 321,
129      NEGATE = 322
130    };
131 #endif
132 #define BREAK 258
133 #define FOR 259
134 #define CONTINUE 260
135 #define IF 261
136 #define ELSE 262
137 #define DO 263
138 #define WHILE 264
139 #define THIS 265
140 #define EVAL 266
141 #define TIME 267
142 #define RANDOM 268
143 #define LENGTH 269
144 #define INT 270
145 #define CONCAT 271
146 #define DUPLICATECLIP 272
147 #define REMOVECLIP 273
148 #define TRACE 274
149 #define STARTDRAG 275
150 #define STOPDRAG 276
151 #define ORD 277
152 #define CHR 278
153 #define CALLFRAME 279
154 #define GETURL 280
155 #define GETURL1 281
156 #define LOADMOVIE 282
157 #define LOADVARIABLES 283
158 #define POSTURL 284
159 #define SUBSTR 285
160 #define GETPROPERTY 286
161 #define NEXTFRAME 287
162 #define PREVFRAME 288
163 #define PLAY 289
164 #define STOP 290
165 #define TOGGLEQUALITY 291
166 #define STOPSOUNDS 292
167 #define GOTOFRAME 293
168 #define GOTOANDPLAY 294
169 #define FRAMELOADED 295
170 #define SETTARGET 296
171 #define TELLTARGET 297
172 #define STRING 298
173 #define NUMBER 299
174 #define IDENTIFIER 300
175 #define PATH 301
176 #define GETURL_METHOD 302
177 #define EQ 303
178 #define LE 304
179 #define GE 305
180 #define NE 306
181 #define LAN 307
182 #define LOR 308
183 #define INC 309
184 #define DEC 310
185 #define IEQ 311
186 #define DEQ 312
187 #define MEQ 313
188 #define SEQ 314
189 #define STREQ 315
190 #define STRNE 316
191 #define STRCMP 317
192 #define PARENT 318
193 #define END 319
194 #define UMINUS 320
195 #define POSTFIX 321
196 #define NEGATE 322
197
198
199
200
201 /* Copy the first part of user declarations.  */
202 #line 5 "swf4compiler.y"
203
204
205 #include <time.h>
206 #include <string.h>
207 #include <stdlib.h>
208 #include "compile.h"
209 #include "action.h"
210
211 #define YYPARSE_PARAM buffer
212
213
214
215 /* Enabling traces.  */
216 #ifndef YYDEBUG
217 # define YYDEBUG 0
218 #endif
219
220 /* Enabling verbose error messages.  */
221 #ifdef YYERROR_VERBOSE
222 # undef YYERROR_VERBOSE
223 # define YYERROR_VERBOSE 1
224 #else
225 # define YYERROR_VERBOSE 0
226 #endif
227
228 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
229 #line 17 "swf4compiler.y"
230 typedef union YYSTYPE {
231   Buffer action;
232   char *str;
233   SWFActionFunction function;
234   SWFGetUrl2Method getURLMethod;
235 } YYSTYPE;
236 /* Line 191 of yacc.c.  */
237 #line 237 "swf4compiler.tab.c"
238 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
239 # define YYSTYPE_IS_DECLARED 1
240 # define YYSTYPE_IS_TRIVIAL 1
241 #endif
242
243
244
245 /* Copy the second part of user declarations.  */
246
247
248 /* Line 214 of yacc.c.  */
249 #line 249 "swf4compiler.tab.c"
250
251 #if ! defined (yyoverflow) || YYERROR_VERBOSE
252
253 /* The parser invokes alloca or malloc; define the necessary symbols.  */
254
255 # if YYSTACK_USE_ALLOCA
256 #  define YYSTACK_ALLOC alloca
257 # else
258 #  ifndef YYSTACK_USE_ALLOCA
259 #   if defined (alloca) || defined (_ALLOCA_H)
260 #    define YYSTACK_ALLOC alloca
261 #   else
262 #    ifdef __GNUC__
263 #     define YYSTACK_ALLOC __builtin_alloca
264 #    endif
265 #   endif
266 #  endif
267 # endif
268
269 # ifdef YYSTACK_ALLOC
270    /* Pacify GCC's `empty if-body' warning. */
271 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
272 # else
273 #  if defined (__STDC__) || defined (__cplusplus)
274 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
275 #   define YYSIZE_T size_t
276 #  endif
277 #  define YYSTACK_ALLOC malloc
278 #  define YYSTACK_FREE free
279 # endif
280 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
281
282
283 #if (! defined (yyoverflow) \
284      && (! defined (__cplusplus) \
285          || (YYSTYPE_IS_TRIVIAL)))
286
287 /* A type that is properly aligned for any stack member.  */
288 union yyalloc
289 {
290   short yyss;
291   YYSTYPE yyvs;
292   };
293
294 /* The size of the maximum gap between one aligned stack and the next.  */
295 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
296
297 /* The size of an array large to enough to hold all stacks, each with
298    N elements.  */
299 # define YYSTACK_BYTES(N) \
300      ((N) * (sizeof (short) + sizeof (YYSTYPE))                         \
301       + YYSTACK_GAP_MAXIMUM)
302
303 /* Copy COUNT objects from FROM to TO.  The source and destination do
304    not overlap.  */
305 # ifndef YYCOPY
306 #  if 1 < __GNUC__
307 #   define YYCOPY(To, From, Count) \
308       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
309 #  else
310 #   define YYCOPY(To, From, Count)              \
311       do                                        \
312         {                                       \
313           register YYSIZE_T yyi;                \
314           for (yyi = 0; yyi < (Count); yyi++)   \
315             (To)[yyi] = (From)[yyi];            \
316         }                                       \
317       while (0)
318 #  endif
319 # endif
320
321 /* Relocate STACK from its old location to the new one.  The
322    local variables YYSIZE and YYSTACKSIZE give the old and new number of
323    elements in the stack, and YYPTR gives the new location of the
324    stack.  Advance YYPTR to a properly aligned location for the next
325    stack.  */
326 # define YYSTACK_RELOCATE(Stack)                                        \
327     do                                                                  \
328       {                                                                 \
329         YYSIZE_T yynewbytes;                                            \
330         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
331         Stack = &yyptr->Stack;                                          \
332         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
333         yyptr += yynewbytes / sizeof (*yyptr);                          \
334       }                                                                 \
335     while (0)
336
337 #endif
338
339 #if defined (__STDC__) || defined (__cplusplus)
340    typedef signed char yysigned_char;
341 #else
342    typedef short yysigned_char;
343 #endif
344
345 /* YYFINAL -- State number of the termination state. */
346 #define YYFINAL  108
347 /* YYLAST -- Last index in YYTABLE.  */
348 #define YYLAST   1341
349
350 /* YYNTOKENS -- Number of terminals. */
351 #define YYNTOKENS  86
352 /* YYNNTS -- Number of nonterminals. */
353 #define YYNNTS  22
354 /* YYNRULES -- Number of rules. */
355 #define YYNRULES  137
356 /* YYNRULES -- Number of states. */
357 #define YYNSTATES  369
358
359 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
360 #define YYUNDEFTOK  2
361 #define YYMAXUTOK   322
362
363 #define YYTRANSLATE(YYX)                                                \
364   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
365
366 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
367 static const unsigned char yytranslate[] =
368 {
369        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
370        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
371        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
372        2,     2,     2,    76,     2,     2,     2,     2,    71,     2,
373       83,    84,    74,    72,    65,    73,    85,    75,     2,     2,
374        2,     2,     2,     2,     2,     2,     2,     2,    68,    82,
375       69,    66,    70,    67,     2,     2,     2,     2,     2,     2,
376        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
377        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
378        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
379        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
380        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
381        2,     2,     2,    80,     2,    81,     2,     2,     2,     2,
382        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
383        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
384        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
385        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
386        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
387        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
388        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
389        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
390        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
391        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
392        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
393        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
394        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
395        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
396       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
397       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
398       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
399       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
400       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
401       77,    78,    79
402 };
403
404 #if YYDEBUG
405 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
406    YYRHS.  */
407 static const unsigned short yyprhs[] =
408 {
409        0,     0,     3,     5,     7,    10,    12,    15,    19,    21,
410       24,    26,    28,    30,    32,    34,    38,    39,    41,    44,
411       55,    64,    74,    85,    94,   104,   112,   118,   119,   121,
412      131,   137,   144,   154,   155,   157,   160,   163,   167,   172,
413      177,   182,   187,   194,   203,   210,   217,   226,   233,   242,
414      249,   264,   273,   277,   281,   285,   289,   293,   297,   302,
415      307,   312,   317,   322,   327,   333,   339,   344,   348,   353,
416      358,   363,   368,   373,   380,   389,   396,   399,   402,   404,
417      408,   410,   413,   415,   417,   419,   423,   428,   431,   436,
418      439,   442,   445,   449,   453,   457,   461,   465,   469,   473,
419      477,   481,   485,   489,   493,   497,   501,   505,   509,   513,
420      519,   521,   525,   527,   529,   531,   533,   535,   537,   539,
421      541,   545,   547,   549,   552,   555,   560,   565,   569,   573,
422      577,   581,   585,   591,   597,   603,   609,   615
423 };
424
425 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
426 static const yysigned_char yyrhs[] =
427 {
428       87,     0,    -1,    88,    -1,    89,    -1,    88,    89,    -1,
429       90,    -1,    80,    81,    -1,    80,    92,    81,    -1,    82,
430       -1,   106,    82,    -1,    93,    -1,    95,    -1,    97,    -1,
431       98,    -1,   106,    -1,    91,    65,   106,    -1,    -1,    90,
432       -1,    92,    90,    -1,     6,    83,    40,    83,    44,    84,
433       84,    90,     7,    90,    -1,     6,    83,    40,    83,    44,
434       84,    84,    90,    -1,     6,    83,    76,    40,    83,    44,
435       84,    84,    90,    -1,     6,    83,    40,    83,   107,    84,
436       84,    90,     7,    90,    -1,     6,    83,    40,    83,   107,
437       84,    84,    90,    -1,     6,    83,    76,    40,    83,   107,
438       84,    84,    90,    -1,     6,    83,   107,    84,    90,     7,
439       90,    -1,     6,    83,   107,    84,    90,    -1,    -1,   107,
440       -1,     9,    83,    76,    40,    83,    44,    84,    84,    90,
441       -1,     9,    83,   107,    84,    90,    -1,     8,    90,     9,
442       83,   107,    84,    -1,     4,    83,    96,    82,    94,    82,
443       96,    84,    90,    -1,    -1,    91,    -1,     5,    82,    -1,
444        3,    82,    -1,    21,    83,    84,    -1,    24,    83,   103,
445       84,    -1,    24,    83,    43,    84,    -1,    18,    83,   107,
446       84,    -1,    19,    83,   107,    84,    -1,    25,    83,   107,
447       65,   107,    84,    -1,    25,    83,   107,    65,   107,    65,
448       47,    84,    -1,    26,    83,    43,    65,    43,    84,    -1,
449       27,    83,   107,    65,   107,    84,    -1,    27,    83,   107,
450       65,   107,    65,    47,    84,    -1,    28,    83,   107,    65,
451      107,    84,    -1,    28,    83,   107,    65,   107,    65,    47,
452       84,    -1,    20,    83,   107,    65,   107,    84,    -1,    20,
453       83,   107,    65,   107,    65,   107,    65,   107,    65,   107,
454       65,   107,    84,    -1,    17,    83,   107,    65,   107,    65,
455      107,    84,    -1,    32,    83,    84,    -1,    33,    83,    84,
456       -1,    34,    83,    84,    -1,    35,    83,    84,    -1,    36,
457       83,    84,    -1,    37,    83,    84,    -1,    38,    83,    44,
458       84,    -1,    38,    83,    43,    84,    -1,    38,    83,   107,
459       84,    -1,    39,    83,   107,    84,    -1,    41,    83,    43,
460       84,    -1,    41,    83,   107,    84,    -1,    42,    83,    43,
461       84,    90,    -1,    42,    83,   107,    84,    90,    -1,    11,
462       83,   107,    84,    -1,    12,    83,    84,    -1,    13,    83,
463      107,    84,    -1,    14,    83,   107,    84,    -1,    15,    83,
464      107,    84,    -1,    22,    83,   107,    84,    -1,    23,    83,
465      107,    84,    -1,    16,    83,   107,    65,   107,    84,    -1,
466       30,    83,   107,    65,   107,    65,   107,    84,    -1,    31,
467       83,   107,    65,    43,    84,    -1,   105,    54,    -1,   105,
468       55,    -1,   100,    -1,    83,   102,    84,    -1,    44,    -1,
469       73,    44,    -1,    43,    -1,   103,    -1,   104,    -1,   104,
470       85,    45,    -1,    54,   104,    85,    45,    -1,    54,   105,
471       -1,    55,   104,    85,    45,    -1,    55,   105,    -1,    73,
472      102,    -1,    76,   102,    -1,   105,    66,   102,    -1,   102,
473       74,   102,    -1,   102,    75,   102,    -1,   102,    72,   102,
474       -1,   102,    73,   102,    -1,   102,    71,   102,    -1,   102,
475       69,   102,    -1,   102,    70,   102,    -1,   102,    49,   102,
476       -1,   102,    50,   102,    -1,   102,    61,   102,    -1,   102,
477       60,   102,    -1,   102,    62,   102,    -1,   102,    48,   102,
478       -1,   102,    51,   102,    -1,   102,    52,   102,    -1,   102,
479       53,   102,    -1,   102,    67,   102,    68,   102,    -1,    45,
480       -1,   104,    68,    45,    -1,    10,    -1,    85,    -1,    75,
481       -1,    63,    -1,    45,    -1,    46,    -1,   103,    -1,    43,
482       -1,    83,   102,    84,    -1,   101,    -1,    99,    -1,    54,
483      105,    -1,    55,   105,    -1,    54,   104,    85,    45,    -1,
484       55,   104,    85,    45,    -1,   105,    66,   102,    -1,   105,
485       58,   102,    -1,   105,    57,   102,    -1,   105,    56,   102,
486       -1,   105,    59,   102,    -1,   104,    85,    45,    66,   102,
487       -1,   104,    85,    45,    58,   102,    -1,   104,    85,    45,
488       57,   102,    -1,   104,    85,    45,    56,   102,    -1,   104,
489       85,    45,    59,   102,    -1,   102,    -1
490 };
491
492 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
493 static const unsigned short yyrline[] =
494 {
495        0,   144,   144,   150,   151,   156,   160,   161,   162,   163,
496      164,   165,   166,   167,   171,   172,   176,   177,   178,   185,
497      201,   217,   229,   243,   257,   267,   278,   288,   289,   313,
498      328,   340,   348,   370,   371,   375,   383,   391,   395,   402,
499      409,   413,   418,   425,   432,   441,   448,   455,   462,   470,
500      477,   489,   498,   502,   506,   510,   514,   518,   522,   529,
501      536,   542,   548,   555,   559,   573,   586,   590,   594,   598,
502      602,   606,   610,   614,   619,   625,   634,   645,   659,   661,
503      664,   669,   675,   680,   686,   691,   699,   714,   724,   739,
504      749,   754,   758,   764,   769,   774,   779,   784,   789,   794,
505      799,   805,   810,   815,   819,   823,   827,   832,   836,   840,
506      852,   854,   861,   864,   867,   870,   873,   876,   881,   886,
507      891,   895,   897,   899,   907,   915,   928,   941,   945,   952,
508      959,   966,   973,   982,   995,  1008,  1021,  1036
509 };
510 #endif
511
512 #if YYDEBUG || YYERROR_VERBOSE
513 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
514    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
515 static const char *const yytname[] =
516 {
517   "$end", "error", "$undefined", "BREAK", "FOR", "CONTINUE", "IF", "ELSE", 
518   "DO", "WHILE", "THIS", "EVAL", "TIME", "RANDOM", "LENGTH", "INT", 
519   "CONCAT", "DUPLICATECLIP", "REMOVECLIP", "TRACE", "STARTDRAG", 
520   "STOPDRAG", "ORD", "CHR", "CALLFRAME", "GETURL", "GETURL1", "LOADMOVIE", 
521   "LOADVARIABLES", "POSTURL", "SUBSTR", "GETPROPERTY", "NEXTFRAME", 
522   "PREVFRAME", "PLAY", "STOP", "TOGGLEQUALITY", "STOPSOUNDS", "GOTOFRAME", 
523   "GOTOANDPLAY", "FRAMELOADED", "SETTARGET", "TELLTARGET", "STRING", 
524   "NUMBER", "IDENTIFIER", "PATH", "GETURL_METHOD", "\"==\"", "\"<=\"", 
525   "\">=\"", "\"!=\"", "\"&&\"", "\"||\"", "\"++\"", "\"--\"", "\"+=\"", 
526   "\"/=\"", "\"*=\"", "\"-=\"", "\"===\"", "\"!==\"", "\"<=>\"", "\"..\"", 
527   "\"end\"", "','", "'='", "'?'", "':'", "'<'", "'>'", "'&'", "'+'", 
528   "'-'", "'*'", "'/'", "'!'", "UMINUS", "POSTFIX", "NEGATE", "'{'", "'}'", 
529   "';'", "'('", "')'", "'.'", "$accept", "program", "elems", "elem", 
530   "stmt", "assign_stmts", "statements", "if_stmt", "expr_opt", 
531   "iter_stmt", "assign_stmts_opt", "cont_stmt", "break_stmt", 
532   "void_function_call", "function_call", "pf_expr", "rhs_expr", 
533   "variable", "sprite", "lhs_expr", "assign_stmt", "expr", 0
534 };
535 #endif
536
537 # ifdef YYPRINT
538 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
539    token YYLEX-NUM.  */
540 static const unsigned short yytoknum[] =
541 {
542        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
543      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
544      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
545      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
546      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
547      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
548      315,   316,   317,   318,   319,    44,    61,    63,    58,    60,
549       62,    38,    43,    45,    42,    47,    33,   320,   321,   322,
550      123,   125,    59,    40,    41,    46
551 };
552 # endif
553
554 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
555 static const unsigned char yyr1[] =
556 {
557        0,    86,    87,    88,    88,    89,    90,    90,    90,    90,
558       90,    90,    90,    90,    91,    91,    92,    92,    92,    93,
559       93,    93,    93,    93,    93,    93,    93,    94,    94,    95,
560       95,    95,    95,    96,    96,    97,    98,    99,    99,    99,
561       99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
562       99,    99,    99,    99,    99,    99,    99,    99,    99,    99,
563       99,    99,    99,    99,    99,    99,   100,   100,   100,   100,
564      100,   100,   100,   100,   100,   100,   101,   101,   102,   102,
565      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
566      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
567      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
568      103,   103,   104,   104,   104,   104,   104,   104,   105,   105,
569      105,   106,   106,   106,   106,   106,   106,   106,   106,   106,
570      106,   106,   106,   106,   106,   106,   106,   107
571 };
572
573 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
574 static const unsigned char yyr2[] =
575 {
576        0,     2,     1,     1,     2,     1,     2,     3,     1,     2,
577        1,     1,     1,     1,     1,     3,     0,     1,     2,    10,
578        8,     9,    10,     8,     9,     7,     5,     0,     1,     9,
579        5,     6,     9,     0,     1,     2,     2,     3,     4,     4,
580        4,     4,     6,     8,     6,     6,     8,     6,     8,     6,
581       14,     8,     3,     3,     3,     3,     3,     3,     4,     4,
582        4,     4,     4,     4,     5,     5,     4,     3,     4,     4,
583        4,     4,     4,     6,     8,     6,     2,     2,     1,     3,
584        1,     2,     1,     1,     1,     3,     4,     2,     4,     2,
585        2,     2,     3,     3,     3,     3,     3,     3,     3,     3,
586        3,     3,     3,     3,     3,     3,     3,     3,     3,     5,
587        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
588        3,     1,     1,     2,     2,     4,     4,     3,     3,     3,
589        3,     3,     5,     5,     5,     5,     5,     1
590 };
591
592 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
593    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
594    means the default is an error.  */
595 static const unsigned char yydefact[] =
596 {
597        0,     0,     0,     0,     0,     0,     0,   112,     0,     0,
598        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
599        0,     0,     0,     0,     0,     0,     0,     0,   119,   110,
600      117,     0,     0,   115,   114,     0,     8,     0,   113,     0,
601        2,     3,     5,    10,    11,    12,    13,   122,   121,   118,
602        0,     0,     0,    36,    33,    35,     0,     0,     0,     0,
603        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
604        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
605      123,     0,   124,     6,    17,     0,     0,     0,     0,     0,
606        0,     0,     0,     0,     0,     0,    82,    80,     0,     0,
607        0,     0,     0,    78,     0,    83,    84,     0,     1,     4,
608        0,     0,    76,    77,     0,     0,     0,     0,     0,     9,
609       34,     0,    14,     0,     0,   137,     0,     0,     0,     0,
610        0,     0,     0,     0,    37,     0,     0,     0,     0,     0,
611        0,     0,    52,    53,    54,    55,    56,    57,    82,    80,
612        0,     0,    82,     0,    82,     0,     0,     0,     7,    18,
613        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
614        0,    87,     0,    89,    80,    90,    91,     0,     0,     0,
615        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
616        0,     0,     0,     0,     0,   120,     0,     0,   111,     0,
617      130,   129,   128,   131,   127,     0,    27,     0,     0,     0,
618        0,     0,     0,     0,    40,    41,     0,    39,    38,     0,
619        0,     0,     0,    59,    58,    60,    61,    62,    63,     0,
620        0,   125,   126,     0,    67,     0,     0,     0,     0,     0,
621        0,     0,     0,     0,     0,    79,   105,   100,   101,   106,
622      107,   108,   103,   102,   104,     0,    98,    99,    97,    95,
623       96,    93,    94,    85,    92,     0,     0,     0,     0,     0,
624       15,     0,    28,    80,     0,     0,    26,     0,     0,    30,
625        0,     0,     0,     0,     0,     0,    64,    65,    66,    68,
626       69,    70,     0,    71,    72,     0,     0,    86,    88,     0,
627      135,   134,   133,   136,   132,    33,     0,     0,    80,     0,
628        0,    31,     0,     0,     0,    49,     0,    42,    44,     0,
629       45,     0,    47,     0,     0,     0,   109,     0,     0,     0,
630        0,     0,    25,     0,     0,     0,     0,     0,     0,    73,
631        0,    75,     0,    20,    23,     0,     0,     0,    51,     0,
632       43,    46,    48,     0,    32,     0,     0,    21,    24,    29,
633        0,    74,    19,    22,     0,     0,     0,     0,    50
634 };
635
636 /* YYDEFGOTO[NTERM-NUM]. */
637 static const short yydefgoto[] =
638 {
639       -1,    39,    40,    41,    42,   120,    85,    43,   271,    44,
640      121,    45,    46,    47,   103,    48,   125,   105,   106,   107,
641       52,   126
642 };
643
644 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
645    STATE-NUM.  */
646 #define YYPACT_NINF -70
647 static const short yypact[] =
648 {
649      780,   -69,   -64,   -60,   -49,   780,   -28,   -70,   -22,   -14,
650       -2,     3,     4,    11,    13,    17,    19,    20,    23,    25,
651       26,    29,    30,    31,    33,    47,    54,    56,   -70,    16,
652      -70,    32,    32,   -70,   -70,   614,   -70,   422,   -70,    72,
653      780,   -70,   -70,   -70,   -70,   -70,   -70,   -70,   -70,   -70,
654      -12,    65,     1,   -70,   108,   -70,   826,    80,   994,   422,
655      422,   422,   422,    64,     5,   422,   118,   422,   422,    81,
656       82,    86,    88,    89,   104,  1020,   422,  1076,  1102,   -11,
657      -70,    -9,   -70,   -70,   -70,   697,   106,   109,   117,   119,
658      120,   121,   123,   125,   127,   130,    98,   -70,    32,    32,
659     1158,   422,   422,   -70,   516,   135,    -6,   141,   -70,   -70,
660      145,   169,   -70,   -70,   422,   422,   422,   422,   422,   -70,
661      151,   137,   -70,   139,   882,   613,   136,   140,   938,   142,
662      160,   143,   144,   166,   -70,   148,   149,   170,   172,   174,
663      175,   178,   -70,   -70,   -70,   -70,   -70,   -70,   -48,   150,
664      161,   162,   -21,   163,   -13,   164,   199,   204,   -70,   -70,
665      422,   167,   422,   422,   422,   422,   422,   422,   422,   422,
666       -3,   -70,    -1,   -70,   -70,   -70,   -70,  1257,   422,   422,
667      422,   422,   422,   422,   422,   422,   422,   422,   422,   422,
668      422,   422,   422,   422,   422,   -70,   205,   422,   -70,   128,
669      613,   613,   613,   613,   613,   108,   422,  1184,   171,   780,
670      422,   173,   780,   422,   -70,   -70,   422,   -70,   -70,   422,
671      210,   422,   422,   -70,   -70,   -70,   -70,   -70,   -70,   780,
672      780,   -70,   -70,   176,   -70,   177,   179,   180,   190,   182,
673      188,   192,   193,   214,   228,   212,   -46,   124,   124,   -46,
674      696,   696,   -46,   -46,   124,   107,   124,   124,   -65,    18,
675       18,   -70,   -70,   -70,   613,   422,   422,   422,   422,   422,
676      -70,   197,   -70,   191,   196,  1240,   274,   206,   244,   -70,
677      224,   -63,   -51,   207,   -45,   -35,   -70,   -70,   -70,   -70,
678      -70,   -70,   422,   -70,   -70,   422,   249,   -70,   -70,   422,
679      613,   613,   613,   613,   613,   108,   211,   213,   215,   216,
680      780,   -70,   217,   422,   422,   -70,   246,   -70,   -70,   247,
681      -70,   251,   -70,   218,   231,   219,   613,   220,   780,   780,
682      222,   223,   -70,   225,   229,   243,   230,   234,   235,   -70,
683      422,   -70,   780,   305,   308,   780,   780,   780,   -70,   422,
684      -70,   -70,   -70,   236,   -70,   780,   780,   -70,   -70,   -70,
685      256,   -70,   -70,   -70,   422,   258,   422,   240,   -70
686 };
687
688 /* YYPGOTO[NTERM-NUM].  */
689 static const short yypgoto[] =
690 {
691      -70,   -70,   -70,   285,    53,   -70,   -70,   -70,   -70,   -70,
692       21,   -70,   -70,   -70,   -70,   -70,   346,     0,     6,    12,
693      -53,   209
694 };
695
696 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
697    positive, shift that token.  If negative, reduce the rule which
698    number is the opposite.  If zero, do what YYDEFACT says.
699    If YYTABLE_NINF, syntax error.  */
700 #define YYTABLE_NINF -121
701 static const short yytable[] =
702 {
703       49,   122,   314,   179,   180,    49,    50,   191,   192,   193,
704      194,    50,    51,    53,   316,     7,   186,    51,  -119,    54,
705      319,   315,    55,   188,   189,   190,   191,   192,   193,   194,
706      321,    49,    49,   317,    56,    49,   223,    79,    81,   320,
707       49,    50,     7,    80,    82,  -119,    50,    51,   135,   322,
708       29,    30,    51,  -119,    49,    58,   110,   110,    57,   110,
709       50,    59,   110,   227,   136,   110,    51,   110,    33,    60,
710      137,   229,   108,   111,   156,    28,   157,    29,    30,   196,
711       34,    61,   243,   119,   244,    49,    62,    63,    84,   127,
712       38,    50,   193,   194,    64,    33,    65,    51,    49,    49,
713       66,  -116,    67,    68,   170,   172,    69,    34,    70,    71,
714      171,   173,    72,    73,    74,    37,    75,    38,     7,   112,
715      113,   114,   115,   116,   117,     8,     9,    10,    11,    12,
716       76,   118,    13,    14,    15,    16,    17,    77,   159,    78,
717       18,    19,    20,    21,    22,    23,    24,    25,   134,    26,
718       27,    28,   270,    29,    30,   178,   179,   180,   181,   182,
719      183,   139,    31,    32,  -119,   142,   143,   184,   185,   186,
720      144,    33,   145,   146,   187,   299,   188,   189,   190,   191,
721      192,   193,   194,    34,   265,   266,   267,   268,   147,   160,
722      198,    37,   161,    38,   269,   190,   191,   192,   193,   194,
723      162,  -118,   163,   164,   165,    49,   166,   197,   167,    49,
724      168,    50,    49,   169,   199,    50,   205,    51,    50,   206,
725      209,    51,   207,   210,    51,   213,   212,   214,   215,    49,
726       49,   216,   217,   218,   224,    50,    50,   219,   110,   220,
727      221,    51,    51,   222,   231,   225,   226,   228,   230,   232,
728      263,   234,   122,   283,   275,   292,   278,   295,   296,   297,
729      288,   289,   276,   290,   291,   279,   293,   129,   130,   131,
730      132,   133,   294,   298,   138,   306,   140,   141,  -120,   305,
731      307,   310,   286,   287,   150,   151,   153,   155,   312,   313,
732      311,   318,   325,   336,   337,   328,   340,   329,   338,   330,
733      331,   333,   339,   341,   342,    49,   345,   346,   349,   347,
734       49,    50,   355,   348,   350,   356,    50,    51,   351,   352,
735      361,   364,    51,   366,   368,   109,   327,     0,    49,    49,
736        0,     0,     0,     0,    50,    50,     0,     0,     0,     0,
737       51,    51,    49,     0,     0,    49,    49,    49,    50,     0,
738        0,    50,    50,    50,    51,    49,    49,    51,    51,    51,
739        0,    50,    50,   332,     0,     0,     0,    51,    51,   233,
740        0,   235,   236,   237,   238,   239,   240,   241,   242,     0,
741        0,   343,   344,   104,     0,     0,     0,     0,     0,     0,
742        0,     0,     0,     0,     0,   354,     0,     0,   357,   358,
743      359,     0,     0,     0,     0,     0,     0,     0,   362,   363,
744        0,     0,     0,     0,     0,   272,   274,     0,     0,   277,
745        0,     0,   280,     0,     0,   281,     0,     0,   282,     0,
746      284,   285,     7,    86,    87,    88,    89,    90,    91,     0,
747        0,     0,     0,     0,    92,    93,   175,   176,   177,     0,
748        0,     0,    94,    95,     0,     0,     0,     0,     0,     0,
749      200,   201,   202,   203,   204,    96,    97,    29,    30,     0,
750      176,     0,     0,     0,   176,     0,    98,    99,     0,     0,
751        0,     0,     0,     0,   309,    33,     0,     0,     0,     0,
752        0,     0,     0,     0,     0,   100,     0,    34,   101,     0,
753        0,   323,     0,     0,   324,   102,     0,    38,     0,     0,
754        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
755        0,     0,   334,   335,   246,   247,   248,   249,   250,   251,
756      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
757      262,     0,     0,   264,     0,     0,     0,     0,     0,   353,
758        0,     0,     0,     0,     0,     0,     0,     0,   360,     0,
759        0,     0,     0,     0,   178,   179,   180,   181,   182,   183,
760        0,     0,     0,   365,     0,   367,   184,   185,   186,     0,
761        0,     0,     0,   187,     0,   188,   189,   190,   191,   192,
762      193,   194,     0,     0,     0,     0,     0,     0,     0,     0,
763      195,     0,     0,     0,     0,     0,     0,     0,     0,     0,
764        0,   300,   301,   302,   303,   304,     0,     1,     2,     3,
765        4,     0,     5,     6,     7,     0,     0,     0,     0,     0,
766        0,     8,     9,    10,    11,    12,     0,     0,    13,    14,
767       15,    16,    17,     0,     0,   326,    18,    19,    20,    21,
768       22,    23,    24,    25,     0,    26,    27,    28,     0,    29,
769       30,   178,   179,   180,   181,   182,   183,     0,    31,    32,
770        0,     0,     0,   184,   185,   186,     0,    33,     0,     0,
771      187,     0,   188,   189,   190,   191,   192,   193,   194,    34,
772        0,     0,     0,     0,    35,    83,    36,    37,     0,    38,
773        1,     2,     3,     4,     0,     5,     6,     7,     0,     0,
774        0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
775        0,    13,    14,    15,    16,    17,     0,     0,     0,    18,
776       19,    20,    21,    22,    23,    24,    25,     0,    26,    27,
777       28,     0,    29,    30,   178,   179,   180,   181,     0,     0,
778        0,    31,    32,     0,     0,     0,   184,   185,   186,     0,
779       33,     0,     0,     0,     0,   188,   189,   190,   191,   192,
780      193,   194,    34,     0,     0,     0,     0,    35,   158,    36,
781       37,     0,    38,     1,     2,     3,     4,     0,     5,     6,
782        7,     0,     0,     0,     0,     0,     0,     8,     9,    10,
783       11,    12,     0,     0,    13,    14,    15,    16,    17,     0,
784        0,     0,    18,    19,    20,    21,    22,    23,    24,    25,
785        0,    26,    27,    28,     0,    29,    30,     0,     0,     0,
786        0,     0,     0,     0,    31,    32,     7,    86,    87,    88,
787       89,    90,    91,    33,     0,     0,     0,     0,    92,    93,
788        0,     0,     0,     0,     0,    34,    94,    95,     0,     0,
789       35,     0,    36,    37,     0,    38,   123,     0,     0,    96,
790       97,    29,    30,     0,     0,     0,     0,     0,     0,     0,
791       98,    99,     0,     0,     0,     0,     0,     0,     0,    33,
792        0,     0,     7,    86,    87,    88,    89,    90,    91,   100,
793        0,    34,   124,     0,    92,    93,     0,     0,     0,   102,
794        0,    38,    94,    95,     0,     0,     0,     0,     0,     0,
795        0,     0,   208,     0,     0,    96,    97,    29,    30,     0,
796        0,     0,     0,     0,     0,     0,    98,    99,     0,     0,
797        0,     0,     0,     0,     0,    33,     0,     0,     7,    86,
798       87,    88,    89,    90,    91,   100,     0,    34,   101,     0,
799       92,    93,     0,     0,     0,   102,     0,    38,    94,    95,
800        0,     0,     0,     0,     0,     0,     0,     0,   211,     0,
801        0,    96,    97,    29,    30,     0,     0,     0,     0,     0,
802        0,     0,    98,    99,     0,     0,     0,     0,     0,     0,
803        0,    33,     0,     0,     7,    86,    87,    88,    89,    90,
804       91,   100,     0,    34,   101,     0,    92,    93,     0,     0,
805        0,   102,     0,    38,    94,    95,     0,     0,     0,     0,
806        7,    86,    87,    88,    89,    90,    91,    96,    97,    29,
807       30,     0,    92,    93,     0,     0,     0,     0,    98,    99,
808       94,    95,     0,     0,     0,     0,     0,    33,     0,     0,
809        0,     0,     0,   148,   149,    29,    30,   100,     0,    34,
810      128,     0,     0,     0,    98,    99,     0,   102,     0,    38,
811        0,     0,     0,    33,     0,     0,     7,    86,    87,    88,
812       89,    90,    91,   100,     0,    34,   101,     0,    92,    93,
813        0,     0,     0,   102,     0,    38,    94,    95,     0,     0,
814        0,     0,     7,    86,    87,    88,    89,    90,    91,   152,
815       97,    29,    30,     0,    92,    93,     0,     0,     0,     0,
816       98,    99,    94,    95,     0,     0,     0,     0,     0,    33,
817        0,     0,     0,     0,     0,   154,    97,    29,    30,   100,
818        0,    34,   101,     0,     0,     0,    98,    99,     0,   102,
819        0,    38,     0,     0,     0,    33,     0,     0,     7,    86,
820       87,    88,    89,    90,    91,   100,     0,    34,   101,     0,
821       92,    93,     0,     0,     0,   102,     0,    38,    94,    95,
822        0,     0,     0,     0,     7,    86,    87,    88,    89,    90,
823       91,    96,   174,    29,    30,     0,    92,    93,     0,     0,
824        0,     0,    98,    99,    94,    95,     0,     0,     0,     0,
825        0,    33,     0,     0,     0,     0,     0,    96,   273,    29,
826       30,   100,     0,    34,   101,     0,     0,     0,    98,    99,
827        0,   102,     0,    38,     0,     0,     0,    33,     0,     0,
828        7,    86,    87,    88,    89,    90,    91,   100,     0,    34,
829      101,     0,    92,    93,     0,     0,     0,   102,     0,    38,
830       94,    95,     0,     0,     0,     0,     0,     0,     0,     0,
831        0,     0,     0,    96,   308,    29,    30,     0,     0,     0,
832        0,     0,     0,     0,    98,    99,     0,     0,     0,     0,
833        0,     0,     0,    33,     0,   178,   179,   180,   181,   182,
834      183,     0,     0,   100,     0,    34,   101,   184,   185,   186,
835        0,     0,     0,   102,   187,    38,   188,   189,   190,   191,
836      192,   193,   194,     0,     0,     0,     0,     0,     0,     0,
837        0,   245
838 };
839
840 static const short yycheck[] =
841 {
842        0,    54,    65,    49,    50,     5,     0,    72,    73,    74,
843       75,     5,     0,    82,    65,    10,    62,     5,    66,    83,
844       65,    84,    82,    69,    70,    71,    72,    73,    74,    75,
845       65,    31,    32,    84,    83,    35,    84,    31,    32,    84,
846       40,    35,    10,    31,    32,    66,    40,    35,    43,    84,
847       45,    46,    40,    66,    54,    83,    68,    68,     5,    68,
848       54,    83,    68,    84,    64,    68,    54,    68,    63,    83,
849       64,    84,     0,    85,    85,    43,    85,    45,    46,    85,
850       75,    83,    85,    82,    85,    85,    83,    83,    35,     9,
851       85,    85,    74,    75,    83,    63,    83,    85,    98,    99,
852       83,    85,    83,    83,    98,    99,    83,    75,    83,    83,
853       98,    99,    83,    83,    83,    83,    83,    85,    10,    54,
854       55,    56,    57,    58,    59,    17,    18,    19,    20,    21,
855       83,    66,    24,    25,    26,    27,    28,    83,    85,    83,
856       32,    33,    34,    35,    36,    37,    38,    39,    84,    41,
857       42,    43,   205,    45,    46,    48,    49,    50,    51,    52,
858       53,    43,    54,    55,    66,    84,    84,    60,    61,    62,
859       84,    63,    84,    84,    67,    68,    69,    70,    71,    72,
860       73,    74,    75,    75,    56,    57,    58,    59,    84,    83,
861       45,    83,    83,    85,    66,    71,    72,    73,    74,    75,
862       83,    66,    83,    83,    83,   205,    83,    66,    83,   209,
863       83,   205,   212,    83,    45,   209,    65,   205,   212,    82,
864       84,   209,    83,    83,   212,    65,    84,    84,    84,   229,
865      230,    65,    84,    84,    84,   229,   230,    65,    68,    65,
866       65,   229,   230,    65,    45,    84,    84,    84,    84,    45,
867       45,    84,   305,    43,    83,    65,    83,    65,    65,    45,
868       84,    84,   209,    84,    84,   212,    84,    58,    59,    60,
869       61,    62,    84,    45,    65,    84,    67,    68,    66,    82,
870       84,     7,   229,   230,    75,    76,    77,    78,    44,    65,
871       84,    84,    43,    47,    47,    84,    65,    84,    47,    84,
872       84,    84,    84,    84,    84,   305,    84,    84,    65,    84,
873      310,   305,     7,    84,    84,     7,   310,   305,    84,    84,
874       84,    65,   310,    65,    84,    40,   305,    -1,   328,   329,
875       -1,    -1,    -1,    -1,   328,   329,    -1,    -1,    -1,    -1,
876      328,   329,   342,    -1,    -1,   345,   346,   347,   342,    -1,
877       -1,   345,   346,   347,   342,   355,   356,   345,   346,   347,
878       -1,   355,   356,   310,    -1,    -1,    -1,   355,   356,   160,
879       -1,   162,   163,   164,   165,   166,   167,   168,   169,    -1,
880       -1,   328,   329,    37,    -1,    -1,    -1,    -1,    -1,    -1,
881       -1,    -1,    -1,    -1,    -1,   342,    -1,    -1,   345,   346,
882      347,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   355,   356,
883       -1,    -1,    -1,    -1,    -1,   206,   207,    -1,    -1,   210,
884       -1,    -1,   213,    -1,    -1,   216,    -1,    -1,   219,    -1,
885      221,   222,    10,    11,    12,    13,    14,    15,    16,    -1,
886       -1,    -1,    -1,    -1,    22,    23,   100,   101,   102,    -1,
887       -1,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
888      114,   115,   116,   117,   118,    43,    44,    45,    46,    -1,
889      124,    -1,    -1,    -1,   128,    -1,    54,    55,    -1,    -1,
890       -1,    -1,    -1,    -1,   275,    63,    -1,    -1,    -1,    -1,
891       -1,    -1,    -1,    -1,    -1,    73,    -1,    75,    76,    -1,
892       -1,   292,    -1,    -1,   295,    83,    -1,    85,    -1,    -1,
893       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
894       -1,    -1,   313,   314,   178,   179,   180,   181,   182,   183,
895      184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
896      194,    -1,    -1,   197,    -1,    -1,    -1,    -1,    -1,   340,
897       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,    -1,
898       -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,    53,
899       -1,    -1,    -1,   364,    -1,   366,    60,    61,    62,    -1,
900       -1,    -1,    -1,    67,    -1,    69,    70,    71,    72,    73,
901       74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
902       84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
903       -1,   265,   266,   267,   268,   269,    -1,     3,     4,     5,
904        6,    -1,     8,     9,    10,    -1,    -1,    -1,    -1,    -1,
905       -1,    17,    18,    19,    20,    21,    -1,    -1,    24,    25,
906       26,    27,    28,    -1,    -1,   299,    32,    33,    34,    35,
907       36,    37,    38,    39,    -1,    41,    42,    43,    -1,    45,
908       46,    48,    49,    50,    51,    52,    53,    -1,    54,    55,
909       -1,    -1,    -1,    60,    61,    62,    -1,    63,    -1,    -1,
910       67,    -1,    69,    70,    71,    72,    73,    74,    75,    75,
911       -1,    -1,    -1,    -1,    80,    81,    82,    83,    -1,    85,
912        3,     4,     5,     6,    -1,     8,     9,    10,    -1,    -1,
913       -1,    -1,    -1,    -1,    17,    18,    19,    20,    21,    -1,
914       -1,    24,    25,    26,    27,    28,    -1,    -1,    -1,    32,
915       33,    34,    35,    36,    37,    38,    39,    -1,    41,    42,
916       43,    -1,    45,    46,    48,    49,    50,    51,    -1,    -1,
917       -1,    54,    55,    -1,    -1,    -1,    60,    61,    62,    -1,
918       63,    -1,    -1,    -1,    -1,    69,    70,    71,    72,    73,
919       74,    75,    75,    -1,    -1,    -1,    -1,    80,    81,    82,
920       83,    -1,    85,     3,     4,     5,     6,    -1,     8,     9,
921       10,    -1,    -1,    -1,    -1,    -1,    -1,    17,    18,    19,
922       20,    21,    -1,    -1,    24,    25,    26,    27,    28,    -1,
923       -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
924       -1,    41,    42,    43,    -1,    45,    46,    -1,    -1,    -1,
925       -1,    -1,    -1,    -1,    54,    55,    10,    11,    12,    13,
926       14,    15,    16,    63,    -1,    -1,    -1,    -1,    22,    23,
927       -1,    -1,    -1,    -1,    -1,    75,    30,    31,    -1,    -1,
928       80,    -1,    82,    83,    -1,    85,    40,    -1,    -1,    43,
929       44,    45,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
930       54,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,
931       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    73,
932       -1,    75,    76,    -1,    22,    23,    -1,    -1,    -1,    83,
933       -1,    85,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,
934       -1,    -1,    40,    -1,    -1,    43,    44,    45,    46,    -1,
935       -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    -1,
936       -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    10,    11,
937       12,    13,    14,    15,    16,    73,    -1,    75,    76,    -1,
938       22,    23,    -1,    -1,    -1,    83,    -1,    85,    30,    31,
939       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,
940       -1,    43,    44,    45,    46,    -1,    -1,    -1,    -1,    -1,
941       -1,    -1,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,
942       -1,    63,    -1,    -1,    10,    11,    12,    13,    14,    15,
943       16,    73,    -1,    75,    76,    -1,    22,    23,    -1,    -1,
944       -1,    83,    -1,    85,    30,    31,    -1,    -1,    -1,    -1,
945       10,    11,    12,    13,    14,    15,    16,    43,    44,    45,
946       46,    -1,    22,    23,    -1,    -1,    -1,    -1,    54,    55,
947       30,    31,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,
948       -1,    -1,    -1,    43,    44,    45,    46,    73,    -1,    75,
949       76,    -1,    -1,    -1,    54,    55,    -1,    83,    -1,    85,
950       -1,    -1,    -1,    63,    -1,    -1,    10,    11,    12,    13,
951       14,    15,    16,    73,    -1,    75,    76,    -1,    22,    23,
952       -1,    -1,    -1,    83,    -1,    85,    30,    31,    -1,    -1,
953       -1,    -1,    10,    11,    12,    13,    14,    15,    16,    43,
954       44,    45,    46,    -1,    22,    23,    -1,    -1,    -1,    -1,
955       54,    55,    30,    31,    -1,    -1,    -1,    -1,    -1,    63,
956       -1,    -1,    -1,    -1,    -1,    43,    44,    45,    46,    73,
957       -1,    75,    76,    -1,    -1,    -1,    54,    55,    -1,    83,
958       -1,    85,    -1,    -1,    -1,    63,    -1,    -1,    10,    11,
959       12,    13,    14,    15,    16,    73,    -1,    75,    76,    -1,
960       22,    23,    -1,    -1,    -1,    83,    -1,    85,    30,    31,
961       -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
962       16,    43,    44,    45,    46,    -1,    22,    23,    -1,    -1,
963       -1,    -1,    54,    55,    30,    31,    -1,    -1,    -1,    -1,
964       -1,    63,    -1,    -1,    -1,    -1,    -1,    43,    44,    45,
965       46,    73,    -1,    75,    76,    -1,    -1,    -1,    54,    55,
966       -1,    83,    -1,    85,    -1,    -1,    -1,    63,    -1,    -1,
967       10,    11,    12,    13,    14,    15,    16,    73,    -1,    75,
968       76,    -1,    22,    23,    -1,    -1,    -1,    83,    -1,    85,
969       30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
970       -1,    -1,    -1,    43,    44,    45,    46,    -1,    -1,    -1,
971       -1,    -1,    -1,    -1,    54,    55,    -1,    -1,    -1,    -1,
972       -1,    -1,    -1,    63,    -1,    48,    49,    50,    51,    52,
973       53,    -1,    -1,    73,    -1,    75,    76,    60,    61,    62,
974       -1,    -1,    -1,    83,    67,    85,    69,    70,    71,    72,
975       73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
976       -1,    84
977 };
978
979 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
980    symbol of state STATE-NUM.  */
981 static const unsigned char yystos[] =
982 {
983        0,     3,     4,     5,     6,     8,     9,    10,    17,    18,
984       19,    20,    21,    24,    25,    26,    27,    28,    32,    33,
985       34,    35,    36,    37,    38,    39,    41,    42,    43,    45,
986       46,    54,    55,    63,    75,    80,    82,    83,    85,    87,
987       88,    89,    90,    93,    95,    97,    98,    99,   101,   103,
988      104,   105,   106,    82,    83,    82,    83,    90,    83,    83,
989       83,    83,    83,    83,    83,    83,    83,    83,    83,    83,
990       83,    83,    83,    83,    83,    83,    83,    83,    83,   104,
991      105,   104,   105,    81,    90,    92,    11,    12,    13,    14,
992       15,    16,    22,    23,    30,    31,    43,    44,    54,    55,
993       73,    76,    83,   100,   102,   103,   104,   105,     0,    89,
994       68,    85,    54,    55,    56,    57,    58,    59,    66,    82,
995       91,    96,   106,    40,    76,   102,   107,     9,    76,   107,
996      107,   107,   107,   107,    84,    43,   103,   104,   107,    43,
997      107,   107,    84,    84,    84,    84,    84,    84,    43,    44,
998      107,   107,    43,   107,    43,   107,    85,    85,    81,    90,
999       83,    83,    83,    83,    83,    83,    83,    83,    83,    83,
1000      104,   105,   104,   105,    44,   102,   102,   102,    48,    49,
1001       50,    51,    52,    53,    60,    61,    62,    67,    69,    70,
1002       71,    72,    73,    74,    75,    84,    85,    66,    45,    45,
1003      102,   102,   102,   102,   102,    65,    82,    83,    40,    84,
1004       83,    40,    84,    65,    84,    84,    65,    84,    84,    65,
1005       65,    65,    65,    84,    84,    84,    84,    84,    84,    84,
1006       84,    45,    45,   107,    84,   107,   107,   107,   107,   107,
1007      107,   107,   107,    85,    85,    84,   102,   102,   102,   102,
1008      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
1009      102,   102,   102,    45,   102,    56,    57,    58,    59,    66,
1010      106,    94,   107,    44,   107,    83,    90,   107,    83,    90,
1011      107,   107,   107,    43,   107,   107,    90,    90,    84,    84,
1012       84,    84,    65,    84,    84,    65,    65,    45,    45,    68,
1013      102,   102,   102,   102,   102,    82,    84,    84,    44,   107,
1014        7,    84,    44,    65,    65,    84,    65,    84,    84,    65,
1015       84,    65,    84,   107,   107,    43,   102,    96,    84,    84,
1016       84,    84,    90,    84,   107,   107,    47,    47,    47,    84,
1017       65,    84,    84,    90,    90,    84,    84,    84,    84,    65,
1018       84,    84,    84,   107,    90,     7,     7,    90,    90,    90,
1019      107,    84,    90,    90,    65,   107,    65,   107,    84
1020 };
1021
1022 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1023 # define YYSIZE_T __SIZE_TYPE__
1024 #endif
1025 #if ! defined (YYSIZE_T) && defined (size_t)
1026 # define YYSIZE_T size_t
1027 #endif
1028 #if ! defined (YYSIZE_T)
1029 # if defined (__STDC__) || defined (__cplusplus)
1030 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1031 #  define YYSIZE_T size_t
1032 # endif
1033 #endif
1034 #if ! defined (YYSIZE_T)
1035 # define YYSIZE_T unsigned int
1036 #endif
1037
1038 #define yyerrok         (yyerrstatus = 0)
1039 #define yyclearin       (yychar = YYEMPTY)
1040 #define YYEMPTY         (-2)
1041 #define YYEOF           0
1042
1043 #define YYACCEPT        goto yyacceptlab
1044 #define YYABORT         goto yyabortlab
1045 #define YYERROR         goto yyerrlab1
1046
1047
1048 /* Like YYERROR except do call yyerror.  This remains here temporarily
1049    to ease the transition to the new meaning of YYERROR, for GCC.
1050    Once GCC version 2 has supplanted version 1, this can go.  */
1051
1052 #define YYFAIL          goto yyerrlab
1053
1054 #define YYRECOVERING()  (!!yyerrstatus)
1055
1056 #define YYBACKUP(Token, Value)                                  \
1057 do                                                              \
1058   if (yychar == YYEMPTY && yylen == 1)                          \
1059     {                                                           \
1060       yychar = (Token);                                         \
1061       yylval = (Value);                                         \
1062       yytoken = YYTRANSLATE (yychar);                           \
1063       YYPOPSTACK;                                               \
1064       goto yybackup;                                            \
1065     }                                                           \
1066   else                                                          \
1067     {                                                           \
1068       yyerror ("syntax error: cannot back up");\
1069       YYERROR;                                                  \
1070     }                                                           \
1071 while (0)
1072
1073 #define YYTERROR        1
1074 #define YYERRCODE       256
1075
1076 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
1077    are run).  */
1078
1079 #ifndef YYLLOC_DEFAULT
1080 # define YYLLOC_DEFAULT(Current, Rhs, N)         \
1081   Current.first_line   = Rhs[1].first_line;      \
1082   Current.first_column = Rhs[1].first_column;    \
1083   Current.last_line    = Rhs[N].last_line;       \
1084   Current.last_column  = Rhs[N].last_column;
1085 #endif
1086
1087 /* YYLEX -- calling `yylex' with the right arguments.  */
1088
1089 #ifdef YYLEX_PARAM
1090 # define YYLEX yylex (YYLEX_PARAM)
1091 #else
1092 # define YYLEX yylex ()
1093 #endif
1094
1095 /* Enable debugging if requested.  */
1096 #if YYDEBUG
1097
1098 # ifndef YYFPRINTF
1099 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1100 #  define YYFPRINTF fprintf
1101 # endif
1102
1103 # define YYDPRINTF(Args)                        \
1104 do {                                            \
1105   if (yydebug)                                  \
1106     YYFPRINTF Args;                             \
1107 } while (0)
1108
1109 # define YYDSYMPRINT(Args)                      \
1110 do {                                            \
1111   if (yydebug)                                  \
1112     yysymprint Args;                            \
1113 } while (0)
1114
1115 # define YYDSYMPRINTF(Title, Token, Value, Location)            \
1116 do {                                                            \
1117   if (yydebug)                                                  \
1118     {                                                           \
1119       YYFPRINTF (stderr, "%s ", Title);                         \
1120       yysymprint (stderr,                                       \
1121                   Token, Value);        \
1122       YYFPRINTF (stderr, "\n");                                 \
1123     }                                                           \
1124 } while (0)
1125
1126 /*------------------------------------------------------------------.
1127 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1128 | TOP (cinluded).                                                   |
1129 `------------------------------------------------------------------*/
1130
1131 #if defined (__STDC__) || defined (__cplusplus)
1132 static void
1133 yy_stack_print (short *bottom, short *top)
1134 #else
1135 static void
1136 yy_stack_print (bottom, top)
1137     short *bottom;
1138     short *top;
1139 #endif
1140 {
1141   YYFPRINTF (stderr, "Stack now");
1142   for (/* Nothing. */; bottom <= top; ++bottom)
1143     YYFPRINTF (stderr, " %d", *bottom);
1144   YYFPRINTF (stderr, "\n");
1145 }
1146
1147 # define YY_STACK_PRINT(Bottom, Top)                            \
1148 do {                                                            \
1149   if (yydebug)                                                  \
1150     yy_stack_print ((Bottom), (Top));                           \
1151 } while (0)
1152
1153
1154 /*------------------------------------------------.
1155 | Report that the YYRULE is going to be reduced.  |
1156 `------------------------------------------------*/
1157
1158 #if defined (__STDC__) || defined (__cplusplus)
1159 static void
1160 yy_reduce_print (int yyrule)
1161 #else
1162 static void
1163 yy_reduce_print (yyrule)
1164     int yyrule;
1165 #endif
1166 {
1167   int yyi;
1168   unsigned int yylineno = yyrline[yyrule];
1169   YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1170              yyrule - 1, yylineno);
1171   /* Print the symbols being reduced, and their result.  */
1172   for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1173     YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1174   YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1175 }
1176
1177 # define YY_REDUCE_PRINT(Rule)          \
1178 do {                                    \
1179   if (yydebug)                          \
1180     yy_reduce_print (Rule);             \
1181 } while (0)
1182
1183 /* Nonzero means print parse trace.  It is left uninitialized so that
1184    multiple parsers can coexist.  */
1185 int yydebug;
1186 #else /* !YYDEBUG */
1187 # define YYDPRINTF(Args)
1188 # define YYDSYMPRINT(Args)
1189 # define YYDSYMPRINTF(Title, Token, Value, Location)
1190 # define YY_STACK_PRINT(Bottom, Top)
1191 # define YY_REDUCE_PRINT(Rule)
1192 #endif /* !YYDEBUG */
1193
1194
1195 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1196 #ifndef YYINITDEPTH
1197 # define YYINITDEPTH 200
1198 #endif
1199
1200 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1201    if the built-in stack extension method is used).
1202
1203    Do not make this value too large; the results are undefined if
1204    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1205    evaluated with infinite-precision integer arithmetic.  */
1206
1207 #if YYMAXDEPTH == 0
1208 # undef YYMAXDEPTH
1209 #endif
1210
1211 #ifndef YYMAXDEPTH
1212 # define YYMAXDEPTH 10000
1213 #endif
1214
1215 \f
1216
1217 #if YYERROR_VERBOSE
1218
1219 # ifndef yystrlen
1220 #  if defined (__GLIBC__) && defined (_STRING_H)
1221 #   define yystrlen strlen
1222 #  else
1223 /* Return the length of YYSTR.  */
1224 static YYSIZE_T
1225 #   if defined (__STDC__) || defined (__cplusplus)
1226 yystrlen (const char *yystr)
1227 #   else
1228 yystrlen (yystr)
1229      const char *yystr;
1230 #   endif
1231 {
1232   register const char *yys = yystr;
1233
1234   while (*yys++ != '\0')
1235     continue;
1236
1237   return yys - yystr - 1;
1238 }
1239 #  endif
1240 # endif
1241
1242 # ifndef yystpcpy
1243 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1244 #   define yystpcpy stpcpy
1245 #  else
1246 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1247    YYDEST.  */
1248 static char *
1249 #   if defined (__STDC__) || defined (__cplusplus)
1250 yystpcpy (char *yydest, const char *yysrc)
1251 #   else
1252 yystpcpy (yydest, yysrc)
1253      char *yydest;
1254      const char *yysrc;
1255 #   endif
1256 {
1257   register char *yyd = yydest;
1258   register const char *yys = yysrc;
1259
1260   while ((*yyd++ = *yys++) != '\0')
1261     continue;
1262
1263   return yyd - 1;
1264 }
1265 #  endif
1266 # endif
1267
1268 #endif /* !YYERROR_VERBOSE */
1269
1270 \f
1271
1272 #if YYDEBUG
1273 /*--------------------------------.
1274 | Print this symbol on YYOUTPUT.  |
1275 `--------------------------------*/
1276
1277 #if defined (__STDC__) || defined (__cplusplus)
1278 static void
1279 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1280 #else
1281 static void
1282 yysymprint (yyoutput, yytype, yyvaluep)
1283     FILE *yyoutput;
1284     int yytype;
1285     YYSTYPE *yyvaluep;
1286 #endif
1287 {
1288   /* Pacify ``unused variable'' warnings.  */
1289   (void) yyvaluep;
1290
1291   if (yytype < YYNTOKENS)
1292     {
1293       YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1294 # ifdef YYPRINT
1295       YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1296 # endif
1297     }
1298   else
1299     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1300
1301   switch (yytype)
1302     {
1303       default:
1304         break;
1305     }
1306   YYFPRINTF (yyoutput, ")");
1307 }
1308
1309 #endif /* ! YYDEBUG */
1310 /*-----------------------------------------------.
1311 | Release the memory associated to this symbol.  |
1312 `-----------------------------------------------*/
1313
1314 #if defined (__STDC__) || defined (__cplusplus)
1315 static void
1316 yydestruct (int yytype, YYSTYPE *yyvaluep)
1317 #else
1318 static void
1319 yydestruct (yytype, yyvaluep)
1320     int yytype;
1321     YYSTYPE *yyvaluep;
1322 #endif
1323 {
1324   /* Pacify ``unused variable'' warnings.  */
1325   (void) yyvaluep;
1326
1327   switch (yytype)
1328     {
1329
1330       default:
1331         break;
1332     }
1333 }
1334 \f
1335
1336 /* Prevent warnings from -Wmissing-prototypes.  */
1337
1338 #ifdef YYPARSE_PARAM
1339 # if defined (__STDC__) || defined (__cplusplus)
1340 int yyparse (void *YYPARSE_PARAM);
1341 # else
1342 int yyparse ();
1343 # endif
1344 #else /* ! YYPARSE_PARAM */
1345 #if defined (__STDC__) || defined (__cplusplus)
1346 int yyparse (void);
1347 #else
1348 int yyparse ();
1349 #endif
1350 #endif /* ! YYPARSE_PARAM */
1351
1352
1353
1354 /* The lookahead symbol.  */
1355 int yychar;
1356
1357 /* The semantic value of the lookahead symbol.  */
1358 YYSTYPE yylval;
1359
1360 /* Number of syntax errors so far.  */
1361 int yynerrs;
1362
1363
1364
1365 /*----------.
1366 | yyparse.  |
1367 `----------*/
1368
1369 #ifdef YYPARSE_PARAM
1370 # if defined (__STDC__) || defined (__cplusplus)
1371 int yyparse (void *YYPARSE_PARAM)
1372 # else
1373 int yyparse (YYPARSE_PARAM)
1374   void *YYPARSE_PARAM;
1375 # endif
1376 #else /* ! YYPARSE_PARAM */
1377 #if defined (__STDC__) || defined (__cplusplus)
1378 int
1379 yyparse (void)
1380 #else
1381 int
1382 yyparse ()
1383
1384 #endif
1385 #endif
1386 {
1387   
1388   register int yystate;
1389   register int yyn;
1390   int yyresult;
1391   /* Number of tokens to shift before error messages enabled.  */
1392   int yyerrstatus;
1393   /* Lookahead token as an internal (translated) token number.  */
1394   int yytoken = 0;
1395
1396   /* Three stacks and their tools:
1397      `yyss': related to states,
1398      `yyvs': related to semantic values,
1399      `yyls': related to locations.
1400
1401      Refer to the stacks thru separate pointers, to allow yyoverflow
1402      to reallocate them elsewhere.  */
1403
1404   /* The state stack.  */
1405   short yyssa[YYINITDEPTH];
1406   short *yyss = yyssa;
1407   register short *yyssp;
1408
1409   /* The semantic value stack.  */
1410   YYSTYPE yyvsa[YYINITDEPTH];
1411   YYSTYPE *yyvs = yyvsa;
1412   register YYSTYPE *yyvsp;
1413
1414
1415
1416 #define YYPOPSTACK   (yyvsp--, yyssp--)
1417
1418   YYSIZE_T yystacksize = YYINITDEPTH;
1419
1420   /* The variables used to return semantic value and location from the
1421      action routines.  */
1422   YYSTYPE yyval;
1423
1424
1425   /* When reducing, the number of symbols on the RHS of the reduced
1426      rule.  */
1427   int yylen;
1428
1429   YYDPRINTF ((stderr, "Starting parse\n"));
1430
1431   yystate = 0;
1432   yyerrstatus = 0;
1433   yynerrs = 0;
1434   yychar = YYEMPTY;             /* Cause a token to be read.  */
1435
1436   /* Initialize stack pointers.
1437      Waste one element of value and location stack
1438      so that they stay on the same level as the state stack.
1439      The wasted elements are never initialized.  */
1440
1441   yyssp = yyss;
1442   yyvsp = yyvs;
1443
1444   goto yysetstate;
1445
1446 /*------------------------------------------------------------.
1447 | yynewstate -- Push a new state, which is found in yystate.  |
1448 `------------------------------------------------------------*/
1449  yynewstate:
1450   /* In all cases, when you get here, the value and location stacks
1451      have just been pushed. so pushing a state here evens the stacks.
1452      */
1453   yyssp++;
1454
1455  yysetstate:
1456   *yyssp = yystate;
1457
1458   if (yyss + yystacksize - 1 <= yyssp)
1459     {
1460       /* Get the current used size of the three stacks, in elements.  */
1461       YYSIZE_T yysize = yyssp - yyss + 1;
1462
1463 #ifdef yyoverflow
1464       {
1465         /* Give user a chance to reallocate the stack. Use copies of
1466            these so that the &'s don't force the real ones into
1467            memory.  */
1468         YYSTYPE *yyvs1 = yyvs;
1469         short *yyss1 = yyss;
1470
1471
1472         /* Each stack pointer address is followed by the size of the
1473            data in use in that stack, in bytes.  This used to be a
1474            conditional around just the two extra args, but that might
1475            be undefined if yyoverflow is a macro.  */
1476         yyoverflow ("parser stack overflow",
1477                     &yyss1, yysize * sizeof (*yyssp),
1478                     &yyvs1, yysize * sizeof (*yyvsp),
1479
1480                     &yystacksize);
1481
1482         yyss = yyss1;
1483         yyvs = yyvs1;
1484       }
1485 #else /* no yyoverflow */
1486 # ifndef YYSTACK_RELOCATE
1487       goto yyoverflowlab;
1488 # else
1489       /* Extend the stack our own way.  */
1490       if (YYMAXDEPTH <= yystacksize)
1491         goto yyoverflowlab;
1492       yystacksize *= 2;
1493       if (YYMAXDEPTH < yystacksize)
1494         yystacksize = YYMAXDEPTH;
1495
1496       {
1497         short *yyss1 = yyss;
1498         union yyalloc *yyptr =
1499           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1500         if (! yyptr)
1501           goto yyoverflowlab;
1502         YYSTACK_RELOCATE (yyss);
1503         YYSTACK_RELOCATE (yyvs);
1504
1505 #  undef YYSTACK_RELOCATE
1506         if (yyss1 != yyssa)
1507           YYSTACK_FREE (yyss1);
1508       }
1509 # endif
1510 #endif /* no yyoverflow */
1511
1512       yyssp = yyss + yysize - 1;
1513       yyvsp = yyvs + yysize - 1;
1514
1515
1516       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1517                   (unsigned long int) yystacksize));
1518
1519       if (yyss + yystacksize - 1 <= yyssp)
1520         YYABORT;
1521     }
1522
1523   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1524
1525   goto yybackup;
1526
1527 /*-----------.
1528 | yybackup.  |
1529 `-----------*/
1530 yybackup:
1531
1532 /* Do appropriate processing given the current state.  */
1533 /* Read a lookahead token if we need one and don't already have one.  */
1534 /* yyresume: */
1535
1536   /* First try to decide what to do without reference to lookahead token.  */
1537
1538   yyn = yypact[yystate];
1539   if (yyn == YYPACT_NINF)
1540     goto yydefault;
1541
1542   /* Not known => get a lookahead token if don't already have one.  */
1543
1544   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1545   if (yychar == YYEMPTY)
1546     {
1547       YYDPRINTF ((stderr, "Reading a token: "));
1548       yychar = YYLEX;
1549     }
1550
1551   if (yychar <= YYEOF)
1552     {
1553       yychar = yytoken = YYEOF;
1554       YYDPRINTF ((stderr, "Now at end of input.\n"));
1555     }
1556   else
1557     {
1558       yytoken = YYTRANSLATE (yychar);
1559       YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1560     }
1561
1562   /* If the proper action on seeing token YYTOKEN is to reduce or to
1563      detect an error, take that action.  */
1564   yyn += yytoken;
1565   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1566     goto yydefault;
1567   yyn = yytable[yyn];
1568   if (yyn <= 0)
1569     {
1570       if (yyn == 0 || yyn == YYTABLE_NINF)
1571         goto yyerrlab;
1572       yyn = -yyn;
1573       goto yyreduce;
1574     }
1575
1576   if (yyn == YYFINAL)
1577     YYACCEPT;
1578
1579   /* Shift the lookahead token.  */
1580   YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1581
1582   /* Discard the token being shifted unless it is eof.  */
1583   if (yychar != YYEOF)
1584     yychar = YYEMPTY;
1585
1586   *++yyvsp = yylval;
1587
1588
1589   /* Count tokens shifted since error; after three, turn off error
1590      status.  */
1591   if (yyerrstatus)
1592     yyerrstatus--;
1593
1594   yystate = yyn;
1595   goto yynewstate;
1596
1597
1598 /*-----------------------------------------------------------.
1599 | yydefault -- do the default action for the current state.  |
1600 `-----------------------------------------------------------*/
1601 yydefault:
1602   yyn = yydefact[yystate];
1603   if (yyn == 0)
1604     goto yyerrlab;
1605   goto yyreduce;
1606
1607
1608 /*-----------------------------.
1609 | yyreduce -- Do a reduction.  |
1610 `-----------------------------*/
1611 yyreduce:
1612   /* yyn is the number of a rule to reduce with.  */
1613   yylen = yyr2[yyn];
1614
1615   /* If YYLEN is nonzero, implement the default value of the action:
1616      `$$ = $1'.
1617
1618      Otherwise, the following line sets YYVAL to garbage.
1619      This behavior is undocumented and Bison
1620      users should not rely upon it.  Assigning to YYVAL
1621      unconditionally makes the parser a bit smaller, and it avoids a
1622      GCC warning that YYVAL may be used uninitialized.  */
1623   yyval = yyvsp[1-yylen];
1624
1625
1626   YY_REDUCE_PRINT (yyn);
1627   switch (yyn)
1628     {
1629         case 2:
1630 #line 145 "swf4compiler.y"
1631     { *((Buffer *)buffer) = yyvsp[0].action; ;}
1632     break;
1633
1634   case 4:
1635 #line 152 "swf4compiler.y"
1636     { bufferConcat(yyvsp[-1].action, yyvsp[0].action); ;}
1637     break;
1638
1639   case 6:
1640 #line 160 "swf4compiler.y"
1641     { yyval.action = NULL; ;}
1642     break;
1643
1644   case 7:
1645 #line 161 "swf4compiler.y"
1646     { yyval.action = yyvsp[-1].action; ;}
1647     break;
1648
1649   case 8:
1650 #line 162 "swf4compiler.y"
1651     { yyval.action = NULL; ;}
1652     break;
1653
1654   case 15:
1655 #line 172 "swf4compiler.y"
1656     { bufferConcat(yyvsp[-2].action, yyvsp[0].action); ;}
1657     break;
1658
1659   case 16:
1660 #line 176 "swf4compiler.y"
1661     { yyval.action = NULL; ;}
1662     break;
1663
1664   case 18:
1665 #line 179 "swf4compiler.y"
1666     { bufferConcat(yyvsp[-1].action, yyvsp[0].action); ;}
1667     break;
1668
1669   case 19:
1670 #line 186 "swf4compiler.y"
1671     { yyval.action = newBuffer();
1672                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAME);
1673                   bufferWriteS16(yyval.action, 3);
1674                   bufferWriteS16(yyval.action, atoi(yyvsp[-5].str));
1675                   free(yyvsp[-5].str);
1676                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1677                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1678                   bufferWriteS16(yyval.action, 2);
1679                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action)+5);
1680                   bufferConcat(yyval.action, yyvsp[0].action);                    /* ..here */
1681                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1682                   bufferWriteS16(yyval.action, 2);
1683                   bufferWriteS16(yyval.action, bufferLength(yyvsp[-2].action));
1684                   bufferConcat(yyval.action, yyvsp[-2].action); ;}
1685     break;
1686
1687   case 20:
1688 #line 202 "swf4compiler.y"
1689     { yyval.action = newBuffer();
1690                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAME);
1691                   bufferWriteS16(yyval.action, 3);
1692                   bufferWriteS16(yyval.action, atoi(yyvsp[-3].str));
1693                   free(yyvsp[-3].str);
1694                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1695                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1696                   bufferWriteS16(yyval.action, 2);
1697                   bufferWriteS16(yyval.action, 5);
1698                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);    /* ..here */
1699                   bufferWriteS16(yyval.action, 2);
1700                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action));    /* ..and then out */
1701                   bufferConcat(yyval.action, yyvsp[0].action); ;}
1702     break;
1703
1704   case 21:
1705 #line 218 "swf4compiler.y"
1706     { yyval.action = newBuffer();
1707                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAME);
1708                   bufferWriteS16(yyval.action, 3);
1709                   bufferWriteS16(yyval.action, atoi(yyvsp[-3].str));
1710                   free(yyvsp[-3].str);
1711                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1712                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1713                   bufferWriteS16(yyval.action, 2);
1714                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action));
1715                   bufferConcat(yyval.action, yyvsp[0].action); ;}
1716     break;
1717
1718   case 22:
1719 #line 230 "swf4compiler.y"
1720     { yyval.action = yyvsp[-5].action;
1721                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAMEEXPRESSION);
1722                   bufferWriteS16(yyval.action, 1);
1723                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1724                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1725                   bufferWriteS16(yyval.action, 2);
1726                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action)+5);
1727                   bufferConcat(yyval.action, yyvsp[0].action);                    /* ..here */
1728                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1729                   bufferWriteS16(yyval.action, 2);
1730                   bufferWriteS16(yyval.action, bufferLength(yyvsp[-2].action));
1731                   bufferConcat(yyval.action, yyvsp[-2].action); ;}
1732     break;
1733
1734   case 23:
1735 #line 244 "swf4compiler.y"
1736     { yyval.action = yyvsp[-3].action;
1737                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAMEEXPRESSION);
1738                   bufferWriteS16(yyval.action, 1);
1739                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1740                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1741                   bufferWriteS16(yyval.action, 2);
1742                   bufferWriteS16(yyval.action, 5);
1743                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);    /* ..here */
1744                   bufferWriteS16(yyval.action, 2);
1745                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action));    /* ..and then out */
1746                   bufferConcat(yyval.action, yyvsp[0].action); ;}
1747     break;
1748
1749   case 24:
1750 #line 258 "swf4compiler.y"
1751     { yyval.action = yyvsp[-3].action;
1752                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAMEEXPRESSION);
1753                   bufferWriteS16(yyval.action, 1);
1754                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1755                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1756                   bufferWriteS16(yyval.action, 2);
1757                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action));
1758                   bufferConcat(yyval.action, yyvsp[0].action); ;}
1759     break;
1760
1761   case 25:
1762 #line 268 "swf4compiler.y"
1763     { bufferWriteU8(yyvsp[-4].action, SWFACTION_BRANCHIFTRUE);
1764                   bufferWriteS16(yyvsp[-4].action, 2);
1765                   bufferWriteS16(yyvsp[-4].action, bufferLength(yyvsp[0].action)+5);
1766                   bufferConcat(yyvsp[-4].action, yyvsp[0].action);
1767                   bufferWriteU8(yyvsp[-4].action, SWFACTION_BRANCHALWAYS);
1768                   bufferWriteS16(yyvsp[-4].action, 2);
1769                   bufferWriteS16(yyvsp[-4].action, bufferLength(yyvsp[-2].action));
1770                   bufferConcat(yyvsp[-4].action, yyvsp[-2].action);
1771                   yyval.action = yyvsp[-4].action; ;}
1772     break;
1773
1774   case 26:
1775 #line 279 "swf4compiler.y"
1776     { bufferWriteU8(yyvsp[-2].action, SWFACTION_LOGICALNOT);
1777                   bufferWriteU8(yyvsp[-2].action, SWFACTION_BRANCHIFTRUE);
1778                   bufferWriteS16(yyvsp[-2].action, 2);
1779                   bufferWriteS16(yyvsp[-2].action, bufferLength(yyvsp[0].action));
1780                   bufferConcat(yyvsp[-2].action, yyvsp[0].action);
1781                   yyval.action = yyvsp[-2].action; ;}
1782     break;
1783
1784   case 27:
1785 #line 288 "swf4compiler.y"
1786     { yyval.action = NULL; ;}
1787     break;
1788
1789   case 28:
1790 #line 289 "swf4compiler.y"
1791     { yyval.action = yyvsp[0].action; ;}
1792     break;
1793
1794   case 29:
1795 #line 314 "swf4compiler.y"
1796     { yyval.action = newBuffer();
1797                   bufferWriteU8(yyval.action, SWFACTION_WAITFORFRAME);
1798                   bufferWriteS16(yyval.action, 3);
1799                   bufferWriteS16(yyval.action, atoi(yyvsp[-3].str));
1800                   free(yyvsp[-3].str);
1801                   bufferWriteU8(yyval.action, 1);               /* if not loaded, jump to.. */
1802                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1803                   bufferWriteS16(yyval.action, 2);
1804                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action)+5);
1805                   bufferConcat(yyval.action, yyvsp[0].action);                            /* ..here */
1806                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1807                   bufferWriteS16(yyval.action, 2);
1808                   bufferWriteS16(yyval.action, -(bufferLength(yyval.action)+2)); ;}
1809     break;
1810
1811   case 30:
1812 #line 329 "swf4compiler.y"
1813     { yyval.action = yyvsp[-2].action;
1814                   bufferWriteU8(yyval.action, SWFACTION_LOGICALNOT);
1815                   bufferWriteU8(yyval.action, SWFACTION_BRANCHIFTRUE);
1816                   bufferWriteS16(yyval.action, 2);
1817                   bufferWriteS16(yyval.action, bufferLength(yyvsp[0].action)+5);
1818                   bufferConcat(yyval.action, yyvsp[0].action);
1819                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1820                   bufferWriteS16(yyval.action, 2);
1821                   bufferWriteS16(yyval.action, -(bufferLength(yyval.action)+2));
1822                   bufferResolveJumps(yyval.action); ;}
1823     break;
1824
1825   case 31:
1826 #line 341 "swf4compiler.y"
1827     { yyval.action = yyvsp[-4].action;
1828                   bufferConcat(yyval.action, yyvsp[-1].action);
1829                   bufferWriteU8(yyval.action, SWFACTION_BRANCHIFTRUE);
1830                   bufferWriteS16(yyval.action, 2);
1831                   bufferWriteS16(yyval.action, -(bufferLength(yyval.action)+2));
1832                   bufferResolveJumps(yyval.action); ;}
1833     break;
1834
1835   case 32:
1836 #line 349 "swf4compiler.y"
1837     { if (!yyvsp[-4].action)
1838                     yyvsp[-4].action = newBuffer();
1839                   else {
1840                     bufferWriteU8(yyvsp[-4].action, SWFACTION_LOGICALNOT);
1841                     bufferWriteU8(yyvsp[-4].action, SWFACTION_BRANCHIFTRUE);
1842                     bufferWriteS16(yyvsp[-4].action, 2);
1843                     bufferWriteS16(yyvsp[-4].action, bufferLength(yyvsp[0].action)+bufferLength(yyvsp[-2].action)+5);
1844                   }
1845                   bufferConcat(yyvsp[-4].action, yyvsp[0].action);
1846                   bufferConcat(yyvsp[-4].action, yyvsp[-2].action);
1847                   bufferWriteU8(yyvsp[-4].action, SWFACTION_BRANCHALWAYS);
1848                   bufferWriteS16(yyvsp[-4].action, 2);
1849                   bufferWriteS16(yyvsp[-4].action, -(bufferLength(yyvsp[-4].action)+2));
1850                   bufferResolveJumps(yyvsp[-4].action);
1851                   yyval.action = yyvsp[-6].action;
1852                   if(!yyval.action) yyval.action = newBuffer();
1853                   bufferConcat(yyval.action, yyvsp[-4].action);
1854                 ;}
1855     break;
1856
1857   case 33:
1858 #line 370 "swf4compiler.y"
1859     { yyval.action = NULL; ;}
1860     break;
1861
1862   case 35:
1863 #line 376 "swf4compiler.y"
1864     { yyval.action = newBuffer();
1865                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1866                   bufferWriteS16(yyval.action, 2);
1867                   bufferWriteS16(yyval.action, MAGIC_CONTINUE_NUMBER); ;}
1868     break;
1869
1870   case 36:
1871 #line 384 "swf4compiler.y"
1872     { yyval.action = newBuffer();
1873                   bufferWriteU8(yyval.action, SWFACTION_BRANCHALWAYS);
1874                   bufferWriteS16(yyval.action, 2);
1875                   bufferWriteS16(yyval.action, MAGIC_BREAK_NUMBER); ;}
1876     break;
1877
1878   case 37:
1879 #line 392 "swf4compiler.y"
1880     { yyval.action = newBuffer();
1881                   bufferWriteU8(yyval.action, SWFACTION_STOPDRAGMOVIE); ;}
1882     break;
1883
1884   case 38:
1885 #line 396 "swf4compiler.y"
1886     { yyval.action = newBuffer();
1887                   bufferWriteString(yyval.action, yyvsp[-1].str, strlen(yyvsp[-1].str)+1);
1888                   bufferWriteU8(yyval.action, SWFACTION_CALLFRAME);
1889                   bufferWriteS16(yyval.action, 0);
1890                   free(yyvsp[-1].str); ;}
1891     break;
1892
1893   case 39:
1894 #line 403 "swf4compiler.y"
1895     { yyval.action = newBuffer();
1896                   bufferWriteString(yyval.action, yyvsp[-1].str, strlen(yyvsp[-1].str)+1);
1897                   bufferWriteU8(yyval.action, SWFACTION_CALLFRAME);
1898                   bufferWriteS16(yyval.action, 0);
1899                   free(yyvsp[-1].str); ;}
1900     break;
1901
1902   case 40:
1903 #line 410 "swf4compiler.y"
1904     { yyval.action = yyvsp[-1].action;
1905                   bufferWriteU8(yyval.action, SWFACTION_REMOVECLIP); ;}
1906     break;
1907
1908   case 41:
1909 #line 414 "swf4compiler.y"
1910     { yyval.action = yyvsp[-1].action;
1911                   bufferWriteU8(yyval.action, SWFACTION_TRACE); ;}
1912     break;
1913
1914   case 42:
1915 #line 419 "swf4compiler.y"
1916     { yyval.action = yyvsp[-3].action;
1917                   bufferConcat(yyval.action, yyvsp[-1].action);
1918                   bufferWriteU8(yyval.action, SWFACTION_GETURL2);
1919                   bufferWriteS16(yyval.action, 1);
1920                   bufferWriteU8(yyval.action, GETURL_METHOD_NOSEND); ;}
1921     break;
1922
1923   case 43:
1924 #line 426 "swf4compiler.y"
1925     { yyval.action = yyvsp[-5].action;
1926                   bufferConcat(yyval.action, yyvsp[-3].action);
1927                   bufferWriteU8(yyval.action, SWFACTION_GETURL2);
1928                   bufferWriteS16(yyval.action, 1);
1929                   bufferWriteU8(yyval.action, yyvsp[-1].getURLMethod); ;}
1930     break;
1931
1932   case 44:
1933 #line 433 "swf4compiler.y"
1934     { yyval.action = newBuffer();
1935                   bufferWriteU8(yyval.action, SWFACTION_GETURL);
1936                   bufferWriteS16(yyval.action, strlen(yyvsp[-3].str) + strlen(yyvsp[-1].str) + 2);
1937                   bufferWriteHardString(yyval.action, (byte*)yyvsp[-3].str, strlen(yyvsp[-3].str));
1938                   bufferWriteU8(yyval.action, 0);
1939                   bufferWriteHardString(yyval.action, (byte*)yyvsp[-1].str, strlen(yyvsp[-1].str));
1940                   bufferWriteU8(yyval.action, 0); ;}
1941     break;
1942
1943   case 45:
1944 #line 442 "swf4compiler.y"
1945     { yyval.action = yyvsp[-3].action;
1946                   bufferConcat(yyval.action, yyvsp[-1].action);
1947                   bufferWriteU8(yyval.action, SWFACTION_GETURL2);
1948                   bufferWriteS16(yyval.action, 1);
1949                   bufferWriteU8(yyval.action, GETURL_METHOD_NOSEND | GETURL_LOADMOVIE); ;}
1950     break;
1951
1952   case 46:
1953 #line 449 "swf4compiler.y"
1954     { yyval.action = yyvsp[-5].action;
1955                   bufferConcat(yyval.action, yyvsp[-3].action);
1956                   bufferWriteU8(yyval.action, SWFACTION_GETURL2);
1957                   bufferWriteS16(yyval.action, 1);
1958                   bufferWriteU8(yyval.action, yyvsp[-1].getURLMethod | GETURL_LOADMOVIE); ;}
1959     break;
1960
1961   case 47:
1962 #line 456 "swf4compiler.y"
1963     { yyval.action = yyvsp[-3].action;
1964                   bufferConcat(yyval.action, yyvsp[-1].action);
1965                   bufferWriteU8(yyval.action, SWFACTION_GETURL2);
1966                   bufferWriteS16(yyval.action, 1);
1967                   bufferWriteU8(yyval.action, GETURL_METHOD_NOSEND | GETURL_LOADVARIABLES); ;}
1968     break;
1969
1970   case 48:
1971 #line 463 "swf4compiler.y"
1972     { yyval.action = yyvsp[-5].action;
1973                   bufferConcat(yyval.action, yyvsp[-3].action);
1974                   bufferWriteU8(yyval.action, SWFACTION_GETURL2);
1975                   bufferWriteS16(yyval.action, 1);
1976                   bufferWriteU8(yyval.action, yyvsp[-1].getURLMethod | GETURL_LOADVARIABLES); ;}
1977     break;
1978
1979   case 49:
1980 #line 471 "swf4compiler.y"
1981     { yyval.action = newBuffer();
1982                   bufferWriteString(yyval.action, "0", 2); /* no constraint */
1983                   bufferConcat(yyval.action, yyvsp[-1].action);
1984                   bufferConcat(yyval.action, yyvsp[-3].action);
1985                   bufferWriteU8(yyval.action, SWFACTION_STARTDRAGMOVIE); ;}
1986     break;
1987
1988   case 50:
1989 #line 478 "swf4compiler.y"
1990     { yyval.action = newBuffer();
1991                   bufferConcat(yyval.action, yyvsp[-7].action);
1992                   bufferConcat(yyval.action, yyvsp[-3].action);
1993                   bufferConcat(yyval.action, yyvsp[-5].action);
1994                   bufferConcat(yyval.action, yyvsp[-1].action);
1995                   bufferWriteString(yyval.action, "1", 2); /* has constraint */
1996                   bufferConcat(yyval.action, yyvsp[-9].action);
1997                   bufferConcat(yyval.action, yyvsp[-11].action);
1998                   bufferWriteU8(yyval.action, SWFACTION_STARTDRAGMOVIE); ;}
1999     break;
2000
2001   case 51:
2002 #line 490 "swf4compiler.y"
2003     { yyval.action = yyvsp[-5].action;
2004                   bufferConcat(yyval.action, yyvsp[-3].action);
2005                   bufferConcat(yyval.action, yyvsp[-1].action);
2006                   bufferWriteWTHITProperty(yyval.action);
2007                   bufferWriteU8(yyval.action, SWFACTION_ADD); /* see docs for explanation */
2008                   bufferWriteU8(yyval.action, SWFACTION_DUPLICATECLIP); ;}
2009     break;
2010
2011   case 52:
2012 #line 499 "swf4compiler.y"
2013     { yyval.action = newBuffer();
2014                   bufferWriteU8(yyval.action, SWFACTION_NEXTFRAME); ;}
2015     break;
2016
2017   case 53:
2018 #line 503 "swf4compiler.y"
2019     { yyval.action = newBuffer();
2020                   bufferWriteU8(yyval.action, SWFACTION_PREVFRAME); ;}
2021     break;
2022
2023   case 54:
2024 #line 507 "swf4compiler.y"
2025     { yyval.action = newBuffer();
2026                   bufferWriteU8(yyval.action, SWFACTION_PLAY); ;}
2027     break;
2028
2029   case 55:
2030 #line 511 "swf4compiler.y"
2031     { yyval.action = newBuffer();
2032                   bufferWriteU8(yyval.action, SWFACTION_STOP); ;}
2033     break;
2034
2035   case 56:
2036 #line 515 "swf4compiler.y"
2037     { yyval.action = newBuffer();
2038                   bufferWriteU8(yyval.action, SWFACTION_TOGGLEQUALITY); ;}
2039     break;
2040
2041   case 57:
2042 #line 519 "swf4compiler.y"
2043     { yyval.action = newBuffer();
2044                   bufferWriteU8(yyval.action, SWFACTION_STOPSOUNDS); ;}
2045     break;
2046
2047   case 58:
2048 #line 523 "swf4compiler.y"
2049     { yyval.action = newBuffer();
2050                   bufferWriteU8(yyval.action, SWFACTION_GOTOFRAME);
2051                   bufferWriteS16(yyval.action, 2);
2052                   bufferWriteS16(yyval.action, atoi(yyvsp[-1].str));
2053                   free(yyvsp[-1].str); ;}
2054     break;
2055
2056   case 59:
2057 #line 530 "swf4compiler.y"
2058     { yyval.action = newBuffer();
2059                   bufferWriteU8(yyval.action, SWFACTION_GOTOLABEL);
2060                   bufferWriteS16(yyval.action, strlen(yyvsp[-1].str)+1);
2061                   bufferWriteHardString(yyval.action, (byte*)yyvsp[-1].str, strlen(yyvsp[-1].str)+1);
2062                   free(yyvsp[-1].str); ;}
2063     break;
2064
2065   case 60:
2066 #line 537 "swf4compiler.y"
2067     { yyval.action = yyvsp[-1].action;
2068                   bufferWriteU8(yyval.action, SWFACTION_GOTOEXPRESSION);
2069                   bufferWriteS16(yyval.action, 1);
2070                   bufferWriteU8(yyval.action, 0); ;}
2071     break;
2072
2073   case 61:
2074 #line 543 "swf4compiler.y"
2075     { yyval.action = yyvsp[-1].action;
2076                   bufferWriteU8(yyval.action, SWFACTION_GOTOEXPRESSION);
2077                   bufferWriteS16(yyval.action, 1);
2078                   bufferWriteU8(yyval.action, 1); ;}
2079     break;
2080
2081   case 62:
2082 #line 549 "swf4compiler.y"
2083     { yyval.action = newBuffer();
2084                   bufferWriteU8(yyval.action, SWFACTION_SETTARGET);
2085                   bufferWriteS16(yyval.action, strlen(yyvsp[-1].str)+1);
2086                   bufferWriteHardString(yyval.action, (byte*)yyvsp[-1].str, strlen(yyvsp[-1].str)+1);
2087                   free(yyvsp[-1].str); ;}
2088     break;
2089
2090   case 63:
2091 #line 556 "swf4compiler.y"
2092     { yyval.action = yyvsp[-1].action;
2093                   bufferWriteU8(yyval.action, SWFACTION_SETTARGETEXPRESSION); ;}
2094     break;
2095
2096   case 64:
2097 #line 560 "swf4compiler.y"
2098     { yyval.action = newBuffer();
2099                         /* SetTarget(STRING) */
2100                   bufferWriteU8(yyval.action, SWFACTION_SETTARGET);
2101                   bufferWriteS16(yyval.action, strlen(yyvsp[-2].str)+1);
2102                   bufferWriteHardString(yyval.action, (byte*)yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2103                         /* stmt */
2104                   bufferConcat(yyval.action, yyvsp[0].action);
2105                         /* SetTarget('') */
2106                   bufferWriteU8(yyval.action, SWFACTION_SETTARGET);
2107                   bufferWriteS16(yyval.action, 1);
2108                   bufferWriteU8(yyval.action, 0);
2109                   free(yyvsp[-2].str); ;}
2110     break;
2111
2112   case 65:
2113 #line 574 "swf4compiler.y"
2114     { yyval.action = yyvsp[-2].action;
2115                         /* SetTarget(expr) */
2116                   bufferWriteU8(yyval.action, SWFACTION_SETTARGETEXPRESSION); 
2117                         /* stmt */
2118                   bufferConcat(yyval.action, yyvsp[0].action);
2119                         /* SetTarget('') */
2120                   bufferWriteU8(yyval.action, SWFACTION_SETTARGET);
2121                   bufferWriteS16(yyval.action, 1);
2122                   bufferWriteU8(yyval.action, 0); ;}
2123     break;
2124
2125   case 66:
2126 #line 587 "swf4compiler.y"
2127     { yyval.action = yyvsp[-1].action;
2128                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE); ;}
2129     break;
2130
2131   case 67:
2132 #line 591 "swf4compiler.y"
2133     { yyval.action = newBuffer();
2134                   bufferWriteU8(yyval.action, SWFACTION_GETTIMER); ;}
2135     break;
2136
2137   case 68:
2138 #line 595 "swf4compiler.y"
2139     { yyval.action = yyvsp[-1].action;
2140                   bufferWriteU8(yyval.action, SWFACTION_RANDOM); ;}
2141     break;
2142
2143   case 69:
2144 #line 599 "swf4compiler.y"
2145     { yyval.action = yyvsp[-1].action;
2146                   bufferWriteU8(yyval.action, SWFACTION_STRINGLENGTH); ;}
2147     break;
2148
2149   case 70:
2150 #line 603 "swf4compiler.y"
2151     { yyval.action = yyvsp[-1].action;
2152                   bufferWriteU8(yyval.action, SWFACTION_INT); ;}
2153     break;
2154
2155   case 71:
2156 #line 607 "swf4compiler.y"
2157     { yyval.action = yyvsp[-1].action;
2158                   bufferWriteU8(yyval.action, SWFACTION_ORD); ;}
2159     break;
2160
2161   case 72:
2162 #line 611 "swf4compiler.y"
2163     { yyval.action = yyvsp[-1].action;
2164                   bufferWriteU8(yyval.action, SWFACTION_CHR); ;}
2165     break;
2166
2167   case 73:
2168 #line 615 "swf4compiler.y"
2169     { yyval.action = yyvsp[-3].action;
2170                   bufferConcat(yyval.action, yyvsp[-1].action);
2171                   bufferWriteU8(yyval.action, SWFACTION_STRINGCONCAT); ;}
2172     break;
2173
2174   case 74:
2175 #line 620 "swf4compiler.y"
2176     { yyval.action = yyvsp[-5].action;
2177                   bufferConcat(yyval.action, yyvsp[-3].action);
2178                   bufferConcat(yyval.action, yyvsp[-1].action);
2179                   bufferWriteU8(yyval.action, SWFACTION_SUBSTRING); ;}
2180     break;
2181
2182   case 75:
2183 #line 626 "swf4compiler.y"
2184     { yyval.action = newBuffer();
2185                   bufferConcat(yyval.action, yyvsp[-3].action);
2186                   bufferWriteGetProperty(yyval.action, yyvsp[-1].str);
2187                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2188                   free(yyvsp[-1].str); ;}
2189     break;
2190
2191   case 76:
2192 #line 635 "swf4compiler.y"
2193     { yyval.action = newBuffer();
2194                   bufferWriteBuffer(yyval.action, yyvsp[-1].action);
2195                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2196                   bufferWriteBuffer(yyval.action, yyvsp[-1].action);
2197                   bufferConcat(yyval.action, yyvsp[-1].action);
2198                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2199                   bufferWriteString(yyval.action, "1", 2);
2200                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2201                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE); ;}
2202     break;
2203
2204   case 77:
2205 #line 646 "swf4compiler.y"
2206     { yyval.action = newBuffer();
2207                   bufferWriteBuffer(yyval.action, yyvsp[-1].action);
2208                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2209                   bufferWriteBuffer(yyval.action, yyvsp[-1].action);
2210                   bufferConcat(yyval.action, yyvsp[-1].action);
2211                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2212                   bufferWriteString(yyval.action, "1", 2);
2213                   bufferWriteU8(yyval.action, SWFACTION_SUBTRACT);
2214                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE); ;}
2215     break;
2216
2217   case 79:
2218 #line 662 "swf4compiler.y"
2219     { yyval.action = yyvsp[-1].action; ;}
2220     break;
2221
2222   case 80:
2223 #line 665 "swf4compiler.y"
2224     { yyval.action = newBuffer();
2225                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2226                   free(yyvsp[0].str); ;}
2227     break;
2228
2229   case 81:
2230 #line 670 "swf4compiler.y"
2231     { yyval.action = newBuffer();
2232                   bufferWriteString(yyval.action, "-", 2);
2233                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2234                   free(yyvsp[0].str); ;}
2235     break;
2236
2237   case 82:
2238 #line 676 "swf4compiler.y"
2239     { yyval.action = newBuffer();
2240                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2241                   free(yyvsp[0].str); ;}
2242     break;
2243
2244   case 83:
2245 #line 681 "swf4compiler.y"
2246     { yyval.action = newBuffer();
2247                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2248                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2249                   free(yyvsp[0].str); ;}
2250     break;
2251
2252   case 84:
2253 #line 687 "swf4compiler.y"
2254     { yyval.action = newBuffer();
2255                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2256                   free(yyvsp[0].str); ;}
2257     break;
2258
2259   case 85:
2260 #line 692 "swf4compiler.y"
2261     { yyval.action = newBuffer();
2262                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2263                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2264                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2265                   free(yyvsp[0].str);
2266                   free(yyvsp[-2].str); ;}
2267     break;
2268
2269   case 86:
2270 #line 700 "swf4compiler.y"
2271     { yyval.action = newBuffer();
2272                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2273                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2274                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2275                   bufferWriteSetProperty(yyval.action, yyvsp[0].str);
2276                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2277                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2278                   bufferWriteString(yyval.action, "1", 2);
2279                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2280                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2281                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2282                   free(yyvsp[-2].str);
2283                   free(yyvsp[0].str); ;}
2284     break;
2285
2286   case 87:
2287 #line 715 "swf4compiler.y"
2288     { yyval.action = yyvsp[0].action;
2289                   bufferWriteU8(yyval.action, SWFACTION_DUP);
2290                   bufferWriteU8(yyval.action, SWFACTION_DUP);
2291                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2292                   bufferWriteString(yyval.action, "1", 2);
2293                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2294                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE);
2295                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE); ;}
2296     break;
2297
2298   case 88:
2299 #line 725 "swf4compiler.y"
2300     { yyval.action = newBuffer();
2301                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2302                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2303                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2304                   bufferWriteSetProperty(yyval.action, yyvsp[0].str);
2305                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2306                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2307                   bufferWriteString(yyval.action, "1", 2);
2308                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2309                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2310                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2311                   free(yyvsp[-2].str);
2312                   free(yyvsp[0].str); ;}
2313     break;
2314
2315   case 89:
2316 #line 740 "swf4compiler.y"
2317     { yyval.action = yyvsp[0].action;
2318                   bufferWriteU8(yyval.action, SWFACTION_DUP);
2319                   bufferWriteU8(yyval.action, SWFACTION_DUP);
2320                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2321                   bufferWriteString(yyval.action, "1", 2);
2322                   bufferWriteU8(yyval.action, SWFACTION_SUBTRACT);
2323                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE);
2324                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE); ;}
2325     break;
2326
2327   case 90:
2328 #line 750 "swf4compiler.y"
2329     { yyval.action = yyvsp[0].action;
2330                   bufferWriteString(yyvsp[0].action, "-1", 3);
2331                   bufferWriteU8(yyvsp[0].action, SWFACTION_MULTIPLY); ;}
2332     break;
2333
2334   case 91:
2335 #line 755 "swf4compiler.y"
2336     { yyval.action = yyvsp[0].action;
2337                   bufferWriteU8(yyvsp[0].action, SWFACTION_LOGICALNOT); ;}
2338     break;
2339
2340   case 92:
2341 #line 759 "swf4compiler.y"
2342     { yyval.action = yyvsp[-2].action;
2343                   bufferConcat(yyval.action, yyvsp[0].action);
2344                   bufferWriteU8(yyval.action, SWFACTION_DUP);
2345                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE); ;}
2346     break;
2347
2348   case 93:
2349 #line 765 "swf4compiler.y"
2350     { yyval.action = yyvsp[-2].action;
2351                   bufferConcat(yyval.action, yyvsp[0].action);
2352                   bufferWriteU8(yyval.action, SWFACTION_MULTIPLY); ;}
2353     break;
2354
2355   case 94:
2356 #line 770 "swf4compiler.y"
2357     { yyval.action = yyvsp[-2].action;
2358                   bufferConcat(yyval.action, yyvsp[0].action);
2359                   bufferWriteU8(yyval.action, SWFACTION_DIVIDE); ;}
2360     break;
2361
2362   case 95:
2363 #line 775 "swf4compiler.y"
2364     { yyval.action = yyvsp[-2].action;
2365                   bufferConcat(yyval.action, yyvsp[0].action);
2366                   bufferWriteU8(yyval.action, SWFACTION_ADD); ;}
2367     break;
2368
2369   case 96:
2370 #line 780 "swf4compiler.y"
2371     { yyval.action = yyvsp[-2].action;
2372                   bufferConcat(yyval.action, yyvsp[0].action);
2373                   bufferWriteU8(yyval.action, SWFACTION_SUBTRACT); ;}
2374     break;
2375
2376   case 97:
2377 #line 785 "swf4compiler.y"
2378     { yyval.action = yyvsp[-2].action;
2379                   bufferConcat(yyval.action, yyvsp[0].action);
2380                   bufferWriteU8(yyval.action, SWFACTION_STRINGCONCAT); ;}
2381     break;
2382
2383   case 98:
2384 #line 790 "swf4compiler.y"
2385     { yyval.action = yyvsp[-2].action;
2386                   bufferConcat(yyval.action, yyvsp[0].action);
2387                   bufferWriteU8(yyval.action, SWFACTION_LESSTHAN); ;}
2388     break;
2389
2390   case 99:
2391 #line 795 "swf4compiler.y"
2392     { yyval.action = yyvsp[0].action;
2393                   bufferConcat(yyval.action, yyvsp[-2].action);
2394                   bufferWriteU8(yyval.action, SWFACTION_LESSTHAN); ;}
2395     break;
2396
2397   case 100:
2398 #line 800 "swf4compiler.y"
2399     { yyval.action = yyvsp[0].action;
2400                   bufferConcat(yyval.action, yyvsp[-2].action);
2401                   bufferWriteU8(yyval.action, SWFACTION_LESSTHAN);
2402                   bufferWriteU8(yyval.action, SWFACTION_LOGICALNOT); ;}
2403     break;
2404
2405   case 101:
2406 #line 806 "swf4compiler.y"
2407     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2408                   bufferWriteU8(yyvsp[-2].action, SWFACTION_LESSTHAN);
2409                   bufferWriteU8(yyvsp[-2].action, SWFACTION_LOGICALNOT); ;}
2410     break;
2411
2412   case 102:
2413 #line 811 "swf4compiler.y"
2414     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2415                   bufferWriteU8(yyvsp[-2].action, SWFACTION_STRINGEQ);
2416                   bufferWriteU8(yyvsp[-2].action, SWFACTION_LOGICALNOT); ;}
2417     break;
2418
2419   case 103:
2420 #line 816 "swf4compiler.y"
2421     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2422                   bufferWriteU8(yyvsp[-2].action, SWFACTION_STRINGEQ); ;}
2423     break;
2424
2425   case 104:
2426 #line 820 "swf4compiler.y"
2427     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2428                   bufferWriteU8(yyvsp[-2].action, SWFACTION_STRINGCOMPARE); ;}
2429     break;
2430
2431   case 105:
2432 #line 824 "swf4compiler.y"
2433     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2434                   bufferWriteU8(yyvsp[-2].action, SWFACTION_EQUAL); ;}
2435     break;
2436
2437   case 106:
2438 #line 828 "swf4compiler.y"
2439     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2440                   bufferWriteU8(yyvsp[-2].action, SWFACTION_EQUAL);
2441                   bufferWriteU8(yyvsp[-2].action, SWFACTION_LOGICALNOT); ;}
2442     break;
2443
2444   case 107:
2445 #line 833 "swf4compiler.y"
2446     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2447                   bufferWriteU8(yyvsp[-2].action, SWFACTION_LOGICALAND); ;}
2448     break;
2449
2450   case 108:
2451 #line 837 "swf4compiler.y"
2452     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2453                   bufferWriteU8(yyvsp[-2].action, SWFACTION_LOGICALOR); ;}
2454     break;
2455
2456   case 109:
2457 #line 841 "swf4compiler.y"
2458     { bufferWriteU8(yyvsp[-4].action, SWFACTION_BRANCHIFTRUE);
2459                   bufferWriteS16(yyvsp[-4].action, 2);
2460                   bufferWriteS16(yyvsp[-4].action, bufferLength(yyvsp[0].action)+5);
2461                   bufferConcat(yyvsp[-4].action, yyvsp[0].action);
2462                   bufferWriteU8(yyvsp[-4].action, SWFACTION_BRANCHALWAYS);
2463                   bufferWriteS16(yyvsp[-4].action, 2);
2464                   bufferWriteS16(yyvsp[-4].action, bufferLength(yyvsp[-2].action));
2465                   bufferConcat(yyvsp[-4].action, yyvsp[-2].action); ;}
2466     break;
2467
2468   case 111:
2469 #line 855 "swf4compiler.y"
2470     { yyval.str = yyvsp[-2].str;
2471                   yyval.str = stringConcat(yyval.str, strdup(":"));
2472                   yyval.str = stringConcat(yyval.str, yyvsp[0].str); ;}
2473     break;
2474
2475   case 112:
2476 #line 862 "swf4compiler.y"
2477     { yyval.str = strdup(""); ;}
2478     break;
2479
2480   case 113:
2481 #line 865 "swf4compiler.y"
2482     { yyval.str = strdup(""); ;}
2483     break;
2484
2485   case 114:
2486 #line 868 "swf4compiler.y"
2487     { yyval.str = strdup("/"); ;}
2488     break;
2489
2490   case 115:
2491 #line 871 "swf4compiler.y"
2492     { yyval.str = strdup(".."); ;}
2493     break;
2494
2495   case 116:
2496 #line 874 "swf4compiler.y"
2497     { yyval.str = yyvsp[0].str; ;}
2498     break;
2499
2500   case 117:
2501 #line 877 "swf4compiler.y"
2502     { yyval.str = yyvsp[0].str; ;}
2503     break;
2504
2505   case 118:
2506 #line 882 "swf4compiler.y"
2507     { yyval.action = newBuffer();
2508                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2509                   free(yyvsp[0].str); ;}
2510     break;
2511
2512   case 119:
2513 #line 887 "swf4compiler.y"
2514     { yyval.action = newBuffer();
2515                   bufferWriteString(yyval.action, yyvsp[0].str, strlen(yyvsp[0].str)+1);
2516                   free(yyvsp[0].str); ;}
2517     break;
2518
2519   case 120:
2520 #line 891 "swf4compiler.y"
2521     { yyval.action = yyvsp[-1].action; ;}
2522     break;
2523
2524   case 123:
2525 #line 900 "swf4compiler.y"
2526     { yyval.action = yyvsp[0].action;
2527                   bufferWriteBuffer(yyval.action, yyvsp[0].action);
2528                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2529                   bufferWriteString(yyval.action, "1", 2);
2530                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2531                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE); ;}
2532     break;
2533
2534   case 124:
2535 #line 908 "swf4compiler.y"
2536     { yyval.action = yyvsp[0].action;
2537                   bufferWriteBuffer(yyval.action, yyvsp[0].action);
2538                   bufferWriteU8(yyval.action, SWFACTION_GETVARIABLE);
2539                   bufferWriteString(yyval.action, "1", 2);
2540                   bufferWriteU8(yyval.action, SWFACTION_SUBTRACT);
2541                   bufferWriteU8(yyval.action, SWFACTION_SETVARIABLE); ;}
2542     break;
2543
2544   case 125:
2545 #line 916 "swf4compiler.y"
2546     { yyval.action = newBuffer();
2547                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2548                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2549                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2550                   bufferWriteString(yyval.action, "1", 2);
2551                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2552                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2553                   bufferWriteSetProperty(yyval.action, yyvsp[0].str);
2554                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2555                   free(yyvsp[-2].str);
2556                   free(yyvsp[0].str); ;}
2557     break;
2558
2559   case 126:
2560 #line 929 "swf4compiler.y"
2561     { yyval.action = newBuffer();
2562                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2563                   bufferWriteGetProperty(yyval.action, yyvsp[0].str);
2564                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2565                   bufferWriteString(yyval.action, "1", 2);
2566                   bufferWriteU8(yyval.action, SWFACTION_SUBTRACT);
2567                   bufferWriteString(yyval.action, yyvsp[-2].str, strlen(yyvsp[-2].str)+1);
2568                   bufferWriteSetProperty(yyval.action, yyvsp[0].str);
2569                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2570                   free(yyvsp[-2].str);
2571                   free(yyvsp[0].str); ;}
2572     break;
2573
2574   case 127:
2575 #line 942 "swf4compiler.y"
2576     { bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2577                   bufferWriteU8(yyvsp[-2].action, SWFACTION_SETVARIABLE); ;}
2578     break;
2579
2580   case 128:
2581 #line 946 "swf4compiler.y"
2582     { bufferWriteBuffer(yyvsp[-2].action, yyvsp[-2].action);
2583                   bufferWriteU8(yyvsp[-2].action, SWFACTION_GETVARIABLE);
2584                   bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2585                   bufferWriteU8(yyvsp[-2].action, SWFACTION_MULTIPLY);
2586                   bufferWriteU8(yyvsp[-2].action, SWFACTION_SETVARIABLE); ;}
2587     break;
2588
2589   case 129:
2590 #line 953 "swf4compiler.y"
2591     { bufferWriteBuffer(yyvsp[-2].action, yyvsp[-2].action);
2592                   bufferWriteU8(yyvsp[-2].action, SWFACTION_GETVARIABLE);
2593                   bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2594                   bufferWriteU8(yyvsp[-2].action, SWFACTION_DIVIDE);
2595                   bufferWriteU8(yyvsp[-2].action, SWFACTION_SETVARIABLE); ;}
2596     break;
2597
2598   case 130:
2599 #line 960 "swf4compiler.y"
2600     { bufferWriteBuffer(yyvsp[-2].action, yyvsp[-2].action);
2601                   bufferWriteU8(yyvsp[-2].action, SWFACTION_GETVARIABLE);
2602                   bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2603                   bufferWriteU8(yyvsp[-2].action, SWFACTION_ADD);
2604                   bufferWriteU8(yyvsp[-2].action, SWFACTION_SETVARIABLE); ;}
2605     break;
2606
2607   case 131:
2608 #line 967 "swf4compiler.y"
2609     { bufferWriteBuffer(yyvsp[-2].action, yyvsp[-2].action);
2610                   bufferWriteU8(yyvsp[-2].action, SWFACTION_GETVARIABLE);
2611                   bufferConcat(yyvsp[-2].action, yyvsp[0].action);
2612                   bufferWriteU8(yyvsp[-2].action, SWFACTION_SUBTRACT);
2613                   bufferWriteU8(yyvsp[-2].action, SWFACTION_SETVARIABLE); ;}
2614     break;
2615
2616   case 132:
2617 #line 974 "swf4compiler.y"
2618     { yyval.action = newBuffer();
2619                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2620                   bufferWriteSetProperty(yyval.action, yyvsp[-2].str);
2621                   bufferConcat(yyval.action,yyvsp[0].action);
2622                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2623                   free(yyvsp[-4].str);
2624                   free(yyvsp[-2].str); ;}
2625     break;
2626
2627   case 133:
2628 #line 983 "swf4compiler.y"
2629     { yyval.action = newBuffer();
2630                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2631                   bufferWriteSetProperty(yyval.action, yyvsp[-2].str);
2632                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2633                   bufferWriteGetProperty(yyval.action, yyvsp[-2].str);
2634                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2635                   bufferConcat(yyval.action, yyvsp[0].action);
2636                   bufferWriteU8(yyval.action, SWFACTION_MULTIPLY);
2637                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2638                   free(yyvsp[-4].str);
2639                   free(yyvsp[-2].str); ;}
2640     break;
2641
2642   case 134:
2643 #line 996 "swf4compiler.y"
2644     { yyval.action = newBuffer();
2645                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2646                   bufferWriteSetProperty(yyval.action, yyvsp[-2].str);
2647                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2648                   bufferWriteGetProperty(yyval.action, yyvsp[-2].str);
2649                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2650                   bufferConcat(yyval.action, yyvsp[0].action);
2651                   bufferWriteU8(yyval.action, SWFACTION_DIVIDE);
2652                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2653                   free(yyvsp[-4].str);
2654                   free(yyvsp[-2].str); ;}
2655     break;
2656
2657   case 135:
2658 #line 1009 "swf4compiler.y"
2659     { yyval.action = newBuffer();
2660                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2661                   bufferWriteSetProperty(yyval.action, yyvsp[-2].str);
2662                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2663                   bufferWriteGetProperty(yyval.action, yyvsp[-2].str);
2664                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2665                   bufferConcat(yyval.action, yyvsp[0].action);
2666                   bufferWriteU8(yyval.action, SWFACTION_ADD);
2667                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2668                   free(yyvsp[-4].str);
2669                   free(yyvsp[-2].str); ;}
2670     break;
2671
2672   case 136:
2673 #line 1022 "swf4compiler.y"
2674     { yyval.action = newBuffer();
2675                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2676                   bufferWriteSetProperty(yyval.action, yyvsp[-2].str);
2677                   bufferWriteString(yyval.action, yyvsp[-4].str, strlen(yyvsp[-4].str)+1);
2678                   bufferWriteGetProperty(yyval.action, yyvsp[-2].str);
2679                   bufferWriteU8(yyval.action, SWFACTION_GETPROPERTY);
2680                   bufferConcat(yyval.action, yyvsp[0].action);
2681                   bufferWriteU8(yyval.action, SWFACTION_SUBTRACT);
2682                   bufferWriteU8(yyval.action, SWFACTION_SETPROPERTY);
2683                   free(yyvsp[-4].str);
2684                   free(yyvsp[-2].str); ;}
2685     break;
2686
2687
2688     }
2689
2690 /* Line 999 of yacc.c.  */
2691 #line 2691 "swf4compiler.tab.c"
2692 \f
2693   yyvsp -= yylen;
2694   yyssp -= yylen;
2695
2696
2697   YY_STACK_PRINT (yyss, yyssp);
2698
2699   *++yyvsp = yyval;
2700
2701
2702   /* Now `shift' the result of the reduction.  Determine what state
2703      that goes to, based on the state we popped back to and the rule
2704      number reduced by.  */
2705
2706   yyn = yyr1[yyn];
2707
2708   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2709   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2710     yystate = yytable[yystate];
2711   else
2712     yystate = yydefgoto[yyn - YYNTOKENS];
2713
2714   goto yynewstate;
2715
2716
2717 /*------------------------------------.
2718 | yyerrlab -- here on detecting error |
2719 `------------------------------------*/
2720 yyerrlab:
2721   /* If not already recovering from an error, report this error.  */
2722   if (!yyerrstatus)
2723     {
2724       ++yynerrs;
2725 #if YYERROR_VERBOSE
2726       yyn = yypact[yystate];
2727
2728       if (YYPACT_NINF < yyn && yyn < YYLAST)
2729         {
2730           YYSIZE_T yysize = 0;
2731           int yytype = YYTRANSLATE (yychar);
2732           char *yymsg;
2733           int yyx, yycount;
2734
2735           yycount = 0;
2736           /* Start YYX at -YYN if negative to avoid negative indexes in
2737              YYCHECK.  */
2738           for (yyx = yyn < 0 ? -yyn : 0;
2739                yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
2740             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2741               yysize += yystrlen (yytname[yyx]) + 15, yycount++;
2742           yysize += yystrlen ("syntax error, unexpected ") + 1;
2743           yysize += yystrlen (yytname[yytype]);
2744           yymsg = (char *) YYSTACK_ALLOC (yysize);
2745           if (yymsg != 0)
2746             {
2747               char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2748               yyp = yystpcpy (yyp, yytname[yytype]);
2749
2750               if (yycount < 5)
2751                 {
2752                   yycount = 0;
2753                   for (yyx = yyn < 0 ? -yyn : 0;
2754                        yyx < (int) (sizeof (yytname) / sizeof (char *));
2755                        yyx++)
2756                     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2757                       {
2758                         const char *yyq = ! yycount ? ", expecting " : " or ";
2759                         yyp = yystpcpy (yyp, yyq);
2760                         yyp = yystpcpy (yyp, yytname[yyx]);
2761                         yycount++;
2762                       }
2763                 }
2764               yyerror (yymsg);
2765               YYSTACK_FREE (yymsg);
2766             }
2767           else
2768             yyerror ("syntax error; also virtual memory exhausted");
2769         }
2770       else
2771 #endif /* YYERROR_VERBOSE */
2772         yyerror ("syntax error");
2773     }
2774
2775
2776
2777   if (yyerrstatus == 3)
2778     {
2779       /* If just tried and failed to reuse lookahead token after an
2780          error, discard it.  */
2781
2782       /* Return failure if at end of input.  */
2783       if (yychar == YYEOF)
2784         {
2785           /* Pop the error token.  */
2786           YYPOPSTACK;
2787           /* Pop the rest of the stack.  */
2788           while (yyss < yyssp)
2789             {
2790               YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2791               yydestruct (yystos[*yyssp], yyvsp);
2792               YYPOPSTACK;
2793             }
2794           YYABORT;
2795         }
2796
2797       YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
2798       yydestruct (yytoken, &yylval);
2799       yychar = YYEMPTY;
2800
2801     }
2802
2803   /* Else will try to reuse lookahead token after shifting the error
2804      token.  */
2805   goto yyerrlab1;
2806
2807
2808 /*----------------------------------------------------.
2809 | yyerrlab1 -- error raised explicitly by an action.  |
2810 `----------------------------------------------------*/
2811 yyerrlab1:
2812   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2813
2814   for (;;)
2815     {
2816       yyn = yypact[yystate];
2817       if (yyn != YYPACT_NINF)
2818         {
2819           yyn += YYTERROR;
2820           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2821             {
2822               yyn = yytable[yyn];
2823               if (0 < yyn)
2824                 break;
2825             }
2826         }
2827
2828       /* Pop the current state because it cannot handle the error token.  */
2829       if (yyssp == yyss)
2830         YYABORT;
2831
2832       YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2833       yydestruct (yystos[yystate], yyvsp);
2834       yyvsp--;
2835       yystate = *--yyssp;
2836
2837       YY_STACK_PRINT (yyss, yyssp);
2838     }
2839
2840   if (yyn == YYFINAL)
2841     YYACCEPT;
2842
2843   YYDPRINTF ((stderr, "Shifting error token, "));
2844
2845   *++yyvsp = yylval;
2846
2847
2848   yystate = yyn;
2849   goto yynewstate;
2850
2851
2852 /*-------------------------------------.
2853 | yyacceptlab -- YYACCEPT comes here.  |
2854 `-------------------------------------*/
2855 yyacceptlab:
2856   yyresult = 0;
2857   goto yyreturn;
2858
2859 /*-----------------------------------.
2860 | yyabortlab -- YYABORT comes here.  |
2861 `-----------------------------------*/
2862 yyabortlab:
2863   yyresult = 1;
2864   goto yyreturn;
2865
2866 #ifndef yyoverflow
2867 /*----------------------------------------------.
2868 | yyoverflowlab -- parser overflow comes here.  |
2869 `----------------------------------------------*/
2870 yyoverflowlab:
2871   yyerror ("parser stack overflow");
2872   yyresult = 2;
2873   /* Fall through.  */
2874 #endif
2875
2876 yyreturn:
2877 #ifndef yyoverflow
2878   if (yyss != yyssa)
2879     YYSTACK_FREE (yyss);
2880 #endif
2881   return yyresult;
2882 }
2883
2884
2885 #line 1039 "swf4compiler.y"
2886
2887