00001 
00002 
00003 
00004 #define YYBISON 1  
00005 
00006 #define yyparse kjsyyparse
00007 #define yylex kjsyylex
00008 #define yyerror kjsyyerror
00009 #define yylval kjsyylval
00010 #define yychar kjsyychar
00011 #define yydebug kjsyydebug
00012 #define yynerrs kjsyynerrs
00013 #define YYLSP_NEEDED 1
00014 
00015 # define    NULLTOKEN   257
00016 # define    TRUETOKEN   258
00017 # define    FALSETOKEN  259
00018 # define    STRING  260
00019 # define    NUMBER  261
00020 # define    BREAK   262
00021 # define    CASE    263
00022 # define    DEFAULT 264
00023 # define    FOR 265
00024 # define    NEW 266
00025 # define    VAR 267
00026 # define    CONTINUE    268
00027 # define    FUNCTION    269
00028 # define    RETURN  270
00029 # define    VOID    271
00030 # define    DELETE  272
00031 # define    IF  273
00032 # define    THIS    274
00033 # define    DO  275
00034 # define    WHILE   276
00035 # define    ELSE    277
00036 # define    IN  278
00037 # define    INSTANCEOF  279
00038 # define    TYPEOF  280
00039 # define    SWITCH  281
00040 # define    WITH    282
00041 # define    RESERVED    283
00042 # define    THROW   284
00043 # define    TRY 285
00044 # define    CATCH   286
00045 # define    FINALLY 287
00046 # define    EQEQ    288
00047 # define    NE  289
00048 # define    STREQ   290
00049 # define    STRNEQ  291
00050 # define    LE  292
00051 # define    GE  293
00052 # define    OR  294
00053 # define    AND 295
00054 # define    PLUSPLUS    296
00055 # define    MINUSMINUS  297
00056 # define    LSHIFT  298
00057 # define    RSHIFT  299
00058 # define    URSHIFT 300
00059 # define    PLUSEQUAL   301
00060 # define    MINUSEQUAL  302
00061 # define    MULTEQUAL   303
00062 # define    DIVEQUAL    304
00063 # define    LSHIFTEQUAL 305
00064 # define    RSHIFTEQUAL 306
00065 # define    URSHIFTEQUAL    307
00066 # define    ANDEQUAL    308
00067 # define    MODEQUAL    309
00068 # define    XOREQUAL    310
00069 # define    OREQUAL 311
00070 # define    IDENT   312
00071 # define    AUTOPLUSPLUS    313
00072 # define    AUTOMINUSMINUS  314
00073 
00074 #line 1 "grammar.y"
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 #ifdef HAVE_CONFIG_H
00098 #include <config.h>
00099 #endif
00100 #include <string.h>
00101 #include <stdlib.h>
00102 #include "value.h"
00103 #include "object.h"
00104 #include "types.h"
00105 #include "interpreter.h"
00106 #include "nodes.h"
00107 #include "lexer.h"
00108 #include "internal.h"
00109 
00110 
00111 #define YYDEBUG 0
00112 #define YYMAXDEPTH 0
00113 #define YYERROR_VERBOSE
00114 #define DBG(l, s, e) { l->setLoc(s.first_line, e.last_line, Parser::source); } // location
00115 
00116 extern int yylex();
00117 static int yyerror (const char *);
00118 static bool automatic();
00119 
00120 using namespace KJS;
00121 
00122 
00123 #line 50 "grammar.y"
00124 #ifndef YYSTYPE
00125 typedef union {
00126   int                 ival;
00127   double              dval;
00128   UString             *ustr;
00129   Identifier          *ident;
00130   Node                *node;
00131   StatementNode       *stat;
00132   ParameterNode       *param;
00133   FunctionBodyNode    *body;
00134   FuncDeclNode        *func;
00135   FunctionBodyNode    *prog;
00136   AssignExprNode      *init;
00137   SourceElementsNode  *srcs;
00138   StatListNode        *slist;
00139   ArgumentsNode       *args;
00140   ArgumentListNode    *alist;
00141   VarDeclNode         *decl;
00142   VarDeclListNode     *vlist;
00143   CaseBlockNode       *cblk;
00144   ClauseListNode      *clist;
00145   CaseClauseNode      *ccl;
00146   ElementNode         *elm;
00147   Operator            op;
00148   PropertyValueNode   *plist;
00149   PropertyNode        *pnode;
00150   CatchNode           *cnode;
00151   FinallyNode         *fnode;
00152 } yystype;
00153 # define YYSTYPE yystype
00154 # define YYSTYPE_IS_TRIVIAL 1
00155 #endif
00156 
00157 #ifndef YYLTYPE
00158 typedef struct yyltype
00159 {
00160   int first_line;
00161   int first_column;
00162 
00163   int last_line;
00164   int last_column;
00165 } yyltype;
00166 
00167 # define YYLTYPE yyltype
00168 # define YYLTYPE_IS_TRIVIAL 1
00169 #endif
00170 
00171 #ifndef YYDEBUG
00172 # define YYDEBUG 0
00173 #endif
00174 
00175 
00176 
00177 #define YYFINAL     362
00178 #define YYFLAG      -32768
00179 #define YYNTBASE    85
00180 
00181 
00182 #define YYTRANSLATE(x) ((unsigned)(x) <= 314 ? yytranslate[x] : 150)
00183 
00184 
00185 static const char yytranslate[] =
00186 {
00187        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00188        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00189        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00190        2,     2,     2,    74,     2,     2,     2,    76,    79,     2,
00191       62,    63,    75,    71,    68,    72,    70,    61,     2,     2,
00192        2,     2,     2,     2,     2,     2,     2,     2,    69,    84,
00193       77,    83,    78,    82,     2,     2,     2,     2,     2,     2,
00194        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00195        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00196        2,    66,     2,    67,    80,     2,     2,     2,     2,     2,
00197        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00198        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00199        2,     2,     2,    64,    81,    65,    73,     2,     2,     2,
00200        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00201        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00202        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00203        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00204        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00205        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00206        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00207        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00208        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00209        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00210        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00211        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00212        2,     2,     2,     2,     2,     2,     1,     3,     4,     5,
00213        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
00214       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
00215       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
00216       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
00217       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
00218       56,    57,    58,    59,    60
00219 };
00220 
00221 #if YYDEBUG
00222 static const short yyprhs[] =
00223 {
00224        0,     0,     2,     4,     6,     8,    10,    12,    14,    16,
00225       18,    20,    22,    26,    29,    33,    37,    41,    47,    50,
00226       55,    56,    58,    60,    63,    67,    73,    75,    77,    79,
00227       81,    83,    88,    92,    96,    98,   101,   104,   107,   112,
00228      116,   119,   123,   125,   129,   131,   133,   135,   138,   141,
00229      143,   146,   149,   152,   155,   158,   161,   164,   167,   170,
00230      173,   176,   178,   182,   186,   190,   192,   196,   200,   202,
00231      206,   210,   214,   216,   220,   224,   228,   232,   236,   240,
00232      242,   246,   250,   254,   258,   260,   264,   266,   270,   272,
00233      276,   278,   282,   284,   288,   290,   296,   298,   302,   304,
00234      306,   308,   310,   312,   314,   316,   318,   320,   322,   324,
00235      326,   328,   332,   334,   336,   338,   340,   342,   344,   346,
00236      348,   350,   352,   354,   356,   358,   360,   363,   367,   369,
00237      372,   376,   380,   382,   386,   388,   391,   394,   396,   399,
00238      402,   408,   416,   423,   429,   439,   450,   458,   467,   477,
00239      478,   480,   483,   486,   490,   494,   497,   500,   504,   508,
00240      511,   514,   518,   522,   528,   534,   538,   544,   545,   547,
00241      549,   552,   556,   561,   564,   568,   572,   576,   580,   584,
00242      588,   593,   599,   602,   604,   607,   613,   620,   625,   631,
00243      633,   637,   640,   644,   645,   647,   649,   652,   654
00244 };
00245 static const short yyrhs[] =
00246 {
00247        3,     0,     4,     0,     5,     0,     7,     0,     6,     0,
00248       61,     0,    50,     0,    20,     0,    58,     0,    85,     0,
00249       87,     0,    62,   114,    63,     0,    64,    65,     0,    64,
00250       91,    65,     0,    66,    89,    67,     0,    66,    88,    67,
00251        0,    66,    88,    68,    89,    67,     0,    89,   112,     0,
00252       88,    68,    89,   112,     0,     0,    90,     0,    68,     0,
00253       90,    68,     0,    92,    69,   112,     0,    91,    68,    92,
00254       69,   112,     0,    58,     0,     6,     0,     7,     0,    86,
00255        0,   144,     0,    93,    66,   114,    67,     0,    93,    70,
00256       58,     0,    12,    93,    96,     0,    93,     0,    12,    94,
00257        0,    93,    96,     0,    95,    96,     0,    95,    66,   114,
00258       67,     0,    95,    70,    58,     0,    62,    63,     0,    62,
00259       97,    63,     0,   112,     0,    97,    68,   112,     0,    94,
00260        0,    95,     0,    98,     0,    98,    42,     0,    98,    43,
00261        0,    99,     0,    18,   100,     0,    17,   100,     0,    26,
00262      100,     0,    42,   100,     0,    59,   100,     0,    43,   100,
00263        0,    60,   100,     0,    71,   100,     0,    72,   100,     0,
00264       73,   100,     0,    74,   100,     0,   100,     0,   101,    75,
00265      100,     0,   101,    61,   100,     0,   101,    76,   100,     0,
00266      101,     0,   102,    71,   101,     0,   102,    72,   101,     0,
00267      102,     0,   103,    44,   102,     0,   103,    45,   102,     0,
00268      103,    46,   102,     0,   103,     0,   104,    77,   103,     0,
00269      104,    78,   103,     0,   104,    38,   103,     0,   104,    39,
00270      103,     0,   104,    25,   103,     0,   104,    24,   103,     0,
00271      104,     0,   105,    34,   104,     0,   105,    35,   104,     0,
00272      105,    36,   104,     0,   105,    37,   104,     0,   105,     0,
00273      106,    79,   105,     0,   106,     0,   107,    80,   106,     0,
00274      107,     0,   108,    81,   107,     0,   108,     0,   109,    41,
00275      108,     0,   109,     0,   110,    40,   109,     0,   110,     0,
00276      110,    82,   112,    69,   112,     0,   111,     0,    98,   113,
00277      112,     0,    83,     0,    47,     0,    48,     0,    49,     0,
00278       50,     0,    51,     0,    52,     0,    53,     0,    54,     0,
00279       56,     0,    57,     0,    55,     0,   112,     0,   114,    68,
00280      112,     0,   116,     0,   118,     0,   122,     0,   123,     0,
00281      124,     0,   125,     0,   127,     0,   128,     0,   129,     0,
00282      130,     0,   131,     0,   137,     0,   138,     0,   139,     0,
00283       64,    65,     0,    64,   148,    65,     0,   115,     0,   117,
00284      115,     0,    13,   119,    84,     0,    13,   119,     1,     0,
00285      120,     0,   119,    68,   120,     0,    58,     0,    58,   121,
00286        0,    83,   112,     0,    84,     0,   114,    84,     0,   114,
00287        1,     0,    19,    62,   114,    63,   115,     0,    19,    62,
00288      114,    63,   115,    23,   115,     0,    21,   115,    22,    62,
00289      114,    63,     0,    22,    62,   114,    63,   115,     0,    11,
00290       62,   126,    84,   126,    84,   126,    63,   115,     0,    11,
00291       62,    13,   119,    84,   126,    84,   126,    63,   115,     0,
00292       11,    62,    98,    24,   114,    63,   115,     0,    11,    62,
00293       13,    58,    24,   114,    63,   115,     0,    11,    62,    13,
00294       58,   121,    24,   114,    63,   115,     0,     0,   114,     0,
00295       14,    84,     0,    14,     1,     0,    14,    58,    84,     0,
00296       14,    58,     1,     0,     8,    84,     0,     8,     1,     0,
00297        8,    58,    84,     0,     8,    58,     1,     0,    16,    84,
00298        0,    16,     1,     0,    16,   114,    84,     0,    16,   114,
00299        1,     0,    28,    62,   114,    63,   115,     0,    27,    62,
00300      114,    63,   132,     0,    64,   133,    65,     0,    64,   133,
00301      136,   133,    65,     0,     0,   134,     0,   135,     0,   134,
00302      135,     0,     9,   114,    69,     0,     9,   114,    69,   117,
00303        0,    10,    69,     0,    10,    69,   117,     0,    58,    69,
00304      115,     0,    30,   114,    84,     0,    30,   114,     1,     0,
00305       31,   116,   140,     0,    31,   116,   141,     0,    31,   116,
00306      140,   141,     0,    32,    62,    58,    63,   116,     0,    33,
00307      116,     0,   143,     0,    17,   143,     0,    15,    58,    62,
00308       63,   146,     0,    15,    58,    62,   145,    63,   146,     0,
00309       15,    62,    63,   146,     0,    15,    62,   145,    63,   146,
00310        0,    58,     0,   145,    68,    58,     0,    64,    65,     0,
00311       64,   148,    65,     0,     0,   148,     0,   149,     0,   148,
00312      149,     0,   115,     0,   142,     0
00313 };
00314 
00315 #endif
00316 
00317 #if YYDEBUG
00318 
00319 static const short yyrline[] =
00320 {
00321        0,   165,   167,   168,   169,   170,   171,   174,   180,   182,
00322      183,   184,   185,   186,   187,   190,   192,   193,   196,   198,
00323      202,   204,   207,   209,   212,   214,   218,   220,   221,   224,
00324      226,   227,   228,   229,   232,   234,   237,   239,   240,   241,
00325      244,   246,   249,   251,   254,   256,   259,   261,   262,   265,
00326      267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
00327      277,   280,   282,   283,   284,   287,   289,   290,   293,   295,
00328      296,   297,   300,   302,   304,   306,   308,   310,   312,   316,
00329      318,   319,   320,   321,   324,   326,   329,   331,   334,   336,
00330      339,   341,   345,   347,   351,   353,   357,   359,   363,   365,
00331      366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
00332      378,   380,   383,   385,   386,   387,   388,   389,   390,   391,
00333      392,   393,   394,   395,   396,   397,   400,   402,   405,   407,
00334      410,   413,   422,   424,   428,   430,   433,   437,   441,   444,
00335      451,   453,   457,   459,   460,   463,   466,   469,   472,   477,
00336      479,   482,   484,   488,   489,   495,   497,   501,   502,   509,
00337      511,   515,   516,   523,   528,   533,   535,   539,   541,   544,
00338      546,   549,   551,   554,   556,   559,   564,   566,   572,   574,
00339      575,   578,   583,   587,   590,   593,   595,   599,   601,   606,
00340      608,   611,   614,   618,   622,   626,   628,   631,   633
00341 };
00342 #endif
00343 
00344 
00345 #if (YYDEBUG) || defined YYERROR_VERBOSE
00346 
00347 
00348 static const char *const yytname[] =
00349 {
00350   "$", "error", "$undefined.", "NULLTOKEN", "TRUETOKEN", "FALSETOKEN",
00351   "STRING", "NUMBER", "BREAK", "CASE", "DEFAULT", "FOR", "NEW", "VAR",
00352   "CONTINUE", "FUNCTION", "RETURN", "VOID", "DELETE", "IF", "THIS", "DO",
00353   "WHILE", "ELSE", "IN", "INSTANCEOF", "TYPEOF", "SWITCH", "WITH",
00354   "RESERVED", "THROW", "TRY", "CATCH", "FINALLY", "EQEQ", "NE", "STREQ",
00355   "STRNEQ", "LE", "GE", "OR", "AND", "PLUSPLUS", "MINUSMINUS", "LSHIFT",
00356   "RSHIFT", "URSHIFT", "PLUSEQUAL", "MINUSEQUAL", "MULTEQUAL", "DIVEQUAL",
00357   "LSHIFTEQUAL", "RSHIFTEQUAL", "URSHIFTEQUAL", "ANDEQUAL", "MODEQUAL",
00358   "XOREQUAL", "OREQUAL", "IDENT", "AUTOPLUSPLUS", "AUTOMINUSMINUS", "'/'",
00359   "'('", "')'", "'{'", "'}'", "'['", "']'", "','", "':'", "'.'", "'+'",
00360   "'-'", "'~'", "'!'", "'*'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'",
00361   "'?'", "'='", "';'", "Literal", "PrimaryExpr", "ArrayLiteral",
00362   "ElementList", "ElisionOpt", "Elision", "PropertyNameAndValueList",
00363   "PropertyName", "MemberExpr", "NewExpr", "CallExpr", "Arguments",
00364   "ArgumentList", "LeftHandSideExpr", "PostfixExpr", "UnaryExpr",
00365   "MultiplicativeExpr", "AdditiveExpr", "ShiftExpr", "RelationalExpr",
00366   "EqualityExpr", "BitwiseANDExpr", "BitwiseXORExpr", "BitwiseORExpr",
00367   "LogicalANDExpr", "LogicalORExpr", "ConditionalExpr", "AssignmentExpr",
00368   "AssignmentOperator", "Expr", "Statement", "Block", "StatementList",
00369   "VariableStatement", "VariableDeclarationList", "VariableDeclaration",
00370   "Initializer", "EmptyStatement", "ExprStatement", "IfStatement",
00371   "IterationStatement", "ExprOpt", "ContinueStatement", "BreakStatement",
00372   "ReturnStatement", "WithStatement", "SwitchStatement", "CaseBlock",
00373   "CaseClausesOpt", "CaseClauses", "CaseClause", "DefaultClause",
00374   "LabelledStatement", "ThrowStatement", "TryStatement", "Catch",
00375   "Finally", "FunctionDeclaration", "FunctionDeclarationInternal",
00376   "FunctionExpr", "FormalParameterList", "FunctionBody", "Program",
00377   "SourceElements", "SourceElement", 0
00378 };
00379 #endif
00380 
00381 
00382 static const short yyr1[] =
00383 {
00384        0,    85,    85,    85,    85,    85,    85,    85,    86,    86,
00385       86,    86,    86,    86,    86,    87,    87,    87,    88,    88,
00386       89,    89,    90,    90,    91,    91,    92,    92,    92,    93,
00387       93,    93,    93,    93,    94,    94,    95,    95,    95,    95,
00388       96,    96,    97,    97,    98,    98,    99,    99,    99,   100,
00389      100,   100,   100,   100,   100,   100,   100,   100,   100,   100,
00390      100,   101,   101,   101,   101,   102,   102,   102,   103,   103,
00391      103,   103,   104,   104,   104,   104,   104,   104,   104,   105,
00392      105,   105,   105,   105,   106,   106,   107,   107,   108,   108,
00393      109,   109,   110,   110,   111,   111,   112,   112,   113,   113,
00394      113,   113,   113,   113,   113,   113,   113,   113,   113,   113,
00395      114,   114,   115,   115,   115,   115,   115,   115,   115,   115,
00396      115,   115,   115,   115,   115,   115,   116,   116,   117,   117,
00397      118,   118,   119,   119,   120,   120,   121,   122,   123,   123,
00398      124,   124,   125,   125,   125,   125,   125,   125,   125,   126,
00399      126,   127,   127,   127,   127,   128,   128,   128,   128,   129,
00400      129,   129,   129,   130,   131,   132,   132,   133,   133,   134,
00401      134,   135,   135,   136,   136,   137,   138,   138,   139,   139,
00402      139,   140,   141,   142,   142,   143,   143,   144,   144,   145,
00403      145,   146,   146,   147,   147,   148,   148,   149,   149
00404 };
00405 
00406 
00407 static const short yyr2[] =
00408 {
00409        0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00410        1,     1,     3,     2,     3,     3,     3,     5,     2,     4,
00411        0,     1,     1,     2,     3,     5,     1,     1,     1,     1,
00412        1,     4,     3,     3,     1,     2,     2,     2,     4,     3,
00413        2,     3,     1,     3,     1,     1,     1,     2,     2,     1,
00414        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00415        2,     1,     3,     3,     3,     1,     3,     3,     1,     3,
00416        3,     3,     1,     3,     3,     3,     3,     3,     3,     1,
00417        3,     3,     3,     3,     1,     3,     1,     3,     1,     3,
00418        1,     3,     1,     3,     1,     5,     1,     3,     1,     1,
00419        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
00420        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
00421        1,     1,     1,     1,     1,     1,     2,     3,     1,     2,
00422        3,     3,     1,     3,     1,     2,     2,     1,     2,     2,
00423        5,     7,     6,     5,     9,    10,     7,     8,     9,     0,
00424        1,     2,     2,     3,     3,     2,     2,     3,     3,     2,
00425        2,     3,     3,     5,     5,     3,     5,     0,     1,     1,
00426        2,     3,     4,     2,     3,     3,     3,     3,     3,     3,
00427        4,     5,     2,     1,     2,     5,     6,     4,     5,     1,
00428        3,     2,     3,     0,     1,     1,     2,     1,     1
00429 };
00430 
00431 
00432 
00433 
00434 static const short yydefact[] =
00435 {
00436      193,     1,     2,     3,     5,     4,     0,     0,     0,     0,
00437        0,     0,     0,     0,     0,     0,     8,     0,     0,     0,
00438        0,     0,     0,     0,     0,     0,     7,     9,     0,     0,
00439        6,     0,     0,    20,     0,     0,     0,     0,   137,    10,
00440       29,    11,    34,    44,    45,    46,    49,    61,    65,    68,
00441       72,    79,    84,    86,    88,    90,    92,    94,    96,   110,
00442        0,   197,   112,   113,   114,   115,   116,   117,   118,   119,
00443      120,   121,   122,   123,   124,   125,   198,   183,    30,   194,
00444      195,   156,     0,   155,   149,     0,     9,     0,    34,    35,
00445      134,     0,   132,   152,     0,   151,     0,     0,   160,     0,
00446      159,     0,    46,    51,   184,    50,     0,     0,     0,    52,
00447        0,     0,     0,     0,     0,    53,    55,     0,    54,    56,
00448        0,     5,     4,     9,    13,     0,     0,     0,    22,     0,
00449        0,    21,    57,    58,    59,    60,     0,     0,     0,    36,
00450        0,     0,    37,    47,    48,    99,   100,   101,   102,   103,
00451      104,   105,   106,   109,   107,   108,    98,     0,     0,     0,
00452        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00453        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00454        0,     0,   139,     0,   138,   196,   158,   157,     0,    46,
00455      150,     0,    27,    28,    26,    13,    33,     0,   135,   131,
00456        0,   130,   154,   153,     0,   189,     0,     0,   162,   161,
00457        0,     0,     0,     0,     0,   177,   176,   126,     0,     0,
00458      178,   179,   175,    12,    14,     0,     0,   127,    16,    20,
00459       15,    18,    23,    40,     0,    42,     0,    32,     0,    39,
00460       97,    63,    62,    64,    66,    67,    69,    70,    71,    78,
00461       77,    75,    76,    73,    74,    80,    81,    82,    83,    85,
00462       87,    89,    91,    93,     0,   111,   134,     0,     0,   149,
00463      136,   133,     0,     0,     0,   187,     0,     0,     0,     0,
00464        0,     0,     0,     0,   182,   180,     0,    24,     0,    41,
00465        0,    31,    38,     0,     0,   135,   149,     0,     0,   185,
00466        0,   191,     0,   188,   190,   140,     0,   143,   167,   164,
00467      163,     0,     0,    17,    19,    43,    95,     0,     0,     0,
00468        0,   149,   186,   192,     0,   142,     0,     0,   168,   169,
00469        0,    25,     0,     0,   149,   146,     0,   141,     0,     0,
00470      165,   167,   170,   181,   147,     0,     0,     0,   171,   173,
00471        0,   148,     0,   144,   128,   172,   174,   166,   145,   129,
00472        0,     0,     0
00473 };
00474 
00475 static const short yydefgoto[] =
00476 {
00477       39,    40,    41,   129,   130,   131,   125,   126,    42,    43,
00478       44,   139,   234,    45,    46,    47,    48,    49,    50,    51,
00479       52,    53,    54,    55,    56,    57,    58,    59,   157,    60,
00480       61,    62,   355,    63,    91,    92,   198,    64,    65,    66,
00481       67,   191,    68,    69,    70,    71,    72,   309,   327,   328,
00482      329,   341,    73,    74,    75,   220,   221,    76,    77,    78,
00483      207,   275,   360,   127,    80
00484 };
00485 
00486 static const short yypact[] =
00487 {
00488      707,-32768,-32768,-32768,-32768,-32768,     9,   -38,   228,   -10,
00489       29,    10,   115,  1180,  1252,   -12,-32768,   781,    -7,  1252,
00490      100,   106,  1252,    62,  1252,  1252,-32768,    17,  1252,  1252,
00491   -32768,  1252,   337,    20,  1252,  1252,  1252,  1252,-32768,-32768,
00492   -32768,-32768,   -27,-32768,   -13,   944,-32768,-32768,    73,   157,
00493      138,    86,   158,    99,    90,    72,   149,   -26,-32768,-32768,
00494       22,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00495   -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   707,
00496   -32768,-32768,    11,-32768,   892,   134,-32768,    38,   -27,-32768,
00497      143,    24,-32768,-32768,    31,-32768,   136,   -16,-32768,  1252,
00498   -32768,    30,   104,-32768,-32768,-32768,  1252,   208,  1252,-32768,
00499     1252,  1252,    39,   411,   209,-32768,-32768,   781,-32768,-32768,
00500       15,   193,   195,    17,   863,    71,   199,   485,-32768,   177,
00501      964,   201,-32768,-32768,-32768,-32768,  1036,  1252,   213,-32768,
00502     1252,   214,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00503   -32768,-32768,-32768,-32768,-32768,-32768,-32768,  1252,  1252,  1252,
00504     1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
00505     1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,  1252,
00506     1252,  1252,-32768,  1252,-32768,-32768,-32768,-32768,   215,  1285,
00507      206,   191,-32768,-32768,-32768,-32768,-32768,  1252,-32768,-32768,
00508      -10,-32768,-32768,-32768,     3,-32768,   216,    26,-32768,-32768,
00509       41,   217,    49,    74,    75,-32768,-32768,-32768,   219,    62,
00510      244,-32768,-32768,-32768,-32768,    27,  1252,-32768,-32768,    20,
00511   -32768,-32768,-32768,-32768,    77,-32768,   179,-32768,   188,-32768,
00512   -32768,-32768,-32768,-32768,    73,    73,   157,   157,   157,   138,
00513      138,   138,   138,   138,   138,    86,    86,    86,    86,   158,
00514       99,    90,    72,   149,   222,-32768,    -6,   -30,  1252,  1252,
00515   -32768,-32768,   216,    91,   559,-32768,   216,   224,   781,  1252,
00516      781,   220,   781,   225,-32768,-32768,   226,-32768,  1108,-32768,
00517     1252,-32768,-32768,  1252,  1252,   264,  1252,    92,   212,-32768,
00518      216,-32768,   633,-32768,-32768,   270,    93,-32768,   288,-32768,
00519   -32768,   235,  1252,-32768,-32768,-32768,-32768,   103,  1252,   218,
00520      781,  1252,-32768,-32768,   781,-32768,  1252,    -2,   288,-32768,
00521       62,-32768,   781,   117,  1252,-32768,   236,-32768,   189,   231,
00522   -32768,   288,-32768,-32768,-32768,   781,   238,   781,   781,   781,
00523      239,-32768,   781,-32768,-32768,   781,   781,-32768,-32768,-32768,
00524      305,   306,-32768
00525 };
00526 
00527 static const short yypgoto[] =
00528 {
00529   -32768,-32768,-32768,-32768,    81,-32768,-32768,    88,   303,   308,
00530   -32768,   -37,-32768,    45,-32768,    -8,   105,    37,    83,    64,
00531      142,   137,   141,   144,   140,-32768,-32768,  -121,-32768,    -9,
00532      -17,   -22,   -28,-32768,   139,   122,    58,-32768,-32768,-32768,
00533   -32768,  -250,-32768,-32768,-32768,-32768,-32768,-32768,   -15,-32768,
00534        1,-32768,-32768,-32768,-32768,-32768,   113,-32768,   321,-32768,
00535      132,  -235,-32768,     2,   -75
00536 };
00537 
00538 
00539 #define YYLAST      1368
00540 
00541 
00542 static const short yytable[] =
00543 {
00544      107,   114,    79,   101,   185,   103,   105,   142,   339,   231,
00545       81,   109,   186,   112,   180,   235,   115,   116,   294,   298,
00546      118,   119,   120,   182,    84,   199,   132,   133,   134,   135,
00547       93,   208,   202,   192,   193,   136,   240,   299,   200,   137,
00548      215,   303,   205,   138,   192,   193,   319,   206,    90,   136,
00549      106,   196,   185,   140,   296,   108,   181,   141,   102,   102,
00550      264,   205,   265,   340,   102,   322,   272,    82,    96,   102,
00551      102,   336,    97,   102,   102,   190,   270,   197,   223,   102,
00552      102,   102,   102,   183,   346,   194,   117,    94,   128,   276,
00553      183,   103,   200,    83,   277,   187,   194,   210,   183,   212,
00554      222,   213,   214,   195,   278,   287,   184,   183,   201,   183,
00555      166,   167,   280,    95,   209,   203,    98,   183,     1,     2,
00556        3,     4,     5,   216,   168,   169,   113,     8,   236,   189,
00557       85,   238,    99,    14,   158,    16,   224,   281,   282,   225,
00558      289,    19,   183,   183,   102,   290,   143,   144,   159,   160,
00559      241,   242,   243,   178,   300,   320,   325,    24,    25,   277,
00560      183,   183,   110,   170,   171,    26,   332,   314,   111,   315,
00561      177,   183,   316,    86,    28,    29,    30,    31,   176,    87,
00562      345,    33,   163,   164,   165,   183,    34,    35,    36,    37,
00563      179,   331,   172,   173,   174,   175,    97,   284,   204,   100,
00564      246,   247,   248,   102,   102,   102,   102,   102,   102,   102,
00565      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
00566      102,   102,   102,   102,   102,   102,   197,   185,   161,   162,
00567      211,     1,     2,     3,     4,     5,   255,   256,   257,   258,
00568        8,   218,   219,    85,   228,   229,   291,   183,    16,   249,
00569      250,   251,   252,   253,   254,   292,   183,   183,   348,   297,
00570      190,   305,   -27,   307,   -28,   310,   244,   245,   226,   232,
00571      306,   237,   239,   266,   183,   269,   302,   219,    26,   279,
00572      274,   283,   304,   311,   308,   317,    86,   190,   318,    30,
00573       31,   293,    87,   324,    33,   312,   321,   326,   330,   347,
00574      349,   352,   334,   335,   357,   361,   362,   337,   343,   333,
00575      288,    88,   190,   286,   260,   344,    89,   338,   259,   261,
00576      263,   356,   271,   262,   295,   190,   350,   267,   351,   342,
00577      353,   354,   354,   285,   104,   358,   273,     0,   359,   359,
00578        1,     2,     3,   121,   122,     6,     0,     0,     7,     8,
00579        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00580        0,     0,     0,    19,    20,    21,     0,    22,    23,     0,
00581        0,     0,     0,     0,     0,     0,     0,     0,     0,    24,
00582       25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
00583        0,     0,     0,     0,     0,   123,    28,    29,    30,    31,
00584        0,    32,   124,    33,     0,     0,     0,     0,    34,    35,
00585       36,    37,     0,     0,     1,     2,     3,     4,     5,     6,
00586        0,    38,     7,     8,     9,    10,    11,    12,    13,    14,
00587       15,    16,    17,    18,     0,     0,     0,    19,    20,    21,
00588        0,    22,    23,     0,     0,     0,     0,     0,     0,     0,
00589        0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
00590        0,    26,     0,     0,     0,     0,     0,     0,     0,    27,
00591       28,    29,    30,    31,     0,    32,   217,    33,     0,     0,
00592        0,     0,    34,    35,    36,    37,     0,     0,     1,     2,
00593        3,     4,     5,     6,     0,    38,     7,     8,     9,    10,
00594       11,    12,    13,    14,    15,    16,    17,    18,     0,     0,
00595        0,    19,    20,    21,     0,    22,    23,     0,     0,     0,
00596        0,     0,     0,     0,     0,     0,     0,    24,    25,     0,
00597        0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
00598        0,     0,     0,    27,    28,    29,    30,    31,     0,    32,
00599      227,    33,     0,     0,     0,     0,    34,    35,    36,    37,
00600        0,     0,     1,     2,     3,     4,     5,     6,     0,    38,
00601        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00602       17,    18,     0,     0,     0,    19,    20,    21,     0,    22,
00603       23,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00604        0,    24,    25,     0,     0,     0,     0,     0,     0,    26,
00605        0,     0,     0,     0,     0,     0,     0,    27,    28,    29,
00606       30,    31,     0,    32,   301,    33,     0,     0,     0,     0,
00607       34,    35,    36,    37,     0,     0,     1,     2,     3,     4,
00608        5,     6,     0,    38,     7,     8,     9,    10,    11,    12,
00609       13,    14,    15,    16,    17,    18,     0,     0,     0,    19,
00610       20,    21,     0,    22,    23,     0,     0,     0,     0,     0,
00611        0,     0,     0,     0,     0,    24,    25,     0,     0,     0,
00612        0,     0,     0,    26,     0,     0,     0,     0,     0,     0,
00613        0,    27,    28,    29,    30,    31,     0,    32,   323,    33,
00614        0,     0,     0,     0,    34,    35,    36,    37,     0,     0,
00615        1,     2,     3,     4,     5,     6,     0,    38,     7,     8,
00616        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
00617        0,     0,     0,    19,    20,    21,     0,    22,    23,     0,
00618        0,     0,     0,     0,     0,     0,     0,     0,     0,    24,
00619       25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
00620        0,     0,     0,     0,     0,    27,    28,    29,    30,    31,
00621        0,    32,     0,    33,     0,     0,     0,     0,    34,    35,
00622       36,    37,     0,     0,     1,     2,     3,     4,     5,     6,
00623        0,    38,     7,     8,     9,    10,    85,    12,    99,    14,
00624       15,    16,    17,    18,     0,     0,     0,    19,    20,    21,
00625        0,    22,    23,     0,     0,     0,     0,     0,     0,     0,
00626        0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
00627        0,    26,     0,     0,     0,     0,     0,     0,     0,    27,
00628       28,    29,    30,    31,     0,    32,     0,    33,     0,     0,
00629        0,     0,    34,    35,    36,    37,     0,     0,     0,     0,
00630        0,     0,     0,  -126,     0,    38,  -126,  -126,  -126,  -126,
00631     -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,  -126,
00632     -126,  -126,  -126,  -126,  -126,  -126,  -126,     0,     0,  -126,
00633     -126,  -126,     0,  -126,  -126,     1,     2,     3,     4,     5,
00634        0,     0,     0,     0,     8,   188,     0,    85,     0,    99,
00635       14,     0,    16,     0,     0,     0,     0,     0,    19,     0,
00636        0,  -126,  -126,  -126,     0,     0,     0,  -126,  -126,     0,
00637        0,     0,     0,     0,    24,    25,  -126,  -126,     0,     0,
00638        0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
00639       86,    28,    29,    30,    31,     0,    87,     0,    33,     0,
00640        0,     0,     0,    34,    35,    36,    37,     1,     2,     3,
00641        4,     5,     0,     0,     0,     0,     8,     0,     0,    85,
00642        0,    99,    14,     0,    16,     0,   143,   144,     0,     0,
00643       19,   145,   146,   147,   148,   149,   150,   151,   152,   153,
00644      154,   155,     0,     0,     0,     0,    24,    25,     0,     0,
00645        0,     0,     0,     0,    26,     0,     0,     0,     0,     0,
00646        0,     0,    86,    28,    29,    30,    31,   156,    87,     0,
00647       33,   230,     0,     0,     0,    34,    35,    36,    37,     1,
00648        2,     3,     4,     5,     0,     0,     0,     0,     8,     0,
00649        0,    85,     0,    99,    14,     0,    16,     0,     0,     0,
00650        0,     0,    19,     0,     0,     0,     0,     0,     0,     0,
00651        0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
00652        0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
00653        0,     0,     0,     0,    86,    28,    29,    30,    31,   233,
00654       87,     0,    33,     0,     0,     0,     0,    34,    35,    36,
00655       37,     1,     2,     3,     4,     5,     0,     0,     0,     0,
00656        8,     0,     0,    85,     0,    99,    14,     0,    16,     0,
00657        0,     0,     0,     0,    19,     0,     0,     0,     0,     0,
00658        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00659       24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
00660        0,     0,     0,     0,     0,     0,    86,    28,    29,    30,
00661       31,     0,    87,     0,    33,   313,     0,     0,     0,    34,
00662       35,    36,    37,     1,     2,     3,     4,     5,     0,     0,
00663        0,     0,     8,     0,     0,    11,     0,    99,    14,     0,
00664       16,     0,     0,     0,     0,     0,    19,     0,     0,     0,
00665        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00666        0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
00667       26,     0,     0,     0,     0,     0,     0,     0,    86,    28,
00668       29,    30,    31,     0,    87,     0,    33,     0,     0,     0,
00669        0,    34,    35,    36,    37,     1,     2,     3,     4,     5,
00670        0,     0,     0,     0,     8,     0,     0,    85,     0,    99,
00671       14,     0,    16,     0,     0,     0,     0,     0,    19,     0,
00672        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00673        0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
00674        0,     0,    26,     0,     0,     0,     0,     0,     0,   268,
00675       86,    28,    29,    30,    31,     0,    87,     0,    33,     0,
00676        0,     0,     0,    34,    35,    36,    37,   143,   144,     0,
00677        0,     0,   145,   146,   147,   148,   149,   150,   151,   152,
00678      153,   154,   155,     0,     0,     0,     0,     0,     0,     0,
00679        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
00680        0,     0,     0,     0,     0,     0,     0,     0,   156
00681 };
00682 
00683 static const short yycheck[] =
00684 {
00685       17,    23,     0,    12,    79,    13,    14,    44,    10,   130,
00686        1,    19,     1,    22,    40,   136,    24,    25,    24,   269,
00687       28,    29,    31,     1,    62,     1,    34,    35,    36,    37,
00688        1,     1,     1,     6,     7,    62,   157,   272,    68,    66,
00689        1,   276,    58,    70,     6,     7,   296,    63,    58,    62,
00690       62,    88,   127,    66,    84,    62,    82,    70,    13,    14,
00691      181,    58,   183,    65,    19,   300,    63,    58,    58,    24,
00692       25,   321,    62,    28,    29,    84,   197,    83,    63,    34,
00693       35,    36,    37,    68,   334,    58,    69,    58,    68,    63,
00694       68,    99,    68,    84,    68,    84,    58,   106,    68,   108,
00695      117,   110,   111,    65,    63,   226,    84,    68,    84,    68,
00696       24,    25,    63,    84,    84,    84,     1,    68,     3,     4,
00697        5,     6,     7,    84,    38,    39,    64,    12,   137,    84,
00698       15,   140,    17,    18,    61,    20,    65,    63,    63,    68,
00699       63,    26,    68,    68,    99,    68,    42,    43,    75,    76,
00700      158,   159,   160,    81,    63,    63,    63,    42,    43,    68,
00701       68,    68,    62,    77,    78,    50,    63,   288,    62,   290,
00702       80,    68,   293,    58,    59,    60,    61,    62,    79,    64,
00703       63,    66,    44,    45,    46,    68,    71,    72,    73,    74,
00704       41,   312,    34,    35,    36,    37,    62,   219,    62,    84,
00705      163,   164,   165,   158,   159,   160,   161,   162,   163,   164,
00706      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
00707      175,   176,   177,   178,   179,   180,    83,   302,    71,    72,
00708       22,     3,     4,     5,     6,     7,   172,   173,   174,   175,
00709       12,    32,    33,    15,    67,    68,    67,    68,    20,   166,
00710      167,   168,   169,   170,   171,    67,    68,    68,    69,   268,
00711      269,   278,    69,   280,    69,   282,   161,   162,    69,    68,
00712      279,    58,    58,    58,    68,    84,   274,    33,    50,    62,
00713       64,    62,    58,    58,    64,   294,    58,   296,    24,    61,
00714       62,    69,    64,    23,    66,    69,    84,     9,    63,    63,
00715       69,    63,    84,   320,    65,     0,     0,   324,   330,   318,
00716      229,     8,   321,   225,   177,   332,     8,   326,   176,   178,
00717      180,   349,   200,   179,   266,   334,   341,   188,   345,   328,
00718      347,   348,   349,   220,    13,   352,   204,    -1,   355,   356,
00719        3,     4,     5,     6,     7,     8,    -1,    -1,    11,    12,
00720       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
00721       -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,    -1,
00722       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
00723       43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
00724       -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,
00725       -1,    64,    65,    66,    -1,    -1,    -1,    -1,    71,    72,
00726       73,    74,    -1,    -1,     3,     4,     5,     6,     7,     8,
00727       -1,    84,    11,    12,    13,    14,    15,    16,    17,    18,
00728       19,    20,    21,    22,    -1,    -1,    -1,    26,    27,    28,
00729       -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00730       -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
00731       -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
00732       59,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
00733       -1,    -1,    71,    72,    73,    74,    -1,    -1,     3,     4,
00734        5,     6,     7,     8,    -1,    84,    11,    12,    13,    14,
00735       15,    16,    17,    18,    19,    20,    21,    22,    -1,    -1,
00736       -1,    26,    27,    28,    -1,    30,    31,    -1,    -1,    -1,
00737       -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,    -1,
00738       -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
00739       -1,    -1,    -1,    58,    59,    60,    61,    62,    -1,    64,
00740       65,    66,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
00741       -1,    -1,     3,     4,     5,     6,     7,     8,    -1,    84,
00742       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
00743       21,    22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,
00744       31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00745       -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,
00746       -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,
00747       61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,
00748       71,    72,    73,    74,    -1,    -1,     3,     4,     5,     6,
00749        7,     8,    -1,    84,    11,    12,    13,    14,    15,    16,
00750       17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    26,
00751       27,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
00752       -1,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,
00753       -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
00754       -1,    58,    59,    60,    61,    62,    -1,    64,    65,    66,
00755       -1,    -1,    -1,    -1,    71,    72,    73,    74,    -1,    -1,
00756        3,     4,     5,     6,     7,     8,    -1,    84,    11,    12,
00757       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
00758       -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,    -1,
00759       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
00760       43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
00761       -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,
00762       -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,
00763       73,    74,    -1,    -1,     3,     4,     5,     6,     7,     8,
00764       -1,    84,    11,    12,    13,    14,    15,    16,    17,    18,
00765       19,    20,    21,    22,    -1,    -1,    -1,    26,    27,    28,
00766       -1,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00767       -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,
00768       -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,
00769       59,    60,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
00770       -1,    -1,    71,    72,    73,    74,    -1,    -1,    -1,    -1,
00771       -1,    -1,    -1,     0,    -1,    84,     3,     4,     5,     6,
00772        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
00773       17,    18,    19,    20,    21,    22,    23,    -1,    -1,    26,
00774       27,    28,    -1,    30,    31,     3,     4,     5,     6,     7,
00775       -1,    -1,    -1,    -1,    12,    13,    -1,    15,    -1,    17,
00776       18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,
00777       -1,    58,    59,    60,    -1,    -1,    -1,    64,    65,    -1,
00778       -1,    -1,    -1,    -1,    42,    43,    73,    74,    -1,    -1,
00779       -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00780       58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
00781       -1,    -1,    -1,    71,    72,    73,    74,     3,     4,     5,
00782        6,     7,    -1,    -1,    -1,    -1,    12,    -1,    -1,    15,
00783       -1,    17,    18,    -1,    20,    -1,    42,    43,    -1,    -1,
00784       26,    47,    48,    49,    50,    51,    52,    53,    54,    55,
00785       56,    57,    -1,    -1,    -1,    -1,    42,    43,    -1,    -1,
00786       -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
00787       -1,    -1,    58,    59,    60,    61,    62,    83,    64,    -1,
00788       66,    67,    -1,    -1,    -1,    71,    72,    73,    74,     3,
00789        4,     5,     6,     7,    -1,    -1,    -1,    -1,    12,    -1,
00790       -1,    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,
00791       -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00792       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    43,
00793       -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
00794       -1,    -1,    -1,    -1,    58,    59,    60,    61,    62,    63,
00795       64,    -1,    66,    -1,    -1,    -1,    -1,    71,    72,    73,
00796       74,     3,     4,     5,     6,     7,    -1,    -1,    -1,    -1,
00797       12,    -1,    -1,    15,    -1,    17,    18,    -1,    20,    -1,
00798       -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,    -1,    -1,
00799       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00800       42,    43,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
00801       -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
00802       62,    -1,    64,    -1,    66,    67,    -1,    -1,    -1,    71,
00803       72,    73,    74,     3,     4,     5,     6,     7,    -1,    -1,
00804       -1,    -1,    12,    -1,    -1,    15,    -1,    17,    18,    -1,
00805       20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    -1,    -1,
00806       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00807       -1,    -1,    42,    43,    -1,    -1,    -1,    -1,    -1,    -1,
00808       50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
00809       60,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
00810       -1,    71,    72,    73,    74,     3,     4,     5,     6,     7,
00811       -1,    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    17,
00812       18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,
00813       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00814       -1,    -1,    -1,    -1,    42,    43,    -1,    -1,    -1,    -1,
00815       -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    24,
00816       58,    59,    60,    61,    62,    -1,    64,    -1,    66,    -1,
00817       -1,    -1,    -1,    71,    72,    73,    74,    42,    43,    -1,
00818       -1,    -1,    47,    48,    49,    50,    51,    52,    53,    54,
00819       55,    56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00820       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
00821       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83
00822 };
00823 
00824 #line 3 "/usr/share/bison/bison.simple"
00825 
00826 
00827 
00828 
00829 
00830 
00831 
00832 
00833 
00834 
00835 
00836 
00837 
00838 
00839 
00840 
00841 
00842 
00843 
00844 
00845 
00846 
00847 
00848 
00849 
00850 
00851 
00852 
00853 
00854 
00855 
00856 
00857 
00858 
00859 
00860 
00861 
00862 
00863 #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
00864 
00865 
00866 
00867 # if YYSTACK_USE_ALLOCA
00868 #  define YYSTACK_ALLOC alloca
00869 # else
00870 #  ifndef YYSTACK_USE_ALLOCA
00871 #   if defined (alloca) || defined (_ALLOCA_H)
00872 #    define YYSTACK_ALLOC alloca
00873 #   else
00874 #    ifdef __GNUC__
00875 #     define YYSTACK_ALLOC __builtin_alloca
00876 #    endif
00877 #   endif
00878 #  endif
00879 # endif
00880 
00881 # ifdef YYSTACK_ALLOC
00882    
00883 #  define YYSTACK_FREE(Ptr) do { ; } while (0)
00884 # else
00885 #  if defined (__STDC__) || defined (__cplusplus)
00886 #   include <stdlib.h> 
00887 #   define YYSIZE_T size_t
00888 #  endif
00889 #  define YYSTACK_ALLOC malloc
00890 #  define YYSTACK_FREE free
00891 # endif
00892 #endif 
00893 
00894 
00895 #if (! defined (yyoverflow) \
00896      && (! defined (__cplusplus) \
00897      || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
00898 
00899 
00900 union yyalloc
00901 {
00902   short yyss;
00903   YYSTYPE yyvs;
00904 # if YYLSP_NEEDED
00905   YYLTYPE yyls;
00906 # endif
00907 };
00908 
00909 
00910 # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
00911 
00912 
00913 
00914 # if YYLSP_NEEDED
00915 #  define YYSTACK_BYTES(N) \
00916      ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE))  \
00917       + 2 * YYSTACK_GAP_MAX)
00918 # else
00919 #  define YYSTACK_BYTES(N) \
00920      ((N) * (sizeof (short) + sizeof (YYSTYPE))             \
00921       + YYSTACK_GAP_MAX)
00922 # endif
00923 
00924 
00925 
00926 # ifndef YYCOPY
00927 #  if 1 < __GNUC__
00928 #   define YYCOPY(To, From, Count) \
00929       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00930 #  else
00931 #   define YYCOPY(To, From, Count)      \
00932       do                    \
00933     {                   \
00934       register YYSIZE_T yyi;        \
00935       for (yyi = 0; yyi < (Count); yyi++)   \
00936         (To)[yyi] = (From)[yyi];        \
00937     }                   \
00938       while (0)
00939 #  endif
00940 # endif
00941 
00942 
00943 
00944 
00945 
00946 
00947 # define YYSTACK_RELOCATE(Stack)                    \
00948     do                                  \
00949       {                                 \
00950     YYSIZE_T yynewbytes;                        \
00951     YYCOPY (&yyptr->Stack, Stack, yysize);              \
00952     Stack = &yyptr->Stack;                      \
00953     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;   \
00954     yyptr += yynewbytes / sizeof (*yyptr);              \
00955       }                                 \
00956     while (0)
00957 
00958 #endif
00959 
00960 
00961 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
00962 # define YYSIZE_T __SIZE_TYPE__
00963 #endif
00964 #if ! defined (YYSIZE_T) && defined (size_t)
00965 # define YYSIZE_T size_t
00966 #endif
00967 #if ! defined (YYSIZE_T)
00968 # if defined (__STDC__) || defined (__cplusplus)
00969 #  include <stddef.h> 
00970 #  define YYSIZE_T size_t
00971 # endif
00972 #endif
00973 #if ! defined (YYSIZE_T)
00974 # define YYSIZE_T unsigned int
00975 #endif
00976 
00977 #define yyerrok     (yyerrstatus = 0)
00978 #define yyclearin   (yychar = YYEMPTY)
00979 #define YYEMPTY     -2
00980 #define YYEOF       0
00981 #define YYACCEPT    goto yyacceptlab
00982 #define YYABORT     goto yyabortlab
00983 #define YYERROR     goto yyerrlab1
00984 
00985 
00986 
00987 #define YYFAIL      goto yyerrlab
00988 #define YYRECOVERING()  (!!yyerrstatus)
00989 #define YYBACKUP(Token, Value)                  \
00990 do                              \
00991   if (yychar == YYEMPTY && yylen == 1)              \
00992     {                               \
00993       yychar = (Token);                     \
00994       yylval = (Value);                     \
00995       yychar1 = YYTRANSLATE (yychar);               \
00996       YYPOPSTACK;                       \
00997       goto yybackup;                        \
00998     }                               \
00999   else                              \
01000     {                               \
01001       yyerror ("syntax error: cannot back up");         \
01002       YYERROR;                          \
01003     }                               \
01004 while (0)
01005 
01006 #define YYTERROR    1
01007 #define YYERRCODE   256
01008 
01009 
01010 
01011 
01012 
01013 
01014 
01015 
01016 
01017 #ifndef YYLLOC_DEFAULT
01018 # define YYLLOC_DEFAULT(Current, Rhs, N)        \
01019    Current.last_line   = Rhs[N].last_line;  \
01020    Current.last_column = Rhs[N].last_column;
01021 #endif
01022 
01023 
01024 
01025 
01026 #if YYPURE
01027 # if YYLSP_NEEDED
01028 #  ifdef YYLEX_PARAM
01029 #   define YYLEX        yylex (&yylval, &yylloc, YYLEX_PARAM)
01030 #  else
01031 #   define YYLEX        yylex (&yylval, &yylloc)
01032 #  endif
01033 # else 
01034 #  ifdef YYLEX_PARAM
01035 #   define YYLEX        yylex (&yylval, YYLEX_PARAM)
01036 #  else
01037 #   define YYLEX        yylex (&yylval)
01038 #  endif
01039 # endif 
01040 #else 
01041 # define YYLEX          yylex ()
01042 #endif 
01043 
01044 
01045 
01046 #if YYDEBUG
01047 
01048 # ifndef YYFPRINTF
01049 #  include <stdio.h> 
01050 #  define YYFPRINTF fprintf
01051 # endif
01052 
01053 # define YYDPRINTF(Args)            \
01054 do {                        \
01055   if (yydebug)                  \
01056     YYFPRINTF Args;             \
01057 } while (0)
01058 
01059 
01060 int yydebug;
01061 #else 
01062 # define YYDPRINTF(Args)
01063 #endif 
01064 
01065 
01066 #ifndef YYINITDEPTH
01067 # define YYINITDEPTH 200
01068 #endif
01069 
01070 
01071 
01072 
01073 
01074 
01075 
01076 
01077 #if YYMAXDEPTH == 0
01078 # undef YYMAXDEPTH
01079 #endif
01080 
01081 #ifndef YYMAXDEPTH
01082 # define YYMAXDEPTH 10000
01083 #endif
01084 
01085 #ifdef YYERROR_VERBOSE
01086 
01087 # ifndef yystrlen
01088 #  if defined (__GLIBC__) && defined (_STRING_H)
01089 #   define yystrlen strlen
01090 #  else
01091 
01092 static YYSIZE_T
01093 #   if defined (__STDC__) || defined (__cplusplus)
01094 yystrlen (const char *yystr)
01095 #   else
01096 yystrlen (yystr)
01097      const char *yystr;
01098 #   endif
01099 {
01100   register const char *yys = yystr;
01101 
01102   while (*yys++ != '\0')
01103     continue;
01104 
01105   return yys - yystr - 1;
01106 }
01107 #  endif
01108 # endif
01109 
01110 # ifndef yystpcpy
01111 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
01112 #   define yystpcpy stpcpy
01113 #  else
01114 
01115 
01116 static char *
01117 #   if defined (__STDC__) || defined (__cplusplus)
01118 yystpcpy (char *yydest, const char *yysrc)
01119 #   else
01120 yystpcpy (yydest, yysrc)
01121      char *yydest;
01122      const char *yysrc;
01123 #   endif
01124 {
01125   register char *yyd = yydest;
01126   register const char *yys = yysrc;
01127 
01128   while ((*yyd++ = *yys++) != '\0')
01129     continue;
01130 
01131   return yyd - 1;
01132 }
01133 #  endif
01134 # endif
01135 #endif
01136 
01137 #line 315 "/usr/share/bison/bison.simple"
01138 
01139 
01140 
01141 
01142 
01143 
01144 
01145 
01146 #ifdef YYPARSE_PARAM
01147 # if defined (__STDC__) || defined (__cplusplus)
01148 #  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
01149 #  define YYPARSE_PARAM_DECL
01150 # else
01151 #  define YYPARSE_PARAM_ARG YYPARSE_PARAM
01152 #  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
01153 # endif
01154 #else 
01155 # define YYPARSE_PARAM_ARG
01156 # define YYPARSE_PARAM_DECL
01157 #endif 
01158 
01159 
01160 #ifdef __GNUC__
01161 # ifdef YYPARSE_PARAM
01162 int yyparse (void *);
01163 # else
01164 int yyparse (void);
01165 # endif
01166 #endif
01167 
01168 
01169 
01170 
01171 #define YY_DECL_NON_LSP_VARIABLES           \
01172                 \
01173 int yychar;                     \
01174                             \
01175    \
01176 YYSTYPE yylval;                     \
01177                             \
01178            \
01179 int yynerrs;
01180 
01181 #if YYLSP_NEEDED
01182 # define YY_DECL_VARIABLES          \
01183 YY_DECL_NON_LSP_VARIABLES           \
01184                         \
01185   \
01186 YYLTYPE yylloc;
01187 #else
01188 # define YY_DECL_VARIABLES          \
01189 YY_DECL_NON_LSP_VARIABLES
01190 #endif
01191 
01192 
01193 
01194 
01195 #if !YYPURE
01196 YY_DECL_VARIABLES
01197 #endif  
01198 
01199 int
01200 yyparse (YYPARSE_PARAM_ARG)
01201      YYPARSE_PARAM_DECL
01202 {
01203   
01204 #if YYPURE
01205   YY_DECL_VARIABLES
01206 #endif  
01207 
01208   register int yystate;
01209   register int yyn;
01210   int yyresult;
01211   
01212   int yyerrstatus;
01213   
01214   int yychar1 = 0;
01215 
01216   
01217 
01218 
01219 
01220 
01221 
01222 
01223 
01224   
01225   short yyssa[YYINITDEPTH];
01226   short *yyss = yyssa;
01227   register short *yyssp;
01228 
01229   
01230   YYSTYPE yyvsa[YYINITDEPTH];
01231   YYSTYPE *yyvs = yyvsa;
01232   register YYSTYPE *yyvsp;
01233 
01234 #if YYLSP_NEEDED
01235   
01236   YYLTYPE yylsa[YYINITDEPTH];
01237   YYLTYPE *yyls = yylsa;
01238   YYLTYPE *yylsp;
01239 #endif
01240 
01241 #if YYLSP_NEEDED
01242 # define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
01243 #else
01244 # define YYPOPSTACK   (yyvsp--, yyssp--)
01245 #endif
01246 
01247   YYSIZE_T yystacksize = YYINITDEPTH;
01248 
01249 
01250   
01251 
01252   YYSTYPE yyval;
01253 #if YYLSP_NEEDED
01254   YYLTYPE kjsyyloc;
01255 #endif
01256 
01257   
01258 
01259   int yylen;
01260 
01261   YYDPRINTF ((stderr, "Starting parse\n"));
01262 
01263   yystate = 0;
01264   yyerrstatus = 0;
01265   yynerrs = 0;
01266   yychar = YYEMPTY;     
01267 
01268   
01269 
01270 
01271 
01272 
01273   yyssp = yyss;
01274   yyvsp = yyvs;
01275 #if YYLSP_NEEDED
01276   yylsp = yyls;
01277 #endif
01278   goto yysetstate;
01279 
01280 
01281 
01282 
01283  yynewstate:
01284   
01285 
01286 
01287   yyssp++;
01288 
01289  yysetstate:
01290   *yyssp = yystate;
01291 
01292   if (yyssp >= yyss + yystacksize - 1)
01293     {
01294       
01295       YYSIZE_T yysize = yyssp - yyss + 1;
01296 
01297 #ifdef yyoverflow
01298       {
01299     
01300 
01301 
01302     YYSTYPE *yyvs1 = yyvs;
01303     short *yyss1 = yyss;
01304 
01305     
01306 
01307 # if YYLSP_NEEDED
01308     YYLTYPE *yyls1 = yyls;
01309     
01310 
01311     yyoverflow ("parser stack overflow",
01312             &yyss1, yysize * sizeof (*yyssp),
01313             &yyvs1, yysize * sizeof (*yyvsp),
01314             &yyls1, yysize * sizeof (*yylsp),
01315             &yystacksize);
01316     yyls = yyls1;
01317 # else
01318     yyoverflow ("parser stack overflow",
01319             &yyss1, yysize * sizeof (*yyssp),
01320             &yyvs1, yysize * sizeof (*yyvsp),
01321             &yystacksize);
01322 # endif
01323     yyss = yyss1;
01324     yyvs = yyvs1;
01325       }
01326 #else 
01327 # ifndef YYSTACK_RELOCATE
01328       goto yyoverflowlab;
01329 # else
01330       
01331       if (yystacksize >= YYMAXDEPTH)
01332     goto yyoverflowlab;
01333       yystacksize *= 2;
01334       if (yystacksize > YYMAXDEPTH)
01335     yystacksize = YYMAXDEPTH;
01336 
01337       {
01338     short *yyss1 = yyss;
01339     union yyalloc *yyptr =
01340       (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01341     if (! yyptr)
01342       goto yyoverflowlab;
01343     YYSTACK_RELOCATE (yyss);
01344     YYSTACK_RELOCATE (yyvs);
01345 # if YYLSP_NEEDED
01346     YYSTACK_RELOCATE (yyls);
01347 # endif
01348 # undef YYSTACK_RELOCATE
01349     if (yyss1 != yyssa)
01350       YYSTACK_FREE (yyss1);
01351       }
01352 # endif
01353 #endif 
01354 
01355       yyssp = yyss + yysize - 1;
01356       yyvsp = yyvs + yysize - 1;
01357 #if YYLSP_NEEDED
01358       yylsp = yyls + yysize - 1;
01359 #endif
01360 
01361       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01362           (unsigned long int) yystacksize));
01363 
01364       if (yyssp >= yyss + yystacksize - 1)
01365     YYABORT;
01366     }
01367 
01368   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01369 
01370   goto yybackup;
01371 
01372 
01373 
01374 
01375 
01376 yybackup:
01377 
01378 
01379 
01380 
01381 
01382   
01383 
01384   yyn = yypact[yystate];
01385   if (yyn == YYFLAG)
01386     goto yydefault;
01387 
01388   
01389 
01390   
01391 
01392 
01393   if (yychar == YYEMPTY)
01394     {
01395       YYDPRINTF ((stderr, "Reading a token: "));
01396       yychar = YYLEX;
01397     }
01398 
01399   
01400 
01401   if (yychar <= 0)      
01402     {
01403       yychar1 = 0;
01404       yychar = YYEOF;       
01405 
01406       YYDPRINTF ((stderr, "Now at end of input.\n"));
01407     }
01408   else
01409     {
01410       yychar1 = YYTRANSLATE (yychar);
01411 
01412 #if YYDEBUG
01413      
01414 
01415       if (yydebug)
01416     {
01417       YYFPRINTF (stderr, "Next token is %d (%s",
01418              yychar, yytname[yychar1]);
01419       
01420 
01421 # ifdef YYPRINT
01422       YYPRINT (stderr, yychar, yylval);
01423 # endif
01424       YYFPRINTF (stderr, ")\n");
01425     }
01426 #endif
01427     }
01428 
01429   yyn += yychar1;
01430   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
01431     goto yydefault;
01432 
01433   yyn = yytable[yyn];
01434 
01435   
01436 
01437 
01438 
01439 
01440 
01441 
01442   if (yyn < 0)
01443     {
01444       if (yyn == YYFLAG)
01445     goto yyerrlab;
01446       yyn = -yyn;
01447       goto yyreduce;
01448     }
01449   else if (yyn == 0)
01450     goto yyerrlab;
01451 
01452   if (yyn == YYFINAL)
01453     YYACCEPT;
01454 
01455   
01456   YYDPRINTF ((stderr, "Shifting token %d (%s), ",
01457           yychar, yytname[yychar1]));
01458 
01459   
01460   if (yychar != YYEOF)
01461     yychar = YYEMPTY;
01462 
01463   *++yyvsp = yylval;
01464 #if YYLSP_NEEDED
01465   *++yylsp = yylloc;
01466 #endif
01467 
01468   
01469 
01470   if (yyerrstatus)
01471     yyerrstatus--;
01472 
01473   yystate = yyn;
01474   goto yynewstate;
01475 
01476 
01477 
01478 
01479 
01480 yydefault:
01481   yyn = yydefact[yystate];
01482   if (yyn == 0)
01483     goto yyerrlab;
01484   goto yyreduce;
01485 
01486 
01487 
01488 
01489 
01490 yyreduce:
01491   
01492   yylen = yyr2[yyn];
01493 
01494   
01495 
01496 
01497 
01498 
01499 
01500 
01501 
01502   yyval = yyvsp[1-yylen];
01503 
01504 #if YYLSP_NEEDED
01505   
01506 
01507   kjsyyloc = yylsp[1-yylen];
01508   YYLLOC_DEFAULT (kjsyyloc, (yylsp - yylen), yylen);
01509 #endif
01510 
01511 #if YYDEBUG
01512   
01513 
01514   if (yydebug)
01515     {
01516       int yyi;
01517 
01518       YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
01519          yyn, yyrline[yyn]);
01520 
01521       
01522       for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
01523     YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
01524       YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
01525     }
01526 #endif
01527 
01528   switch (yyn) {
01529 
01530 case 1:
01531 #line 166 "grammar.y"
01532 { yyval.node = new NullNode(); ;
01533     break;}
01534 case 2:
01535 #line 167 "grammar.y"
01536 { yyval.node = new BooleanNode(true); ;
01537     break;}
01538 case 3:
01539 #line 168 "grammar.y"
01540 { yyval.node = new BooleanNode(false); ;
01541     break;}
01542 case 4:
01543 #line 169 "grammar.y"
01544 { yyval.node = new NumberNode(yyvsp[0].dval); ;
01545     break;}
01546 case 5:
01547 #line 170 "grammar.y"
01548 { yyval.node = new StringNode(yyvsp[0].ustr); ;
01549     break;}
01550 case 6:
01551 #line 171 "grammar.y"
01552 { Lexer *l = Lexer::curr();
01553                                      if (!l->scanRegExp()) YYABORT;
01554                                      yyval.node = new RegExpNode(l->pattern,l->flags);;
01555     break;}
01556 case 7:
01557 #line 175 "grammar.y"
01558 { Lexer *l = Lexer::curr();
01559                                      if (!l->scanRegExp()) YYABORT;
01560                                      yyval.node = new RegExpNode(UString('=')+l->pattern,l->flags);;
01561     break;}
01562 case 8:
01563 #line 181 "grammar.y"
01564 { yyval.node = new ThisNode(); ;
01565     break;}
01566 case 9:
01567 #line 182 "grammar.y"
01568 { yyval.node = new ResolveNode(*yyvsp[0].ident); ;
01569     break;}
01570 case 12:
01571 #line 185 "grammar.y"
01572 { yyval.node = new GroupNode(yyvsp[-1].node); ;
01573     break;}
01574 case 13:
01575 #line 186 "grammar.y"
01576 { yyval.node = new ObjectLiteralNode(); ;
01577     break;}
01578 case 14:
01579 #line 187 "grammar.y"
01580 { yyval.node = new ObjectLiteralNode(yyvsp[-1].plist); ;
01581     break;}
01582 case 15:
01583 #line 191 "grammar.y"
01584 { yyval.node = new ArrayNode(yyvsp[-1].ival); ;
01585     break;}
01586 case 16:
01587 #line 192 "grammar.y"
01588 { yyval.node = new ArrayNode(yyvsp[-1].elm); ;
01589     break;}
01590 case 17:
01591 #line 193 "grammar.y"
01592 { yyval.node = new ArrayNode(yyvsp[-1].ival, yyvsp[-3].elm); ;
01593     break;}
01594 case 18:
01595 #line 197 "grammar.y"
01596 { yyval.elm = new ElementNode(yyvsp[-1].ival, yyvsp[0].node); ;
01597     break;}
01598 case 19:
01599 #line 199 "grammar.y"
01600 { yyval.elm = new ElementNode(yyvsp[-3].elm, yyvsp[-1].ival, yyvsp[0].node); ;
01601     break;}
01602 case 20:
01603 #line 203 "grammar.y"
01604 { yyval.ival = 0; ;
01605     break;}
01606 case 22:
01607 #line 208 "grammar.y"
01608 { yyval.ival = 1; ;
01609     break;}
01610 case 23:
01611 #line 209 "grammar.y"
01612 { yyval.ival = yyvsp[-1].ival + 1; ;
01613     break;}
01614 case 24:
01615 #line 213 "grammar.y"
01616 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node); ;
01617     break;}
01618 case 25:
01619 #line 215 "grammar.y"
01620 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node, yyvsp[-4].plist); ;
01621     break;}
01622 case 26:
01623 #line 219 "grammar.y"
01624 { yyval.pnode = new PropertyNode(*yyvsp[0].ident); ;
01625     break;}
01626 case 27:
01627 #line 220 "grammar.y"
01628 { yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); ;
01629     break;}
01630 case 28:
01631 #line 221 "grammar.y"
01632 { yyval.pnode = new PropertyNode(yyvsp[0].dval); ;
01633     break;}
01634 case 31:
01635 #line 227 "grammar.y"
01636 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
01637     break;}
01638 case 32:
01639 #line 228 "grammar.y"
01640 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ;
01641     break;}
01642 case 33:
01643 #line 229 "grammar.y"
01644 { yyval.node = new NewExprNode(yyvsp[-1].node, yyvsp[0].args); ;
01645     break;}
01646 case 35:
01647 #line 234 "grammar.y"
01648 { yyval.node = new NewExprNode(yyvsp[0].node); ;
01649     break;}
01650 case 36:
01651 #line 238 "grammar.y"
01652 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
01653     break;}
01654 case 37:
01655 #line 239 "grammar.y"
01656 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
01657     break;}
01658 case 38:
01659 #line 240 "grammar.y"
01660 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
01661     break;}
01662 case 39:
01663 #line 241 "grammar.y"
01664 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ;
01665     break;}
01666 case 40:
01667 #line 245 "grammar.y"
01668 { yyval.args = new ArgumentsNode(); ;
01669     break;}
01670 case 41:
01671 #line 246 "grammar.y"
01672 { yyval.args = new ArgumentsNode(yyvsp[-1].alist); ;
01673     break;}
01674 case 42:
01675 #line 250 "grammar.y"
01676 { yyval.alist = new ArgumentListNode(yyvsp[0].node); ;
01677     break;}
01678 case 43:
01679 #line 251 "grammar.y"
01680 { yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ;
01681     break;}
01682 case 47:
01683 #line 261 "grammar.y"
01684 { yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ;
01685     break;}
01686 case 48:
01687 #line 262 "grammar.y"
01688 { yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ;
01689     break;}
01690 case 50:
01691 #line 267 "grammar.y"
01692 { yyval.node = new DeleteNode(yyvsp[0].node); ;
01693     break;}
01694 case 51:
01695 #line 268 "grammar.y"
01696 { yyval.node = new VoidNode(yyvsp[0].node); ;
01697     break;}
01698 case 52:
01699 #line 269 "grammar.y"
01700 { yyval.node = new TypeOfNode(yyvsp[0].node); ;
01701     break;}
01702 case 53:
01703 #line 270 "grammar.y"
01704 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
01705     break;}
01706 case 54:
01707 #line 271 "grammar.y"
01708 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
01709     break;}
01710 case 55:
01711 #line 272 "grammar.y"
01712 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
01713     break;}
01714 case 56:
01715 #line 273 "grammar.y"
01716 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
01717     break;}
01718 case 57:
01719 #line 274 "grammar.y"
01720 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
01721     break;}
01722 case 58:
01723 #line 275 "grammar.y"
01724 { yyval.node = new NegateNode(yyvsp[0].node); ;
01725     break;}
01726 case 59:
01727 #line 276 "grammar.y"
01728 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
01729     break;}
01730 case 60:
01731 #line 277 "grammar.y"
01732 { yyval.node = new LogicalNotNode(yyvsp[0].node); ;
01733     break;}
01734 case 62:
01735 #line 282 "grammar.y"
01736 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;
01737     break;}
01738 case 63:
01739 #line 283 "grammar.y"
01740 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;
01741     break;}
01742 case 64:
01743 #line 284 "grammar.y"
01744 { yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ;
01745     break;}
01746 case 66:
01747 #line 289 "grammar.y"
01748 { yyval.node = AddNode::create(yyvsp[-2].node, yyvsp[0].node, '+'); ;
01749     break;}
01750 case 67:
01751 #line 290 "grammar.y"
01752 { yyval.node = AddNode::create(yyvsp[-2].node, yyvsp[0].node, '-'); ;
01753     break;}
01754 case 69:
01755 #line 295 "grammar.y"
01756 { yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;
01757     break;}
01758 case 70:
01759 #line 296 "grammar.y"
01760 { yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;
01761     break;}
01762 case 71:
01763 #line 297 "grammar.y"
01764 { yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ;
01765     break;}
01766 case 73:
01767 #line 303 "grammar.y"
01768 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
01769     break;}
01770 case 74:
01771 #line 305 "grammar.y"
01772 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
01773     break;}
01774 case 75:
01775 #line 307 "grammar.y"
01776 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
01777     break;}
01778 case 76:
01779 #line 309 "grammar.y"
01780 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
01781     break;}
01782 case 77:
01783 #line 311 "grammar.y"
01784 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
01785     break;}
01786 case 78:
01787 #line 313 "grammar.y"
01788 { yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ;
01789     break;}
01790 case 80:
01791 #line 318 "grammar.y"
01792 { yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ;
01793     break;}
01794 case 81:
01795 #line 319 "grammar.y"
01796 { yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;
01797     break;}
01798 case 82:
01799 #line 320 "grammar.y"
01800 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;
01801     break;}
01802 case 83:
01803 #line 321 "grammar.y"
01804 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);;
01805     break;}
01806 case 85:
01807 #line 326 "grammar.y"
01808 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ;
01809     break;}
01810 case 87:
01811 #line 331 "grammar.y"
01812 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ;
01813     break;}
01814 case 89:
01815 #line 336 "grammar.y"
01816 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ;
01817     break;}
01818 case 91:
01819 #line 342 "grammar.y"
01820 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ;
01821     break;}
01822 case 93:
01823 #line 348 "grammar.y"
01824 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ;
01825     break;}
01826 case 95:
01827 #line 354 "grammar.y"
01828 { yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
01829     break;}
01830 case 97:
01831 #line 360 "grammar.y"
01832 { yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
01833     break;}
01834 case 98:
01835 #line 364 "grammar.y"
01836 { yyval.op = OpEqual; ;
01837     break;}
01838 case 99:
01839 #line 365 "grammar.y"
01840 { yyval.op = OpPlusEq; ;
01841     break;}
01842 case 100:
01843 #line 366 "grammar.y"
01844 { yyval.op = OpMinusEq; ;
01845     break;}
01846 case 101:
01847 #line 367 "grammar.y"
01848 { yyval.op = OpMultEq; ;
01849     break;}
01850 case 102:
01851 #line 368 "grammar.y"
01852 { yyval.op = OpDivEq; ;
01853     break;}
01854 case 103:
01855 #line 369 "grammar.y"
01856 { yyval.op = OpLShift; ;
01857     break;}
01858 case 104:
01859 #line 370 "grammar.y"
01860 { yyval.op = OpRShift; ;
01861     break;}
01862 case 105:
01863 #line 371 "grammar.y"
01864 { yyval.op = OpURShift; ;
01865     break;}
01866 case 106:
01867 #line 372 "grammar.y"
01868 { yyval.op = OpAndEq; ;
01869     break;}
01870 case 107:
01871 #line 373 "grammar.y"
01872 { yyval.op = OpXOrEq; ;
01873     break;}
01874 case 108:
01875 #line 374 "grammar.y"
01876 { yyval.op = OpOrEq; ;
01877     break;}
01878 case 109:
01879 #line 375 "grammar.y"
01880 { yyval.op = OpModEq; ;
01881     break;}
01882 case 111:
01883 #line 380 "grammar.y"
01884 { yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ;
01885     break;}
01886 case 126:
01887 #line 401 "grammar.y"
01888 { yyval.stat = new BlockNode(0); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
01889     break;}
01890 case 127:
01891 #line 402 "grammar.y"
01892 { yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
01893     break;}
01894 case 128:
01895 #line 406 "grammar.y"
01896 { yyval.slist = new StatListNode(yyvsp[0].stat); ;
01897     break;}
01898 case 129:
01899 #line 407 "grammar.y"
01900 { yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
01901     break;}
01902 case 130:
01903 #line 411 "grammar.y"
01904 { yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
01905                                       DBG(yyval.stat, yylsp[-2], yylsp[0]); ;
01906     break;}
01907 case 131:
01908 #line 413 "grammar.y"
01909 { if (automatic()) {
01910                                           yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
01911                       DBG(yyval.stat, yylsp[-2], yylsp[-1]);
01912                                         } else {
01913                       YYABORT;
01914                     }
01915                                       ;
01916     break;}
01917 case 132:
01918 #line 423 "grammar.y"
01919 { yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;
01920     break;}
01921 case 133:
01922 #line 425 "grammar.y"
01923 { yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
01924     break;}
01925 case 134:
01926 #line 429 "grammar.y"
01927 { yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); ;
01928     break;}
01929 case 135:
01930 #line 430 "grammar.y"
01931 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); ;
01932     break;}
01933 case 136:
01934 #line 434 "grammar.y"
01935 { yyval.init = new AssignExprNode(yyvsp[0].node); ;
01936     break;}
01937 case 137:
01938 #line 438 "grammar.y"
01939 { yyval.stat = new EmptyStatementNode(); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
01940     break;}
01941 case 138:
01942 #line 442 "grammar.y"
01943 { yyval.stat = new ExprStatementNode(yyvsp[-1].node);
01944                                      DBG(yyval.stat, yylsp[-1], yylsp[0]); ;
01945     break;}
01946 case 139:
01947 #line 444 "grammar.y"
01948 { if (automatic()) {
01949                                        yyval.stat = new ExprStatementNode(yyvsp[-1].node);
01950                        DBG(yyval.stat, yylsp[-1], yylsp[-1]);
01951                                      } else
01952                        YYABORT; ;
01953     break;}
01954 case 140:
01955 #line 452 "grammar.y"
01956 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
01957     break;}
01958 case 141:
01959 #line 454 "grammar.y"
01960 { yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
01961     break;}
01962 case 142:
01963 #line 458 "grammar.y"
01964 { yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);;
01965     break;}
01966 case 143:
01967 #line 459 "grammar.y"
01968 { yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
01969     break;}
01970 case 144:
01971 #line 461 "grammar.y"
01972 { yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
01973                                  DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
01974     break;}
01975 case 145:
01976 #line 464 "grammar.y"
01977 { yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
01978                                  DBG(yyval.stat,yylsp[-9],yylsp[-1]); ;
01979     break;}
01980 case 146:
01981 #line 467 "grammar.y"
01982 { yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat);
01983                                  DBG(yyval.stat,yylsp[-6],yylsp[-1]); ;
01984     break;}
01985 case 147:
01986 #line 470 "grammar.y"
01987 { yyval.stat = new ForInNode(*yyvsp[-4].ident,0,yyvsp[-2].node,yyvsp[0].stat);
01988                                  DBG(yyval.stat,yylsp[-7],yylsp[-1]); ;
01989     break;}
01990 case 148:
01991 #line 473 "grammar.y"
01992 { yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat);
01993                                  DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
01994     break;}
01995 case 149:
01996 #line 478 "grammar.y"
01997 { yyval.node = 0; ;
01998     break;}
01999 case 151:
02000 #line 483 "grammar.y"
02001 { yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
02002     break;}
02003 case 152:
02004 #line 484 "grammar.y"
02005 { if (automatic()) {
02006                                        yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
02007                                      } else
02008                        YYABORT; ;
02009     break;}
02010 case 153:
02011 #line 488 "grammar.y"
02012 { yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02013     break;}
02014 case 154:
02015 #line 489 "grammar.y"
02016 { if (automatic()) {
02017                                        yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]);
02018                                      } else
02019                        YYABORT; ;
02020     break;}
02021 case 155:
02022 #line 496 "grammar.y"
02023 { yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
02024     break;}
02025 case 156:
02026 #line 497 "grammar.y"
02027 { if (automatic()) {
02028                                        yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
02029                                      } else
02030                        YYABORT; ;
02031     break;}
02032 case 157:
02033 #line 501 "grammar.y"
02034 { yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02035     break;}
02036 case 158:
02037 #line 502 "grammar.y"
02038 { if (automatic()) {
02039                                        yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
02040                                      } else
02041                        YYABORT;
02042                                    ;
02043     break;}
02044 case 159:
02045 #line 510 "grammar.y"
02046 { yyval.stat = new ReturnNode(0); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
02047     break;}
02048 case 160:
02049 #line 511 "grammar.y"
02050 { if (automatic()) {
02051                                        yyval.stat = new ReturnNode(0); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
02052                                      } else
02053                        YYABORT; ;
02054     break;}
02055 case 161:
02056 #line 515 "grammar.y"
02057 { yyval.stat = new ReturnNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02058     break;}
02059 case 162:
02060 #line 516 "grammar.y"
02061 { if (automatic()) {
02062                                        yyval.stat = new ReturnNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[-2]);
02063                                      }
02064                                      else
02065                        YYABORT; ;
02066     break;}
02067 case 163:
02068 #line 524 "grammar.y"
02069 { yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat);
02070                                      DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
02071     break;}
02072 case 164:
02073 #line 529 "grammar.y"
02074 { yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk);
02075                                      DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
02076     break;}
02077 case 165:
02078 #line 534 "grammar.y"
02079 { yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0, 0); ;
02080     break;}
02081 case 166:
02082 #line 536 "grammar.y"
02083 { yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
02084     break;}
02085 case 167:
02086 #line 540 "grammar.y"
02087 { yyval.clist = 0; ;
02088     break;}
02089 case 169:
02090 #line 545 "grammar.y"
02091 { yyval.clist = new ClauseListNode(yyvsp[0].ccl); ;
02092     break;}
02093 case 170:
02094 #line 546 "grammar.y"
02095 { yyval.clist = new ClauseListNode(yyvsp[-1].clist, yyvsp[0].ccl); ;
02096     break;}
02097 case 171:
02098 #line 550 "grammar.y"
02099 { yyval.ccl = new CaseClauseNode(yyvsp[-1].node); ;
02100     break;}
02101 case 172:
02102 #line 551 "grammar.y"
02103 { yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
02104     break;}
02105 case 173:
02106 #line 555 "grammar.y"
02107 { yyval.ccl = new CaseClauseNode(0); ;
02108     break;}
02109 case 174:
02110 #line 556 "grammar.y"
02111 { yyval.ccl = new CaseClauseNode(0, yyvsp[0].slist); ;
02112     break;}
02113 case 175:
02114 #line 560 "grammar.y"
02115 { yyvsp[0].stat->pushLabel(*yyvsp[-2].ident);
02116                                      yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat); DBG(yyval.stat,yylsp[-2],yylsp[-1]); ;
02117     break;}
02118 case 176:
02119 #line 565 "grammar.y"
02120 { yyval.stat = new ThrowNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02121     break;}
02122 case 177:
02123 #line 566 "grammar.y"
02124 { if (automatic()) {
02125                                        yyval.stat = new ThrowNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[-2]);
02126                                      } else {
02127                        YYABORT; } ;
02128     break;}
02129 case 178:
02130 #line 573 "grammar.y"
02131 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); DBG(yyval.stat,yylsp[-2],yylsp[-2]); ;
02132     break;}
02133 case 179:
02134 #line 574 "grammar.y"
02135 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); DBG(yyval.stat,yylsp[-2],yylsp[-2]); ;
02136     break;}
02137 case 180:
02138 #line 575 "grammar.y"
02139 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); DBG(yyval.stat,yylsp[-3],yylsp[-3]); ;
02140     break;}
02141 case 181:
02142 #line 579 "grammar.y"
02143 { CatchNode *c; yyval.cnode = c = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat);
02144                      DBG(c,yylsp[-4],yylsp[-1]); ;
02145     break;}
02146 case 182:
02147 #line 584 "grammar.y"
02148 { FinallyNode *f; yyval.fnode = f = new FinallyNode(yyvsp[0].stat); DBG(f,yylsp[-1],yylsp[-1]); ;
02149     break;}
02150 case 184:
02151 #line 590 "grammar.y"
02152 { yyval.func = yyvsp[0].func; ;
02153     break;}
02154 case 185:
02155 #line 594 "grammar.y"
02156 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); DBG(yyval.func,yylsp[-4],yylsp[-1]); ;
02157     break;}
02158 case 186:
02159 #line 596 "grammar.y"
02160 { yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); DBG(yyval.func,yylsp[-5],yylsp[-1]); ;
02161     break;}
02162 case 187:
02163 #line 600 "grammar.y"
02164 { yyval.node = new FuncExprNode(yyvsp[0].body); ;
02165     break;}
02166 case 188:
02167 #line 602 "grammar.y"
02168 { yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
02169     break;}
02170 case 189:
02171 #line 607 "grammar.y"
02172 { yyval.param = new ParameterNode(*yyvsp[0].ident); ;
02173     break;}
02174 case 190:
02175 #line 608 "grammar.y"
02176 { yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ;
02177     break;}
02178 case 191:
02179 #line 612 "grammar.y"
02180 { yyval.body = new FunctionBodyNode(0);
02181                                  DBG(yyval.body, yylsp[-1], yylsp[0]);;
02182     break;}
02183 case 192:
02184 #line 614 "grammar.y"
02185 { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
02186                                  DBG(yyval.body, yylsp[-2], yylsp[0]);;
02187     break;}
02188 case 193:
02189 #line 619 "grammar.y"
02190 { yyval.prog = new FunctionBodyNode(0);
02191                                      yyval.prog->setLoc(0, 0, Parser::source);
02192                                      Parser::progNode = yyval.prog; ;
02193     break;}
02194 case 194:
02195 #line 622 "grammar.y"
02196 { yyval.prog = new FunctionBodyNode(yyvsp[0].srcs);
02197                                      Parser::progNode = yyval.prog; ;
02198     break;}
02199 case 195:
02200 #line 627 "grammar.y"
02201 { yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
02202     break;}
02203 case 196:
02204 #line 628 "grammar.y"
02205 { yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
02206     break;}
02207 case 197:
02208 #line 632 "grammar.y"
02209 { yyval.stat = yyvsp[0].stat; ;
02210     break;}
02211 case 198:
02212 #line 633 "grammar.y"
02213 { yyval.stat = yyvsp[0].func; ;
02214     break;}
02215 }
02216 
02217 #line 705 "/usr/share/bison/bison.simple"
02218 
02219 
02220   yyvsp -= yylen;
02221   yyssp -= yylen;
02222 #if YYLSP_NEEDED
02223   yylsp -= yylen;
02224 #endif
02225 
02226 #if YYDEBUG
02227   if (yydebug)
02228     {
02229       short *yyssp1 = yyss - 1;
02230       YYFPRINTF (stderr, "state stack now");
02231       while (yyssp1 != yyssp)
02232     YYFPRINTF (stderr, " %d", *++yyssp1);
02233       YYFPRINTF (stderr, "\n");
02234     }
02235 #endif
02236 
02237   *++yyvsp = yyval;
02238 #if YYLSP_NEEDED
02239   *++yylsp = kjsyyloc;
02240 #endif
02241 
02242   
02243 
02244 
02245 
02246   yyn = yyr1[yyn];
02247 
02248   yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
02249   if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02250     yystate = yytable[yystate];
02251   else
02252     yystate = yydefgoto[yyn - YYNTBASE];
02253 
02254   goto yynewstate;
02255 
02256 
02257 
02258 
02259 
02260 yyerrlab:
02261   
02262   if (!yyerrstatus)
02263     {
02264       ++yynerrs;
02265 
02266 #ifdef YYERROR_VERBOSE
02267       yyn = yypact[yystate];
02268 
02269       if (yyn > YYFLAG && yyn < YYLAST)
02270     {
02271       YYSIZE_T yysize = 0;
02272       char *yymsg;
02273       int yyx, yycount;
02274 
02275       yycount = 0;
02276       
02277 
02278       for (yyx = yyn < 0 ? -yyn : 0;
02279            yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
02280         if (yycheck[yyx + yyn] == yyx)
02281           yysize += yystrlen (yytname[yyx]) + 15, yycount++;
02282       yysize += yystrlen ("parse error, unexpected ") + 1;
02283       yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
02284       yymsg = (char *) YYSTACK_ALLOC (yysize);
02285       if (yymsg != 0)
02286         {
02287           char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
02288           yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
02289 
02290           if (yycount < 5)
02291         {
02292           yycount = 0;
02293           for (yyx = yyn < 0 ? -yyn : 0;
02294                yyx < (int) (sizeof (yytname) / sizeof (char *));
02295                yyx++)
02296             if (yycheck[yyx + yyn] == yyx)
02297               {
02298             const char *yyq = ! yycount ? ", expecting " : " or ";
02299             yyp = yystpcpy (yyp, yyq);
02300             yyp = yystpcpy (yyp, yytname[yyx]);
02301             yycount++;
02302               }
02303         }
02304           yyerror (yymsg);
02305           YYSTACK_FREE (yymsg);
02306         }
02307       else
02308         yyerror ("parse error; also virtual memory exhausted");
02309     }
02310       else
02311 #endif 
02312     yyerror ("parse error");
02313     }
02314   goto yyerrlab1;
02315 
02316 
02317 
02318 
02319 
02320 yyerrlab1:
02321   if (yyerrstatus == 3)
02322     {
02323       
02324 
02325 
02326       
02327       if (yychar == YYEOF)
02328     YYABORT;
02329       YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
02330           yychar, yytname[yychar1]));
02331       yychar = YYEMPTY;
02332     }
02333 
02334   
02335 
02336 
02337   yyerrstatus = 3;      
02338 
02339   goto yyerrhandle;
02340 
02341 
02342 
02343 
02344 
02345 
02346 yyerrdefault:
02347 #if 0
02348   
02349 
02350 
02351   
02352   yyn = yydefact[yystate];
02353   if (yyn)
02354     goto yydefault;
02355 #endif
02356 
02357 
02358 
02359 
02360 
02361 
02362 yyerrpop:
02363   if (yyssp == yyss)
02364     YYABORT;
02365   yyvsp--;
02366   yystate = *--yyssp;
02367 #if YYLSP_NEEDED
02368   yylsp--;
02369 #endif
02370 
02371 #if YYDEBUG
02372   if (yydebug)
02373     {
02374       short *yyssp1 = yyss - 1;
02375       YYFPRINTF (stderr, "Error: state stack now");
02376       while (yyssp1 != yyssp)
02377     YYFPRINTF (stderr, " %d", *++yyssp1);
02378       YYFPRINTF (stderr, "\n");
02379     }
02380 #endif
02381 
02382 
02383 
02384 
02385 yyerrhandle:
02386   yyn = yypact[yystate];
02387   if (yyn == YYFLAG)
02388     goto yyerrdefault;
02389 
02390   yyn += YYTERROR;
02391   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
02392     goto yyerrdefault;
02393 
02394   yyn = yytable[yyn];
02395   if (yyn < 0)
02396     {
02397       if (yyn == YYFLAG)
02398     goto yyerrpop;
02399       yyn = -yyn;
02400       goto yyreduce;
02401     }
02402   else if (yyn == 0)
02403     goto yyerrpop;
02404 
02405   if (yyn == YYFINAL)
02406     YYACCEPT;
02407 
02408   YYDPRINTF ((stderr, "Shifting error token, "));
02409 
02410   *++yyvsp = yylval;
02411 #if YYLSP_NEEDED
02412   *++yylsp = yylloc;
02413 #endif
02414 
02415   yystate = yyn;
02416   goto yynewstate;
02417 
02418 
02419 
02420 
02421 
02422 yyacceptlab:
02423   yyresult = 0;
02424   goto yyreturn;
02425 
02426 
02427 
02428 
02429 yyabortlab:
02430   yyresult = 1;
02431   goto yyreturn;
02432 
02433 
02434 
02435 
02436 yyoverflowlab:
02437   yyerror ("parser stack overflow");
02438   yyresult = 2;
02439   
02440 
02441 yyreturn:
02442 #ifndef yyoverflow
02443   if (yyss != yyssa)
02444     YYSTACK_FREE (yyss);
02445 #endif
02446   return yyresult;
02447 }
02448 #line 636 "grammar.y"
02449 
02450 
02451 int yyerror (const char *)  
02452 {
02453 
02454 
02455   return 1;
02456 }
02457 
02458 
02459 bool automatic()
02460 {
02461   if (Lexer::curr()->hadError())
02462     return false;
02463   if (yychar == '}' || yychar == 0)
02464     return true;
02465   else if (Lexer::curr()->prevTerminator())
02466     return true;
02467 
02468   return false;
02469 }