dcop Library API Documentation

yacc.cc

00001 /* A Bison parser, made by GNU Bison 1.875d.  */
00002 
00003 /* Skeleton parser for Yacc-like parsing with Bison,
00004    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
00005 
00006    This program is free software; you can redistribute it and/or modify
00007    it under the terms of the GNU General Public License as published by
00008    the Free Software Foundation; either version 2, or (at your option)
00009    any later version.
00010 
00011    This program is distributed in the hope that it will be useful,
00012    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014    GNU General Public License for more details.
00015 
00016    You should have received a copy of the GNU General Public License
00017    along with this program; if not, write to the Free Software
00018    Foundation, Inc., 59 Temple Place - Suite 330,
00019    Boston, MA 02111-1307, USA.  */
00020 
00021 /* As a special exception, when this file is copied by Bison into a
00022    Bison output file, you may use that output file without restriction.
00023    This special exception was added by the Free Software Foundation
00024    in version 1.24 of Bison.  */
00025 
00026 /* Written by Richard Stallman by simplifying the original so called
00027    ``semantic'' parser.  */
00028 
00029 /* All symbols defined below should begin with yy or YY, to avoid
00030    infringing on user name space.  This should be done even for local
00031    variables, as they might otherwise be expanded by user macros.
00032    There are some unavoidable exceptions within include files to
00033    define necessary library symbols; they are noted "INFRINGES ON
00034    USER NAME SPACE" below.  */
00035 
00036 /* Identify Bison output.  */
00037 #define YYBISON 1
00038 
00039 /* Skeleton name.  */
00040 #define YYSKELETON_NAME "yacc.c"
00041 
00042 /* Pure parsers.  */
00043 #define YYPURE 0
00044 
00045 /* Using locations.  */
00046 #define YYLSP_NEEDED 0
00047 
00048 
00049 
00050 /* Tokens.  */
00051 #ifndef YYTOKENTYPE
00052 # define YYTOKENTYPE
00053    /* Put the tokens into the symbol table, so that GDB and other debuggers
00054       know about them.  */
00055    enum yytokentype {
00056      T_UNIMPORTANT = 258,
00057      T_CHARACTER_LITERAL = 259,
00058      T_DOUBLE_LITERAL = 260,
00059      T_IDENTIFIER = 261,
00060      T_INTEGER_LITERAL = 262,
00061      T_STRING_LITERAL = 263,
00062      T_INCLUDE = 264,
00063      T_CLASS = 265,
00064      T_STRUCT = 266,
00065      T_LEFT_CURLY_BRACKET = 267,
00066      T_LEFT_PARANTHESIS = 268,
00067      T_RIGHT_CURLY_BRACKET = 269,
00068      T_RIGHT_PARANTHESIS = 270,
00069      T_COLON = 271,
00070      T_SEMICOLON = 272,
00071      T_PUBLIC = 273,
00072      T_PROTECTED = 274,
00073      T_TRIPE_DOT = 275,
00074      T_PRIVATE = 276,
00075      T_VIRTUAL = 277,
00076      T_CONST = 278,
00077      T_INLINE = 279,
00078      T_FRIEND = 280,
00079      T_RETURN = 281,
00080      T_SIGNAL = 282,
00081      T_SLOT = 283,
00082      T_TYPEDEF = 284,
00083      T_PLUS = 285,
00084      T_MINUS = 286,
00085      T_COMMA = 287,
00086      T_ASTERISK = 288,
00087      T_TILDE = 289,
00088      T_LESS = 290,
00089      T_GREATER = 291,
00090      T_AMPERSAND = 292,
00091      T_EXTERN = 293,
00092      T_EXTERN_C = 294,
00093      T_ACCESS = 295,
00094      T_ENUM = 296,
00095      T_NAMESPACE = 297,
00096      T_USING = 298,
00097      T_UNKNOWN = 299,
00098      T_TRIPLE_DOT = 300,
00099      T_TRUE = 301,
00100      T_FALSE = 302,
00101      T_STATIC = 303,
00102      T_MUTABLE = 304,
00103      T_EQUAL = 305,
00104      T_SCOPE = 306,
00105      T_NULL = 307,
00106      T_INT = 308,
00107      T_ARRAY_OPEN = 309,
00108      T_ARRAY_CLOSE = 310,
00109      T_CHAR = 311,
00110      T_DCOP = 312,
00111      T_DCOP_AREA = 313,
00112      T_DCOP_SIGNAL_AREA = 314,
00113      T_SIGNED = 315,
00114      T_UNSIGNED = 316,
00115      T_LONG = 317,
00116      T_SHORT = 318,
00117      T_FUNOPERATOR = 319,
00118      T_MISCOPERATOR = 320,
00119      T_SHIFT = 321
00120    };
00121 #endif
00122 #define T_UNIMPORTANT 258
00123 #define T_CHARACTER_LITERAL 259
00124 #define T_DOUBLE_LITERAL 260
00125 #define T_IDENTIFIER 261
00126 #define T_INTEGER_LITERAL 262
00127 #define T_STRING_LITERAL 263
00128 #define T_INCLUDE 264
00129 #define T_CLASS 265
00130 #define T_STRUCT 266
00131 #define T_LEFT_CURLY_BRACKET 267
00132 #define T_LEFT_PARANTHESIS 268
00133 #define T_RIGHT_CURLY_BRACKET 269
00134 #define T_RIGHT_PARANTHESIS 270
00135 #define T_COLON 271
00136 #define T_SEMICOLON 272
00137 #define T_PUBLIC 273
00138 #define T_PROTECTED 274
00139 #define T_TRIPE_DOT 275
00140 #define T_PRIVATE 276
00141 #define T_VIRTUAL 277
00142 #define T_CONST 278
00143 #define T_INLINE 279
00144 #define T_FRIEND 280
00145 #define T_RETURN 281
00146 #define T_SIGNAL 282
00147 #define T_SLOT 283
00148 #define T_TYPEDEF 284
00149 #define T_PLUS 285
00150 #define T_MINUS 286
00151 #define T_COMMA 287
00152 #define T_ASTERISK 288
00153 #define T_TILDE 289
00154 #define T_LESS 290
00155 #define T_GREATER 291
00156 #define T_AMPERSAND 292
00157 #define T_EXTERN 293
00158 #define T_EXTERN_C 294
00159 #define T_ACCESS 295
00160 #define T_ENUM 296
00161 #define T_NAMESPACE 297
00162 #define T_USING 298
00163 #define T_UNKNOWN 299
00164 #define T_TRIPLE_DOT 300
00165 #define T_TRUE 301
00166 #define T_FALSE 302
00167 #define T_STATIC 303
00168 #define T_MUTABLE 304
00169 #define T_EQUAL 305
00170 #define T_SCOPE 306
00171 #define T_NULL 307
00172 #define T_INT 308
00173 #define T_ARRAY_OPEN 309
00174 #define T_ARRAY_CLOSE 310
00175 #define T_CHAR 311
00176 #define T_DCOP 312
00177 #define T_DCOP_AREA 313
00178 #define T_DCOP_SIGNAL_AREA 314
00179 #define T_SIGNED 315
00180 #define T_UNSIGNED 316
00181 #define T_LONG 317
00182 #define T_SHORT 318
00183 #define T_FUNOPERATOR 319
00184 #define T_MISCOPERATOR 320
00185 #define T_SHIFT 321
00186 
00187 
00188 
00189 
00190 /* Copy the first part of user declarations.  */
00191 #line 1 "yacc.yy"
00192 
00193 /*****************************************************************
00194 Copyright (c) 1999 Torben Weis <weis@kde.org>
00195 Copyright (c) 2000 Matthias Ettrich <ettrich@kde.org>
00196 
00197 Permission is hereby granted, free of charge, to any person obtaining a copy
00198 of this software and associated documentation files (the "Software"), to deal
00199 in the Software without restriction, including without limitation the rights
00200 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00201 copies of the Software, and to permit persons to whom the Software is
00202 furnished to do so, subject to the following conditions:
00203 
00204 The above copyright notice and this permission notice shall be included in
00205 all copies or substantial portions of the Software.
00206 
00207 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00208 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00209 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
00210 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
00211 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
00212 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00213 
00214 ******************************************************************/
00215 
00216 #include <config.h>
00217 
00218 // Workaround for a bison issue:
00219 // bison.simple concludes from _GNU_SOURCE that stpcpy is available,
00220 // while GNU string.h only exposes it if __USE_GNU is set.
00221 #ifdef _GNU_SOURCE
00222 #define __USE_GNU 1
00223 #endif
00224 
00225 #include <stdlib.h>
00226 #include <stdio.h>
00227 #include <assert.h>
00228 
00229 #include <qstring.h>
00230 
00231 #define AMP_ENTITY "&amp;"
00232 #define YYERROR_VERBOSE
00233 
00234 extern int yylex();
00235 
00236 // extern QString idl_lexFile;
00237 extern int idl_line_no;
00238 extern int function_mode;
00239 
00240 static int dcop_area = 0;
00241 static int dcop_signal_area = 0;
00242 
00243 static QString in_namespace( "" );
00244 
00245 void dcopidlInitFlex( const char *_code );
00246 
00247 void yyerror( const char *s )
00248 {
00249     qDebug( "In line %i : %s", idl_line_no, s );
00250         exit(1);
00251     //   theParser->parse_error( idl_lexFile, s, idl_line_no );
00252 }
00253 
00254 
00255 
00256 /* Enabling traces.  */
00257 #ifndef YYDEBUG
00258 # define YYDEBUG 1
00259 #endif
00260 
00261 /* Enabling verbose error messages.  */
00262 #ifdef YYERROR_VERBOSE
00263 # undef YYERROR_VERBOSE
00264 # define YYERROR_VERBOSE 1
00265 #else
00266 # define YYERROR_VERBOSE 0
00267 #endif
00268 
00269 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
00270 #line 67 "yacc.yy"
00271 typedef union YYSTYPE {
00272   long   _int;
00273   QString        *_str;
00274   unsigned short          _char;
00275   double _float;
00276 } YYSTYPE;
00277 /* Line 191 of yacc.c.  */
00278 #line 279 "yacc.cc"
00279 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
00280 # define YYSTYPE_IS_DECLARED 1
00281 # define YYSTYPE_IS_TRIVIAL 1
00282 #endif
00283 
00284 
00285 
00286 /* Copy the second part of user declarations.  */
00287 
00288 
00289 /* Line 214 of yacc.c.  */
00290 #line 291 "yacc.cc"
00291 
00292 #if ! defined (yyoverflow) || YYERROR_VERBOSE
00293 
00294 # ifndef YYFREE
00295 #  define YYFREE free
00296 # endif
00297 # ifndef YYMALLOC
00298 #  define YYMALLOC malloc
00299 # endif
00300 
00301 /* The parser invokes alloca or malloc; define the necessary symbols.  */
00302 
00303 # ifdef YYSTACK_USE_ALLOCA
00304 #  if YYSTACK_USE_ALLOCA
00305 #   define YYSTACK_ALLOC alloca
00306 #  endif
00307 # else
00308 #  if defined (alloca) || defined (_ALLOCA_H)
00309 #   define YYSTACK_ALLOC alloca
00310 #  else
00311 #   ifdef __GNUC__
00312 #    define YYSTACK_ALLOC __builtin_alloca
00313 #   endif
00314 #  endif
00315 # endif
00316 
00317 # ifdef YYSTACK_ALLOC
00318    /* Pacify GCC's `empty if-body' warning. */
00319 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
00320 # else
00321 #  if defined (__STDC__) || defined (__cplusplus)
00322 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
00323 #   define YYSIZE_T size_t
00324 #  endif
00325 #  define YYSTACK_ALLOC YYMALLOC
00326 #  define YYSTACK_FREE YYFREE
00327 # endif
00328 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
00329 
00330 
00331 #if (! defined (yyoverflow) \
00332      && (! defined (__cplusplus) \
00333      || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
00334 
00335 /* A type that is properly aligned for any stack member.  */
00336 union yyalloc
00337 {
00338   short int yyss;
00339   YYSTYPE yyvs;
00340   };
00341 
00342 /* The size of the maximum gap between one aligned stack and the next.  */
00343 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
00344 
00345 /* The size of an array large to enough to hold all stacks, each with
00346    N elements.  */
00347 # define YYSTACK_BYTES(N) \
00348      ((N) * (sizeof (short int) + sizeof (YYSTYPE))         \
00349       + YYSTACK_GAP_MAXIMUM)
00350 
00351 /* Copy COUNT objects from FROM to TO.  The source and destination do
00352    not overlap.  */
00353 # ifndef YYCOPY
00354 #  if defined (__GNUC__) && 1 < __GNUC__
00355 #   define YYCOPY(To, From, Count) \
00356       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00357 #  else
00358 #   define YYCOPY(To, From, Count)      \
00359       do                    \
00360     {                   \
00361       register YYSIZE_T yyi;        \
00362       for (yyi = 0; yyi < (Count); yyi++)   \
00363         (To)[yyi] = (From)[yyi];        \
00364     }                   \
00365       while (0)
00366 #  endif
00367 # endif
00368 
00369 /* Relocate STACK from its old location to the new one.  The
00370    local variables YYSIZE and YYSTACKSIZE give the old and new number of
00371    elements in the stack, and YYPTR gives the new location of the
00372    stack.  Advance YYPTR to a properly aligned location for the next
00373    stack.  */
00374 # define YYSTACK_RELOCATE(Stack)                    \
00375     do                                  \
00376       {                                 \
00377     YYSIZE_T yynewbytes;                        \
00378     YYCOPY (&yyptr->Stack, Stack, yysize);              \
00379     Stack = &yyptr->Stack;                      \
00380     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
00381     yyptr += yynewbytes / sizeof (*yyptr);              \
00382       }                                 \
00383     while (0)
00384 
00385 #endif
00386 
00387 #if defined (__STDC__) || defined (__cplusplus)
00388    typedef signed char yysigned_char;
00389 #else
00390    typedef short int yysigned_char;
00391 #endif
00392 
00393 /* YYFINAL -- State number of the termination state. */
00394 #define YYFINAL  5
00395 /* YYLAST -- Last index in YYTABLE.  */
00396 #define YYLAST   528
00397 
00398 /* YYNTOKENS -- Number of terminals. */
00399 #define YYNTOKENS  67
00400 /* YYNNTS -- Number of nonterminals. */
00401 #define YYNNTS  53
00402 /* YYNRULES -- Number of rules. */
00403 #define YYNRULES  184
00404 /* YYNRULES -- Number of states. */
00405 #define YYNSTATES  370
00406 
00407 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
00408 #define YYUNDEFTOK  2
00409 #define YYMAXUTOK   321
00410 
00411 #define YYTRANSLATE(YYX)                        \
00412   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
00413 
00414 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
00415 static const unsigned char yytranslate[] =
00416 {
00417        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00418        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00419        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00420        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00421        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00422        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00423        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00424        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00425        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00426        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00427        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00428        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00429        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00430        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00431        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00432        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00433        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00434        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00435        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00436        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00437        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00438        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00439        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00440        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00441        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
00442        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
00443        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
00444       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
00445       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
00446       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
00447       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
00448       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
00449       65,    66
00450 };
00451 
00452 #if YYDEBUG
00453 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
00454    YYRHS.  */
00455 static const unsigned short int yyprhs[] =
00456 {
00457        0,     0,     3,     7,     8,    11,    16,    17,    19,    20,
00458       27,    35,    39,    43,    49,    50,    58,    63,    69,    72,
00459       77,    85,    94,    97,    99,   101,   103,   106,   107,   109,
00460      111,   113,   115,   117,   119,   121,   122,   126,   129,   132,
00461      135,   137,   141,   143,   148,   152,   154,   157,   161,   164,
00462      166,   167,   169,   171,   174,   178,   181,   184,   187,   190,
00463      193,   196,   202,   207,   212,   217,   224,   229,   236,   243,
00464      251,   258,   265,   271,   275,   277,   281,   283,   285,   287,
00465      290,   292,   294,   296,   300,   304,   312,   322,   323,   325,
00466      327,   330,   332,   335,   338,   342,   345,   349,   352,   356,
00467      359,   363,   365,   367,   370,   372,   375,   377,   380,   383,
00468      386,   388,   389,   391,   395,   397,   399,   402,   405,   410,
00469      417,   421,   423,   426,   428,   432,   436,   439,   442,   446,
00470      449,   451,   454,   458,   460,   464,   467,   469,   470,   473,
00471      479,   481,   483,   485,   487,   492,   493,   495,   497,   499,
00472      501,   503,   505,   512,   520,   522,   526,   527,   532,   534,
00473      538,   541,   547,   551,   557,   565,   572,   576,   578,   580,
00474      584,   589,   592,   593,   595,   598,   599,   601,   605,   608,
00475      611,   615,   621,   627,   633
00476 };
00477 
00478 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
00479 static const yysigned_char yyrhs[] =
00480 {
00481       68,     0,    -1,    69,    71,    68,    -1,    -1,    69,     9,
00482       -1,    39,    12,    68,    14,    -1,    -1,    57,    -1,    -1,
00483       10,    80,    84,    70,    86,    17,    -1,    10,     6,    80,
00484       84,    70,    86,    17,    -1,    10,    80,    17,    -1,    11,
00485       80,    17,    -1,    11,    80,    84,    86,    17,    -1,    -1,
00486       42,     6,    12,    72,    68,    14,    85,    -1,    43,    42,
00487        6,    17,    -1,    43,     6,    51,     6,    17,    -1,    38,
00488       17,    -1,    29,   100,    80,    17,    -1,    29,    11,    12,
00489       73,    14,    80,    17,    -1,    29,    11,    80,    12,    73,
00490       14,    80,    17,    -1,    24,   111,    -1,   111,    -1,   119,
00491       -1,    87,    -1,   119,    73,    -1,    -1,    46,    -1,    47,
00492       -1,    21,    -1,    19,    -1,    18,    -1,    27,    -1,    28,
00493       -1,    -1,    75,    76,    16,    -1,    76,    16,    -1,    58,
00494       16,    -1,    59,    16,    -1,     6,    -1,     6,    51,    80,
00495       -1,    80,    -1,    80,    35,   101,    36,    -1,   105,    18,
00496       81,    -1,    81,    -1,    82,    12,    -1,    82,    32,    83,
00497       -1,    16,    83,    -1,    12,    -1,    -1,    17,    -1,    14,
00498       -1,    92,    86,    -1,    24,   111,    86,    -1,   111,    86,
00499       -1,    79,    86,    -1,    87,    86,    -1,    78,    86,    -1,
00500       77,    86,    -1,   119,    86,    -1,    25,    10,    80,    17,
00501       86,    -1,    25,    80,    17,    86,    -1,    25,   107,    17,
00502       86,    -1,    10,    80,    17,    86,    -1,    10,    80,    84,
00503       86,    17,    86,    -1,    11,    80,    17,    86,    -1,    11,
00504       80,    84,    86,    17,    86,    -1,    43,     6,    51,     6,
00505       17,    86,    -1,    41,     6,    12,    88,    14,     6,    17,
00506       -1,    41,     6,    12,    88,    14,    17,    -1,    41,    12,
00507       88,    14,     6,    17,    -1,    41,    12,    88,    14,    17,
00508       -1,    89,    32,    88,    -1,    89,    -1,     6,    50,    91,
00509       -1,     6,    -1,     4,    -1,     7,    -1,    31,     7,    -1,
00510       52,    -1,    80,    -1,    90,    -1,    90,    30,    90,    -1,
00511       90,    66,    90,    -1,    29,    80,    35,   101,    36,    80,
00512       17,    -1,    29,    80,    35,   101,    36,    51,     6,    80,
00513       17,    -1,    -1,    23,    -1,    60,    -1,    60,    53,    -1,
00514       61,    -1,    61,    53,    -1,    60,    63,    -1,    60,    63,
00515       53,    -1,    60,    62,    -1,    60,    62,    53,    -1,    61,
00516       63,    -1,    61,    63,    53,    -1,    61,    62,    -1,    61,
00517       62,    53,    -1,    53,    -1,    62,    -1,    62,    53,    -1,
00518       63,    -1,    63,    53,    -1,    56,    -1,    60,    56,    -1,
00519       61,    56,    -1,    33,    95,    -1,    33,    -1,    -1,   102,
00520       -1,    96,    32,   102,    -1,    94,    -1,    80,    -1,    11,
00521       80,    -1,    10,    80,    -1,    80,    35,    98,    36,    -1,
00522       80,    35,    98,    36,    51,    80,    -1,    99,    32,    98,
00523       -1,    99,    -1,    97,    95,    -1,    97,    -1,    23,    97,
00524       95,    -1,    23,    97,    37,    -1,    23,    97,    -1,    97,
00525       23,    -1,    97,    23,    37,    -1,    97,    37,    -1,    97,
00526       -1,    97,    95,    -1,   100,    32,   101,    -1,   100,    -1,
00527      100,    80,   103,    -1,   100,   103,    -1,    45,    -1,    -1,
00528       50,   104,    -1,    50,    13,   100,    15,   104,    -1,     8,
00529       -1,    91,    -1,     5,    -1,    74,    -1,    80,    13,    96,
00530       15,    -1,    -1,    22,    -1,    65,    -1,    66,    -1,    36,
00531       -1,    35,    -1,    50,    -1,   100,    80,    13,    96,    15,
00532       93,    -1,   100,    64,   106,    13,    96,    15,    93,    -1,
00533      104,    -1,   104,    32,   108,    -1,    -1,     6,    13,   108,
00534       15,    -1,   109,    -1,   109,    32,   110,    -1,   107,   113,
00535       -1,    22,   107,    50,    52,   113,    -1,    22,   107,   113,
00536       -1,    80,    13,    96,    15,   113,    -1,    80,    13,    96,
00537       15,    16,   110,   113,    -1,   105,    34,    80,    13,    15,
00538      113,    -1,    48,   107,   113,    -1,    12,    -1,    17,    -1,
00539      112,   114,    14,    -1,   112,   114,    14,    17,    -1,   115,
00540      114,    -1,    -1,    17,    -1,    32,   118,    -1,    -1,     6,
00541       -1,     6,    50,   104,    -1,    95,     6,    -1,   117,   116,
00542       -1,   100,   118,    17,    -1,   100,    80,    16,     7,    17,
00543       -1,    48,   100,     6,   103,    17,    -1,    49,   100,     6,
00544      103,    17,    -1,   100,     6,    54,    91,    55,    17,    -1
00545 };
00546 
00547 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
00548 static const unsigned short int yyrline[] =
00549 {
00550        0,   164,   164,   167,   171,   175,   179,   184,   185,   189,
00551      198,   207,   210,   213,   217,   216,   228,   231,   234,   237,
00552      240,   243,   246,   249,   252,   255,   261,   262,   265,   265,
00553      267,   267,   267,   269,   269,   269,   272,   277,   285,   293,
00554      305,   308,   316,   322,   331,   335,   342,   346,   354,   358,
00555      366,   368,   372,   376,   380,   384,   388,   392,   396,   400,
00556      404,   408,   412,   416,   420,   424,   428,   432,   436,   443,
00557      444,   445,   446,   450,   451,   455,   456,   460,   461,   462,
00558      463,   464,   468,   469,   470,   474,   484,   493,   496,   503,
00559      504,   505,   506,   507,   508,   509,   510,   511,   512,   513,
00560      514,   515,   516,   517,   518,   519,   520,   521,   522,   526,
00561      527,   532,   535,   536,   544,   545,   546,   547,   548,   554,
00562      565,   569,   577,   582,   591,   596,   603,   608,   613,   620,
00563      625,   630,   638,   642,   649,   658,   666,   676,   678,   681,
00564      688,   691,   694,   697,   700,   706,   707,   711,   711,   711,
00565      711,   711,   715,   737,   748,   749,   750,   755,   760,   761,
00566      765,   769,   773,   777,   783,   789,   795,   808,   815,   816,
00567      817,   821,   822,   826,   830,   831,   834,   835,   836,   839,
00568      843,   844,   845,   846,   847
00569 };
00570 #endif
00571 
00572 #if YYDEBUG || YYERROR_VERBOSE
00573 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
00574    First, the terminals, then, starting at YYNTOKENS, nonterminals. */
00575 static const char *const yytname[] =
00576 {
00577   "$end", "error", "$undefined", "T_UNIMPORTANT", "T_CHARACTER_LITERAL",
00578   "T_DOUBLE_LITERAL", "T_IDENTIFIER", "T_INTEGER_LITERAL",
00579   "T_STRING_LITERAL", "T_INCLUDE", "T_CLASS", "T_STRUCT",
00580   "T_LEFT_CURLY_BRACKET", "T_LEFT_PARANTHESIS", "T_RIGHT_CURLY_BRACKET",
00581   "T_RIGHT_PARANTHESIS", "T_COLON", "T_SEMICOLON", "T_PUBLIC",
00582   "T_PROTECTED", "T_TRIPE_DOT", "T_PRIVATE", "T_VIRTUAL", "T_CONST",
00583   "T_INLINE", "T_FRIEND", "T_RETURN", "T_SIGNAL", "T_SLOT", "T_TYPEDEF",
00584   "T_PLUS", "T_MINUS", "T_COMMA", "T_ASTERISK", "T_TILDE", "T_LESS",
00585   "T_GREATER", "T_AMPERSAND", "T_EXTERN", "T_EXTERN_C", "T_ACCESS",
00586   "T_ENUM", "T_NAMESPACE", "T_USING", "T_UNKNOWN", "T_TRIPLE_DOT",
00587   "T_TRUE", "T_FALSE", "T_STATIC", "T_MUTABLE", "T_EQUAL", "T_SCOPE",
00588   "T_NULL", "T_INT", "T_ARRAY_OPEN", "T_ARRAY_CLOSE", "T_CHAR", "T_DCOP",
00589   "T_DCOP_AREA", "T_DCOP_SIGNAL_AREA", "T_SIGNED", "T_UNSIGNED", "T_LONG",
00590   "T_SHORT", "T_FUNOPERATOR", "T_MISCOPERATOR", "T_SHIFT", "$accept",
00591   "main", "includes", "dcoptag", "declaration", "@1", "member_list",
00592   "bool_value", "nodcop_area", "sigslot", "nodcop_area_begin",
00593   "dcop_area_begin", "dcop_signal_area_begin", "Identifier",
00594   "super_class_name", "super_class", "super_classes", "class_header",
00595   "opt_semicolon", "body", "enum", "enum_list", "enum_item", "number",
00596   "int_expression", "typedef", "const_qualifier", "int_type", "asterisks",
00597   "params", "type_name", "templ_type_list", "templ_type", "type",
00598   "type_list", "param", "default", "value", "virtual_qualifier",
00599   "operator", "function_header", "values", "init_item", "init_list",
00600   "function", "function_begin", "function_body", "function_lines",
00601   "function_line", "Identifier_list_rest", "Identifier_list_entry",
00602   "Identifier_list", "member", 0
00603 };
00604 #endif
00605 
00606 # ifdef YYPRINT
00607 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
00608    token YYLEX-NUM.  */
00609 static const unsigned short int yytoknum[] =
00610 {
00611        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
00612      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
00613      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
00614      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
00615      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
00616      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
00617      315,   316,   317,   318,   319,   320,   321
00618 };
00619 # endif
00620 
00621 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
00622 static const unsigned char yyr1[] =
00623 {
00624        0,    67,    68,    68,    69,    69,    69,    70,    70,    71,
00625       71,    71,    71,    71,    72,    71,    71,    71,    71,    71,
00626       71,    71,    71,    71,    71,    71,    73,    73,    74,    74,
00627       75,    75,    75,    76,    76,    76,    77,    77,    78,    79,
00628       80,    80,    81,    81,    82,    82,    83,    83,    84,    84,
00629       85,    85,    86,    86,    86,    86,    86,    86,    86,    86,
00630       86,    86,    86,    86,    86,    86,    86,    86,    86,    87,
00631       87,    87,    87,    88,    88,    89,    89,    90,    90,    90,
00632       90,    90,    91,    91,    91,    92,    92,    93,    93,    94,
00633       94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
00634       94,    94,    94,    94,    94,    94,    94,    94,    94,    95,
00635       95,    96,    96,    96,    97,    97,    97,    97,    97,    97,
00636       98,    98,    99,    99,   100,   100,   100,   100,   100,   100,
00637      100,   100,   101,   101,   102,   102,   102,   103,   103,   103,
00638      104,   104,   104,   104,   104,   105,   105,   106,   106,   106,
00639      106,   106,   107,   107,   108,   108,   108,   109,   110,   110,
00640      111,   111,   111,   111,   111,   111,   111,   112,   113,   113,
00641      113,   114,   114,   115,   116,   116,   117,   117,   117,   118,
00642      119,   119,   119,   119,   119
00643 };
00644 
00645 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
00646 static const unsigned char yyr2[] =
00647 {
00648        0,     2,     3,     0,     2,     4,     0,     1,     0,     6,
00649        7,     3,     3,     5,     0,     7,     4,     5,     2,     4,
00650        7,     8,     2,     1,     1,     1,     2,     0,     1,     1,
00651        1,     1,     1,     1,     1,     0,     3,     2,     2,     2,
00652        1,     3,     1,     4,     3,     1,     2,     3,     2,     1,
00653        0,     1,     1,     2,     3,     2,     2,     2,     2,     2,
00654        2,     5,     4,     4,     4,     6,     4,     6,     6,     7,
00655        6,     6,     5,     3,     1,     3,     1,     1,     1,     2,
00656        1,     1,     1,     3,     3,     7,     9,     0,     1,     1,
00657        2,     1,     2,     2,     3,     2,     3,     2,     3,     2,
00658        3,     1,     1,     2,     1,     2,     1,     2,     2,     2,
00659        1,     0,     1,     3,     1,     1,     2,     2,     4,     6,
00660        3,     1,     2,     1,     3,     3,     2,     2,     3,     2,
00661        1,     2,     3,     1,     3,     2,     1,     0,     2,     5,
00662        1,     1,     1,     1,     4,     0,     1,     1,     1,     1,
00663        1,     1,     6,     7,     1,     3,     0,     4,     1,     3,
00664        2,     5,     3,     5,     7,     6,     3,     1,     1,     3,
00665        4,     2,     0,     1,     2,     0,     1,     3,     2,     2,
00666        3,     5,     5,     5,     6
00667 };
00668 
00669 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
00670    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
00671    means the default is an error.  */
00672 static const unsigned char yydefact[] =
00673 {
00674        6,     0,     0,   145,     6,     1,    40,     4,     0,     0,
00675      146,     0,   145,     0,     0,     0,     0,     0,     0,     0,
00676      101,   106,    89,    91,   102,   104,     6,   115,    25,   114,
00677      130,     0,     0,     0,    23,    24,     0,     0,    40,   117,
00678      116,     0,     0,   115,     0,     0,   126,     0,    22,     0,
00679        0,    18,     0,     0,     0,     0,     0,     0,     0,     0,
00680       90,   107,    95,    93,    92,   108,    99,    97,   103,   105,
00681        2,   111,     0,   127,   110,   129,   131,    40,     0,     0,
00682        0,   175,     0,     0,   167,   168,   172,   160,     5,    41,
00683        0,    49,   145,    11,     8,    12,    35,   117,   116,     0,
00684        0,   162,   125,   124,    27,   116,     0,     0,    76,     0,
00685       74,    14,     0,     0,    40,   166,   137,    96,    94,   100,
00686       98,   136,     0,   137,   112,   123,     0,   121,   128,   109,
00687        0,     0,   150,   149,   151,   147,   148,     0,   111,     0,
00688      178,     0,   179,   180,     0,   173,     0,   172,     8,   146,
00689       42,    45,     0,    48,     0,     7,    35,     0,     0,    52,
00690       32,    31,    30,   145,     0,    33,    34,     0,     0,     0,
00691        0,    35,     0,    35,    35,    35,     0,    35,    35,    35,
00692       35,     0,     0,     0,     0,    27,    27,    19,     0,     0,
00693        0,     0,     6,     0,    16,     0,     0,     0,     0,     0,
00694      137,   135,   122,   118,     0,    77,   142,    78,   140,     0,
00695       28,    29,    80,   143,    81,    82,   141,   177,    81,     0,
00696      111,     0,     0,   176,   174,     0,   169,   171,    35,     0,
00697       46,   145,     0,     0,   117,   116,    35,     0,   115,     0,
00698        0,     0,    38,    39,     0,    37,    59,    58,    56,    13,
00699       57,    53,    55,    60,   161,     0,     0,     0,    26,     0,
00700        0,    75,     0,    72,    73,     0,    17,     0,   138,   182,
00701      183,     0,   163,   113,   134,     0,   120,    79,   111,     0,
00702        0,     0,     0,    87,   181,     0,   170,     0,   133,     0,
00703       47,    44,     9,    35,    35,    35,    35,    54,   117,    35,
00704       35,     0,     0,    36,   137,     0,     0,     0,    70,    71,
00705       50,     0,     0,   158,     0,   119,     0,    83,    84,   184,
00706       87,    88,   152,   165,    10,     0,    43,    64,     0,    66,
00707        0,    35,    62,    63,     0,     0,    20,     0,    69,    51,
00708       15,     0,   156,     0,   164,   144,   153,   132,    35,    35,
00709       61,     0,    35,    21,   139,   154,     0,   159,    65,    67,
00710        0,     0,    68,   156,   157,     0,    85,   155,     0,    86
00711 };
00712 
00713 /* YYDEFGOTO[NTERM-NUM]. */
00714 static const short int yydefgoto[] =
00715 {
00716       -1,     2,     3,   156,    26,   192,   183,   213,   171,   172,
00717      173,   174,   175,    27,   151,   152,   153,    94,   340,   176,
00718      177,   109,   110,   215,   216,   178,   322,    29,    80,   122,
00719       30,   126,   127,    31,   289,   124,   196,   355,    32,   137,
00720       33,   356,   313,   314,   179,    86,    87,   146,   147,   142,
00721       81,    82,   180
00722 };
00723 
00724 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
00725    STATE-NUM.  */
00726 #define YYPACT_NINF -229
00727 static const short int yypact[] =
00728 {
00729       48,    10,    99,   375,    69,  -229,    50,  -229,   107,   114,
00730      239,   455,   220,   416,   110,    59,   128,    39,   239,   239,
00731     -229,  -229,   184,   234,   100,   108,    68,    18,  -229,  -229,
00732      185,    26,   129,   208,  -229,  -229,   159,   114,    40,   244,
00733      297,   114,   114,   155,    29,    60,   127,   239,  -229,   226,
00734      114,  -229,   223,   259,   254,   218,   269,    31,   208,   271,
00735     -229,  -229,   225,   233,  -229,  -229,   235,   238,  -229,  -229,
00736     -229,   396,   455,   242,   261,  -229,  -229,   163,   119,   228,
00737      298,   273,   286,   114,  -229,  -229,   295,  -229,  -229,  -229,
00738      195,  -229,   197,  -229,   262,  -229,   317,  -229,  -229,   305,
00739      270,  -229,  -229,  -229,    56,   309,   312,   259,   276,   316,
00740      315,  -229,   331,   332,    75,  -229,   300,  -229,  -229,  -229,
00741     -229,  -229,    42,    38,  -229,   261,   318,   324,  -229,  -229,
00742      136,    54,  -229,  -229,  -229,  -229,  -229,   346,   396,   354,
00743     -229,    88,  -229,  -229,   349,  -229,   350,   295,   262,  -229,
00744      328,  -229,   134,  -229,   351,  -229,   317,   114,   114,  -229,
00745     -229,  -229,  -229,   220,   437,  -229,  -229,   114,   361,   352,
00746      355,   171,   356,   317,   317,   317,   357,   317,   317,   317,
00747      317,   208,   239,   368,    96,    56,    56,  -229,   369,    54,
00748      199,   259,    69,   370,  -229,   476,   371,   372,   299,   396,
00749      300,  -229,  -229,   339,   455,  -229,  -229,  -229,  -229,   384,
00750     -229,  -229,  -229,  -229,   379,    20,  -229,  -229,  -229,   338,
00751      396,   133,   377,   345,  -229,   381,   383,  -229,   317,   239,
00752     -229,   197,   114,   386,   308,   336,   317,   114,   122,   388,
00753      366,   358,  -229,  -229,   392,  -229,  -229,  -229,  -229,  -229,
00754     -229,  -229,  -229,  -229,  -229,   404,   114,   395,  -229,   398,
00755      222,  -229,   397,  -229,  -229,   401,  -229,   239,  -229,  -229,
00756     -229,   414,  -229,  -229,  -229,   114,  -229,  -229,   396,    54,
00757       54,   408,   143,   406,  -229,   208,  -229,   413,   389,   409,
00758     -229,  -229,  -229,   317,   317,   317,   317,  -229,   415,   317,
00759      317,   239,   427,  -229,   300,   417,   114,   423,  -229,  -229,
00760      425,   429,   433,   418,   208,  -229,   147,  -229,  -229,  -229,
00761      406,  -229,  -229,  -229,  -229,   239,  -229,  -229,   434,  -229,
00762      436,   317,  -229,  -229,   419,   445,  -229,   446,  -229,  -229,
00763     -229,   136,   136,   414,  -229,  -229,  -229,  -229,   317,   317,
00764     -229,    49,   317,  -229,  -229,   422,   449,  -229,  -229,  -229,
00765      461,   451,  -229,   136,  -229,   114,  -229,  -229,   453,  -229
00766 };
00767 
00768 /* YYPGOTO[NTERM-NUM].  */
00769 static const short int yypgoto[] =
00770 {
00771     -229,    12,  -229,   323,  -229,  -229,    78,  -229,  -229,   302,
00772     -229,  -229,  -229,    -8,   243,  -229,   255,   -34,  -229,   -42,
00773      471,   -93,  -229,   -46,  -113,  -229,   165,  -229,   -22,  -131,
00774       -2,   283,  -229,     7,  -228,   289,   -76,  -126,   -79,  -229,
00775       33,   131,  -229,   148,     9,  -229,   -30,   348,  -229,  -229,
00776     -229,   360,    24
00777 };
00778 
00779 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
00780    positive, shift that token.  If negative, reduce the rule which
00781    number is the opposite.  If zero, do what YYDEFACT says.
00782    If YYTABLE_NINF, syntax error.  */
00783 #define YYTABLE_NINF -177
00784 static const short int yytable[] =
00785 {
00786       39,    40,    43,    43,   217,    43,    96,   221,    76,    46,
00787       43,    43,    34,   154,   188,   101,    36,    44,   219,    44,
00788       50,    48,     4,    79,   103,    57,    59,    35,   115,    89,
00789       90,    71,    77,    97,    98,     6,    99,   114,    70,    43,
00790      197,   105,   106,    45,     6,    55,     6,   201,    -3,    99,
00791      279,    58,   129,    72,    44,     6,   148,   198,   205,    74,
00792        6,   207,     6,    43,    43,    52,    41,    42,    -3,   268,
00793      125,    53,    84,   334,   199,   144,   261,    85,   123,    11,
00794       58,    56,    -3,    -3,   150,   209,   280,     1,   195,   282,
00795       78,    37,  -137,    78,   223,    78,    43,   347,   264,     5,
00796      360,    37,    77,   202,   182,    19,   212,     1,     1,    20,
00797      100,   184,    21,    38,   233,   200,    22,    23,    24,    25,
00798        6,    74,   214,   218,   274,   195,    37,    51,   185,    74,
00799       43,   246,   247,   248,    54,   250,   251,   252,   253,   299,
00800      205,   206,     6,   207,   208,   123,   230,   316,   283,   234,
00801      235,   254,   154,    68,   132,   133,   238,    72,   320,   240,
00802       74,    69,   345,    83,   102,   199,   231,   209,   272,   134,
00803       44,    44,   236,    88,    43,   199,   257,    43,    43,   199,
00804     -176,   218,   210,   211,   135,   136,   287,   214,   212,   255,
00805       72,    43,   184,   184,   297,  -176,    43,   239,   165,   166,
00806      294,   296,   125,     6,   265,   262,   123,    91,    73,   185,
00807      185,    92,    43,   130,    37,   354,   263,   131,    74,   149,
00808       84,    43,    75,   150,   150,    85,     6,   123,   307,   298,
00809       41,    42,     6,   317,   318,   107,   288,    60,   104,   308,
00810       61,   138,    10,    11,   139,     6,    62,    63,   305,    41,
00811       42,   327,   328,   329,   330,   323,    91,   332,   333,    43,
00812       92,    93,    11,   258,   259,   108,   111,   315,    47,   112,
00813       43,   218,   218,    20,   311,   113,    21,   116,   117,   128,
00814       22,    23,    24,    25,   344,   123,   118,    64,   119,   350,
00815       65,   120,    20,    43,    74,    21,    66,    67,   337,    22,
00816       23,    24,    25,   143,   140,   141,   358,   359,   288,    91,
00817      362,    84,   145,    92,    95,   271,    85,    43,   138,   155,
00818       91,   186,   181,     6,    92,   293,   189,   157,   158,   187,
00819      190,   159,   288,   214,   214,   160,   161,   193,   162,    10,
00820       11,   163,   164,   361,   165,   166,   167,   191,    91,   194,
00821      195,  -145,    92,   295,   203,   214,   204,   368,    15,   220,
00822      168,   222,   225,   229,   226,    18,    19,   241,   242,   232,
00823       20,   243,   245,    21,   249,   169,   170,    22,    23,    24,
00824       25,     6,   256,   260,     7,     8,     9,   266,   269,   270,
00825      275,   277,   278,   281,   284,   130,   285,    10,    11,    12,
00826      286,   301,     6,   292,    13,   300,    41,    42,   303,   302,
00827      304,   139,   306,    14,   309,   310,    15,    16,    17,    11,
00828      312,   325,     6,    18,    19,   319,    41,    49,    20,   321,
00829      324,    21,   331,   335,   336,    22,    23,    24,    25,    11,
00830      338,   121,   339,     6,   341,   326,   342,   237,    42,    20,
00831      343,   348,    21,   349,   363,   351,    22,    23,    24,    25,
00832       11,     6,   352,   353,   364,    41,    42,   365,   366,    20,
00833      369,   228,    21,   244,    28,   291,    22,    23,    24,    25,
00834      205,   206,     6,   207,   208,   346,   290,   276,   273,   267,
00835       20,   357,     0,    21,   367,   227,     0,    22,    23,    24,
00836       25,   224,     0,     0,     0,     0,     0,   209,    20,     0,
00837        0,    21,     0,     0,     0,    22,    23,    24,    25,     0,
00838        0,     0,   210,   211,     0,     0,     0,     0,   212
00839 };
00840 
00841 static const short int yycheck[] =
00842 {
00843        8,     9,    10,    11,   130,    13,    40,   138,    30,    11,
00844       18,    19,     3,    92,   107,    45,     4,    10,   131,    12,
00845       13,    12,    12,    31,    46,    18,    19,     3,    58,    37,
00846       38,    13,     6,    41,    42,     6,    44,     6,    26,    47,
00847      116,    49,    50,    10,     6,     6,     6,   123,     0,    57,
00848       30,    18,    74,    35,    47,     6,    90,    15,     4,    33,
00849        6,     7,     6,    71,    72,     6,    10,    11,     0,   195,
00850       72,    12,    12,   301,    32,    83,   189,    17,    71,    23,
00851       47,    42,    14,    14,    92,    31,    66,    39,    50,   220,
00852       64,    51,    17,    64,     6,    64,   104,   325,   191,     0,
00853       51,    51,     6,   125,    48,    49,    52,    39,    39,    53,
00854       50,   104,    56,     6,   156,   123,    60,    61,    62,    63,
00855        6,    33,   130,   131,   200,    50,    51,    17,   104,    33,
00856      138,   173,   174,   175,     6,   177,   178,   179,   180,    17,
00857        4,     5,     6,     7,     8,   138,    12,   278,    15,   157,
00858      158,   181,   231,    53,    35,    36,   164,    35,    15,   167,
00859       33,    53,    15,    34,    37,    32,    32,    31,   198,    50,
00860      163,   164,   163,    14,   182,    32,   184,   185,   186,    32,
00861       17,   189,    46,    47,    65,    66,   228,   195,    52,   182,
00862       35,   199,   185,   186,   236,    32,   204,   164,    27,    28,
00863      234,   235,   204,     6,   192,     6,   199,    12,    23,   185,
00864      186,    16,   220,    50,    51,   341,    17,    54,    33,    22,
00865       12,   229,    37,   231,   232,    17,     6,   220,     6,   237,
00866       10,    11,     6,   279,   280,    12,   229,    53,    12,    17,
00867       56,    13,    22,    23,    16,     6,    62,    63,   256,    10,
00868       11,   293,   294,   295,   296,   285,    12,   299,   300,   267,
00869       16,    17,    23,   185,   186,     6,    12,   275,    48,    51,
00870      278,   279,   280,    53,   267,     6,    56,     6,    53,    37,
00871       60,    61,    62,    63,   314,   278,    53,    53,    53,   331,
00872       56,    53,    53,   301,    33,    56,    62,    63,   306,    60,
00873       61,    62,    63,    17,     6,    32,   348,   349,   301,    12,
00874      352,    12,    17,    16,    17,    16,    17,   325,    13,    57,
00875       12,    12,    52,     6,    16,    17,    50,    10,    11,    17,
00876       14,    14,   325,   341,   342,    18,    19,     6,    21,    22,
00877       23,    24,    25,   351,    27,    28,    29,    32,    12,    17,
00878       50,    34,    16,    17,    36,   363,    32,   365,    41,    13,
00879       43,     7,    13,    35,    14,    48,    49,     6,    16,    18,
00880       53,    16,    16,    56,    17,    58,    59,    60,    61,    62,
00881       63,     6,    14,    14,     9,    10,    11,    17,    17,    17,
00882       51,     7,    13,    55,    17,    50,    15,    22,    23,    24,
00883       17,    35,     6,    17,    29,    17,    10,    11,    16,    51,
00884        6,    16,    14,    38,    17,    14,    41,    42,    43,    23,
00885        6,    32,     6,    48,    49,    17,    10,    11,    53,    23,
00886       17,    56,    17,     6,    17,    60,    61,    62,    63,    23,
00887       17,    45,    17,     6,    15,    36,    13,    10,    11,    53,
00888       32,    17,    56,    17,    32,    36,    60,    61,    62,    63,
00889       23,     6,    17,    17,    15,    10,    11,     6,    17,    53,
00890       17,   148,    56,   171,     3,   232,    60,    61,    62,    63,
00891        4,     5,     6,     7,     8,   320,   231,   204,   199,    13,
00892       53,   343,    -1,    56,   363,   147,    -1,    60,    61,    62,
00893       63,   141,    -1,    -1,    -1,    -1,    -1,    31,    53,    -1,
00894       -1,    56,    -1,    -1,    -1,    60,    61,    62,    63,    -1,
00895       -1,    -1,    46,    47,    -1,    -1,    -1,    -1,    52
00896 };
00897 
00898 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
00899    symbol of state STATE-NUM.  */
00900 static const unsigned char yystos[] =
00901 {
00902        0,    39,    68,    69,    12,     0,     6,     9,    10,    11,
00903       22,    23,    24,    29,    38,    41,    42,    43,    48,    49,
00904       53,    56,    60,    61,    62,    63,    71,    80,    87,    94,
00905       97,   100,   105,   107,   111,   119,    68,    51,     6,    80,
00906       80,    10,    11,    80,   100,   107,    97,    48,   111,    11,
00907      100,    17,     6,    12,     6,     6,    42,   100,   107,   100,
00908       53,    56,    62,    63,    53,    56,    62,    63,    53,    53,
00909       68,    13,    35,    23,    33,    37,    95,     6,    64,    80,
00910       95,   117,   118,    34,    12,    17,   112,   113,    14,    80,
00911       80,    12,    16,    17,    84,    17,    84,    80,    80,    80,
00912       50,   113,    37,    95,    12,    80,    80,    12,     6,    88,
00913       89,    12,    51,     6,     6,   113,     6,    53,    53,    53,
00914       53,    45,    96,   100,   102,    97,    98,    99,    37,    95,
00915       50,    54,    35,    36,    50,    65,    66,   106,    13,    16,
00916        6,    32,   116,    17,    80,    17,   114,   115,    84,    22,
00917       80,    81,    82,    83,   105,    57,    70,    10,    11,    14,
00918       18,    19,    21,    24,    25,    27,    28,    29,    43,    58,
00919       59,    75,    76,    77,    78,    79,    86,    87,    92,   111,
00920      119,    52,    48,    73,   100,   119,    12,    17,    88,    50,
00921       14,    32,    72,     6,    17,    50,   103,   103,    15,    32,
00922       80,   103,    95,    36,    32,     4,     5,     7,     8,    31,
00923       46,    47,    52,    74,    80,    90,    91,   104,    80,    91,
00924       13,    96,     7,     6,   118,    13,    14,   114,    70,    35,
00925       12,    32,    18,    86,    80,    80,   111,    10,    80,   107,
00926       80,     6,    16,    16,    76,    16,    86,    86,    86,    17,
00927       86,    86,    86,    86,   113,   100,    14,    80,    73,    73,
00928       14,    91,     6,    17,    88,    68,    17,    13,   104,    17,
00929       17,    16,   113,   102,   103,    51,    98,     7,    13,    30,
00930       66,    55,    96,    15,    17,    15,    17,    86,   100,   101,
00931       83,    81,    17,    17,    84,    17,    84,    86,    80,    17,
00932       17,    35,    51,    16,     6,    80,    14,     6,    17,    17,
00933       14,   100,     6,   109,   110,    80,    96,    90,    90,    17,
00934       15,    23,    93,   113,    17,    32,    36,    86,    86,    86,
00935       86,    17,    86,    86,   101,     6,    17,    80,    17,    17,
00936       85,    15,    13,    32,   113,    15,    93,   101,    17,    17,
00937       86,    36,    17,    17,   104,   104,   108,   110,    86,    86,
00938       51,    80,    86,    32,    15,     6,    17,   108,    80,    17
00939 };
00940 
00941 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
00942 # define YYSIZE_T __SIZE_TYPE__
00943 #endif
00944 #if ! defined (YYSIZE_T) && defined (size_t)
00945 # define YYSIZE_T size_t
00946 #endif
00947 #if ! defined (YYSIZE_T)
00948 # if defined (__STDC__) || defined (__cplusplus)
00949 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
00950 #  define YYSIZE_T size_t
00951 # endif
00952 #endif
00953 #if ! defined (YYSIZE_T)
00954 # define YYSIZE_T unsigned int
00955 #endif
00956 
00957 #define yyerrok     (yyerrstatus = 0)
00958 #define yyclearin   (yychar = YYEMPTY)
00959 #define YYEMPTY     (-2)
00960 #define YYEOF       0
00961 
00962 #define YYACCEPT    goto yyacceptlab
00963 #define YYABORT     goto yyabortlab
00964 #define YYERROR     goto yyerrorlab
00965 
00966 
00967 /* Like YYERROR except do call yyerror.  This remains here temporarily
00968    to ease the transition to the new meaning of YYERROR, for GCC.
00969    Once GCC version 2 has supplanted version 1, this can go.  */
00970 
00971 #define YYFAIL      goto yyerrlab
00972 
00973 #define YYRECOVERING()  (!!yyerrstatus)
00974 
00975 #define YYBACKUP(Token, Value)                  \
00976 do                              \
00977   if (yychar == YYEMPTY && yylen == 1)              \
00978     {                               \
00979       yychar = (Token);                     \
00980       yylval = (Value);                     \
00981       yytoken = YYTRANSLATE (yychar);               \
00982       YYPOPSTACK;                       \
00983       goto yybackup;                        \
00984     }                               \
00985   else                              \
00986     {                               \
00987       yyerror ("syntax error: cannot back up");\
00988       YYERROR;                          \
00989     }                               \
00990 while (0)
00991 
00992 #define YYTERROR    1
00993 #define YYERRCODE   256
00994 
00995 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
00996    are run).  */
00997 
00998 #ifndef YYLLOC_DEFAULT
00999 # define YYLLOC_DEFAULT(Current, Rhs, N)        \
01000    ((Current).first_line   = (Rhs)[1].first_line,   \
01001     (Current).first_column = (Rhs)[1].first_column, \
01002     (Current).last_line    = (Rhs)[N].last_line,    \
01003     (Current).last_column  = (Rhs)[N].last_column)
01004 #endif
01005 
01006 /* YYLEX -- calling `yylex' with the right arguments.  */
01007 
01008 #ifdef YYLEX_PARAM
01009 # define YYLEX yylex (YYLEX_PARAM)
01010 #else
01011 # define YYLEX yylex ()
01012 #endif
01013 
01014 /* Enable debugging if requested.  */
01015 #if YYDEBUG
01016 
01017 # ifndef YYFPRINTF
01018 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
01019 #  define YYFPRINTF fprintf
01020 # endif
01021 
01022 # define YYDPRINTF(Args)            \
01023 do {                        \
01024   if (yydebug)                  \
01025     YYFPRINTF Args;             \
01026 } while (0)
01027 
01028 # define YYDSYMPRINT(Args)          \
01029 do {                        \
01030   if (yydebug)                  \
01031     yysymprint Args;                \
01032 } while (0)
01033 
01034 # define YYDSYMPRINTF(Title, Token, Value, Location)        \
01035 do {                                \
01036   if (yydebug)                          \
01037     {                               \
01038       YYFPRINTF (stderr, "%s ", Title);             \
01039       yysymprint (stderr,                   \
01040                   Token, Value);    \
01041       YYFPRINTF (stderr, "\n");                 \
01042     }                               \
01043 } while (0)
01044 
01045 /*------------------------------------------------------------------.
01046 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
01047 | TOP (included).                                                   |
01048 `------------------------------------------------------------------*/
01049 
01050 #if defined (__STDC__) || defined (__cplusplus)
01051 static void
01052 yy_stack_print (short int *bottom, short int *top)
01053 #else
01054 static void
01055 yy_stack_print (bottom, top)
01056     short int *bottom;
01057     short int *top;
01058 #endif
01059 {
01060   YYFPRINTF (stderr, "Stack now");
01061   for (/* Nothing. */; bottom <= top; ++bottom)
01062     YYFPRINTF (stderr, " %d", *bottom);
01063   YYFPRINTF (stderr, "\n");
01064 }
01065 
01066 # define YY_STACK_PRINT(Bottom, Top)                \
01067 do {                                \
01068   if (yydebug)                          \
01069     yy_stack_print ((Bottom), (Top));               \
01070 } while (0)
01071 
01072 
01073 /*------------------------------------------------.
01074 | Report that the YYRULE is going to be reduced.  |
01075 `------------------------------------------------*/
01076 
01077 #if defined (__STDC__) || defined (__cplusplus)
01078 static void
01079 yy_reduce_print (int yyrule)
01080 #else
01081 static void
01082 yy_reduce_print (yyrule)
01083     int yyrule;
01084 #endif
01085 {
01086   int yyi;
01087   unsigned int yylno = yyrline[yyrule];
01088   YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
01089              yyrule - 1, yylno);
01090   /* Print the symbols being reduced, and their result.  */
01091   for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
01092     YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
01093   YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
01094 }
01095 
01096 # define YY_REDUCE_PRINT(Rule)      \
01097 do {                    \
01098   if (yydebug)              \
01099     yy_reduce_print (Rule);     \
01100 } while (0)
01101 
01102 /* Nonzero means print parse trace.  It is left uninitialized so that
01103    multiple parsers can coexist.  */
01104 int yydebug;
01105 #else /* !YYDEBUG */
01106 # define YYDPRINTF(Args)
01107 # define YYDSYMPRINT(Args)
01108 # define YYDSYMPRINTF(Title, Token, Value, Location)
01109 # define YY_STACK_PRINT(Bottom, Top)
01110 # define YY_REDUCE_PRINT(Rule)
01111 #endif /* !YYDEBUG */
01112 
01113 
01114 /* YYINITDEPTH -- initial size of the parser's stacks.  */
01115 #ifndef YYINITDEPTH
01116 # define YYINITDEPTH 200
01117 #endif
01118 
01119 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
01120    if the built-in stack extension method is used).
01121 
01122    Do not make this value too large; the results are undefined if
01123    SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
01124    evaluated with infinite-precision integer arithmetic.  */
01125 
01126 #if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
01127 # undef YYMAXDEPTH
01128 #endif
01129 
01130 #ifndef YYMAXDEPTH
01131 # define YYMAXDEPTH 10000
01132 #endif
01133 
01134 
01135 
01136 #if YYERROR_VERBOSE
01137 
01138 # ifndef yystrlen
01139 #  if defined (__GLIBC__) && defined (_STRING_H)
01140 #   define yystrlen strlen
01141 #  else
01142 /* Return the length of YYSTR.  */
01143 static YYSIZE_T
01144 #   if defined (__STDC__) || defined (__cplusplus)
01145 yystrlen (const char *yystr)
01146 #   else
01147 yystrlen (yystr)
01148      const char *yystr;
01149 #   endif
01150 {
01151   register const char *yys = yystr;
01152 
01153   while (*yys++ != '\0')
01154     continue;
01155 
01156   return yys - yystr - 1;
01157 }
01158 #  endif
01159 # endif
01160 
01161 # ifndef yystpcpy
01162 #  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
01163 #   define yystpcpy stpcpy
01164 #  else
01165 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
01166    YYDEST.  */
01167 static char *
01168 #   if defined (__STDC__) || defined (__cplusplus)
01169 yystpcpy (char *yydest, const char *yysrc)
01170 #   else
01171 yystpcpy (yydest, yysrc)
01172      char *yydest;
01173      const char *yysrc;
01174 #   endif
01175 {
01176   register char *yyd = yydest;
01177   register const char *yys = yysrc;
01178 
01179   while ((*yyd++ = *yys++) != '\0')
01180     continue;
01181 
01182   return yyd - 1;
01183 }
01184 #  endif
01185 # endif
01186 
01187 #endif /* !YYERROR_VERBOSE */
01188 
01189 
01190 
01191 #if YYDEBUG
01192 /*--------------------------------.
01193 | Print this symbol on YYOUTPUT.  |
01194 `--------------------------------*/
01195 
01196 #if defined (__STDC__) || defined (__cplusplus)
01197 static void
01198 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
01199 #else
01200 static void
01201 yysymprint (yyoutput, yytype, yyvaluep)
01202     FILE *yyoutput;
01203     int yytype;
01204     YYSTYPE *yyvaluep;
01205 #endif
01206 {
01207   /* Pacify ``unused variable'' warnings.  */
01208   (void) yyvaluep;
01209 
01210   if (yytype < YYNTOKENS)
01211     {
01212       YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
01213 # ifdef YYPRINT
01214       YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
01215 # endif
01216     }
01217   else
01218     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
01219 
01220   switch (yytype)
01221     {
01222       default:
01223         break;
01224     }
01225   YYFPRINTF (yyoutput, ")");
01226 }
01227 
01228 #endif /* ! YYDEBUG */
01229 /*-----------------------------------------------.
01230 | Release the memory associated to this symbol.  |
01231 `-----------------------------------------------*/
01232 
01233 #if defined (__STDC__) || defined (__cplusplus)
01234 static void
01235 yydestruct (int yytype, YYSTYPE *yyvaluep)
01236 #else
01237 static void
01238 yydestruct (yytype, yyvaluep)
01239     int yytype;
01240     YYSTYPE *yyvaluep;
01241 #endif
01242 {
01243   /* Pacify ``unused variable'' warnings.  */
01244   (void) yyvaluep;
01245 
01246   switch (yytype)
01247     {
01248 
01249       default:
01250         break;
01251     }
01252 }
01253 
01254 
01255 /* Prevent warnings from -Wmissing-prototypes.  */
01256 
01257 #ifdef YYPARSE_PARAM
01258 # if defined (__STDC__) || defined (__cplusplus)
01259 int yyparse (void *YYPARSE_PARAM);
01260 # else
01261 int yyparse ();
01262 # endif
01263 #else /* ! YYPARSE_PARAM */
01264 #if defined (__STDC__) || defined (__cplusplus)
01265 int yyparse (void);
01266 #else
01267 int yyparse ();
01268 #endif
01269 #endif /* ! YYPARSE_PARAM */
01270 
01271 
01272 
01273 /* The lookahead symbol.  */
01274 int yychar;
01275 
01276 /* The semantic value of the lookahead symbol.  */
01277 YYSTYPE yylval;
01278 
01279 /* Number of syntax errors so far.  */
01280 int yynerrs;
01281 
01282 
01283 
01284 /*----------.
01285 | yyparse.  |
01286 `----------*/
01287 
01288 #ifdef YYPARSE_PARAM
01289 # if defined (__STDC__) || defined (__cplusplus)
01290 int yyparse (void *YYPARSE_PARAM)
01291 # else
01292 int yyparse (YYPARSE_PARAM)
01293   void *YYPARSE_PARAM;
01294 # endif
01295 #else /* ! YYPARSE_PARAM */
01296 #if defined (__STDC__) || defined (__cplusplus)
01297 int
01298 yyparse (void)
01299 #else
01300 int
01301 yyparse ()
01302 
01303 #endif
01304 #endif
01305 {
01306   
01307   register int yystate;
01308   register int yyn;
01309   int yyresult;
01310   /* Number of tokens to shift before error messages enabled.  */
01311   int yyerrstatus;
01312   /* Lookahead token as an internal (translated) token number.  */
01313   int yytoken = 0;
01314 
01315   /* Three stacks and their tools:
01316      `yyss': related to states,
01317      `yyvs': related to semantic values,
01318      `yyls': related to locations.
01319 
01320      Refer to the stacks thru separate pointers, to allow yyoverflow
01321      to reallocate them elsewhere.  */
01322 
01323   /* The state stack.  */
01324   short int yyssa[YYINITDEPTH];
01325   short int *yyss = yyssa;
01326   register short int *yyssp;
01327 
01328   /* The semantic value stack.  */
01329   YYSTYPE yyvsa[YYINITDEPTH];
01330   YYSTYPE *yyvs = yyvsa;
01331   register YYSTYPE *yyvsp;
01332 
01333 
01334 
01335 #define YYPOPSTACK   (yyvsp--, yyssp--)
01336 
01337   YYSIZE_T yystacksize = YYINITDEPTH;
01338 
01339   /* The variables used to return semantic value and location from the
01340      action routines.  */
01341   YYSTYPE yyval;
01342 
01343 
01344   /* When reducing, the number of symbols on the RHS of the reduced
01345      rule.  */
01346   int yylen;
01347 
01348   YYDPRINTF ((stderr, "Starting parse\n"));
01349 
01350   yystate = 0;
01351   yyerrstatus = 0;
01352   yynerrs = 0;
01353   yychar = YYEMPTY;     /* Cause a token to be read.  */
01354 
01355   /* Initialize stack pointers.
01356      Waste one element of value and location stack
01357      so that they stay on the same level as the state stack.
01358      The wasted elements are never initialized.  */
01359 
01360   yyssp = yyss;
01361   yyvsp = yyvs;
01362 
01363 
01364   goto yysetstate;
01365 
01366 /*------------------------------------------------------------.
01367 | yynewstate -- Push a new state, which is found in yystate.  |
01368 `------------------------------------------------------------*/
01369  yynewstate:
01370   /* In all cases, when you get here, the value and location stacks
01371      have just been pushed. so pushing a state here evens the stacks.
01372      */
01373   yyssp++;
01374 
01375  yysetstate:
01376   *yyssp = yystate;
01377 
01378   if (yyss + yystacksize - 1 <= yyssp)
01379     {
01380       /* Get the current used size of the three stacks, in elements.  */
01381       YYSIZE_T yysize = yyssp - yyss + 1;
01382 
01383 #ifdef yyoverflow
01384       {
01385     /* Give user a chance to reallocate the stack. Use copies of
01386        these so that the &'s don't force the real ones into
01387        memory.  */
01388     YYSTYPE *yyvs1 = yyvs;
01389     short int *yyss1 = yyss;
01390 
01391 
01392     /* Each stack pointer address is followed by the size of the
01393        data in use in that stack, in bytes.  This used to be a
01394        conditional around just the two extra args, but that might
01395        be undefined if yyoverflow is a macro.  */
01396     yyoverflow ("parser stack overflow",
01397             &yyss1, yysize * sizeof (*yyssp),
01398             &yyvs1, yysize * sizeof (*yyvsp),
01399 
01400             &yystacksize);
01401 
01402     yyss = yyss1;
01403     yyvs = yyvs1;
01404       }
01405 #else /* no yyoverflow */
01406 # ifndef YYSTACK_RELOCATE
01407       goto yyoverflowlab;
01408 # else
01409       /* Extend the stack our own way.  */
01410       if (YYMAXDEPTH <= yystacksize)
01411     goto yyoverflowlab;
01412       yystacksize *= 2;
01413       if (YYMAXDEPTH < yystacksize)
01414     yystacksize = YYMAXDEPTH;
01415 
01416       {
01417     short int *yyss1 = yyss;
01418     union yyalloc *yyptr =
01419       (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01420     if (! yyptr)
01421       goto yyoverflowlab;
01422     YYSTACK_RELOCATE (yyss);
01423     YYSTACK_RELOCATE (yyvs);
01424 
01425 #  undef YYSTACK_RELOCATE
01426     if (yyss1 != yyssa)
01427       YYSTACK_FREE (yyss1);
01428       }
01429 # endif
01430 #endif /* no yyoverflow */
01431 
01432       yyssp = yyss + yysize - 1;
01433       yyvsp = yyvs + yysize - 1;
01434 
01435 
01436       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01437           (unsigned long int) yystacksize));
01438 
01439       if (yyss + yystacksize - 1 <= yyssp)
01440     YYABORT;
01441     }
01442 
01443   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01444 
01445   goto yybackup;
01446 
01447 /*-----------.
01448 | yybackup.  |
01449 `-----------*/
01450 yybackup:
01451 
01452 /* Do appropriate processing given the current state.  */
01453 /* Read a lookahead token if we need one and don't already have one.  */
01454 /* yyresume: */
01455 
01456   /* First try to decide what to do without reference to lookahead token.  */
01457 
01458   yyn = yypact[yystate];
01459   if (yyn == YYPACT_NINF)
01460     goto yydefault;
01461 
01462   /* Not known => get a lookahead token if don't already have one.  */
01463 
01464   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
01465   if (yychar == YYEMPTY)
01466     {
01467       YYDPRINTF ((stderr, "Reading a token: "));
01468       yychar = YYLEX;
01469     }
01470 
01471   if (yychar <= YYEOF)
01472     {
01473       yychar = yytoken = YYEOF;
01474       YYDPRINTF ((stderr, "Now at end of input.\n"));
01475     }
01476   else
01477     {
01478       yytoken = YYTRANSLATE (yychar);
01479       YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
01480     }
01481 
01482   /* If the proper action on seeing token YYTOKEN is to reduce or to
01483      detect an error, take that action.  */
01484   yyn += yytoken;
01485   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
01486     goto yydefault;
01487   yyn = yytable[yyn];
01488   if (yyn <= 0)
01489     {
01490       if (yyn == 0 || yyn == YYTABLE_NINF)
01491     goto yyerrlab;
01492       yyn = -yyn;
01493       goto yyreduce;
01494     }
01495 
01496   if (yyn == YYFINAL)
01497     YYACCEPT;
01498 
01499   /* Shift the lookahead token.  */
01500   YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
01501 
01502   /* Discard the token being shifted unless it is eof.  */
01503   if (yychar != YYEOF)
01504     yychar = YYEMPTY;
01505 
01506   *++yyvsp = yylval;
01507 
01508 
01509   /* Count tokens shifted since error; after three, turn off error
01510      status.  */
01511   if (yyerrstatus)
01512     yyerrstatus--;
01513 
01514   yystate = yyn;
01515   goto yynewstate;
01516 
01517 
01518 /*-----------------------------------------------------------.
01519 | yydefault -- do the default action for the current state.  |
01520 `-----------------------------------------------------------*/
01521 yydefault:
01522   yyn = yydefact[yystate];
01523   if (yyn == 0)
01524     goto yyerrlab;
01525   goto yyreduce;
01526 
01527 
01528 /*-----------------------------.
01529 | yyreduce -- Do a reduction.  |
01530 `-----------------------------*/
01531 yyreduce:
01532   /* yyn is the number of a rule to reduce with.  */
01533   yylen = yyr2[yyn];
01534 
01535   /* If YYLEN is nonzero, implement the default value of the action:
01536      `$$ = $1'.
01537 
01538      Otherwise, the following line sets YYVAL to garbage.
01539      This behavior is undocumented and Bison
01540      users should not rely upon it.  Assigning to YYVAL
01541      unconditionally makes the parser a bit smaller, and it avoids a
01542      GCC warning that YYVAL may be used uninitialized.  */
01543   yyval = yyvsp[1-yylen];
01544 
01545 
01546   YY_REDUCE_PRINT (yyn);
01547   switch (yyn)
01548     {
01549         case 2:
01550 #line 165 "yacc.yy"
01551     {
01552       ;}
01553     break;
01554 
01555   case 4:
01556 #line 172 "yacc.yy"
01557     {
01558         printf("<INCLUDE>%s</INCLUDE>\n", yyvsp[0]._str->latin1() );
01559       ;}
01560     break;
01561 
01562   case 5:
01563 #line 176 "yacc.yy"
01564     {
01565       ;}
01566     break;
01567 
01568   case 6:
01569 #line 179 "yacc.yy"
01570     {
01571           ;}
01572     break;
01573 
01574   case 7:
01575 #line 184 "yacc.yy"
01576     { yyval._int = 1; ;}
01577     break;
01578 
01579   case 8:
01580 #line 185 "yacc.yy"
01581     { yyval._int = 0; ;}
01582     break;
01583 
01584   case 9:
01585 #line 190 "yacc.yy"
01586     {
01587         if (yyvsp[-2]._int)
01588               printf("<CLASS>\n    <NAME>%s</NAME>\n%s%s</CLASS>\n", ( in_namespace + *yyvsp[-4]._str ).latin1(), yyvsp[-3]._str->latin1(), yyvsp[-1]._str->latin1() );
01589         // default C++ visibility specifier is 'private'
01590         dcop_area = 0;
01591         dcop_signal_area = 0;
01592 
01593       ;}
01594     break;
01595 
01596   case 10:
01597 #line 199 "yacc.yy"
01598     {
01599         if (yyvsp[-2]._int)
01600               printf("<CLASS>\n    <NAME>%s</NAME>\n    <LINK_SCOPE>%s</LINK_SCOPE>\n%s%s</CLASS>\n", ( in_namespace + *yyvsp[-4]._str ).latin1(),yyvsp[-5]._str->latin1(),  yyvsp[-3]._str->latin1(), yyvsp[-1]._str->latin1() );
01601         // default C++ visibility specifier is 'private'
01602         dcop_area = 0;
01603         dcop_signal_area = 0;
01604 
01605       ;}
01606     break;
01607 
01608   case 11:
01609 #line 208 "yacc.yy"
01610     {
01611       ;}
01612     break;
01613 
01614   case 12:
01615 #line 211 "yacc.yy"
01616     {
01617       ;}
01618     break;
01619 
01620   case 13:
01621 #line 214 "yacc.yy"
01622     {
01623       ;}
01624     break;
01625 
01626   case 14:
01627 #line 217 "yacc.yy"
01628     {
01629                       in_namespace += *yyvsp[-1]._str; in_namespace += "::";
01630                   ;}
01631     break;
01632 
01633   case 15:
01634 #line 221 "yacc.yy"
01635     {
01636                       int pos = in_namespace.findRev( "::", -3 );
01637                       if( pos >= 0 )
01638                           in_namespace = in_namespace.left( pos + 2 );
01639                       else
01640                           in_namespace = "";
01641                   ;}
01642     break;
01643 
01644   case 16:
01645 #line 229 "yacc.yy"
01646     {
01647           ;}
01648     break;
01649 
01650   case 17:
01651 #line 232 "yacc.yy"
01652     {
01653           ;}
01654     break;
01655 
01656   case 18:
01657 #line 235 "yacc.yy"
01658     {
01659       ;}
01660     break;
01661 
01662   case 19:
01663 #line 238 "yacc.yy"
01664     {
01665       ;}
01666     break;
01667 
01668   case 20:
01669 #line 241 "yacc.yy"
01670     {
01671       ;}
01672     break;
01673 
01674   case 21:
01675 #line 244 "yacc.yy"
01676     {
01677       ;}
01678     break;
01679 
01680   case 22:
01681 #line 247 "yacc.yy"
01682     {
01683       ;}
01684     break;
01685 
01686   case 23:
01687 #line 250 "yacc.yy"
01688     {
01689       ;}
01690     break;
01691 
01692   case 24:
01693 #line 253 "yacc.yy"
01694     {
01695       ;}
01696     break;
01697 
01698   case 25:
01699 #line 256 "yacc.yy"
01700     {
01701       ;}
01702     break;
01703 
01704   case 36:
01705 #line 273 "yacc.yy"
01706     {
01707       dcop_area = 0;
01708       dcop_signal_area = 0;
01709     ;}
01710     break;
01711 
01712   case 37:
01713 #line 278 "yacc.yy"
01714     {
01715       dcop_area = 0;
01716       dcop_signal_area = 0;
01717     ;}
01718     break;
01719 
01720   case 38:
01721 #line 286 "yacc.yy"
01722     {
01723       dcop_area = 1;
01724       dcop_signal_area = 0;
01725     ;}
01726     break;
01727 
01728   case 39:
01729 #line 294 "yacc.yy"
01730     {
01731       /*
01732       A dcop signals area needs all dcop area capabilities,
01733       e.g. parsing of function parameters.
01734       */
01735       dcop_area = 1;
01736       dcop_signal_area = 1;
01737     ;}
01738     break;
01739 
01740   case 40:
01741 #line 305 "yacc.yy"
01742     {
01743       yyval._str = yyvsp[0]._str;
01744     ;}
01745     break;
01746 
01747   case 41:
01748 #line 308 "yacc.yy"
01749     {
01750        QString* tmp = new QString( "%1::%2" );
01751            *tmp = tmp->arg(*(yyvsp[-2]._str)).arg(*(yyvsp[0]._str));
01752            yyval._str = tmp;
01753     ;}
01754     break;
01755 
01756   case 42:
01757 #line 317 "yacc.yy"
01758     {
01759         QString* tmp = new QString( "    <SUPER>%1</SUPER>\n" );
01760         *tmp = tmp->arg( *(yyvsp[0]._str) );
01761         yyval._str = tmp;
01762       ;}
01763     break;
01764 
01765   case 43:
01766 #line 323 "yacc.yy"
01767     {
01768         QString* tmp = new QString( "    <SUPER>%1</SUPER>\n" );
01769         *tmp = tmp->arg( *(yyvsp[-3]._str) + "&lt;" + *(yyvsp[-1]._str) + "&gt;" );
01770         yyval._str = tmp;
01771       ;}
01772     break;
01773 
01774   case 44:
01775 #line 332 "yacc.yy"
01776     {
01777         yyval._str = yyvsp[0]._str;
01778       ;}
01779     break;
01780 
01781   case 45:
01782 #line 336 "yacc.yy"
01783     {
01784         yyval._str = yyvsp[0]._str;
01785       ;}
01786     break;
01787 
01788   case 46:
01789 #line 343 "yacc.yy"
01790     {
01791         yyval._str = yyvsp[-1]._str;
01792       ;}
01793     break;
01794 
01795   case 47:
01796 #line 347 "yacc.yy"
01797     {
01798         /* $$ = $1; */
01799         yyval._str = new QString( *(yyvsp[-2]._str) + *(yyvsp[0]._str) );
01800       ;}
01801     break;
01802 
01803   case 48:
01804 #line 355 "yacc.yy"
01805     {
01806         yyval._str = yyvsp[0]._str;
01807       ;}
01808     break;
01809 
01810   case 49:
01811 #line 359 "yacc.yy"
01812     {
01813         yyval._str = new QString( "" );
01814       ;}
01815     break;
01816 
01817   case 50:
01818 #line 366 "yacc.yy"
01819     {
01820           ;}
01821     break;
01822 
01823   case 52:
01824 #line 373 "yacc.yy"
01825     {
01826         yyval._str = new QString( "" );
01827       ;}
01828     break;
01829 
01830   case 53:
01831 #line 377 "yacc.yy"
01832     {
01833         yyval._str = new QString( *(yyvsp[-1]._str) + *(yyvsp[0]._str) );
01834       ;}
01835     break;
01836 
01837   case 54:
01838 #line 381 "yacc.yy"
01839     {
01840         yyval._str = new QString( *(yyvsp[-1]._str) + *(yyvsp[0]._str) );
01841       ;}
01842     break;
01843 
01844   case 55:
01845 #line 385 "yacc.yy"
01846     {
01847         yyval._str = new QString( *(yyvsp[-1]._str) + *(yyvsp[0]._str) );
01848       ;}
01849     break;
01850 
01851   case 56:
01852 #line 389 "yacc.yy"
01853     {
01854         yyval._str = yyvsp[0]._str;
01855       ;}
01856     break;
01857 
01858   case 57:
01859 #line 393 "yacc.yy"
01860     {
01861         yyval._str = yyvsp[0]._str;
01862       ;}
01863     break;
01864 
01865   case 58:
01866 #line 397 "yacc.yy"
01867     {
01868         yyval._str = yyvsp[0]._str;
01869       ;}
01870     break;
01871 
01872   case 59:
01873 #line 401 "yacc.yy"
01874     {   
01875             yyval._str = yyvsp[0]._str;
01876       ;}
01877     break;
01878 
01879   case 60:
01880 #line 405 "yacc.yy"
01881     {
01882             yyval._str = yyvsp[0]._str;
01883       ;}
01884     break;
01885 
01886   case 61:
01887 #line 409 "yacc.yy"
01888     {
01889         yyval._str = yyvsp[0]._str;
01890       ;}
01891     break;
01892 
01893   case 62:
01894 #line 413 "yacc.yy"
01895     {
01896         yyval._str = yyvsp[0]._str;
01897       ;}
01898     break;
01899 
01900   case 63:
01901 #line 417 "yacc.yy"
01902     {
01903         yyval._str = yyvsp[0]._str;
01904       ;}
01905     break;
01906 
01907   case 64:
01908 #line 421 "yacc.yy"
01909     {
01910         yyval._str = yyvsp[0]._str;
01911       ;}
01912     break;
01913 
01914   case 65:
01915 #line 425 "yacc.yy"
01916     {
01917                 yyval._str = yyvsp[0]._str;
01918           ;}
01919     break;
01920 
01921   case 66:
01922 #line 429 "yacc.yy"
01923     {
01924         yyval._str = yyvsp[0]._str;
01925       ;}
01926     break;
01927 
01928   case 67:
01929 #line 433 "yacc.yy"
01930     {
01931                 yyval._str = yyvsp[0]._str;
01932           ;}
01933     break;
01934 
01935   case 68:
01936 #line 437 "yacc.yy"
01937     {
01938                 yyval._str = yyvsp[0]._str;
01939           ;}
01940     break;
01941 
01942   case 75:
01943 #line 455 "yacc.yy"
01944     {;}
01945     break;
01946 
01947   case 76:
01948 #line 456 "yacc.yy"
01949     {;}
01950     break;
01951 
01952   case 77:
01953 #line 460 "yacc.yy"
01954     {;}
01955     break;
01956 
01957   case 78:
01958 #line 461 "yacc.yy"
01959     {;}
01960     break;
01961 
01962   case 79:
01963 #line 462 "yacc.yy"
01964     {;}
01965     break;
01966 
01967   case 80:
01968 #line 463 "yacc.yy"
01969     {;}
01970     break;
01971 
01972   case 81:
01973 #line 464 "yacc.yy"
01974     {;}
01975     break;
01976 
01977   case 82:
01978 #line 468 "yacc.yy"
01979     {;}
01980     break;
01981 
01982   case 83:
01983 #line 469 "yacc.yy"
01984     {;}
01985     break;
01986 
01987   case 84:
01988 #line 470 "yacc.yy"
01989     {;}
01990     break;
01991 
01992   case 85:
01993 #line 475 "yacc.yy"
01994     {
01995         if (dcop_area) {
01996           QString* tmp = new QString("<TYPEDEF name=\"%1\" template=\"%2\"><PARAM %3</TYPEDEF>\n");
01997           *tmp = tmp->arg( *(yyvsp[-1]._str) ).arg( *(yyvsp[-5]._str) ).arg( *(yyvsp[-3]._str) );
01998           yyval._str = tmp;
01999         } else {
02000           yyval._str = new QString("");
02001         }
02002       ;}
02003     break;
02004 
02005   case 86:
02006 #line 485 "yacc.yy"
02007     {
02008         if (dcop_area)
02009           yyerror("scoped template typedefs are not supported in dcop areas!");
02010       ;}
02011     break;
02012 
02013   case 87:
02014 #line 493 "yacc.yy"
02015     {
02016         yyval._int = 0;
02017       ;}
02018     break;
02019 
02020   case 88:
02021 #line 497 "yacc.yy"
02022     {
02023         yyval._int = 1;
02024       ;}
02025     break;
02026 
02027   case 89:
02028 #line 503 "yacc.yy"
02029     { yyval._str = new QString("signed int"); ;}
02030     break;
02031 
02032   case 90:
02033 #line 504 "yacc.yy"
02034     { yyval._str = new QString("signed int"); ;}
02035     break;
02036 
02037   case 91:
02038 #line 505 "yacc.yy"
02039     { yyval._str = new QString("unsigned int"); ;}
02040     break;
02041 
02042   case 92:
02043 #line 506 "yacc.yy"
02044     { yyval._str = new QString("unsigned int"); ;}
02045     break;
02046 
02047   case 93:
02048 #line 507 "yacc.yy"
02049     { yyval._str = new QString("signed short int"); ;}
02050     break;
02051 
02052   case 94:
02053 #line 508 "yacc.yy"
02054     { yyval._str = new QString("signed short int"); ;}
02055     break;
02056 
02057   case 95:
02058 #line 509 "yacc.yy"
02059     { yyval._str = new QString("signed long int"); ;}
02060     break;
02061 
02062   case 96:
02063 #line 510 "yacc.yy"
02064     { yyval._str = new QString("signed long int"); ;}
02065     break;
02066 
02067   case 97:
02068 #line 511 "yacc.yy"
02069     { yyval._str = new QString("unsigned short int"); ;}
02070     break;
02071 
02072   case 98:
02073 #line 512 "yacc.yy"
02074     { yyval._str = new QString("unsigned short int"); ;}
02075     break;
02076 
02077   case 99:
02078 #line 513 "yacc.yy"
02079     { yyval._str = new QString("unsigned long int"); ;}
02080     break;
02081 
02082   case 100:
02083 #line 514 "yacc.yy"
02084     { yyval._str = new QString("unsigned long int"); ;}
02085     break;
02086 
02087   case 101:
02088 #line 515 "yacc.yy"
02089     { yyval._str = new QString("int"); ;}
02090     break;
02091 
02092   case 102:
02093 #line 516 "yacc.yy"
02094     { yyval._str = new QString("long int"); ;}
02095     break;
02096 
02097   case 103:
02098 #line 517 "yacc.yy"
02099     { yyval._str = new QString("long int"); ;}
02100     break;
02101 
02102   case 104:
02103 #line 518 "yacc.yy"
02104     { yyval._str = new QString("short int"); ;}
02105     break;
02106 
02107   case 105:
02108 #line 519 "yacc.yy"
02109     { yyval._str = new QString("short int"); ;}
02110     break;
02111 
02112   case 106:
02113 #line 520 "yacc.yy"
02114     { yyval._str = new QString("char"); ;}
02115     break;
02116 
02117   case 107:
02118 #line 521 "yacc.yy"
02119     { yyval._str = new QString("signed char"); ;}
02120     break;
02121 
02122   case 108:
02123 #line 522 "yacc.yy"
02124     { yyval._str = new QString("unsigned char"); ;}
02125     break;
02126 
02127   case 111:
02128 #line 532 "yacc.yy"
02129     {
02130         yyval._str = new QString( "" );
02131       ;}
02132     break;
02133 
02134   case 113:
02135 #line 537 "yacc.yy"
02136     {
02137         yyval._str = new QString( *(yyvsp[-2]._str) + *(yyvsp[0]._str) );
02138       ;}
02139     break;
02140 
02141   case 115:
02142 #line 545 "yacc.yy"
02143     { yyval._str = yyvsp[0]._str; ;}
02144     break;
02145 
02146   case 116:
02147 #line 546 "yacc.yy"
02148     { yyval._str = yyvsp[0]._str; ;}
02149     break;
02150 
02151   case 117:
02152 #line 547 "yacc.yy"
02153     { yyval._str = yyvsp[0]._str; ;}
02154     break;
02155 
02156   case 118:
02157 #line 548 "yacc.yy"
02158     {
02159         QString *tmp = new QString("%1&lt;%2&gt;");
02160         *tmp = tmp->arg(*(yyvsp[-3]._str));
02161         *tmp = tmp->arg(*(yyvsp[-1]._str));
02162         yyval._str = tmp;
02163      ;}
02164     break;
02165 
02166   case 119:
02167 #line 554 "yacc.yy"
02168     {
02169         QString *tmp = new QString("%1&lt;%2&gt;::%3");
02170         *tmp = tmp->arg(*(yyvsp[-5]._str));
02171         *tmp = tmp->arg(*(yyvsp[-3]._str));
02172         *tmp = tmp->arg(*(yyvsp[0]._str));
02173         yyval._str = tmp;
02174      ;}
02175     break;
02176 
02177   case 120:
02178 #line 566 "yacc.yy"
02179     {
02180         yyval._str = new QString(*(yyvsp[-2]._str) + "," + *(yyvsp[0]._str));
02181       ;}
02182     break;
02183 
02184   case 121:
02185 #line 570 "yacc.yy"
02186     {
02187         yyval._str = yyvsp[0]._str;
02188       ;}
02189     break;
02190 
02191   case 122:
02192 #line 578 "yacc.yy"
02193     {
02194         if (dcop_area)
02195           yyerror("in dcop areas are no pointers allowed");
02196       ;}
02197     break;
02198 
02199   case 123:
02200 #line 583 "yacc.yy"
02201     {
02202         yyval._str = yyvsp[0]._str;
02203       ;}
02204     break;
02205 
02206   case 124:
02207 #line 592 "yacc.yy"
02208     {
02209         if (dcop_area)
02210           yyerror("in dcop areas are no pointers allowed");
02211       ;}
02212     break;
02213 
02214   case 125:
02215 #line 596 "yacc.yy"
02216     {
02217          if (dcop_area) {
02218         QString* tmp = new QString("<TYPE  qleft=\"const\" qright=\"" AMP_ENTITY "\">%1</TYPE>");
02219         *tmp = tmp->arg( *(yyvsp[-1]._str) );
02220         yyval._str = tmp;
02221          }
02222       ;}
02223     break;
02224 
02225   case 126:
02226 #line 603 "yacc.yy"
02227     {
02228         QString* tmp = new QString("<TYPE>%1</TYPE>");
02229         *tmp = tmp->arg( *(yyvsp[0]._str) );
02230         yyval._str = tmp;
02231     ;}
02232     break;
02233 
02234   case 127:
02235 #line 608 "yacc.yy"
02236     {
02237         QString* tmp = new QString("<TYPE>%1</TYPE>");
02238         *tmp = tmp->arg( *(yyvsp[-1]._str) );
02239         yyval._str = tmp;
02240     ;}
02241     break;
02242 
02243   case 128:
02244 #line 613 "yacc.yy"
02245     { 
02246         if (dcop_area) { 
02247            QString* tmp = new QString("<TYPE  qleft=\"const\" qright=\"" AMP_ENTITY "\">%1</TYPE>"); 
02248            *tmp = tmp->arg( *(yyvsp[-2]._str) ); 
02249            yyval._str = tmp; 
02250         } 
02251     ;}
02252     break;
02253 
02254   case 129:
02255 #line 620 "yacc.yy"
02256     {
02257          if (dcop_area)
02258         yyerror("in dcop areas are only const references allowed!");
02259       ;}
02260     break;
02261 
02262   case 130:
02263 #line 625 "yacc.yy"
02264     {
02265         QString* tmp = new QString("<TYPE>%1</TYPE>");
02266         *tmp = tmp->arg( *(yyvsp[0]._str) );
02267         yyval._str = tmp;
02268     ;}
02269     break;
02270 
02271   case 131:
02272 #line 631 "yacc.yy"
02273     {
02274         if (dcop_area)
02275           yyerror("in dcop areas are no pointers allowed");
02276       ;}
02277     break;
02278 
02279   case 132:
02280 #line 639 "yacc.yy"
02281     {
02282         yyval._str = new QString(*(yyvsp[-2]._str) + "," + *(yyvsp[0]._str));
02283       ;}
02284     break;
02285 
02286   case 133:
02287 #line 643 "yacc.yy"
02288     {
02289         yyval._str = yyvsp[0]._str;
02290       ;}
02291     break;
02292 
02293   case 134:
02294 #line 650 "yacc.yy"
02295     {
02296         if (dcop_area) {
02297            QString* tmp = new QString("\n        <ARG>%1<NAME>%2</NAME></ARG>");
02298            *tmp = tmp->arg( *(yyvsp[-2]._str) );
02299            *tmp = tmp->arg( *(yyvsp[-1]._str) );
02300            yyval._str = tmp;        
02301         } else yyval._str = new QString();
02302       ;}
02303     break;
02304 
02305   case 135:
02306 #line 659 "yacc.yy"
02307     {
02308         if (dcop_area) {
02309            QString* tmp = new QString("\n        <ARG>%1</ARG>");
02310            *tmp = tmp->arg( *(yyvsp[-1]._str) );
02311            yyval._str = tmp;        
02312         } else yyval._str = new QString();
02313       ;}
02314     break;
02315 
02316   case 136:
02317 #line 667 "yacc.yy"
02318     {
02319         if (dcop_area)
02320             yyerror("variable arguments not supported in dcop area.");
02321         yyval._str = new QString("");
02322       ;}
02323     break;
02324 
02325   case 137:
02326 #line 676 "yacc.yy"
02327     {
02328       ;}
02329     break;
02330 
02331   case 138:
02332 #line 679 "yacc.yy"
02333     {
02334       ;}
02335     break;
02336 
02337   case 139:
02338 #line 682 "yacc.yy"
02339     {
02340       ;}
02341     break;
02342 
02343   case 140:
02344 #line 689 "yacc.yy"
02345     {
02346           ;}
02347     break;
02348 
02349   case 141:
02350 #line 692 "yacc.yy"
02351     {
02352           ;}
02353     break;
02354 
02355   case 142:
02356 #line 695 "yacc.yy"
02357     {
02358           ;}
02359     break;
02360 
02361   case 143:
02362 #line 698 "yacc.yy"
02363     {
02364           ;}
02365     break;
02366 
02367   case 144:
02368 #line 701 "yacc.yy"
02369     {
02370           ;}
02371     break;
02372 
02373   case 145:
02374 #line 706 "yacc.yy"
02375     { yyval._int = 0; ;}
02376     break;
02377 
02378   case 146:
02379 #line 707 "yacc.yy"
02380     { yyval._int = 1; ;}
02381     break;
02382 
02383   case 152:
02384 #line 716 "yacc.yy"
02385     {
02386          if (dcop_area || dcop_signal_area) {
02387         QString* tmp = 0;
02388                 tmp = new QString(
02389                         "    <%4>\n"
02390                         "        %2\n"
02391                         "        <NAME>%1</NAME>"
02392                         "%3\n"
02393                         "     </%5>\n");
02394         *tmp = tmp->arg( *(yyvsp[-4]._str) );
02395         *tmp = tmp->arg( *(yyvsp[-5]._str) );
02396                 *tmp = tmp->arg( *(yyvsp[-2]._str) );
02397                 
02398                 QString tagname = (dcop_signal_area) ? "SIGNAL" : "FUNC";
02399                 QString attr = (yyvsp[0]._int) ? " qual=\"const\"" : "";
02400                 *tmp = tmp->arg( QString("%1%2").arg(tagname).arg(attr) );
02401                 *tmp = tmp->arg( QString("%1").arg(tagname) );
02402         yyval._str = tmp;
02403          } else
02404             yyval._str = new QString("");
02405       ;}
02406     break;
02407 
02408   case 153:
02409 #line 738 "yacc.yy"
02410     {
02411          if (dcop_area)
02412         yyerror("operators aren't allowed in dcop areas!");
02413          yyval._str = new QString("");
02414       ;}
02415     break;
02416 
02417   case 154:
02418 #line 748 "yacc.yy"
02419     {;}
02420     break;
02421 
02422   case 155:
02423 #line 749 "yacc.yy"
02424     {;}
02425     break;
02426 
02427   case 156:
02428 #line 750 "yacc.yy"
02429     {;}
02430     break;
02431 
02432   case 157:
02433 #line 755 "yacc.yy"
02434     {;}
02435     break;
02436 
02437   case 158:
02438 #line 760 "yacc.yy"
02439     {;}
02440     break;
02441 
02442   case 159:
02443 #line 761 "yacc.yy"
02444     {;}
02445     break;
02446 
02447   case 160:
02448 #line 766 "yacc.yy"
02449     {
02450             yyval._str = yyvsp[-1]._str;
02451       ;}
02452     break;
02453 
02454   case 161:
02455 #line 770 "yacc.yy"
02456     {
02457         yyval._str = yyvsp[-3]._str;
02458       ;}
02459     break;
02460 
02461   case 162:
02462 #line 774 "yacc.yy"
02463     {
02464         yyval._str = yyvsp[-1]._str;
02465       ;}
02466     break;
02467 
02468   case 163:
02469 #line 778 "yacc.yy"
02470     {
02471           /* The constructor */
02472           assert(!dcop_area);
02473               yyval._str = new QString("");
02474       ;}
02475     break;
02476 
02477   case 164:
02478 #line 784 "yacc.yy"
02479     {
02480           /* The constructor */
02481           assert(!dcop_area);
02482               yyval._str = new QString("");
02483       ;}
02484     break;
02485 
02486   case 165:
02487 #line 790 "yacc.yy"
02488     {
02489           /* The destructor */
02490           assert(!dcop_area);
02491               yyval._str = new QString("");
02492       ;}
02493     break;
02494 
02495   case 166:
02496 #line 796 "yacc.yy"
02497     {
02498               if (dcop_area) {
02499                  if (dcop_signal_area)
02500                      yyerror("DCOP signals cannot be static");
02501                  else
02502                      yyerror("DCOP functions cannot be static");
02503               } else {
02504                  yyval._str = new QString();
02505               }  
02506       ;}
02507     break;
02508 
02509   case 167:
02510 #line 809 "yacc.yy"
02511     {
02512         function_mode = 1;
02513     ;}
02514     break;
02515 
02516   case 171:
02517 #line 821 "yacc.yy"
02518     {;}
02519     break;
02520 
02521   case 172:
02522 #line 822 "yacc.yy"
02523     {;}
02524     break;
02525 
02526   case 176:
02527 #line 834 "yacc.yy"
02528     {;}
02529     break;
02530 
02531   case 177:
02532 #line 835 "yacc.yy"
02533     {;}
02534     break;
02535 
02536   case 178:
02537 #line 836 "yacc.yy"
02538     {;}
02539     break;
02540 
02541   case 179:
02542 #line 839 "yacc.yy"
02543     {;}
02544     break;
02545 
02546   case 180:
02547 #line 843 "yacc.yy"
02548     {;}
02549     break;
02550 
02551   case 181:
02552 #line 844 "yacc.yy"
02553     {;}
02554     break;
02555 
02556   case 182:
02557 #line 845 "yacc.yy"
02558     {;}
02559     break;
02560 
02561   case 183:
02562 #line 846 "yacc.yy"
02563     {;}
02564     break;
02565 
02566   case 184:
02567 #line 847 "yacc.yy"
02568     {;}
02569     break;
02570 
02571 
02572     }
02573 
02574 /* Line 1010 of yacc.c.  */
02575 #line 2576 "yacc.cc"
02576 
02577   yyvsp -= yylen;
02578   yyssp -= yylen;
02579 
02580 
02581   YY_STACK_PRINT (yyss, yyssp);
02582 
02583   *++yyvsp = yyval;
02584 
02585 
02586   /* Now `shift' the result of the reduction.  Determine what state
02587      that goes to, based on the state we popped back to and the rule
02588      number reduced by.  */
02589 
02590   yyn = yyr1[yyn];
02591 
02592   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
02593   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02594     yystate = yytable[yystate];
02595   else
02596     yystate = yydefgoto[yyn - YYNTOKENS];
02597 
02598   goto yynewstate;
02599 
02600 
02601 /*------------------------------------.
02602 | yyerrlab -- here on detecting error |
02603 `------------------------------------*/
02604 yyerrlab:
02605   /* If not already recovering from an error, report this error.  */
02606   if (!yyerrstatus)
02607     {
02608       ++yynerrs;
02609 #if YYERROR_VERBOSE
02610       yyn = yypact[yystate];
02611 
02612       if (YYPACT_NINF < yyn && yyn < YYLAST)
02613     {
02614       YYSIZE_T yysize = 0;
02615       int yytype = YYTRANSLATE (yychar);
02616       const char* yyprefix;
02617       char *yymsg;
02618       int yyx;
02619 
02620       /* Start YYX at -YYN if negative to avoid negative indexes in
02621          YYCHECK.  */
02622       int yyxbegin = yyn < 0 ? -yyn : 0;
02623 
02624       /* Stay within bounds of both yycheck and yytname.  */
02625       int yychecklim = YYLAST - yyn;
02626       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
02627       int yycount = 0;
02628 
02629       yyprefix = ", expecting ";
02630       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
02631         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02632           {
02633         yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
02634         yycount += 1;
02635         if (yycount == 5)
02636           {
02637             yysize = 0;
02638             break;
02639           }
02640           }
02641       yysize += (sizeof ("syntax error, unexpected ")
02642              + yystrlen (yytname[yytype]));
02643       yymsg = (char *) YYSTACK_ALLOC (yysize);
02644       if (yymsg != 0)
02645         {
02646           char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
02647           yyp = yystpcpy (yyp, yytname[yytype]);
02648 
02649           if (yycount < 5)
02650         {
02651           yyprefix = ", expecting ";
02652           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
02653             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
02654               {
02655             yyp = yystpcpy (yyp, yyprefix);
02656             yyp = yystpcpy (yyp, yytname[yyx]);
02657             yyprefix = " or ";
02658               }
02659         }
02660           yyerror (yymsg);
02661           YYSTACK_FREE (yymsg);
02662         }
02663       else
02664         yyerror ("syntax error; also virtual memory exhausted");
02665     }
02666       else
02667 #endif /* YYERROR_VERBOSE */
02668     yyerror ("syntax error");
02669     }
02670 
02671 
02672 
02673   if (yyerrstatus == 3)
02674     {
02675       /* If just tried and failed to reuse lookahead token after an
02676      error, discard it.  */
02677 
02678       if (yychar <= YYEOF)
02679         {
02680           /* If at end of input, pop the error token,
02681          then the rest of the stack, then return failure.  */
02682       if (yychar == YYEOF)
02683          for (;;)
02684            {
02685          YYPOPSTACK;
02686          if (yyssp == yyss)
02687            YYABORT;
02688          YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
02689          yydestruct (yystos[*yyssp], yyvsp);
02690            }
02691         }
02692       else
02693     {
02694       YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
02695       yydestruct (yytoken, &yylval);
02696       yychar = YYEMPTY;
02697 
02698     }
02699     }
02700 
02701   /* Else will try to reuse lookahead token after shifting the error
02702      token.  */
02703   goto yyerrlab1;
02704 
02705 
02706 /*---------------------------------------------------.
02707 | yyerrorlab -- error raised explicitly by YYERROR.  |
02708 `---------------------------------------------------*/
02709 yyerrorlab:
02710 
02711 #ifdef __GNUC__
02712   /* Pacify GCC when the user code never invokes YYERROR and the label
02713      yyerrorlab therefore never appears in user code.  */
02714   if (0)
02715      goto yyerrorlab;
02716 #endif
02717 
02718   yyvsp -= yylen;
02719   yyssp -= yylen;
02720   yystate = *yyssp;
02721   goto yyerrlab1;
02722 
02723 
02724 /*-------------------------------------------------------------.
02725 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
02726 `-------------------------------------------------------------*/
02727 yyerrlab1:
02728   yyerrstatus = 3;  /* Each real token shifted decrements this.  */
02729 
02730   for (;;)
02731     {
02732       yyn = yypact[yystate];
02733       if (yyn != YYPACT_NINF)
02734     {
02735       yyn += YYTERROR;
02736       if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
02737         {
02738           yyn = yytable[yyn];
02739           if (0 < yyn)
02740         break;
02741         }
02742     }
02743 
02744       /* Pop the current state because it cannot handle the error token.  */
02745       if (yyssp == yyss)
02746     YYABORT;
02747 
02748       YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
02749       yydestruct (yystos[yystate], yyvsp);
02750       YYPOPSTACK;
02751       yystate = *yyssp;
02752       YY_STACK_PRINT (yyss, yyssp);
02753     }
02754 
02755   if (yyn == YYFINAL)
02756     YYACCEPT;
02757 
02758   YYDPRINTF ((stderr, "Shifting error token, "));
02759 
02760   *++yyvsp = yylval;
02761 
02762 
02763   yystate = yyn;
02764   goto yynewstate;
02765 
02766 
02767 /*-------------------------------------.
02768 | yyacceptlab -- YYACCEPT comes here.  |
02769 `-------------------------------------*/
02770 yyacceptlab:
02771   yyresult = 0;
02772   goto yyreturn;
02773 
02774 /*-----------------------------------.
02775 | yyabortlab -- YYABORT comes here.  |
02776 `-----------------------------------*/
02777 yyabortlab:
02778   yyresult = 1;
02779   goto yyreturn;
02780 
02781 #ifndef yyoverflow
02782 /*----------------------------------------------.
02783 | yyoverflowlab -- parser overflow comes here.  |
02784 `----------------------------------------------*/
02785 yyoverflowlab:
02786   yyerror ("parser stack overflow");
02787   yyresult = 2;
02788   /* Fall through.  */
02789 #endif
02790 
02791 yyreturn:
02792 #ifndef yyoverflow
02793   if (yyss != yyssa)
02794     YYSTACK_FREE (yyss);
02795 #endif
02796   return yyresult;
02797 }
02798 
02799 
02800 #line 850 "yacc.yy"
02801 
02802 
02803 void dcopidlParse( const char *_code )
02804 {
02805     dcopidlInitFlex( _code );
02806     yyparse();
02807 }
02808 
KDE Logo
This file is part of the documentation for dcop Library Version 3.4.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Feb 8 06:21:43 2006 by doxygen 1.4.4 written by Dimitri van Heesch, © 1997-2003