LCOV - code coverage report
Current view: top level - workdir/unxlngi6.pro/YaccTarget/idlc/source - parser.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 97 253 38.3 %
Date: 2012-08-25 Functions: 2 8 25.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 261 515 50.7 %

           Branch data     Line data    Source code
       1                 :            : /* A Bison parser, made by GNU Bison 2.5.  */
       2                 :            : 
       3                 :            : /* Bison implementation for Yacc-like parsers in C
       4                 :            :    
       5                 :            :       Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
       6                 :            :    
       7                 :            :    This program is free software: you can redistribute it and/or modify
       8                 :            :    it under the terms of the GNU General Public License as published by
       9                 :            :    the Free Software Foundation, either version 3 of the License, or
      10                 :            :    (at your option) any later version.
      11                 :            :    
      12                 :            :    This program is distributed in the hope that it will be useful,
      13                 :            :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      14                 :            :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15                 :            :    GNU General Public License for more details.
      16                 :            :    
      17                 :            :    You should have received a copy of the GNU General Public License
      18                 :            :    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
      19                 :            : 
      20                 :            : /* As a special exception, you may create a larger work that contains
      21                 :            :    part or all of the Bison parser skeleton and distribute that work
      22                 :            :    under terms of your choice, so long as that work isn't itself a
      23                 :            :    parser generator using the skeleton or a modified version thereof
      24                 :            :    as a parser skeleton.  Alternatively, if you modify or redistribute
      25                 :            :    the parser skeleton itself, you may (at your option) remove this
      26                 :            :    special exception, which will cause the skeleton and the resulting
      27                 :            :    Bison output files to be licensed under the GNU General Public
      28                 :            :    License without this special exception.
      29                 :            :    
      30                 :            :    This special exception was added by the Free Software Foundation in
      31                 :            :    version 2.2 of Bison.  */
      32                 :            : 
      33                 :            : /* C LALR(1) parser skeleton written by Richard Stallman, by
      34                 :            :    simplifying the original so-called "semantic" parser.  */
      35                 :            : 
      36                 :            : /* All symbols defined below should begin with yy or YY, to avoid
      37                 :            :    infringing on user name space.  This should be done even for local
      38                 :            :    variables, as they might otherwise be expanded by user macros.
      39                 :            :    There are some unavoidable exceptions within include files to
      40                 :            :    define necessary library symbols; they are noted "INFRINGES ON
      41                 :            :    USER NAME SPACE" below.  */
      42                 :            : 
      43                 :            : /* Identify Bison output.  */
      44                 :            : #define YYBISON 1
      45                 :            : 
      46                 :            : /* Bison version.  */
      47                 :            : #define YYBISON_VERSION "2.5"
      48                 :            : 
      49                 :            : /* Skeleton name.  */
      50                 :            : #define YYSKELETON_NAME "yacc.c"
      51                 :            : 
      52                 :            : /* Pure parsers.  */
      53                 :            : #define YYPURE 0
      54                 :            : 
      55                 :            : /* Push parsers.  */
      56                 :            : #define YYPUSH 0
      57                 :            : 
      58                 :            : /* Pull parsers.  */
      59                 :            : #define YYPULL 1
      60                 :            : 
      61                 :            : /* Using locations.  */
      62                 :            : #define YYLSP_NEEDED 0
      63                 :            : 
      64                 :            : 
      65                 :            : 
      66                 :            : /* Copy the first part of user declarations.  */
      67                 :            : 
      68                 :            : /* Line 268 of yacc.c  */
      69                 :            : #line 23 "/usr/local/src/libreoffice/idlc/source/parser.y"
      70                 :            : 
      71                 :            : #include <string.h>
      72                 :            : 
      73                 :            : #ifndef _IDLC_IDLC_HXX_
      74                 :            : #include <idlc/idlc.hxx>
      75                 :            : #endif
      76                 :            : #ifndef _IDLC_ERRORHANDLER_HXX_
      77                 :            : #include <idlc/errorhandler.hxx>
      78                 :            : #endif
      79                 :            : #ifndef _IDLC_FEHELPER_HXX_
      80                 :            : #include <idlc/fehelper.hxx>
      81                 :            : #endif
      82                 :            : #ifndef _IDLC_EXPRESSION_HXX_
      83                 :            : #include <idlc/astexpression.hxx>
      84                 :            : #endif
      85                 :            : #ifndef _IDLC_ASTCONSTANTS_HXX_
      86                 :            : #include <idlc/astconstants.hxx>
      87                 :            : #endif
      88                 :            : #ifndef _IDLC_ASTCONSTANT_HXX_
      89                 :            : #include <idlc/astconstant.hxx>
      90                 :            : #endif
      91                 :            : #ifndef _IDLC_ASTARRAY_HXX_
      92                 :            : #include <idlc/astarray.hxx>
      93                 :            : #endif
      94                 :            : #ifndef _IDLC_ASTBASETYPE_HXX_
      95                 :            : #include <idlc/astbasetype.hxx>
      96                 :            : #endif
      97                 :            : #ifndef _IDLC_ASTTYPEDEF_HXX_
      98                 :            : #include <idlc/asttypedef.hxx>
      99                 :            : #endif
     100                 :            : #ifndef _IDLC_ASTEXCEPTION_HXX_
     101                 :            : #include <idlc/astexception.hxx>
     102                 :            : #endif
     103                 :            : #ifndef _IDLC_ASTMEMBER_HXX_
     104                 :            : #include <idlc/astmember.hxx>
     105                 :            : #endif
     106                 :            : #ifndef _IDLC_ASTENUM_HXX_
     107                 :            : #include <idlc/astenum.hxx>
     108                 :            : #endif
     109                 :            : #ifndef _IDLC_ASTSEQUENCE_HXX_
     110                 :            : #include <idlc/astsequence.hxx>
     111                 :            : #endif
     112                 :            : #ifndef _IDLC_ASTATTRIBUTE_HXX_
     113                 :            : #include <idlc/astattribute.hxx>
     114                 :            : #endif
     115                 :            : #ifndef _IDLC_ASTOPERATION_HXX_
     116                 :            : #include <idlc/astoperation.hxx>
     117                 :            : #endif
     118                 :            : #ifndef _IDLC_ASTPARAMETER_HXX_
     119                 :            : #include <idlc/astparameter.hxx>
     120                 :            : #endif
     121                 :            : #ifndef _IDLC_ASTINTERFACEMEMBER_HXX_
     122                 :            : #include <idlc/astinterfacemember.hxx>
     123                 :            : #endif
     124                 :            : #ifndef _IDLC_ASTSERVICEMEMBER_HXX_
     125                 :            : #include <idlc/astservicemember.hxx>
     126                 :            : #endif
     127                 :            : #ifndef _IDLC_ASTOBSERVES_HXX_
     128                 :            : #include <idlc/astobserves.hxx>
     129                 :            : #endif
     130                 :            : #ifndef _IDLC_ASTNEEDS_HXX_
     131                 :            : #include <idlc/astneeds.hxx>
     132                 :            : #endif
     133                 :            : #ifndef _IDLC_ASTUNION_HXX_
     134                 :            : #include <idlc/astunion.hxx>
     135                 :            : #endif
     136                 :            : #include "idlc/aststructinstance.hxx"
     137                 :            : 
     138                 :            : #include "attributeexceptions.hxx"
     139                 :            : 
     140                 :            : #include "rtl/strbuf.hxx"
     141                 :            : 
     142                 :            : #include <algorithm>
     143                 :            : #include <vector>
     144                 :            : 
     145                 :            : 
     146                 :            : #define YYDEBUG 1
     147                 :            : #if !(defined MACOSX && defined PPC)
     148                 :            : #define YYERROR_VERBOSE 1
     149                 :            : #endif
     150                 :            : 
     151                 :            : using ::rtl::OUString;
     152                 :            : using ::rtl::OString;
     153                 :            : using ::rtl::OStringToOUString;
     154                 :            : using ::rtl::OStringBuffer;
     155                 :            : 
     156                 :            : extern int yylex(void);
     157                 :            : void yyerror(char const *);
     158                 :            : 
     159                 :            : void checkIdentifier(::rtl::OString* id)
     160                 :            : {
     161                 :            :     static short check = 0;
     162                 :            :     if (check == 0) {
     163                 :            :         if (idlc()->getOptions()->isValid("-cid"))
     164                 :            :             check = 1;
     165                 :            :         else
     166                 :            :             check = 2;
     167                 :            :     }
     168                 :            : 
     169                 :            :     if ( id->indexOf('_') >= 0 )
     170                 :            :         if ( (id->pData->buffer[0] >= 97 && id->pData->buffer[0] <= 122)
     171                 :            :              || id->pData->buffer[0] == '_') {
     172                 :            :             if (check == 1) {
     173                 :            :                 ::rtl::OStringBuffer msg(25 + id->getLength());
     174                 :            :                 msg.append("mismatched identifier '");
     175                 :            :                 msg.append(*id);
     176                 :            :                 msg.append("'");
     177                 :            :                 idlc()->error()->syntaxError(idlc()->getParseState(),
     178                 :            :                                          idlc()->getLineNumber(),
     179                 :            :                                          msg.getStr());
     180                 :            :             }
     181                 :            :             else
     182                 :            :                 idlc()->error()->warning0(WIDL_WRONG_NAMING_CONV, id->getStr());
     183                 :            :         }
     184                 :            : }
     185                 :            : 
     186                 :            : void reportDoubleMemberDeclarations(
     187                 :            :     AstInterface::DoubleMemberDeclarations const & doubleMembers)
     188                 :            : {
     189                 :            :     for (AstInterface::DoubleMemberDeclarations::const_iterator i(
     190                 :            :              doubleMembers.begin());
     191                 :            :          i != doubleMembers.end(); ++i)
     192                 :            :     {
     193                 :            :         idlc()->error()->error2(EIDL_DOUBLE_MEMBER, i->first, i->second);
     194                 :            :     }
     195                 :            : }
     196                 :            : 
     197                 :            : void addInheritedInterface(
     198                 :            :     AstInterface * ifc, rtl::OString const & name, bool optional,
     199                 :            :     rtl::OUString const & documentation)
     200                 :            : {
     201                 :            :     AstDeclaration * decl = ifc->lookupByName(name);
     202                 :            :     AstDeclaration const * resolved = resolveTypedefs(decl);
     203                 :            :     if (resolved != 0 && resolved->getNodeType() == NT_interface) {
     204                 :            :         if (idlc()->error()->checkPublished(decl)) {
     205                 :            :             if (!static_cast< AstInterface const * >(resolved)->isDefined()) {
     206                 :            :                 idlc()->error()->inheritanceError(
     207                 :            :                     NT_interface, &ifc->getScopedName(), decl);
     208                 :            :             } else {
     209                 :            :                 AstInterface::DoubleDeclarations doubleDecls(
     210                 :            :                     ifc->checkInheritedInterfaceClashes(
     211                 :            :                         static_cast< AstInterface const * >(resolved),
     212                 :            :                         optional));
     213                 :            :                 if (doubleDecls.interfaces.empty()
     214                 :            :                     && doubleDecls.members.empty())
     215                 :            :                 {
     216                 :            :                     ifc->addInheritedInterface(
     217                 :            :                         static_cast< AstType * >(decl), optional,
     218                 :            :                         documentation);
     219                 :            :                 } else {
     220                 :            :                     for (AstInterface::DoubleInterfaceDeclarations::iterator i(
     221                 :            :                              doubleDecls.interfaces.begin());
     222                 :            :                          i != doubleDecls.interfaces.end(); ++i)
     223                 :            :                     {
     224                 :            :                         idlc()->error()->error1(
     225                 :            :                             EIDL_DOUBLE_INHERITANCE, *i);
     226                 :            :                     }
     227                 :            :                     reportDoubleMemberDeclarations(doubleDecls.members);
     228                 :            :                 }
     229                 :            :             }
     230                 :            :         }
     231                 :            :     } else {
     232                 :            :         idlc()->error()->lookupError(
     233                 :            :             EIDL_INTERFACEMEMBER_LOOKUP, name, scopeAsDecl(ifc));
     234                 :            :     }
     235                 :            : }
     236                 :            : 
     237                 :            : AstDeclaration const * createNamedType(
     238                 :            :     rtl::OString const * scopedName, DeclList const * typeArgs)
     239                 :            : {
     240                 :            :     AstDeclaration * decl = idlc()->scopes()->topNonNull()->lookupByName(
     241                 :            :         *scopedName);
     242                 :            :     AstDeclaration const * resolved = resolveTypedefs(decl);
     243                 :            :     if (decl == 0) {
     244                 :            :         idlc()->error()->lookupError(*scopedName);
     245                 :            :     } else if (!idlc()->error()->checkPublished(decl)) {
     246                 :            :         decl = 0;
     247                 :            :     } else if (resolved->getNodeType() == NT_struct) {
     248                 :            :         if (static_cast< AstStruct const * >(resolved)->getTypeParameterCount()
     249                 :            :             != (typeArgs == 0 ? 0 : typeArgs->size()))
     250                 :            :         {
     251                 :            :             idlc()->error()->error0(EIDL_WRONG_NUMBER_OF_TYPE_ARGUMENTS);
     252                 :            :             decl = 0;
     253                 :            :         } else if (typeArgs != 0) {
     254                 :            :             AstScope * global = idlc()->scopes()->bottom();
     255                 :            :             AstDeclaration * inst = new AstStructInstance(
     256                 :            :                 static_cast< AstType * >(decl), typeArgs, global);
     257                 :            :             decl = global->addDeclaration(inst);
     258                 :            :             if (decl != inst) {
     259                 :            :                 delete inst;
     260                 :            :             }
     261                 :            :         }
     262                 :            :     } else if (decl->isType()) {
     263                 :            :         if (typeArgs != 0) {
     264                 :            :             idlc()->error()->error0(EIDL_WRONG_NUMBER_OF_TYPE_ARGUMENTS);
     265                 :            :             decl = 0;
     266                 :            :         }
     267                 :            :     } else {
     268                 :            :         idlc()->error()->noTypeError(decl);
     269                 :            :         decl = 0;
     270                 :            :     }
     271                 :            :     delete scopedName;
     272                 :            :     delete typeArgs;
     273                 :            :     return decl;
     274                 :            : }
     275                 :            : 
     276                 :            : bool includes(AstDeclaration const * type1, AstDeclaration const * type2) {
     277                 :            :     OSL_ASSERT(type2 != 0);
     278                 :            :     if (type1 != 0) {
     279                 :            :         if (type1->getNodeType() == NT_instantiated_struct) {
     280                 :            :             AstStructInstance const * inst
     281                 :            :                 = static_cast< AstStructInstance const * >(type1);
     282                 :            :             if (inst->getTypeTemplate() == type2) {
     283                 :            :                 return true;
     284                 :            :             }
     285                 :            :             for (DeclList::const_iterator i(inst->getTypeArgumentsBegin());
     286                 :            :                  i != inst->getTypeArgumentsEnd(); ++i)
     287                 :            :             {
     288                 :            :                 if (includes(*i, type2)) {
     289                 :            :                     return true;
     290                 :            :                 }
     291                 :            :             }
     292                 :            :         } else if (type1 == type2) {
     293                 :            :             return true;
     294                 :            :         }
     295                 :            :     }
     296                 :            :     return false;
     297                 :            : }
     298                 :            : 
     299                 :            : // Suppress any warnings from generated code:
     300                 :            : #if defined __SUNPRO_CC
     301                 :            : #pragma disable_warn
     302                 :            : #elif defined _MSC_VER
     303                 :            : #pragma warning(push, 1)
     304                 :            : #pragma warning(disable: 4273 4701 4702 4706)
     305                 :            : #endif
     306                 :            : 
     307                 :            : 
     308                 :            : /* Line 268 of yacc.c  */
     309                 :            : #line 310 "/usr/local/src/libreoffice/workdir/unxlngi6.pro/YaccTarget/idlc/source/parser.cxx"
     310                 :            : 
     311                 :            : /* Enabling traces.  */
     312                 :            : #ifndef YYDEBUG
     313                 :            : # define YYDEBUG 0
     314                 :            : #endif
     315                 :            : 
     316                 :            : /* Enabling verbose error messages.  */
     317                 :            : #ifdef YYERROR_VERBOSE
     318                 :            : # undef YYERROR_VERBOSE
     319                 :            : # define YYERROR_VERBOSE 1
     320                 :            : #else
     321                 :            : # define YYERROR_VERBOSE 0
     322                 :            : #endif
     323                 :            : 
     324                 :            : /* Enabling the token table.  */
     325                 :            : #ifndef YYTOKEN_TABLE
     326                 :            : # define YYTOKEN_TABLE 0
     327                 :            : #endif
     328                 :            : 
     329                 :            : 
     330                 :            : /* Tokens.  */
     331                 :            : #ifndef YYTOKENTYPE
     332                 :            : # define YYTOKENTYPE
     333                 :            :    /* Put the tokens into the symbol table, so that GDB and other debuggers
     334                 :            :       know about them.  */
     335                 :            :    enum yytokentype {
     336                 :            :      IDL_IDENTIFIER = 258,
     337                 :            :      IDL_ATTRIBUTE = 259,
     338                 :            :      IDL_BOUND = 260,
     339                 :            :      IDL_CASE = 261,
     340                 :            :      IDL_CONST = 262,
     341                 :            :      IDL_CONSTANTS = 263,
     342                 :            :      IDL_CONSTRAINED = 264,
     343                 :            :      IDL_DEFAULT = 265,
     344                 :            :      IDL_ENUM = 266,
     345                 :            :      IDL_EXCEPTION = 267,
     346                 :            :      IDL_INTERFACE = 268,
     347                 :            :      IDL_MAYBEAMBIGUOUS = 269,
     348                 :            :      IDL_MAYBEDEFAULT = 270,
     349                 :            :      IDL_MAYBEVOID = 271,
     350                 :            :      IDL_MODULE = 272,
     351                 :            :      IDL_NEEDS = 273,
     352                 :            :      IDL_OBSERVES = 274,
     353                 :            :      IDL_OPTIONAL = 275,
     354                 :            :      IDL_PROPERTY = 276,
     355                 :            :      IDL_RAISES = 277,
     356                 :            :      IDL_READONLY = 278,
     357                 :            :      IDL_REMOVEABLE = 279,
     358                 :            :      IDL_SERVICE = 280,
     359                 :            :      IDL_SEQUENCE = 281,
     360                 :            :      IDL_SINGLETON = 282,
     361                 :            :      IDL_STRUCT = 283,
     362                 :            :      IDL_SWITCH = 284,
     363                 :            :      IDL_TYPEDEF = 285,
     364                 :            :      IDL_TRANSIENT = 286,
     365                 :            :      IDL_UNION = 287,
     366                 :            :      IDL_ANY = 288,
     367                 :            :      IDL_CHAR = 289,
     368                 :            :      IDL_BOOLEAN = 290,
     369                 :            :      IDL_BYTE = 291,
     370                 :            :      IDL_DOUBLE = 292,
     371                 :            :      IDL_FLOAT = 293,
     372                 :            :      IDL_HYPER = 294,
     373                 :            :      IDL_LONG = 295,
     374                 :            :      IDL_SHORT = 296,
     375                 :            :      IDL_VOID = 297,
     376                 :            :      IDL_STRING = 298,
     377                 :            :      IDL_TYPE = 299,
     378                 :            :      IDL_UNSIGNED = 300,
     379                 :            :      IDL_TRUE = 301,
     380                 :            :      IDL_FALSE = 302,
     381                 :            :      IDL_IN = 303,
     382                 :            :      IDL_OUT = 304,
     383                 :            :      IDL_INOUT = 305,
     384                 :            :      IDL_ONEWAY = 306,
     385                 :            :      IDL_GET = 307,
     386                 :            :      IDL_SET = 308,
     387                 :            :      IDL_PUBLISHED = 309,
     388                 :            :      IDL_ELLIPSIS = 310,
     389                 :            :      IDL_LEFTSHIFT = 311,
     390                 :            :      IDL_RIGHTSHIFT = 312,
     391                 :            :      IDL_SCOPESEPARATOR = 313,
     392                 :            :      IDL_INTEGER_LITERAL = 314,
     393                 :            :      IDL_INTEGER_ULITERAL = 315,
     394                 :            :      IDL_FLOATING_PT_LITERAL = 316
     395                 :            :    };
     396                 :            : #endif
     397                 :            : 
     398                 :            : 
     399                 :            : 
     400                 :            : #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
     401                 :            : typedef union YYSTYPE
     402                 :            : {
     403                 :            : 
     404                 :            : /* Line 293 of yacc.c  */
     405                 :            : #line 263 "/usr/local/src/libreoffice/idlc/source/parser.y"
     406                 :            : 
     407                 :            :         ExprType                                etval;     /* Expression type */
     408                 :            :         AstDeclaration*         dclval;    /* Declaration */
     409                 :            :     AstDeclaration const * cdclval;
     410                 :            :     DeclList * dclsval;
     411                 :            :         AstExpression*          exval;          /* expression value */
     412                 :            :         ExprList*                               exlval; /* expression list value */
     413                 :            :         FeDeclarator*                   fdval;          /* declarator value */
     414                 :            :         FeDeclList*                     dlval;          /* declarator list value */
     415                 :            :         FeInheritanceHeader*    ihval;          /* inheritance header value */
     416                 :            :         ::rtl::OString*         sval;           /* OString value */
     417                 :            :     std::vector< rtl::OString > * svals;
     418                 :            :         sal_Char*                       strval; /* sal_Char* value */
     419                 :            :         sal_Bool                                bval;           /* sal_Boolean* value */
     420                 :            :         sal_Int64                               ival;           /* sal_Int64 value */
     421                 :            :     sal_uInt64 uval; /* sal_uInt64 value */
     422                 :            :         sal_uInt32                      ulval;          /* sal_uInt32 value */
     423                 :            :         double                                  dval;           /* double value */
     424                 :            :         float                                   fval;           /* float value */
     425                 :            :         StringList*                     slval;          /* StringList value     */
     426                 :            :         LabelList*                      llval;          /* LabelList value      */
     427                 :            :         AstUnionLabel*          lbval;          /* union label value */
     428                 :            :         AstMember*                      mval;           /* member value */
     429                 :            :     AttributeExceptions::Part attexcpval;
     430                 :            :     AttributeExceptions attexcval;
     431                 :            : 
     432                 :            : 
     433                 :            : 
     434                 :            : /* Line 293 of yacc.c  */
     435                 :            : #line 436 "/usr/local/src/libreoffice/workdir/unxlngi6.pro/YaccTarget/idlc/source/parser.cxx"
     436                 :            : } YYSTYPE;
     437                 :            : # define YYSTYPE_IS_TRIVIAL 1
     438                 :            : # define yystype YYSTYPE /* obsolescent; will be withdrawn */
     439                 :            : # define YYSTYPE_IS_DECLARED 1
     440                 :            : #endif
     441                 :            : 
     442                 :            : 
     443                 :            : /* Copy the second part of user declarations.  */
     444                 :            : 
     445                 :            : 
     446                 :            : /* Line 343 of yacc.c  */
     447                 :            : #line 448 "/usr/local/src/libreoffice/workdir/unxlngi6.pro/YaccTarget/idlc/source/parser.cxx"
     448                 :            : 
     449                 :            : #ifdef short
     450                 :            : # undef short
     451                 :            : #endif
     452                 :            : 
     453                 :            : #ifdef YYTYPE_UINT8
     454                 :            : typedef YYTYPE_UINT8 yytype_uint8;
     455                 :            : #else
     456                 :            : typedef unsigned char yytype_uint8;
     457                 :            : #endif
     458                 :            : 
     459                 :            : #ifdef YYTYPE_INT8
     460                 :            : typedef YYTYPE_INT8 yytype_int8;
     461                 :            : #elif (defined __STDC__ || defined __C99__FUNC__ \
     462                 :            :      || defined __cplusplus || defined _MSC_VER)
     463                 :            : typedef signed char yytype_int8;
     464                 :            : #else
     465                 :            : typedef short int yytype_int8;
     466                 :            : #endif
     467                 :            : 
     468                 :            : #ifdef YYTYPE_UINT16
     469                 :            : typedef YYTYPE_UINT16 yytype_uint16;
     470                 :            : #else
     471                 :            : typedef unsigned short int yytype_uint16;
     472                 :            : #endif
     473                 :            : 
     474                 :            : #ifdef YYTYPE_INT16
     475                 :            : typedef YYTYPE_INT16 yytype_int16;
     476                 :            : #else
     477                 :            : typedef short int yytype_int16;
     478                 :            : #endif
     479                 :            : 
     480                 :            : #ifndef YYSIZE_T
     481                 :            : # ifdef __SIZE_TYPE__
     482                 :            : #  define YYSIZE_T __SIZE_TYPE__
     483                 :            : # elif defined size_t
     484                 :            : #  define YYSIZE_T size_t
     485                 :            : # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
     486                 :            :      || defined __cplusplus || defined _MSC_VER)
     487                 :            : #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
     488                 :            : #  define YYSIZE_T size_t
     489                 :            : # else
     490                 :            : #  define YYSIZE_T unsigned int
     491                 :            : # endif
     492                 :            : #endif
     493                 :            : 
     494                 :            : #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
     495                 :            : 
     496                 :            : #ifndef YY_
     497                 :            : # if defined YYENABLE_NLS && YYENABLE_NLS
     498                 :            : #  if ENABLE_NLS
     499                 :            : #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
     500                 :            : #   define YY_(msgid) dgettext ("bison-runtime", msgid)
     501                 :            : #  endif
     502                 :            : # endif
     503                 :            : # ifndef YY_
     504                 :            : #  define YY_(msgid) msgid
     505                 :            : # endif
     506                 :            : #endif
     507                 :            : 
     508                 :            : /* Suppress unused-variable warnings by "using" E.  */
     509                 :            : #if ! defined lint || defined __GNUC__
     510                 :            : # define YYUSE(e) ((void) (e))
     511                 :            : #else
     512                 :            : # define YYUSE(e) /* empty */
     513                 :            : #endif
     514                 :            : 
     515                 :            : /* Identity function, used to suppress warnings about constant conditions.  */
     516                 :            : #ifndef lint
     517                 :            : # define YYID(n) (n)
     518                 :            : #else
     519                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
     520                 :            :      || defined __cplusplus || defined _MSC_VER)
     521                 :            : static int
     522                 :            : YYID (int yyi)
     523                 :            : #else
     524                 :            : static int
     525                 :            : YYID (yyi)
     526                 :            :     int yyi;
     527                 :            : #endif
     528                 :            : {
     529                 :            :   return yyi;
     530                 :            : }
     531                 :            : #endif
     532                 :            : 
     533                 :            : #if ! defined yyoverflow || YYERROR_VERBOSE
     534                 :            : 
     535                 :            : /* The parser invokes alloca or malloc; define the necessary symbols.  */
     536                 :            : 
     537                 :            : # ifdef YYSTACK_USE_ALLOCA
     538                 :            : #  if YYSTACK_USE_ALLOCA
     539                 :            : #   ifdef __GNUC__
     540                 :            : #    define YYSTACK_ALLOC __builtin_alloca
     541                 :            : #   elif defined __BUILTIN_VA_ARG_INCR
     542                 :            : #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
     543                 :            : #   elif defined _AIX
     544                 :            : #    define YYSTACK_ALLOC __alloca
     545                 :            : #   elif defined _MSC_VER
     546                 :            : #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
     547                 :            : #    define alloca _alloca
     548                 :            : #   else
     549                 :            : #    define YYSTACK_ALLOC alloca
     550                 :            : #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     551                 :            :      || defined __cplusplus || defined _MSC_VER)
     552                 :            : #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     553                 :            : #     ifndef EXIT_SUCCESS
     554                 :            : #      define EXIT_SUCCESS 0
     555                 :            : #     endif
     556                 :            : #    endif
     557                 :            : #   endif
     558                 :            : #  endif
     559                 :            : # endif
     560                 :            : 
     561                 :            : # ifdef YYSTACK_ALLOC
     562                 :            :    /* Pacify GCC's `empty if-body' warning.  */
     563                 :            : #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
     564                 :            : #  ifndef YYSTACK_ALLOC_MAXIMUM
     565                 :            :     /* The OS might guarantee only one guard page at the bottom of the stack,
     566                 :            :        and a page size can be as small as 4096 bytes.  So we cannot safely
     567                 :            :        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
     568                 :            :        to allow for a few compiler-allocated temporary stack slots.  */
     569                 :            : #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
     570                 :            : #  endif
     571                 :            : # else
     572                 :            : #  define YYSTACK_ALLOC YYMALLOC
     573                 :            : #  define YYSTACK_FREE YYFREE
     574                 :            : #  ifndef YYSTACK_ALLOC_MAXIMUM
     575                 :            : #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
     576                 :            : #  endif
     577                 :            : #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
     578                 :            :        && ! ((defined YYMALLOC || defined malloc) \
     579                 :            :              && (defined YYFREE || defined free)))
     580                 :            : #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
     581                 :            : #   ifndef EXIT_SUCCESS
     582                 :            : #    define EXIT_SUCCESS 0
     583                 :            : #   endif
     584                 :            : #  endif
     585                 :            : #  ifndef YYMALLOC
     586                 :            : #   define YYMALLOC malloc
     587                 :            : #   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     588                 :            :      || defined __cplusplus || defined _MSC_VER)
     589                 :            : void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
     590                 :            : #   endif
     591                 :            : #  endif
     592                 :            : #  ifndef YYFREE
     593                 :            : #   define YYFREE free
     594                 :            : #   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
     595                 :            :      || defined __cplusplus || defined _MSC_VER)
     596                 :            : void free (void *); /* INFRINGES ON USER NAME SPACE */
     597                 :            : #   endif
     598                 :            : #  endif
     599                 :            : # endif
     600                 :            : #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
     601                 :            : 
     602                 :            : 
     603                 :            : #if (! defined yyoverflow \
     604                 :            :      && (! defined __cplusplus \
     605                 :            :          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
     606                 :            : 
     607                 :            : /* A type that is properly aligned for any stack member.  */
     608                 :            : union yyalloc
     609                 :            : {
     610                 :            :   yytype_int16 yyss_alloc;
     611                 :            :   YYSTYPE yyvs_alloc;
     612                 :            : };
     613                 :            : 
     614                 :            : /* The size of the maximum gap between one aligned stack and the next.  */
     615                 :            : # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
     616                 :            : 
     617                 :            : /* The size of an array large to enough to hold all stacks, each with
     618                 :            :    N elements.  */
     619                 :            : # define YYSTACK_BYTES(N) \
     620                 :            :      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
     621                 :            :       + YYSTACK_GAP_MAXIMUM)
     622                 :            : 
     623                 :            : # define YYCOPY_NEEDED 1
     624                 :            : 
     625                 :            : /* Relocate STACK from its old location to the new one.  The
     626                 :            :    local variables YYSIZE and YYSTACKSIZE give the old and new number of
     627                 :            :    elements in the stack, and YYPTR gives the new location of the
     628                 :            :    stack.  Advance YYPTR to a properly aligned location for the next
     629                 :            :    stack.  */
     630                 :            : # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     631                 :            :     do                                                                  \
     632                 :            :       {                                                                 \
     633                 :            :         YYSIZE_T yynewbytes;                                            \
     634                 :            :         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                     \
     635                 :            :         Stack = &yyptr->Stack_alloc;                                     \
     636                 :            :         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
     637                 :            :         yyptr += yynewbytes / sizeof (*yyptr);                          \
     638                 :            :       }                                                                 \
     639                 :            :     while (YYID (0))
     640                 :            : 
     641                 :            : #endif
     642                 :            : 
     643                 :            : #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
     644                 :            : /* Copy COUNT objects from FROM to TO.  The source and destination do
     645                 :            :    not overlap.  */
     646                 :            : # ifndef YYCOPY
     647                 :            : #  if defined __GNUC__ && 1 < __GNUC__
     648                 :            : #   define YYCOPY(To, From, Count) \
     649                 :            :       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
     650                 :            : #  else
     651                 :            : #   define YYCOPY(To, From, Count)              \
     652                 :            :       do                                        \
     653                 :            :         {                                       \
     654                 :            :           YYSIZE_T yyi;                         \
     655                 :            :           for (yyi = 0; yyi < (Count); yyi++)        \
     656                 :            :             (To)[yyi] = (From)[yyi];            \
     657                 :            :         }                                       \
     658                 :            :       while (YYID (0))
     659                 :            : #  endif
     660                 :            : # endif
     661                 :            : #endif /* !YYCOPY_NEEDED */
     662                 :            : 
     663                 :            : /* YYFINAL -- State number of the termination state.  */
     664                 :            : #define YYFINAL  11
     665                 :            : /* YYLAST -- Last index in YYTABLE.  */
     666                 :            : #define YYLAST   809
     667                 :            : 
     668                 :            : /* YYNTOKENS -- Number of terminals.  */
     669                 :            : #define YYNTOKENS  83
     670                 :            : /* YYNNTS -- Number of nonterminals.  */
     671                 :            : #define YYNNTS  229
     672                 :            : /* YYNRULES -- Number of rules.  */
     673                 :            : #define YYNRULES  362
     674                 :            : /* YYNRULES -- Number of states.  */
     675                 :            : #define YYNSTATES  520
     676                 :            : 
     677                 :            : /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
     678                 :            : #define YYUNDEFTOK  2
     679                 :            : #define YYMAXUTOK   316
     680                 :            : 
     681                 :            : #define YYTRANSLATE(YYX)                                                \
     682                 :            :   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
     683                 :            : 
     684                 :            : /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
     685                 :            : static const yytype_uint8 yytranslate[] =
     686                 :            : {
     687                 :            :        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     688                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     689                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     690                 :            :        2,     2,     2,     2,     2,     2,     2,    79,    74,     2,
     691                 :            :       69,    70,    77,    75,    68,    76,     2,    78,     2,     2,
     692                 :            :        2,     2,     2,     2,     2,     2,     2,     2,    65,    62,
     693                 :            :       81,    71,    82,     2,     2,     2,     2,     2,     2,     2,
     694                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     695                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     696                 :            :        2,    66,     2,    67,    73,     2,     2,     2,     2,     2,
     697                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     698                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     699                 :            :        2,     2,     2,    63,    72,    64,    80,     2,     2,     2,
     700                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     701                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     702                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     703                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     704                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     705                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     706                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     707                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     708                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     709                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     710                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     711                 :            :        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     712                 :            :        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
     713                 :            :        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     714                 :            :       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     715                 :            :       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
     716                 :            :       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
     717                 :            :       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
     718                 :            :       55,    56,    57,    58,    59,    60,    61
     719                 :            : };
     720                 :            : 
     721                 :            : #if YYDEBUG
     722                 :            : /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
     723                 :            :    YYRHS.  */
     724                 :            : static const yytype_uint16 yyprhs[] =
     725                 :            : {
     726                 :            :        0,     0,     3,     5,     8,     9,    12,    13,    17,    20,
     727                 :            :       22,    23,    24,    28,    29,    33,    34,    38,    39,    43,
     728                 :            :       44,    48,    49,    53,    54,    58,    59,    60,    61,    62,
     729                 :            :       72,    74,    76,    77,    81,    83,    84,    85,    86,    94,
     730                 :            :       97,   100,   101,   105,   106,   109,   110,   111,   115,   116,
     731                 :            :      120,   121,   125,   126,   127,   134,   138,   142,   144,   146,
     732                 :            :      148,   150,   152,   154,   156,   158,   160,   162,   164,   166,
     733                 :            :      169,   172,   173,   176,   179,   182,   185,   186,   188,   189,
     734                 :            :      193,   195,   196,   197,   202,   203,   204,   205,   206,   207,
     735                 :            :      220,   221,   226,   227,   229,   231,   233,   234,   239,   240,
     736                 :            :      243,   244,   245,   254,   257,   259,   261,   263,   265,   266,
     737                 :            :      268,   269,   270,   271,   278,   280,   284,   286,   287,   292,
     738                 :            :      296,   297,   300,   301,   302,   306,   307,   308,   309,   310,
     739                 :            :      320,   321,   322,   323,   324,   334,   336,   338,   340,   344,
     740                 :            :      346,   350,   352,   356,   358,   362,   366,   368,   372,   376,
     741                 :            :      378,   382,   386,   390,   392,   395,   398,   401,   403,   405,
     742                 :            :      409,   411,   413,   415,   417,   419,   421,   423,   425,   427,
     743                 :            :      429,   431,   433,   434,   435,   441,   442,   443,   444,   452,
     744                 :            :      453,   458,   461,   464,   465,   469,   473,   477,   481,   484,
     745                 :            :      486,   489,   491,   494,   495,   496,   502,   504,   506,   507,
     746                 :            :      512,   514,   515,   519,   522,   523,   524,   525,   534,   535,
     747                 :            :      536,   542,   544,   546,   549,   550,   551,   557,   558,   562,
     748                 :            :      564,   566,   568,   569,   573,   576,   577,   582,   583,   585,
     749                 :            :      587,   589,   591,   592,   596,   599,   602,   603,   604,   605,
     750                 :            :      611,   614,   615,   620,   621,   623,   624,   628,   629,   634,
     751                 :            :      636,   638,   640,   643,   645,   647,   651,   652,   654,   658,
     752                 :            :      660,   662,   664,   666,   668,   670,   672,   674,   676,   678,
     753                 :            :      680,   682,   684,   686,   689,   692,   695,   697,   699,   701,
     754                 :            :      703,   705,   707,   709,   711,   713,   715,   717,   719,   721,
     755                 :            :      722,   726,   727,   728,   729,   737,   740,   741,   742,   743,
     756                 :            :      751,   752,   753,   760,   764,   765,   767,   771,   774,   777,
     757                 :            :      778,   779,   780,   786,   789,   791,   794,   795,   796,   797,
     758                 :            :      798,   808,   811,   812,   817,   818,   821,   823,   827,   828,
     759                 :            :      829,   830,   831,   832,   833,   834,   835,   853,   855,   857,
     760                 :            :      859,   861,   863,   866,   869,   870,   871,   875,   878,   881,
     761                 :            :      882,   883,   887,   888,   889,   895,   896,   897,   903,   906,
     762                 :            :      908,   910,   912
     763                 :            : };
     764                 :            : 
     765                 :            : /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
     766                 :            : static const yytype_int16 yyrhs[] =
     767                 :            : {
     768                 :            :       84,     0,    -1,    85,    -1,    86,    85,    -1,    -1,    88,
     769                 :            :       89,    -1,    -1,    97,    87,    62,    -1,     1,    62,    -1,
     770                 :            :       54,    -1,    -1,    -1,   216,    90,    62,    -1,    -1,   160,
     771                 :            :       91,    62,    -1,    -1,   186,    92,    62,    -1,    -1,   102,
     772                 :            :       93,    62,    -1,    -1,   196,    94,    62,    -1,    -1,   208,
     773                 :            :       95,    62,    -1,    -1,   165,    96,    62,    -1,    -1,    -1,
     774                 :            :       -1,    -1,    17,    98,   311,    99,    63,   100,    85,   101,
     775                 :            :       64,    -1,   106,    -1,   105,    -1,    -1,    13,   104,   311,
     776                 :            :       -1,   103,    -1,    -1,    -1,    -1,   110,   107,    63,   108,
     777                 :            :      113,   109,    64,    -1,     1,    64,    -1,   103,   111,    -1,
     778                 :            :       -1,    65,   112,   236,    -1,    -1,   113,   114,    -1,    -1,
     779                 :            :       -1,   118,   115,    62,    -1,    -1,   132,   116,    62,    -1,
     780                 :            :       -1,   154,   117,    62,    -1,    -1,    -1,   121,   240,   119,
     781                 :            :      224,   120,   124,    -1,    66,   122,    67,    -1,   122,    68,
     782                 :            :      123,    -1,   123,    -1,     4,    -1,    21,    -1,    23,    -1,
     783                 :            :       20,    -1,    16,    -1,     5,    -1,     9,    -1,    31,    -1,
     784                 :            :       14,    -1,    15,    -1,    24,    -1,     1,    67,    -1,    63,
     785                 :            :      125,    -1,    -1,   126,    64,    -1,     1,    64,    -1,   128,
     786                 :            :      129,    -1,   130,   127,    -1,    -1,   128,    -1,    -1,    52,
     787                 :            :      149,    62,    -1,   130,    -1,    -1,    -1,    53,   131,   149,
     788                 :            :       62,    -1,    -1,    -1,    -1,    -1,    -1,   138,   140,   133,
     789                 :            :      311,   134,    69,   135,   141,   136,    70,   137,   148,    -1,
     790                 :            :       -1,    66,    51,   139,    67,    -1,    -1,   240,    -1,    42,
     791                 :            :       -1,   143,    -1,    -1,   141,    68,   142,   143,    -1,    -1,
     792                 :            :        1,    68,    -1,    -1,    -1,    66,   146,    67,   144,   240,
     793                 :            :      145,   147,   223,    -1,     1,   240,    -1,    48,    -1,    49,
     794                 :            :       -1,    50,    -1,    55,    -1,    -1,   149,    -1,    -1,    -1,
     795                 :            :       -1,    22,   150,    69,   151,   152,    70,    -1,   153,    -1,
     796                 :            :      152,    68,   153,    -1,   236,    -1,    -1,   156,    13,   155,
     797                 :            :      236,    -1,    66,    20,    67,    -1,    -1,   158,   157,    -1,
     798                 :            :       -1,    -1,   160,   159,    62,    -1,    -1,    -1,    -1,    -1,
     799                 :            :        7,   161,   182,   162,   311,   163,    71,   164,   170,    -1,
     800                 :            :       -1,    -1,    -1,    -1,     8,   166,   311,   167,    63,   168,
     801                 :            :      157,   169,    64,    -1,   171,    -1,   172,    -1,   173,    -1,
     802                 :            :      172,    72,   173,    -1,   174,    -1,   173,    73,   174,    -1,
     803                 :            :      175,    -1,   174,    74,   175,    -1,   176,    -1,   175,    56,
     804                 :            :      176,    -1,   175,    57,   176,    -1,   177,    -1,   176,    75,
     805                 :            :      177,    -1,   176,    76,   177,    -1,   178,    -1,   177,    77,
     806                 :            :      178,    -1,   177,    78,   178,    -1,   177,    79,   178,    -1,
     807                 :            :      179,    -1,    75,   179,    -1,    76,   179,    -1,    80,   179,
     808                 :            :       -1,   236,    -1,   180,    -1,    69,   171,    70,    -1,    59,
     809                 :            :       -1,    60,    -1,    61,    -1,    46,    -1,    47,    -1,   171,
     810                 :            :       -1,   246,    -1,   250,    -1,   251,    -1,   252,    -1,   249,
     811                 :            :       -1,   236,    -1,    -1,    -1,    12,   184,   311,   185,   111,
     812                 :            :       -1,    -1,    -1,    -1,   183,   187,    63,   188,   274,   189,
     813                 :            :       64,    -1,    -1,   121,   240,   191,   220,    -1,     1,    62,
     814                 :            :       -1,   192,   193,    -1,    -1,   194,   233,    62,    -1,   195,
     815                 :            :      233,    62,    -1,    19,   233,    62,    -1,    18,   233,    62,
     816                 :            :       -1,   190,    62,    -1,    13,    -1,   121,    13,    -1,    25,
     817                 :            :       -1,   121,    25,    -1,    -1,    -1,    25,   197,   311,   198,
     818                 :            :      199,    -1,   200,    -1,   213,    -1,    -1,    65,   236,   201,
     819                 :            :      202,    -1,   203,    -1,    -1,    63,   204,    64,    -1,   204,
     820                 :            :      205,    -1,    -1,    -1,    -1,   311,   206,    69,   141,    70,
     821                 :            :      148,   207,    62,    -1,    -1,    -1,    27,   209,   311,   210,
     822                 :            :      211,    -1,   212,    -1,   213,    -1,    65,   236,    -1,    -1,
     823                 :            :       -1,    63,   214,   192,   215,    64,    -1,    -1,    30,   217,
     824                 :            :      218,    -1,   264,    -1,   288,    -1,   279,    -1,    -1,   239,
     825                 :            :      219,   220,    -1,   223,   221,    -1,    -1,   221,    68,   222,
     826                 :            :      223,    -1,    -1,   224,    -1,   225,    -1,   311,    -1,   226,
     827                 :            :       -1,    -1,   311,   227,   228,    -1,   230,   229,    -1,   229,
     828                 :            :      230,    -1,    -1,    -1,    -1,    66,   231,   181,   232,    67,
     829                 :            :       -1,   236,   234,    -1,    -1,   234,    68,   235,   236,    -1,
     830                 :            :       -1,   311,    -1,    -1,    58,   237,   311,    -1,    -1,   236,
     831                 :            :       58,   238,   311,    -1,   240,    -1,   257,    -1,   241,    -1,
     832                 :            :      236,   242,    -1,   245,    -1,   256,    -1,    81,   243,    82,
     833                 :            :       -1,    -1,   244,    -1,   243,    68,   244,    -1,   240,    -1,
     834                 :            :      246,    -1,   249,    -1,   250,    -1,   252,    -1,   251,    -1,
     835                 :            :      253,    -1,   254,    -1,   255,    -1,   247,    -1,   248,    -1,
     836                 :            :       40,    -1,    39,    -1,    41,    -1,    45,    40,    -1,    45,
     837                 :            :       39,    -1,    45,    41,    -1,    37,    -1,    38,    -1,    34,
     838                 :            :       -1,    36,    -1,    35,    -1,    33,    -1,    44,    -1,    43,
     839                 :            :       -1,   260,    -1,   258,    -1,   264,    -1,   288,    -1,   279,
     840                 :            :       -1,    -1,   240,   259,   228,    -1,    -1,    -1,    -1,    26,
     841                 :            :      261,    81,   262,   240,   263,    82,    -1,     1,    82,    -1,
     842                 :            :       -1,    -1,    -1,   268,   265,    63,   266,   273,   267,    64,
     843                 :            :       -1,    -1,    -1,    28,   269,   311,   270,   271,   111,    -1,
     844                 :            :       81,   272,    82,    -1,    -1,   311,    -1,   272,    68,   311,
     845                 :            :       -1,   275,   274,    -1,   274,   275,    -1,    -1,    -1,    -1,
     846                 :            :      278,   276,   220,   277,    62,    -1,     1,    62,    -1,   241,
     847                 :            :       -1,   236,   242,    -1,    -1,    -1,    -1,    -1,    11,   280,
     848                 :            :      311,   281,    63,   282,   284,   283,    64,    -1,   287,   285,
     849                 :            :       -1,    -1,   285,    68,   286,   287,    -1,    -1,     1,    68,
     850                 :            :       -1,   311,    -1,   311,    71,   171,    -1,    -1,    -1,    -1,
     851                 :            :       -1,    -1,    -1,    -1,    -1,    32,   289,   311,   290,    29,
     852                 :            :      291,    69,   292,   297,   293,    70,   294,    63,   295,   298,
     853                 :            :      296,    64,    -1,   246,    -1,   250,    -1,   252,    -1,   279,
     854                 :            :       -1,   236,    -1,   300,   299,    -1,   299,   300,    -1,    -1,
     855                 :            :       -1,   302,   301,   308,    -1,   304,   303,    -1,   303,   304,
     856                 :            :       -1,    -1,    -1,    10,   305,    65,    -1,    -1,    -1,     6,
     857                 :            :      306,   171,   307,    65,    -1,    -1,    -1,   239,   309,   223,
     858                 :            :      310,    62,    -1,     1,    62,    -1,     3,    -1,    52,    -1,
     859                 :            :       53,    -1,    54,    -1
     860                 :            : };
     861                 :            : 
     862                 :            : /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
     863                 :            : static const yytype_uint16 yyrline[] =
     864                 :            : {
     865                 :            :        0,   414,   414,   417,   418,   422,   424,   423,   431,   439,
     866                 :            :      440,   445,   444,   453,   452,   461,   460,   469,   468,   477,
     867                 :            :      476,   485,   484,   493,   492,   504,   509,   544,   548,   503,
     868                 :            :      562,   563,   568,   567,   580,   620,   700,   704,   619,   725,
     869                 :            :      733,   744,   743,   752,   758,   759,   764,   763,   772,   771,
     870                 :            :      780,   779,   792,   796,   790,   829,   837,   844,   851,   856,
     871                 :            :      861,   866,   871,   876,   881,   886,   891,   896,   901,   906,
     872                 :            :      914,   916,   925,   926,   938,   944,   951,   960,   961,   965,
     873                 :            :      975,   976,   981,   980,  1000,  1004,  1042,  1046,  1050,   998,
     874                 :            :     1078,  1076,  1087,  1093,  1094,  1101,  1104,  1102,  1108,  1109,
     875                 :            :     1120,  1124,  1117,  1184,  1193,  1197,  1201,  1208,  1213,  1219,
     876                 :            :     1221,  1228,  1232,  1227,  1244,  1249,  1257,  1280,  1278,  1300,
     877                 :            :     1301,  1305,  1306,  1311,  1310,  1318,  1322,  1326,  1331,  1317,
     878                 :            :     1358,  1362,  1367,  1391,  1357,  1404,  1406,  1409,  1410,  1417,
     879                 :            :     1418,  1425,  1426,  1433,  1434,  1438,  1445,  1446,  1450,  1457,
     880                 :            :     1458,  1462,  1466,  1473,  1474,  1478,  1482,  1488,  1497,  1498,
     881                 :            :     1505,  1509,  1513,  1517,  1521,  1528,  1541,  1542,  1543,  1544,
     882                 :            :     1545,  1546,  1577,  1581,  1576,  1596,  1616,  1620,  1595,  1634,
     883                 :            :     1632,  1696,  1704,  1705,  1709,  1759,  1801,  1843,  1885,  1893,
     884                 :            :     1898,  1909,  1914,  1926,  1930,  1925,  1959,  1960,  1965,  1964,
     885                 :            :     1989,  1990,  1994,  2000,  2001,  2006,  2018,  2005,  2034,  2038,
     886                 :            :     2033,  2067,  2068,  2072,  2091,  2097,  2090,  2112,  2111,  2116,
     887                 :            :     2117,  2118,  2123,  2122,  2177,  2195,  2193,  2213,  2219,  2220,
     888                 :            :     2224,  2243,  2251,  2250,  2264,  2280,  2294,  2301,  2305,  2300,
     889                 :            :     2325,  2344,  2342,  2363,  2369,  2376,  2375,  2389,  2387,  2402,
     890                 :            :     2403,  2407,  2408,  2415,  2419,  2423,  2424,  2428,  2433,  2441,
     891                 :            :     2451,  2452,  2453,  2454,  2455,  2456,  2457,  2458,  2462,  2463,
     892                 :            :     2467,  2471,  2475,  2482,  2486,  2490,  2497,  2501,  2508,  2515,
     893                 :            :     2522,  2529,  2536,  2543,  2550,  2551,  2555,  2556,  2557,  2562,
     894                 :            :     2561,  2593,  2601,  2605,  2592,  2643,  2653,  2673,  2677,  2652,
     895                 :            :     2690,  2694,  2689,  2726,  2727,  2731,  2737,  2748,  2751,  2752,
     896                 :            :     2757,  2761,  2756,  2811,  2819,  2820,  2844,  2848,  2875,  2879,
     897                 :            :     2843,  2898,  2903,  2901,  2907,  2908,  2916,  2940,  2977,  2981,
     898                 :            :     2986,  2990,  2994,  2998,  3027,  3031,  2976,  3043,  3047,  3051,
     899                 :            :     3055,  3056,  3124,  3127,  3128,  3133,  3132,  3171,  3187,  3201,
     900                 :            :     3208,  3207,  3217,  3221,  3216,  3233,  3237,  3232,  3265,  3273,
     901                 :            :     3274,  3275,  3276
     902                 :            : };
     903                 :            : #endif
     904                 :            : 
     905                 :            : #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
     906                 :            : /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
     907                 :            :    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
     908                 :            : static const char *const yytname[] =
     909                 :            : {
     910                 :            :   "$end", "error", "$undefined", "IDL_IDENTIFIER", "IDL_ATTRIBUTE",
     911                 :            :   "IDL_BOUND", "IDL_CASE", "IDL_CONST", "IDL_CONSTANTS", "IDL_CONSTRAINED",
     912                 :            :   "IDL_DEFAULT", "IDL_ENUM", "IDL_EXCEPTION", "IDL_INTERFACE",
     913                 :            :   "IDL_MAYBEAMBIGUOUS", "IDL_MAYBEDEFAULT", "IDL_MAYBEVOID", "IDL_MODULE",
     914                 :            :   "IDL_NEEDS", "IDL_OBSERVES", "IDL_OPTIONAL", "IDL_PROPERTY",
     915                 :            :   "IDL_RAISES", "IDL_READONLY", "IDL_REMOVEABLE", "IDL_SERVICE",
     916                 :            :   "IDL_SEQUENCE", "IDL_SINGLETON", "IDL_STRUCT", "IDL_SWITCH",
     917                 :            :   "IDL_TYPEDEF", "IDL_TRANSIENT", "IDL_UNION", "IDL_ANY", "IDL_CHAR",
     918                 :            :   "IDL_BOOLEAN", "IDL_BYTE", "IDL_DOUBLE", "IDL_FLOAT", "IDL_HYPER",
     919                 :            :   "IDL_LONG", "IDL_SHORT", "IDL_VOID", "IDL_STRING", "IDL_TYPE",
     920                 :            :   "IDL_UNSIGNED", "IDL_TRUE", "IDL_FALSE", "IDL_IN", "IDL_OUT",
     921                 :            :   "IDL_INOUT", "IDL_ONEWAY", "IDL_GET", "IDL_SET", "IDL_PUBLISHED",
     922                 :            :   "IDL_ELLIPSIS", "IDL_LEFTSHIFT", "IDL_RIGHTSHIFT", "IDL_SCOPESEPARATOR",
     923                 :            :   "IDL_INTEGER_LITERAL", "IDL_INTEGER_ULITERAL", "IDL_FLOATING_PT_LITERAL",
     924                 :            :   "';'", "'{'", "'}'", "':'", "'['", "']'", "','", "'('", "')'", "'='",
     925                 :            :   "'|'", "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'<'",
     926                 :            :   "'>'", "$accept", "start", "definitions", "definition", "$@1",
     927                 :            :   "opt_published", "publishable_definition", "$@2", "$@3", "$@4", "$@5",
     928                 :            :   "$@6", "$@7", "$@8", "module_dcl", "$@9", "$@10", "$@11", "$@12",
     929                 :            :   "interface", "interface_decl", "$@13", "forward_dcl", "interface_dcl",
     930                 :            :   "$@14", "$@15", "$@16", "interfaceheader", "inheritance_spec", "$@17",
     931                 :            :   "exports", "export", "$@18", "$@19", "$@20", "attribute", "$@21", "$@22",
     932                 :            :   "flag_header", "opt_attrflags", "opt_attrflag", "opt_attribute_block",
     933                 :            :   "attribute_block_rest", "opt_attribute_raises",
     934                 :            :   "opt_attribute_get_raises", "attribute_get_raises",
     935                 :            :   "opt_attribute_set_raises", "attribute_set_raises", "$@23", "operation",
     936                 :            :   "$@24", "$@25", "$@26", "$@27", "$@28", "operation_head", "$@29",
     937                 :            :   "op_type_spec", "parameters", "$@30", "parameter", "$@31", "$@32",
     938                 :            :   "direction", "opt_rest", "opt_raises", "raises", "$@33", "$@34",
     939                 :            :   "exception_list", "exception_name", "interface_inheritance_decl", "$@35",
     940                 :            :   "optional_inherited_interface", "constants_exports", "constants_export",
     941                 :            :   "$@36", "const_dcl", "$@37", "$@38", "$@39", "$@40", "constants_dcl",
     942                 :            :   "$@41", "$@42", "$@43", "$@44", "expression", "const_expr", "or_expr",
     943                 :            :   "xor_expr", "and_expr", "shift_expr", "add_expr", "mult_expr",
     944                 :            :   "unary_expr", "primary_expr", "literal", "positive_int_expr",
     945                 :            :   "const_type", "exception_header", "$@45", "$@46", "exception_dcl",
     946                 :            :   "$@47", "$@48", "$@49", "property", "$@50", "service_exports",
     947                 :            :   "service_export", "service_interface_header", "service_service_header",
     948                 :            :   "service_dcl", "$@51", "$@52", "service_dfn", "service_interface_dfn",
     949                 :            :   "$@53", "opt_service_body", "service_body", "constructors",
     950                 :            :   "constructor", "$@54", "$@55", "singleton_dcl", "$@56", "$@57",
     951                 :            :   "singleton_dfn", "singleton_interface_dfn", "service_obsolete_dfn",
     952                 :            :   "$@58", "$@59", "type_dcl", "$@60", "type_declarator", "$@61",
     953                 :            :   "at_least_one_declarator", "declarators", "$@62", "declarator",
     954                 :            :   "simple_declarator", "complex_declarator", "array_declarator", "$@63",
     955                 :            :   "at_least_one_array_dim", "array_dims", "array_dim", "$@64", "$@65",
     956                 :            :   "at_least_one_scoped_name", "scoped_names", "$@66", "scoped_name",
     957                 :            :   "$@67", "$@68", "type_spec", "simple_type_spec", "fundamental_type",
     958                 :            :   "opt_type_args", "type_args", "type_arg", "base_type_spec",
     959                 :            :   "integer_type", "signed_int", "unsigned_int", "floating_pt_type",
     960                 :            :   "char_type", "byte_type", "boolean_type", "any_type", "type_type",
     961                 :            :   "string_type", "template_type_spec", "constructed_type_spec",
     962                 :            :   "array_type", "$@69", "sequence_type_spec", "$@70", "$@71", "$@72",
     963                 :            :   "struct_type", "$@73", "$@74", "$@75", "structure_header", "$@76",
     964                 :            :   "$@77", "opt_type_params", "type_params", "at_least_one_member",
     965                 :            :   "members", "member", "$@78", "$@79", "type_or_parameter", "enum_type",
     966                 :            :   "$@80", "$@81", "$@82", "$@83", "at_least_one_enumerator", "enumerators",
     967                 :            :   "$@84", "enumerator", "union_type", "$@85", "$@86", "$@87", "$@88",
     968                 :            :   "$@89", "$@90", "$@91", "$@92", "switch_type_spec",
     969                 :            :   "at_least_one_case_branch", "case_branches", "case_branch", "$@93",
     970                 :            :   "at_least_one_case_label", "case_labels", "case_label", "$@94", "$@95",
     971                 :            :   "$@96", "element_spec", "$@97", "$@98", "identifier", 0
     972                 :            : };
     973                 :            : #endif
     974                 :            : 
     975                 :            : # ifdef YYPRINT
     976                 :            : /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
     977                 :            :    token YYLEX-NUM.  */
     978                 :            : static const yytype_uint16 yytoknum[] =
     979                 :            : {
     980                 :            :        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
     981                 :            :      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
     982                 :            :      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
     983                 :            :      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
     984                 :            :      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
     985                 :            :      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
     986                 :            :      315,   316,    59,   123,   125,    58,    91,    93,    44,    40,
     987                 :            :       41,    61,   124,    94,    38,    43,    45,    42,    47,    37,
     988                 :            :      126,    60,    62
     989                 :            : };
     990                 :            : # endif
     991                 :            : 
     992                 :            : /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
     993                 :            : static const yytype_uint16 yyr1[] =
     994                 :            : {
     995                 :            :        0,    83,    84,    85,    85,    86,    87,    86,    86,    88,
     996                 :            :       88,    90,    89,    91,    89,    92,    89,    93,    89,    94,
     997                 :            :       89,    95,    89,    96,    89,    98,    99,   100,   101,    97,
     998                 :            :      102,   102,   104,   103,   105,   107,   108,   109,   106,   106,
     999                 :            :      110,   112,   111,   111,   113,   113,   115,   114,   116,   114,
    1000                 :            :      117,   114,   119,   120,   118,   121,   122,   122,   123,   123,
    1001                 :            :      123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
    1002                 :            :      124,   124,   125,   125,   126,   126,   126,   127,   127,   128,
    1003                 :            :      129,   129,   131,   130,   133,   134,   135,   136,   137,   132,
    1004                 :            :      139,   138,   138,   140,   140,   141,   142,   141,   141,   141,
    1005                 :            :      144,   145,   143,   143,   146,   146,   146,   147,   147,   148,
    1006                 :            :      148,   150,   151,   149,   152,   152,   153,   155,   154,   156,
    1007                 :            :      156,   157,   157,   159,   158,   161,   162,   163,   164,   160,
    1008                 :            :      166,   167,   168,   169,   165,   170,   171,   172,   172,   173,
    1009                 :            :      173,   174,   174,   175,   175,   175,   176,   176,   176,   177,
    1010                 :            :      177,   177,   177,   178,   178,   178,   178,   179,   179,   179,
    1011                 :            :      180,   180,   180,   180,   180,   181,   182,   182,   182,   182,
    1012                 :            :      182,   182,   184,   185,   183,   187,   188,   189,   186,   191,
    1013                 :            :      190,   190,   192,   192,   193,   193,   193,   193,   193,   194,
    1014                 :            :      194,   195,   195,   197,   198,   196,   199,   199,   201,   200,
    1015                 :            :      202,   202,   203,   204,   204,   206,   207,   205,   209,   210,
    1016                 :            :      208,   211,   211,   212,   214,   215,   213,   217,   216,   216,
    1017                 :            :      216,   216,   219,   218,   220,   222,   221,   221,   223,   223,
    1018                 :            :      224,   225,   227,   226,   228,   229,   229,   231,   232,   230,
    1019                 :            :      233,   235,   234,   234,   236,   237,   236,   238,   236,   239,
    1020                 :            :      239,   240,   240,   241,   241,   242,   242,   243,   243,   244,
    1021                 :            :      245,   245,   245,   245,   245,   245,   245,   245,   246,   246,
    1022                 :            :      247,   247,   247,   248,   248,   248,   249,   249,   250,   251,
    1023                 :            :      252,   253,   254,   255,   256,   256,   257,   257,   257,   259,
    1024                 :            :      258,   261,   262,   263,   260,   260,   265,   266,   267,   264,
    1025                 :            :      269,   270,   268,   271,   271,   272,   272,   273,   274,   274,
    1026                 :            :      276,   277,   275,   275,   278,   278,   280,   281,   282,   283,
    1027                 :            :      279,   284,   286,   285,   285,   285,   287,   287,   289,   290,
    1028                 :            :      291,   292,   293,   294,   295,   296,   288,   297,   297,   297,
    1029                 :            :      297,   297,   298,   299,   299,   301,   300,   302,   303,   303,
    1030                 :            :      305,   304,   306,   307,   304,   309,   310,   308,   308,   311,
    1031                 :            :      311,   311,   311
    1032                 :            : };
    1033                 :            : 
    1034                 :            : /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
    1035                 :            : static const yytype_uint8 yyr2[] =
    1036                 :            : {
    1037                 :            :        0,     2,     1,     2,     0,     2,     0,     3,     2,     1,
    1038                 :            :        0,     0,     3,     0,     3,     0,     3,     0,     3,     0,
    1039                 :            :        3,     0,     3,     0,     3,     0,     0,     0,     0,     9,
    1040                 :            :        1,     1,     0,     3,     1,     0,     0,     0,     7,     2,
    1041                 :            :        2,     0,     3,     0,     2,     0,     0,     3,     0,     3,
    1042                 :            :        0,     3,     0,     0,     6,     3,     3,     1,     1,     1,
    1043                 :            :        1,     1,     1,     1,     1,     1,     1,     1,     1,     2,
    1044                 :            :        2,     0,     2,     2,     2,     2,     0,     1,     0,     3,
    1045                 :            :        1,     0,     0,     4,     0,     0,     0,     0,     0,    12,
    1046                 :            :        0,     4,     0,     1,     1,     1,     0,     4,     0,     2,
    1047                 :            :        0,     0,     8,     2,     1,     1,     1,     1,     0,     1,
    1048                 :            :        0,     0,     0,     6,     1,     3,     1,     0,     4,     3,
    1049                 :            :        0,     2,     0,     0,     3,     0,     0,     0,     0,     9,
    1050                 :            :        0,     0,     0,     0,     9,     1,     1,     1,     3,     1,
    1051                 :            :        3,     1,     3,     1,     3,     3,     1,     3,     3,     1,
    1052                 :            :        3,     3,     3,     1,     2,     2,     2,     1,     1,     3,
    1053                 :            :        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1054                 :            :        1,     1,     0,     0,     5,     0,     0,     0,     7,     0,
    1055                 :            :        4,     2,     2,     0,     3,     3,     3,     3,     2,     1,
    1056                 :            :        2,     1,     2,     0,     0,     5,     1,     1,     0,     4,
    1057                 :            :        1,     0,     3,     2,     0,     0,     0,     8,     0,     0,
    1058                 :            :        5,     1,     1,     2,     0,     0,     5,     0,     3,     1,
    1059                 :            :        1,     1,     0,     3,     2,     0,     4,     0,     1,     1,
    1060                 :            :        1,     1,     0,     3,     2,     2,     0,     0,     0,     5,
    1061                 :            :        2,     0,     4,     0,     1,     0,     3,     0,     4,     1,
    1062                 :            :        1,     1,     2,     1,     1,     3,     0,     1,     3,     1,
    1063                 :            :        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1064                 :            :        1,     1,     1,     2,     2,     2,     1,     1,     1,     1,
    1065                 :            :        1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
    1066                 :            :        3,     0,     0,     0,     7,     2,     0,     0,     0,     7,
    1067                 :            :        0,     0,     6,     3,     0,     1,     3,     2,     2,     0,
    1068                 :            :        0,     0,     5,     2,     1,     2,     0,     0,     0,     0,
    1069                 :            :        9,     2,     0,     4,     0,     2,     1,     3,     0,     0,
    1070                 :            :        0,     0,     0,     0,     0,     0,    17,     1,     1,     1,
    1071                 :            :        1,     1,     2,     2,     0,     0,     3,     2,     2,     0,
    1072                 :            :        0,     3,     0,     0,     5,     0,     0,     5,     2,     1,
    1073                 :            :        1,     1,     1
    1074                 :            : };
    1075                 :            : 
    1076                 :            : /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
    1077                 :            :    Performed when YYTABLE doesn't specify something else to do.  Zero
    1078                 :            :    means the default is an error.  */
    1079                 :            : static const yytype_uint16 yydefact[] =
    1080                 :            : {
    1081                 :            :        0,     0,    25,     9,     0,     2,     0,     0,     6,     8,
    1082                 :            :        0,     1,     3,     0,   125,   130,   316,   172,    32,   193,
    1083                 :            :      208,   300,   217,   328,     5,    17,    34,    31,    30,    35,
    1084                 :            :       13,    23,   175,    15,    19,    21,    11,   219,   296,   221,
    1085                 :            :      220,     0,   359,   360,   361,   362,    26,    39,     0,     0,
    1086                 :            :        0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
    1087                 :            :       40,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1088                 :            :        7,     0,   278,   280,   279,   276,   277,   271,   270,   272,
    1089                 :            :        0,   245,   126,   171,   166,   268,   269,   170,   167,   168,
    1090                 :            :      169,   244,   131,   317,   173,    33,   194,   209,   301,     0,
    1091                 :            :      291,   281,   283,   282,   218,   256,   222,   249,   251,   253,
    1092                 :            :      260,   261,   262,   264,   263,   265,   266,   267,   254,   250,
    1093                 :            :      285,   284,   286,   288,   287,   329,    18,     0,    36,    14,
    1094                 :            :       24,   176,    16,    20,    22,    12,   297,    27,   274,   273,
    1095                 :            :      275,     0,     0,   247,     0,     0,    43,     0,     0,   304,
    1096                 :            :      295,     0,     0,   252,     0,     0,     0,    42,    45,   309,
    1097                 :            :        0,     0,   246,   127,     0,   132,   318,   174,   214,     0,
    1098                 :            :      195,   196,   197,     0,   210,   211,   212,     0,    43,   292,
    1099                 :            :      259,     0,   257,   223,   227,   228,   229,   231,   230,   237,
    1100                 :            :      290,   236,   330,    92,     0,     0,   256,   289,   314,   298,
    1101                 :            :      309,   310,    28,     0,   248,   122,     0,   183,   198,   213,
    1102                 :            :        0,   305,   302,     0,     0,   255,   224,     0,     0,   234,
    1103                 :            :        0,     0,     0,    44,    46,     0,    48,     0,    50,     0,
    1104                 :            :        0,   308,   313,   315,     0,     0,     0,     0,   128,   133,
    1105                 :            :      122,   123,   319,     0,   326,     0,   201,     0,   303,   289,
    1106                 :            :      258,   225,   233,   163,   164,   160,   161,   162,     0,     0,
    1107                 :            :        0,     0,   165,   136,   137,   139,   141,   143,   146,   149,
    1108                 :            :      153,   158,   238,   157,   235,   331,     0,    58,    63,    64,
    1109                 :            :       66,    67,    62,    61,    59,    60,    68,    65,    90,     0,
    1110                 :            :       57,    38,     0,    52,     0,    94,    84,    93,     0,   117,
    1111                 :            :      178,   299,   311,    29,     0,     0,   121,     0,     0,     0,
    1112                 :            :      321,     0,     0,   189,     0,     0,   191,     0,     0,     0,
    1113                 :            :      182,     0,     0,     0,   204,   199,   200,   306,     0,     0,
    1114                 :            :        0,   154,   155,   156,     0,     0,     0,     0,     0,     0,
    1115                 :            :        0,     0,     0,     0,     0,     0,    69,   119,     0,    55,
    1116                 :            :        0,    47,     0,    49,     0,    51,     0,     0,   129,   135,
    1117                 :            :      134,   124,   320,   325,   322,   327,   181,     0,   243,     0,
    1118                 :            :       61,   190,   192,   179,   188,     0,     0,   216,     0,   294,
    1119                 :            :      226,   159,   138,   140,   142,   144,   145,   147,   148,   150,
    1120                 :            :      151,   152,   239,   341,   337,   338,   339,   340,   332,    91,
    1121                 :            :       56,    53,   230,    85,   118,   312,     0,   187,   240,   186,
    1122                 :            :        0,   184,   185,   202,   203,   205,     0,    71,     0,   323,
    1123                 :            :      241,   180,     0,   333,     0,    54,    86,     0,     0,     0,
    1124                 :            :        0,     0,    82,    70,     0,    81,    78,     0,   242,     0,
    1125                 :            :        0,     0,    95,   334,    73,   111,     0,     0,    72,    74,
    1126                 :            :       80,    75,    77,    87,    99,   103,   104,   105,   106,     0,
    1127                 :            :       96,   110,     0,     0,    79,     0,     0,   100,     0,   206,
    1128                 :            :      109,   352,   350,   335,   344,   345,   349,   112,    83,    88,
    1129                 :            :        0,     0,    97,     0,     0,     0,     0,   342,     0,   347,
    1130                 :            :        0,   110,   101,   207,   353,   351,   336,   343,     0,   355,
    1131                 :            :      346,   348,     0,   114,   116,    89,   108,     0,   358,     0,
    1132                 :            :        0,   113,   107,     0,   354,   356,   115,   102,     0,   357
    1133                 :            : };
    1134                 :            : 
    1135                 :            : /* YYDEFGOTO[NTERM-NUM].  */
    1136                 :            : static const yytype_int16 yydefgoto[] =
    1137                 :            : {
    1138                 :            :       -1,     4,     5,     6,    41,     7,    24,    68,    62,    65,
    1139                 :            :       58,    66,    67,    63,     8,    10,    71,   161,   237,    25,
    1140                 :            :       26,    52,    27,    28,    61,   158,   222,    29,    60,   127,
    1141                 :            :      193,   223,   292,   294,   298,   224,   352,   417,   225,   289,
    1142                 :            :      290,   425,   433,   434,   451,   435,   449,   436,   447,   226,
    1143                 :            :      354,   418,   437,   466,   491,   227,   348,   296,   441,   468,
    1144                 :            :      442,   480,   506,   459,   513,   469,   470,   463,   490,   502,
    1145                 :            :      503,   228,   356,   229,   239,   240,   307,   241,    48,   142,
    1146                 :            :      203,   304,    31,    49,   144,   205,   305,   358,   262,   263,
    1147                 :            :      264,   265,   266,   267,   268,   269,   270,   271,   272,    82,
    1148                 :            :       32,    51,   146,    33,    64,   159,   230,   319,   410,   245,
    1149                 :            :      320,   321,   322,    34,    53,   147,   170,   171,   246,   325,
    1150                 :            :      326,   378,   414,   422,   483,    35,    54,   148,   174,   175,
    1151                 :            :      172,   207,   323,    36,    56,   104,   154,   183,   216,   329,
    1152                 :            :      184,   185,   186,   187,   217,   190,   219,   191,   218,   344,
    1153                 :            :      367,   408,   427,   273,   141,   164,   106,   197,   108,   153,
    1154                 :            :      181,   182,   109,   110,    85,    86,   111,   112,   113,   114,
    1155                 :            :      115,   116,   117,   118,   119,   120,   155,   121,   151,   213,
    1156                 :            :      328,   122,    69,   160,   234,    38,    55,   149,   178,   210,
    1157                 :            :      199,   194,   231,   236,   357,   201,   123,    50,   145,   206,
    1158                 :            :      308,   242,   310,   406,   243,   124,    57,   156,   220,   345,
    1159                 :            :      416,   429,   462,   486,   398,   473,   487,   474,   488,   475,
    1160                 :            :      489,   476,   485,   484,   507,   500,   509,   518,    91
    1161                 :            : };
    1162                 :            : 
    1163                 :            : /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    1164                 :            :    STATE-NUM.  */
    1165                 :            : #define YYPACT_NINF -415
    1166                 :            : static const yytype_int16 yypact[] =
    1167                 :            : {
    1168                 :            :      353,    -8,  -415,  -415,    19,  -415,    93,   748,  -415,  -415,
    1169                 :            :      147,  -415,  -415,     8,  -415,  -415,  -415,  -415,  -415,  -415,
    1170                 :            :     -415,  -415,  -415,  -415,  -415,  -415,   -34,  -415,  -415,  -415,
    1171                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1172                 :            :     -415,    15,  -415,  -415,  -415,  -415,  -415,  -415,   677,   147,
    1173                 :            :      147,   147,   147,   147,   147,   147,   474,   147,    26,  -415,
    1174                 :            :     -415,    33,    37,    46,    53,    60,    64,    68,    76,    83,
    1175                 :            :     -415,    85,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1176                 :            :      -13,  -415,  -415,    17,  -415,  -415,  -415,  -415,  -415,  -415,
    1177                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,    71,
    1178                 :            :     -415,  -415,  -415,  -415,  -415,   -35,  -415,    94,  -415,  -415,
    1179                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1180                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,   133,  -415,  -415,
    1181                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1182                 :            :     -415,   147,   147,  -415,   101,   103,   106,    48,    54,    97,
    1183                 :            :     -415,   100,   623,  -415,   147,   110,   155,    17,  -415,  -415,
    1184                 :            :      652,   441,  -415,  -415,   147,  -415,  -415,  -415,  -415,   133,
    1185                 :            :     -415,  -415,  -415,   133,  -415,  -415,  -415,   147,   106,  -415,
    1186                 :            :       94,   -47,  -415,  -415,  -415,  -415,  -415,  -415,   123,  -415,
    1187                 :            :     -415,  -415,  -415,     7,   294,   -32,   -35,  -415,   129,  -415,
    1188                 :            :     -415,  -415,  -415,   126,  -415,   196,   147,  -415,    17,    17,
    1189                 :            :       27,  -415,  -415,   623,   623,  -415,   136,   110,     9,   110,
    1190                 :            :      137,   723,   141,  -415,  -415,   623,  -415,   594,  -415,   194,
    1191                 :            :      144,  -415,  -415,   152,   158,   376,   147,   159,  -415,  -415,
    1192                 :            :      196,  -415,  -415,    12,   153,    73,   162,   147,  -415,   145,
    1193                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,     9,   195,
    1194                 :            :      195,   195,  -415,   160,   163,   157,    95,   -39,   -20,  -415,
    1195                 :            :     -415,  -415,  -415,    17,  -415,  -415,   168,  -415,  -415,  -415,
    1196                 :            :     -415,  -415,  -415,   171,  -415,  -415,  -415,  -415,  -415,    88,
    1197                 :            :     -415,  -415,   177,    94,   178,  -415,  -415,    94,   183,  -415,
    1198                 :            :     -415,  -415,  -415,  -415,     9,   182,  -415,   188,   193,   184,
    1199                 :            :      190,     9,   197,  -415,   133,   133,  -415,   778,   565,   198,
    1200                 :            :     -415,   133,   133,   201,  -415,  -415,  -415,  -415,   179,   147,
    1201                 :            :      192,  -415,  -415,  -415,     9,     9,     9,     9,     9,     9,
    1202                 :            :        9,     9,     9,     9,   199,   240,  -415,  -415,   200,  -415,
    1203                 :            :      778,  -415,   147,  -415,   147,  -415,   133,   206,  -415,  -415,
    1204                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,   209,    17,   210,
    1205                 :            :     -415,  -415,  -415,    94,  -415,   216,   220,  -415,   109,  -415,
    1206                 :            :     -415,  -415,   163,   157,    95,   -39,   -39,   -20,   -20,  -415,
    1207                 :            :     -415,  -415,  -415,    17,  -415,  -415,  -415,  -415,  -415,  -415,
    1208                 :            :     -415,  -415,  -415,  -415,    17,  -415,   147,  -415,   215,  -415,
    1209                 :            :      147,  -415,  -415,  -415,  -415,  -415,   214,   223,   218,  -415,
    1210                 :            :     -415,  -415,   219,  -415,    50,  -415,  -415,   133,    13,   226,
    1211                 :            :      227,   268,  -415,  -415,   232,   246,   252,    13,    17,   176,
    1212                 :            :       16,    59,  -415,  -415,  -415,  -415,   243,   268,  -415,  -415,
    1213                 :            :     -415,  -415,  -415,   238,  -415,    94,  -415,  -415,  -415,   241,
    1214                 :            :     -415,   268,    28,   244,  -415,   245,   239,  -415,    21,  -415,
    1215                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1216                 :            :      623,   623,  -415,   248,     9,   247,   250,    28,   519,    28,
    1217                 :            :      133,   268,    94,  -415,  -415,  -415,  -415,  -415,   -30,  -415,
    1218                 :            :     -415,  -415,    75,  -415,    17,  -415,   260,   251,  -415,   147,
    1219                 :            :      133,  -415,  -415,   147,  -415,  -415,  -415,  -415,   255,  -415
    1220                 :            : };
    1221                 :            : 
    1222                 :            : /* YYPGOTO[NTERM-NUM].  */
    1223                 :            : static const yytype_int16 yypgoto[] =
    1224                 :            : {
    1225                 :            :     -415,  -415,     4,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1226                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1227                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -130,  -415,
    1228                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,    77,  -415,
    1229                 :            :      -29,  -415,  -415,  -415,  -415,  -118,  -415,  -112,  -415,  -415,
    1230                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -113,  -415,
    1231                 :            :     -143,  -415,  -415,  -415,  -415,  -165,  -414,  -415,  -415,  -415,
    1232                 :            :     -174,  -415,  -415,  -415,   105,  -415,  -415,   334,  -415,  -415,
    1233                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -251,  -415,
    1234                 :            :       22,    14,    23,  -163,  -146,  -208,  -119,  -415,  -415,  -415,
    1235                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1236                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1237                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1238                 :            :      202,  -415,  -415,  -415,  -415,  -415,  -415,  -227,  -415,  -415,
    1239                 :            :     -321,    -9,  -415,  -415,  -415,   134,  -415,   138,  -415,  -415,
    1240                 :            :     -297,  -415,  -415,   -45,  -415,  -415,  -133,   -55,  -145,   166,
    1241                 :            :     -415,   149,  -415,   -44,  -415,  -415,   319,   -43,   321,   -42,
    1242                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1243                 :            :     -415,   364,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
    1244                 :            :     -415,   172,   213,  -415,  -415,  -415,    -5,  -415,  -415,  -415,
    1245                 :            :     -415,  -415,  -415,  -415,   -31,   367,  -415,  -415,  -415,  -415,
    1246                 :            :     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -111,  -415,  -415,
    1247                 :            :     -415,  -103,  -415,  -415,  -415,  -415,  -415,  -415,   -10
    1248                 :            : };
    1249                 :            : 
    1250                 :            : /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    1251                 :            :    positive, shift that token.  If negative, reduce the rule which
    1252                 :            :    number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1253                 :            : #define YYTABLE_NINF -325
    1254                 :            : static const yytype_int16 yytable[] =
    1255                 :            : {
    1256                 :            :       46,   107,    39,    83,    84,    88,    90,   330,   380,   302,
    1257                 :            :       12,   105,    42,   309,   439,   198,   167,   446,   369,    11,
    1258                 :            :     -120,   214,   481,   143,   375,   376,   138,   139,   140,   -43,
    1259                 :            :      232,    59,   508,   465,   471,   215,   339,   340,   472,    92,
    1260                 :            :       93,    94,    95,    96,    97,    98,   152,   125,   212,   198,
    1261                 :            :      150,   430,   150,   359,     9,   253,   254,   341,   342,   343,
    1262                 :            :      365,    43,    44,    45,   456,   457,   458,    81,   255,   256,
    1263                 :            :      257,   -37,    47,   221,   312,   143,  -324,    70,   258,   440,
    1264                 :            :     -324,   -98,   157,   -98,   259,   260,   313,   440,   126,   261,
    1265                 :            :      198,   314,   315,    -4,     1,   247,   128,   180,   316,   129,
    1266                 :            :      -10,   -10,   431,   432,   -10,   -10,   -10,   105,   130,   248,
    1267                 :            :        2,   168,    42,   169,   -76,   196,   131,   168,   -10,   173,
    1268                 :            :      -10,   -10,   132,   -10,   208,   -10,   133,   460,   209,   461,
    1269                 :            :      134,   162,   163,   389,   390,   391,    42,  -215,   135,   317,
    1270                 :            :      331,   332,   333,   510,   188,   511,   136,     3,   137,   196,
    1271                 :            :       42,   337,   338,   150,   204,   349,   350,    -4,   249,   180,
    1272                 :            :     -289,    43,    44,    45,   165,   202,   166,   211,   105,   105,
    1273                 :            :      293,    59,   297,   413,   385,   386,   189,    99,   177,    42,
    1274                 :            :      105,   179,   105,   421,   192,    43,    44,    45,   515,  -232,
    1275                 :            :      196,    81,   517,   387,   388,  -251,   244,   238,    42,    43,
    1276                 :            :       44,    45,   100,    14,   251,   291,   275,   299,   300,   101,
    1277                 :            :       72,    73,    74,    75,    76,    77,    78,    79,  -252,   102,
    1278                 :            :      103,    80,   301,   303,   311,   324,   188,  -293,    43,    44,
    1279                 :            :       45,   336,   334,   494,    81,   346,   335,   327,   347,   351,
    1280                 :            :      353,   253,   254,    42,   454,   355,   360,    43,    44,    45,
    1281                 :            :      361,    16,   363,    81,   255,   256,   257,   362,   364,   366,
    1282                 :            :      374,   379,   381,   373,   258,   377,   392,   399,   405,   368,
    1283                 :            :      368,   407,   409,   105,    72,    73,   368,   368,   411,    77,
    1284                 :            :       78,    79,   412,   420,   423,    80,   424,   426,   428,   443,
    1285                 :            :      445,   444,    43,    44,    45,   195,   448,    42,    81,   432,
    1286                 :            :      393,   394,   395,   396,   431,   464,   460,   478,   467,   479,
    1287                 :            :      493,   404,   495,   477,   496,   512,   514,   519,   452,   188,
    1288                 :            :      100,   400,   318,   450,   453,   482,   505,   101,    72,    73,
    1289                 :            :       74,    75,    76,    77,    78,    79,   516,   102,   103,    80,
    1290                 :            :      397,    30,   402,   401,   403,   306,    43,    44,    45,   383,
    1291                 :            :      176,   252,    81,    -4,     1,   499,   382,   274,  -177,   384,
    1292                 :            :      -10,   -10,   233,   250,   -10,   -10,   -10,    87,   415,    89,
    1293                 :            :        2,    37,   235,   200,    40,   419,   497,   195,   -10,    42,
    1294                 :            :      -10,   -10,   438,   -10,   455,   -10,   501,     0,     0,     0,
    1295                 :            :        0,     0,     0,     0,   105,     0,   244,     0,     0,     0,
    1296                 :            :      188,     0,   100,     0,     0,     0,     0,     3,     0,   101,
    1297                 :            :       72,    73,    74,    75,    76,    77,    78,    79,     0,   102,
    1298                 :            :      103,    80,     0,     0,     0,   492,   455,     0,    43,    44,
    1299                 :            :       45,     0,     0,   107,    81,   105,   105,     0,     0,     0,
    1300                 :            :     -307,     0,     1,   105,     0,   504,     0,     0,   -10,   -10,
    1301                 :            :        0,     0,   -10,   -10,   -10,     0,     0,     0,     2,     0,
    1302                 :            :        0,     0,     0,     0,     0,   504,   -10,     0,   -10,   -10,
    1303                 :            :        0,   -10,     0,   -10,     0,    99,     0,    42,     0,     0,
    1304                 :            :        0,     0,     0,     0,     0,    16,     0,     0,     0,     0,
    1305                 :            :        0,     0,     0,     0,     0,     3,     0,     0,     0,   188,
    1306                 :            :      100,     0,    21,   188,     0,    -4,    23,   101,    72,    73,
    1307                 :            :       74,    75,    76,    77,    78,    79,     0,   102,   103,    80,
    1308                 :            :      498,     0,    42,     0,     0,     0,    43,    44,    45,     0,
    1309                 :            :       16,     0,    81,     0,     0,     0,     0,     0,     0,     0,
    1310                 :            :        0,     0,     0,     0,     0,   100,     0,    21,     0,     0,
    1311                 :            :        0,    23,   101,    72,    73,    74,    75,    76,    77,    78,
    1312                 :            :       79,     0,   102,   103,    80,     0,    99,     0,    42,     0,
    1313                 :            :        0,    43,    44,    45,     0,     0,     0,    81,   371,     0,
    1314                 :            :        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1315                 :            :      372,   100,     0,     0,     0,    99,     0,    42,   101,    72,
    1316                 :            :       73,    74,    75,    76,    77,    78,    79,     0,   102,   103,
    1317                 :            :       80,     0,     0,     0,     0,     0,     0,    43,    44,    45,
    1318                 :            :      100,     0,     0,    81,    99,     0,    42,   101,    72,    73,
    1319                 :            :       74,    75,    76,    77,    78,    79,   295,   102,   103,    80,
    1320                 :            :        0,     0,     0,     0,     0,     0,    43,    44,    45,   100,
    1321                 :            :        0,     0,    81,   195,     0,    42,   101,    72,    73,    74,
    1322                 :            :       75,    76,    77,    78,    79,     0,   102,   103,    80,     0,
    1323                 :            :        0,     0,     0,     0,     0,    43,    44,    45,   100,     0,
    1324                 :            :       42,    81,     0,     0,     0,   101,    72,    73,    74,    75,
    1325                 :            :       76,    77,    78,    79,     0,   102,   103,    80,     0,     0,
    1326                 :            :        0,     0,     0,     0,    43,    44,    45,     0,     0,     0,
    1327                 :            :       81,    72,    73,    74,    75,    76,    77,    78,    79,     0,
    1328                 :            :        0,     0,    80,     0,   276,     0,     0,   277,   278,    43,
    1329                 :            :       44,    45,   279,     0,     0,    81,     0,   280,   281,   282,
    1330                 :            :        0,     0,     0,   283,   284,     0,   285,   286,     0,    13,
    1331                 :            :        0,     0,     0,     0,   287,    14,    15,     0,     0,    16,
    1332                 :            :       17,    18,     0,     0,     0,     0,     0,     0,     0,     0,
    1333                 :            :        0,     0,     0,    19,   288,    20,    21,     0,    22,   276,
    1334                 :            :       23,     0,   277,   278,     0,     0,     0,   279,     0,     0,
    1335                 :            :        0,     0,   280,   281,   282,     0,     0,     0,   370,   284,
    1336                 :            :        0,   285,   286,     0,     0,     0,     0,     0,     0,   287
    1337                 :            : };
    1338                 :            : 
    1339                 :            : #define yypact_value_is_default(yystate) \
    1340                 :            :   ((yystate) == (-415))
    1341                 :            : 
    1342                 :            : #define yytable_value_is_error(yytable_value) \
    1343                 :            :   YYID (0)
    1344                 :            : 
    1345                 :            : static const yytype_int16 yycheck[] =
    1346                 :            : {
    1347                 :            :       10,    56,     7,    48,    48,    48,    48,   258,   329,   236,
    1348                 :            :        6,    56,     3,     1,     1,   160,   146,   431,   315,     0,
    1349                 :            :       13,    68,     1,    58,   321,   322,    39,    40,    41,    63,
    1350                 :            :       62,    65,    62,   447,     6,    82,    75,    76,    10,    49,
    1351                 :            :       50,    51,    52,    53,    54,    55,    81,    57,   178,   194,
    1352                 :            :       82,     1,    82,   304,    62,    46,    47,    77,    78,    79,
    1353                 :            :      311,    52,    53,    54,    48,    49,    50,    58,    59,    60,
    1354                 :            :       61,    64,    64,    66,     1,    58,    64,    62,    69,    66,
    1355                 :            :       68,    68,   127,    70,    75,    76,    13,    66,    62,    80,
    1356                 :            :      235,    18,    19,     0,     1,    68,    63,   152,    25,    62,
    1357                 :            :        7,     8,    52,    53,    11,    12,    13,   152,    62,    82,
    1358                 :            :       17,    63,     3,    65,    64,   160,    63,    63,    25,    65,
    1359                 :            :       27,    28,    62,    30,   169,    32,    62,    68,   173,    70,
    1360                 :            :       62,   141,   142,   341,   342,   343,     3,    64,    62,    66,
    1361                 :            :      259,   260,   261,    68,   154,    70,    63,    54,    63,   194,
    1362                 :            :        3,    56,    57,    82,   164,    67,    68,    64,   213,   214,
    1363                 :            :       66,    52,    53,    54,    63,   161,    63,   177,   213,   214,
    1364                 :            :      225,    65,   227,    64,   337,   338,    66,     1,    81,     3,
    1365                 :            :      225,    81,   227,   410,    29,    52,    53,    54,   509,    66,
    1366                 :            :      235,    58,   513,   339,   340,    66,   206,    71,     3,    52,
    1367                 :            :       53,    54,    26,     7,    68,    64,    69,    13,    64,    33,
    1368                 :            :       34,    35,    36,    37,    38,    39,    40,    41,    66,    43,
    1369                 :            :       44,    45,    64,    64,    71,    63,   236,    82,    52,    53,
    1370                 :            :       54,    74,    72,   484,    58,    67,    73,   247,    67,    62,
    1371                 :            :       62,    46,    47,     3,    68,    62,    64,    52,    53,    54,
    1372                 :            :       62,    11,    68,    58,    59,    60,    61,    64,    68,    62,
    1373                 :            :       62,    82,    70,   318,    69,    64,    67,    67,    62,   314,
    1374                 :            :      315,    62,    62,   318,    34,    35,   321,   322,    62,    39,
    1375                 :            :       40,    41,    62,    68,    70,    45,    63,    69,    69,    63,
    1376                 :            :       22,    64,    52,    53,    54,     1,    64,     3,    58,    53,
    1377                 :            :      345,   345,   345,   345,    52,    62,    68,    62,    67,    70,
    1378                 :            :       62,   356,    65,    69,    64,    55,    65,    62,   436,   329,
    1379                 :            :       26,   350,   245,   435,   437,   468,   491,    33,    34,    35,
    1380                 :            :       36,    37,    38,    39,    40,    41,   510,    43,    44,    45,
    1381                 :            :      345,     7,   352,   352,   354,   240,    52,    53,    54,   335,
    1382                 :            :      148,   217,    58,     0,     1,   488,   334,   219,    64,   336,
    1383                 :            :        7,     8,   196,   214,    11,    12,    13,    48,   378,    48,
    1384                 :            :       17,     7,   200,   160,     7,   406,   487,     1,    25,     3,
    1385                 :            :       27,    28,   427,    30,   439,    32,   489,    -1,    -1,    -1,
    1386                 :            :       -1,    -1,    -1,    -1,   439,    -1,   406,    -1,    -1,    -1,
    1387                 :            :      410,    -1,    26,    -1,    -1,    -1,    -1,    54,    -1,    33,
    1388                 :            :       34,    35,    36,    37,    38,    39,    40,    41,    -1,    43,
    1389                 :            :       44,    45,    -1,    -1,    -1,   480,   481,    -1,    52,    53,
    1390                 :            :       54,    -1,    -1,   488,    58,   480,   481,    -1,    -1,    -1,
    1391                 :            :       64,    -1,     1,   488,    -1,   490,    -1,    -1,     7,     8,
    1392                 :            :       -1,    -1,    11,    12,    13,    -1,    -1,    -1,    17,    -1,
    1393                 :            :       -1,    -1,    -1,    -1,    -1,   510,    25,    -1,    27,    28,
    1394                 :            :       -1,    30,    -1,    32,    -1,     1,    -1,     3,    -1,    -1,
    1395                 :            :       -1,    -1,    -1,    -1,    -1,    11,    -1,    -1,    -1,    -1,
    1396                 :            :       -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,   509,
    1397                 :            :       26,    -1,    28,   513,    -1,    64,    32,    33,    34,    35,
    1398                 :            :       36,    37,    38,    39,    40,    41,    -1,    43,    44,    45,
    1399                 :            :        1,    -1,     3,    -1,    -1,    -1,    52,    53,    54,    -1,
    1400                 :            :       11,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    1401                 :            :       -1,    -1,    -1,    -1,    -1,    26,    -1,    28,    -1,    -1,
    1402                 :            :       -1,    32,    33,    34,    35,    36,    37,    38,    39,    40,
    1403                 :            :       41,    -1,    43,    44,    45,    -1,     1,    -1,     3,    -1,
    1404                 :            :       -1,    52,    53,    54,    -1,    -1,    -1,    58,    13,    -1,
    1405                 :            :       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    1406                 :            :       25,    26,    -1,    -1,    -1,     1,    -1,     3,    33,    34,
    1407                 :            :       35,    36,    37,    38,    39,    40,    41,    -1,    43,    44,
    1408                 :            :       45,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,
    1409                 :            :       26,    -1,    -1,    58,     1,    -1,     3,    33,    34,    35,
    1410                 :            :       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
    1411                 :            :       -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,    26,
    1412                 :            :       -1,    -1,    58,     1,    -1,     3,    33,    34,    35,    36,
    1413                 :            :       37,    38,    39,    40,    41,    -1,    43,    44,    45,    -1,
    1414                 :            :       -1,    -1,    -1,    -1,    -1,    52,    53,    54,    26,    -1,
    1415                 :            :        3,    58,    -1,    -1,    -1,    33,    34,    35,    36,    37,
    1416                 :            :       38,    39,    40,    41,    -1,    43,    44,    45,    -1,    -1,
    1417                 :            :       -1,    -1,    -1,    -1,    52,    53,    54,    -1,    -1,    -1,
    1418                 :            :       58,    34,    35,    36,    37,    38,    39,    40,    41,    -1,
    1419                 :            :       -1,    -1,    45,    -1,     1,    -1,    -1,     4,     5,    52,
    1420                 :            :       53,    54,     9,    -1,    -1,    58,    -1,    14,    15,    16,
    1421                 :            :       -1,    -1,    -1,    20,    21,    -1,    23,    24,    -1,     1,
    1422                 :            :       -1,    -1,    -1,    -1,    31,     7,     8,    -1,    -1,    11,
    1423                 :            :       12,    13,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    1424                 :            :       -1,    -1,    -1,    25,    51,    27,    28,    -1,    30,     1,
    1425                 :            :       32,    -1,     4,     5,    -1,    -1,    -1,     9,    -1,    -1,
    1426                 :            :       -1,    -1,    14,    15,    16,    -1,    -1,    -1,    20,    21,
    1427                 :            :       -1,    23,    24,    -1,    -1,    -1,    -1,    -1,    -1,    31
    1428                 :            : };
    1429                 :            : 
    1430                 :            : /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    1431                 :            :    symbol of state STATE-NUM.  */
    1432                 :            : static const yytype_uint16 yystos[] =
    1433                 :            : {
    1434                 :            :        0,     1,    17,    54,    84,    85,    86,    88,    97,    62,
    1435                 :            :       98,     0,    85,     1,     7,     8,    11,    12,    13,    25,
    1436                 :            :       27,    28,    30,    32,    89,   102,   103,   105,   106,   110,
    1437                 :            :      160,   165,   183,   186,   196,   208,   216,   264,   268,   279,
    1438                 :            :      288,    87,     3,    52,    53,    54,   311,    64,   161,   166,
    1439                 :            :      280,   184,   104,   197,   209,   269,   217,   289,    93,    65,
    1440                 :            :      111,   107,    91,    96,   187,    92,    94,    95,    90,   265,
    1441                 :            :       62,    99,    34,    35,    36,    37,    38,    39,    40,    41,
    1442                 :            :       45,    58,   182,   236,   246,   247,   248,   249,   250,   251,
    1443                 :            :      252,   311,   311,   311,   311,   311,   311,   311,   311,     1,
    1444                 :            :       26,    33,    43,    44,   218,   236,   239,   240,   241,   245,
    1445                 :            :      246,   249,   250,   251,   252,   253,   254,   255,   256,   257,
    1446                 :            :      258,   260,   264,   279,   288,   311,    62,   112,    63,    62,
    1447                 :            :       62,    63,    62,    62,    62,    62,    63,    63,    39,    40,
    1448                 :            :       41,   237,   162,    58,   167,   281,   185,   198,   210,   270,
    1449                 :            :       82,   261,    81,   242,   219,   259,   290,   236,   108,   188,
    1450                 :            :      266,   100,   311,   311,   238,    63,    63,   111,    63,    65,
    1451                 :            :      199,   200,   213,    65,   211,   212,   213,    81,   271,    81,
    1452                 :            :      240,   243,   244,   220,   223,   224,   225,   226,   311,    66,
    1453                 :            :      228,   230,    29,   113,   274,     1,   236,   240,   241,   273,
    1454                 :            :      275,   278,    85,   163,   311,   168,   282,   214,   236,   236,
    1455                 :            :      272,   311,   111,   262,    68,    82,   221,   227,   231,   229,
    1456                 :            :      291,    66,   109,   114,   118,   121,   132,   138,   154,   156,
    1457                 :            :      189,   275,    62,   242,   267,   274,   276,   101,    71,   157,
    1458                 :            :      158,   160,   284,   287,   311,   192,   201,    68,    82,   240,
    1459                 :            :      244,    68,   228,    46,    47,    59,    60,    61,    69,    75,
    1460                 :            :       76,    80,   171,   172,   173,   174,   175,   176,   177,   178,
    1461                 :            :      179,   180,   181,   236,   230,    69,     1,     4,     5,     9,
    1462                 :            :       14,    15,    16,    20,    21,    23,    24,    31,    51,   122,
    1463                 :            :      123,    64,   115,   240,   116,    42,   140,   240,   117,    13,
    1464                 :            :       64,    64,   220,    64,   164,   169,   157,   159,   283,     1,
    1465                 :            :      285,    71,     1,    13,    18,    19,    25,    66,   121,   190,
    1466                 :            :      193,   194,   195,   215,    63,   202,   203,   311,   263,   222,
    1467                 :            :      171,   179,   179,   179,    72,    73,    74,    56,    57,    75,
    1468                 :            :       76,    77,    78,    79,   232,   292,    67,    67,   139,    67,
    1469                 :            :       68,    62,   119,    62,   133,    62,   155,   277,   170,   171,
    1470                 :            :       64,    62,    64,    68,    68,   171,    62,   233,   236,   233,
    1471                 :            :       20,    13,    25,   240,    62,   233,   233,    64,   204,    82,
    1472                 :            :      223,    70,   173,   174,   175,   176,   176,   177,   177,   178,
    1473                 :            :      178,   178,    67,   236,   246,   250,   252,   279,   297,    67,
    1474                 :            :      123,   224,   311,   311,   236,    62,   286,    62,   234,    62,
    1475                 :            :      191,    62,    62,    64,   205,   311,   293,   120,   134,   287,
    1476                 :            :       68,   220,   206,    70,    63,   124,    69,   235,    69,   294,
    1477                 :            :        1,    52,    53,   125,   126,   128,   130,   135,   236,     1,
    1478                 :            :       66,   141,   143,    63,    64,    22,   149,   131,    64,   129,
    1479                 :            :      130,   127,   128,   141,    68,   240,    48,    49,    50,   146,
    1480                 :            :       68,    70,   295,   150,    62,   149,   136,    67,   142,   148,
    1481                 :            :      149,     6,    10,   298,   300,   302,   304,    69,    62,    70,
    1482                 :            :      144,     1,   143,   207,   306,   305,   296,   299,   301,   303,
    1483                 :            :      151,   137,   240,    62,   171,    65,    64,   300,     1,   239,
    1484                 :            :      308,   304,   152,   153,   236,   148,   145,   307,    62,   309,
    1485                 :            :       68,    70,    55,   147,    65,   223,   153,   223,   310,    62
    1486                 :            : };
    1487                 :            : 
    1488                 :            : #define yyerrok         (yyerrstatus = 0)
    1489                 :            : #define yyclearin       (yychar = YYEMPTY)
    1490                 :            : #define YYEMPTY         (-2)
    1491                 :            : #define YYEOF           0
    1492                 :            : 
    1493                 :            : #define YYACCEPT        goto yyacceptlab
    1494                 :            : #define YYABORT         goto yyabortlab
    1495                 :            : #define YYERROR         goto yyerrorlab
    1496                 :            : 
    1497                 :            : 
    1498                 :            : /* Like YYERROR except do call yyerror.  This remains here temporarily
    1499                 :            :    to ease the transition to the new meaning of YYERROR, for GCC.
    1500                 :            :    Once GCC version 2 has supplanted version 1, this can go.  However,
    1501                 :            :    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
    1502                 :            :    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
    1503                 :            :    discussed.  */
    1504                 :            : 
    1505                 :            : #define YYFAIL          goto yyerrlab
    1506                 :            : #if defined YYFAIL
    1507                 :            :   /* This is here to suppress warnings from the GCC cpp's
    1508                 :            :      -Wunused-macros.  Normally we don't worry about that warning, but
    1509                 :            :      some users do, and we want to make it easy for users to remove
    1510                 :            :      YYFAIL uses, which will produce warnings from Bison 2.5.  */
    1511                 :            : #endif
    1512                 :            : 
    1513                 :            : #define YYRECOVERING()  (!!yyerrstatus)
    1514                 :            : 
    1515                 :            : #define YYBACKUP(Token, Value)                                  \
    1516                 :            : do                                                              \
    1517                 :            :   if (yychar == YYEMPTY && yylen == 1)                          \
    1518                 :            :     {                                                           \
    1519                 :            :       yychar = (Token);                                         \
    1520                 :            :       yylval = (Value);                                         \
    1521                 :            :       YYPOPSTACK (1);                                           \
    1522                 :            :       goto yybackup;                                            \
    1523                 :            :     }                                                           \
    1524                 :            :   else                                                          \
    1525                 :            :     {                                                           \
    1526                 :            :       yyerror (YY_("syntax error: cannot back up")); \
    1527                 :            :       YYERROR;                                                  \
    1528                 :            :     }                                                           \
    1529                 :            : while (YYID (0))
    1530                 :            : 
    1531                 :            : 
    1532                 :            : #define YYTERROR        1
    1533                 :            : #define YYERRCODE       256
    1534                 :            : 
    1535                 :            : 
    1536                 :            : /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    1537                 :            :    If N is 0, then set CURRENT to the empty location which ends
    1538                 :            :    the previous symbol: RHS[0] (always defined).  */
    1539                 :            : 
    1540                 :            : #define YYRHSLOC(Rhs, K) ((Rhs)[K])
    1541                 :            : #ifndef YYLLOC_DEFAULT
    1542                 :            : # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
    1543                 :            :     do                                                                  \
    1544                 :            :       if (YYID (N))                                                    \
    1545                 :            :         {                                                               \
    1546                 :            :           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
    1547                 :            :           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
    1548                 :            :           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
    1549                 :            :           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
    1550                 :            :         }                                                               \
    1551                 :            :       else                                                              \
    1552                 :            :         {                                                               \
    1553                 :            :           (Current).first_line   = (Current).last_line   =              \
    1554                 :            :             YYRHSLOC (Rhs, 0).last_line;                                \
    1555                 :            :           (Current).first_column = (Current).last_column =              \
    1556                 :            :             YYRHSLOC (Rhs, 0).last_column;                              \
    1557                 :            :         }                                                               \
    1558                 :            :     while (YYID (0))
    1559                 :            : #endif
    1560                 :            : 
    1561                 :            : 
    1562                 :            : /* This macro is provided for backward compatibility. */
    1563                 :            : 
    1564                 :            : #ifndef YY_LOCATION_PRINT
    1565                 :            : # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
    1566                 :            : #endif
    1567                 :            : 
    1568                 :            : 
    1569                 :            : /* YYLEX -- calling `yylex' with the right arguments.  */
    1570                 :            : 
    1571                 :            : #ifdef YYLEX_PARAM
    1572                 :            : # define YYLEX yylex (YYLEX_PARAM)
    1573                 :            : #else
    1574                 :            : # define YYLEX yylex ()
    1575                 :            : #endif
    1576                 :            : 
    1577                 :            : /* Enable debugging if requested.  */
    1578                 :            : #if YYDEBUG
    1579                 :            : 
    1580                 :            : # ifndef YYFPRINTF
    1581                 :            : #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
    1582                 :            : #  define YYFPRINTF fprintf
    1583                 :            : # endif
    1584                 :            : 
    1585                 :            : # define YYDPRINTF(Args)                        \
    1586                 :            : do {                                            \
    1587                 :            :   if (yydebug)                                  \
    1588                 :            :     YYFPRINTF Args;                             \
    1589                 :            : } while (YYID (0))
    1590                 :            : 
    1591                 :            : # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
    1592                 :            : do {                                                                      \
    1593                 :            :   if (yydebug)                                                            \
    1594                 :            :     {                                                                     \
    1595                 :            :       YYFPRINTF (stderr, "%s ", Title);                                         \
    1596                 :            :       yy_symbol_print (stderr,                                            \
    1597                 :            :                   Type, Value); \
    1598                 :            :       YYFPRINTF (stderr, "\n");                                                 \
    1599                 :            :     }                                                                     \
    1600                 :            : } while (YYID (0))
    1601                 :            : 
    1602                 :            : 
    1603                 :            : /*--------------------------------.
    1604                 :            : | Print this symbol on YYOUTPUT.  |
    1605                 :            : `--------------------------------*/
    1606                 :            : 
    1607                 :            : /*ARGSUSED*/
    1608                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    1609                 :            :      || defined __cplusplus || defined _MSC_VER)
    1610                 :            : static void
    1611                 :          0 : yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    1612                 :            : #else
    1613                 :            : static void
    1614                 :            : yy_symbol_value_print (yyoutput, yytype, yyvaluep)
    1615                 :            :     FILE *yyoutput;
    1616                 :            :     int yytype;
    1617                 :            :     YYSTYPE const * const yyvaluep;
    1618                 :            : #endif
    1619                 :            : {
    1620         [ #  # ]:          0 :   if (!yyvaluep)
    1621                 :          0 :     return;
    1622                 :            : # ifdef YYPRINT
    1623                 :            :   if (yytype < YYNTOKENS)
    1624                 :            :     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
    1625                 :            : # else
    1626                 :            :   YYUSE (yyoutput);
    1627                 :            : # endif
    1628                 :            :   switch (yytype)
    1629                 :            :     {
    1630                 :            :       default:
    1631                 :          0 :         break;
    1632                 :            :     }
    1633                 :            : }
    1634                 :            : 
    1635                 :            : 
    1636                 :            : /*--------------------------------.
    1637                 :            : | Print this symbol on YYOUTPUT.  |
    1638                 :            : `--------------------------------*/
    1639                 :            : 
    1640                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    1641                 :            :      || defined __cplusplus || defined _MSC_VER)
    1642                 :            : static void
    1643                 :          0 : yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
    1644                 :            : #else
    1645                 :            : static void
    1646                 :            : yy_symbol_print (yyoutput, yytype, yyvaluep)
    1647                 :            :     FILE *yyoutput;
    1648                 :            :     int yytype;
    1649                 :            :     YYSTYPE const * const yyvaluep;
    1650                 :            : #endif
    1651                 :            : {
    1652         [ #  # ]:          0 :   if (yytype < YYNTOKENS)
    1653                 :          0 :     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
    1654                 :            :   else
    1655                 :          0 :     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
    1656                 :            : 
    1657                 :          0 :   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
    1658                 :          0 :   YYFPRINTF (yyoutput, ")");
    1659                 :          0 : }
    1660                 :            : 
    1661                 :            : /*------------------------------------------------------------------.
    1662                 :            : | yy_stack_print -- Print the state stack from its BOTTOM up to its |
    1663                 :            : | TOP (included).                                                   |
    1664                 :            : `------------------------------------------------------------------*/
    1665                 :            : 
    1666                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    1667                 :            :      || defined __cplusplus || defined _MSC_VER)
    1668                 :            : static void
    1669                 :          0 : yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
    1670                 :            : #else
    1671                 :            : static void
    1672                 :            : yy_stack_print (yybottom, yytop)
    1673                 :            :     yytype_int16 *yybottom;
    1674                 :            :     yytype_int16 *yytop;
    1675                 :            : #endif
    1676                 :            : {
    1677                 :          0 :   YYFPRINTF (stderr, "Stack now");
    1678         [ #  # ]:          0 :   for (; yybottom <= yytop; yybottom++)
    1679                 :            :     {
    1680                 :          0 :       int yybot = *yybottom;
    1681                 :          0 :       YYFPRINTF (stderr, " %d", yybot);
    1682                 :            :     }
    1683                 :          0 :   YYFPRINTF (stderr, "\n");
    1684                 :          0 : }
    1685                 :            : 
    1686                 :            : # define YY_STACK_PRINT(Bottom, Top)                            \
    1687                 :            : do {                                                            \
    1688                 :            :   if (yydebug)                                                  \
    1689                 :            :     yy_stack_print ((Bottom), (Top));                           \
    1690                 :            : } while (YYID (0))
    1691                 :            : 
    1692                 :            : 
    1693                 :            : /*------------------------------------------------.
    1694                 :            : | Report that the YYRULE is going to be reduced.  |
    1695                 :            : `------------------------------------------------*/
    1696                 :            : 
    1697                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    1698                 :            :      || defined __cplusplus || defined _MSC_VER)
    1699                 :            : static void
    1700                 :          0 : yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
    1701                 :            : #else
    1702                 :            : static void
    1703                 :            : yy_reduce_print (yyvsp, yyrule)
    1704                 :            :     YYSTYPE *yyvsp;
    1705                 :            :     int yyrule;
    1706                 :            : #endif
    1707                 :            : {
    1708                 :          0 :   int yynrhs = yyr2[yyrule];
    1709                 :            :   int yyi;
    1710                 :          0 :   unsigned long int yylno = yyrline[yyrule];
    1711                 :            :   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
    1712                 :          0 :              yyrule - 1, yylno);
    1713                 :            :   /* The symbols being reduced.  */
    1714         [ #  # ]:          0 :   for (yyi = 0; yyi < yynrhs; yyi++)
    1715                 :            :     {
    1716                 :          0 :       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
    1717                 :          0 :       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
    1718                 :            :                        &(yyvsp[(yyi + 1) - (yynrhs)])
    1719                 :          0 :                                        );
    1720                 :          0 :       YYFPRINTF (stderr, "\n");
    1721                 :            :     }
    1722                 :          0 : }
    1723                 :            : 
    1724                 :            : # define YY_REDUCE_PRINT(Rule)          \
    1725                 :            : do {                                    \
    1726                 :            :   if (yydebug)                          \
    1727                 :            :     yy_reduce_print (yyvsp, Rule); \
    1728                 :            : } while (YYID (0))
    1729                 :            : 
    1730                 :            : /* Nonzero means print parse trace.  It is left uninitialized so that
    1731                 :            :    multiple parsers can coexist.  */
    1732                 :            : int yydebug;
    1733                 :            : #else /* !YYDEBUG */
    1734                 :            : # define YYDPRINTF(Args)
    1735                 :            : # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
    1736                 :            : # define YY_STACK_PRINT(Bottom, Top)
    1737                 :            : # define YY_REDUCE_PRINT(Rule)
    1738                 :            : #endif /* !YYDEBUG */
    1739                 :            : 
    1740                 :            : 
    1741                 :            : /* YYINITDEPTH -- initial size of the parser's stacks.  */
    1742                 :            : #ifndef YYINITDEPTH
    1743                 :            : # define YYINITDEPTH 200
    1744                 :            : #endif
    1745                 :            : 
    1746                 :            : /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
    1747                 :            :    if the built-in stack extension method is used).
    1748                 :            : 
    1749                 :            :    Do not make this value too large; the results are undefined if
    1750                 :            :    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
    1751                 :            :    evaluated with infinite-precision integer arithmetic.  */
    1752                 :            : 
    1753                 :            : #ifndef YYMAXDEPTH
    1754                 :            : # define YYMAXDEPTH 10000
    1755                 :            : #endif
    1756                 :            : 
    1757                 :            : 
    1758                 :            : #if YYERROR_VERBOSE
    1759                 :            : 
    1760                 :            : # ifndef yystrlen
    1761                 :            : #  if defined __GLIBC__ && defined _STRING_H
    1762                 :            : #   define yystrlen strlen
    1763                 :            : #  else
    1764                 :            : /* Return the length of YYSTR.  */
    1765                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    1766                 :            :      || defined __cplusplus || defined _MSC_VER)
    1767                 :            : static YYSIZE_T
    1768                 :            : yystrlen (const char *yystr)
    1769                 :            : #else
    1770                 :            : static YYSIZE_T
    1771                 :            : yystrlen (yystr)
    1772                 :            :     const char *yystr;
    1773                 :            : #endif
    1774                 :            : {
    1775                 :            :   YYSIZE_T yylen;
    1776                 :            :   for (yylen = 0; yystr[yylen]; yylen++)
    1777                 :            :     continue;
    1778                 :            :   return yylen;
    1779                 :            : }
    1780                 :            : #  endif
    1781                 :            : # endif
    1782                 :            : 
    1783                 :            : # ifndef yystpcpy
    1784                 :            : #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
    1785                 :            : #   define yystpcpy stpcpy
    1786                 :            : #  else
    1787                 :            : /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    1788                 :            :    YYDEST.  */
    1789                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    1790                 :            :      || defined __cplusplus || defined _MSC_VER)
    1791                 :            : static char *
    1792                 :            : yystpcpy (char *yydest, const char *yysrc)
    1793                 :            : #else
    1794                 :            : static char *
    1795                 :            : yystpcpy (yydest, yysrc)
    1796                 :            :     char *yydest;
    1797                 :            :     const char *yysrc;
    1798                 :            : #endif
    1799                 :            : {
    1800                 :            :   char *yyd = yydest;
    1801                 :            :   const char *yys = yysrc;
    1802                 :            : 
    1803                 :            :   while ((*yyd++ = *yys++) != '\0')
    1804                 :            :     continue;
    1805                 :            : 
    1806                 :            :   return yyd - 1;
    1807                 :            : }
    1808                 :            : #  endif
    1809                 :            : # endif
    1810                 :            : 
    1811                 :            : # ifndef yytnamerr
    1812                 :            : /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
    1813                 :            :    quotes and backslashes, so that it's suitable for yyerror.  The
    1814                 :            :    heuristic is that double-quoting is unnecessary unless the string
    1815                 :            :    contains an apostrophe, a comma, or backslash (other than
    1816                 :            :    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    1817                 :            :    null, do not copy; instead, return the length of what the result
    1818                 :            :    would have been.  */
    1819                 :            : static YYSIZE_T
    1820                 :          0 : yytnamerr (char *yyres, const char *yystr)
    1821                 :            : {
    1822         [ #  # ]:          0 :   if (*yystr == '"')
    1823                 :            :     {
    1824                 :          0 :       YYSIZE_T yyn = 0;
    1825                 :          0 :       char const *yyp = yystr;
    1826                 :            : 
    1827                 :          0 :       for (;;)
    1828   [ #  #  #  # ]:          0 :         switch (*++yyp)
    1829                 :            :           {
    1830                 :            :           case '\'':
    1831                 :            :           case ',':
    1832                 :          0 :             goto do_not_strip_quotes;
    1833                 :            : 
    1834                 :            :           case '\\':
    1835         [ #  # ]:          0 :             if (*++yyp != '\\')
    1836                 :          0 :               goto do_not_strip_quotes;
    1837                 :            :             /* Fall through.  */
    1838                 :            :           default:
    1839         [ #  # ]:          0 :             if (yyres)
    1840                 :          0 :               yyres[yyn] = *yyp;
    1841                 :          0 :             yyn++;
    1842                 :          0 :             break;
    1843                 :            : 
    1844                 :            :           case '"':
    1845         [ #  # ]:          0 :             if (yyres)
    1846                 :          0 :               yyres[yyn] = '\0';
    1847                 :          0 :             return yyn;
    1848                 :            :           }
    1849                 :            :     do_not_strip_quotes: ;
    1850                 :            :     }
    1851                 :            : 
    1852         [ #  # ]:          0 :   if (! yyres)
    1853                 :          0 :     return yystrlen (yystr);
    1854                 :            : 
    1855                 :          0 :   return yystpcpy (yyres, yystr) - yyres;
    1856                 :            : }
    1857                 :            : # endif
    1858                 :            : 
    1859                 :            : /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
    1860                 :            :    about the unexpected token YYTOKEN for the state stack whose top is
    1861                 :            :    YYSSP.
    1862                 :            : 
    1863                 :            :    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
    1864                 :            :    not large enough to hold the message.  In that case, also set
    1865                 :            :    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
    1866                 :            :    required number of bytes is too large to store.  */
    1867                 :            : static int
    1868                 :          0 : yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
    1869                 :            :                 yytype_int16 *yyssp, int yytoken)
    1870                 :            : {
    1871                 :          0 :   YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
    1872                 :          0 :   YYSIZE_T yysize = yysize0;
    1873                 :            :   YYSIZE_T yysize1;
    1874                 :            :   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
    1875                 :            :   /* Internationalized format string. */
    1876                 :          0 :   const char *yyformat = 0;
    1877                 :            :   /* Arguments of yyformat. */
    1878                 :            :   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
    1879                 :            :   /* Number of reported tokens (one for the "unexpected", one per
    1880                 :            :      "expected"). */
    1881                 :          0 :   int yycount = 0;
    1882                 :            : 
    1883                 :            :   /* There are many possibilities here to consider:
    1884                 :            :      - Assume YYFAIL is not used.  It's too flawed to consider.  See
    1885                 :            :        <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
    1886                 :            :        for details.  YYERROR is fine as it does not invoke this
    1887                 :            :        function.
    1888                 :            :      - If this state is a consistent state with a default action, then
    1889                 :            :        the only way this function was invoked is if the default action
    1890                 :            :        is an error action.  In that case, don't check for expected
    1891                 :            :        tokens because there are none.
    1892                 :            :      - The only way there can be no lookahead present (in yychar) is if
    1893                 :            :        this state is a consistent state with a default action.  Thus,
    1894                 :            :        detecting the absence of a lookahead is sufficient to determine
    1895                 :            :        that there is no unexpected or expected token to report.  In that
    1896                 :            :        case, just report a simple "syntax error".
    1897                 :            :      - Don't assume there isn't a lookahead just because this state is a
    1898                 :            :        consistent state with a default action.  There might have been a
    1899                 :            :        previous inconsistent state, consistent state with a non-default
    1900                 :            :        action, or user semantic action that manipulated yychar.
    1901                 :            :      - Of course, the expected token list depends on states to have
    1902                 :            :        correct lookahead information, and it depends on the parser not
    1903                 :            :        to perform extra reductions after fetching a lookahead from the
    1904                 :            :        scanner and before detecting a syntax error.  Thus, state merging
    1905                 :            :        (from LALR or IELR) and default reductions corrupt the expected
    1906                 :            :        token list.  However, the list is correct for canonical LR with
    1907                 :            :        one exception: it will still contain any token that will not be
    1908                 :            :        accepted due to an error action in a later state.
    1909                 :            :   */
    1910         [ #  # ]:          0 :   if (yytoken != YYEMPTY)
    1911                 :            :     {
    1912                 :          0 :       int yyn = yypact[*yyssp];
    1913                 :          0 :       yyarg[yycount++] = yytname[yytoken];
    1914         [ #  # ]:          0 :       if (!yypact_value_is_default (yyn))
    1915                 :            :         {
    1916                 :            :           /* Start YYX at -YYN if negative to avoid negative indexes in
    1917                 :            :              YYCHECK.  In other words, skip the first -YYN actions for
    1918                 :            :              this state because they are default actions.  */
    1919         [ #  # ]:          0 :           int yyxbegin = yyn < 0 ? -yyn : 0;
    1920                 :            :           /* Stay within bounds of both yycheck and yytname.  */
    1921                 :          0 :           int yychecklim = YYLAST - yyn + 1;
    1922                 :          0 :           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
    1923                 :            :           int yyx;
    1924                 :            : 
    1925         [ #  # ]:          0 :           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
    1926 [ #  # ][ #  # ]:          0 :             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
    1927                 :            :                 && !yytable_value_is_error (yytable[yyx + yyn]))
    1928                 :            :               {
    1929         [ #  # ]:          0 :                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
    1930                 :            :                   {
    1931                 :          0 :                     yycount = 1;
    1932                 :          0 :                     yysize = yysize0;
    1933                 :          0 :                     break;
    1934                 :            :                   }
    1935                 :          0 :                 yyarg[yycount++] = yytname[yyx];
    1936                 :          0 :                 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
    1937         [ #  # ]:          0 :                 if (! (yysize <= yysize1
    1938                 :            :                        && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    1939                 :          0 :                   return 2;
    1940                 :          0 :                 yysize = yysize1;
    1941                 :            :               }
    1942                 :            :         }
    1943                 :            :     }
    1944                 :            : 
    1945   [ #  #  #  #  :          0 :   switch (yycount)
                #  #  # ]
    1946                 :            :     {
    1947                 :            : # define YYCASE_(N, S)                      \
    1948                 :            :       case N:                               \
    1949                 :            :         yyformat = S;                       \
    1950                 :            :       break
    1951                 :          0 :       YYCASE_(0, YY_("syntax error"));
    1952                 :          0 :       YYCASE_(1, YY_("syntax error, unexpected %s"));
    1953                 :          0 :       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
    1954                 :          0 :       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
    1955                 :          0 :       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
    1956                 :          0 :       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
    1957                 :            : # undef YYCASE_
    1958                 :            :     }
    1959                 :            : 
    1960                 :          0 :   yysize1 = yysize + yystrlen (yyformat);
    1961         [ #  # ]:          0 :   if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
    1962                 :          0 :     return 2;
    1963                 :          0 :   yysize = yysize1;
    1964                 :            : 
    1965         [ #  # ]:          0 :   if (*yymsg_alloc < yysize)
    1966                 :            :     {
    1967                 :          0 :       *yymsg_alloc = 2 * yysize;
    1968         [ #  # ]:          0 :       if (! (yysize <= *yymsg_alloc
    1969                 :          0 :              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
    1970                 :          0 :         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
    1971                 :          0 :       return 1;
    1972                 :            :     }
    1973                 :            : 
    1974                 :            :   /* Avoid sprintf, as that infringes on the user's name space.
    1975                 :            :      Don't have undefined behavior even if the translation
    1976                 :            :      produced a string with the wrong number of "%s"s.  */
    1977                 :            :   {
    1978                 :          0 :     char *yyp = *yymsg;
    1979                 :          0 :     int yyi = 0;
    1980         [ #  # ]:          0 :     while ((*yyp = *yyformat) != '\0')
    1981 [ #  # ][ #  # ]:          0 :       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
                 [ #  # ]
    1982                 :            :         {
    1983                 :          0 :           yyp += yytnamerr (yyp, yyarg[yyi++]);
    1984                 :          0 :           yyformat += 2;
    1985                 :            :         }
    1986                 :            :       else
    1987                 :            :         {
    1988                 :          0 :           yyp++;
    1989                 :          0 :           yyformat++;
    1990                 :            :         }
    1991                 :            :   }
    1992                 :          0 :   return 0;
    1993                 :            : }
    1994                 :            : #endif /* YYERROR_VERBOSE */
    1995                 :            : 
    1996                 :            : /*-----------------------------------------------.
    1997                 :            : | Release the memory associated to this symbol.  |
    1998                 :            : `-----------------------------------------------*/
    1999                 :            : 
    2000                 :            : /*ARGSUSED*/
    2001                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    2002                 :            :      || defined __cplusplus || defined _MSC_VER)
    2003                 :            : static void
    2004                 :      11956 : yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
    2005                 :            : #else
    2006                 :            : static void
    2007                 :            : yydestruct (yymsg, yytype, yyvaluep)
    2008                 :            :     const char *yymsg;
    2009                 :            :     int yytype;
    2010                 :            :     YYSTYPE *yyvaluep;
    2011                 :            : #endif
    2012                 :            : {
    2013                 :            :   YYUSE (yyvaluep);
    2014                 :            : 
    2015         [ -  + ]:      11956 :   if (!yymsg)
    2016                 :          0 :     yymsg = "Deleting";
    2017         [ -  + ]:      11956 :   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
    2018                 :            : 
    2019                 :            :   switch (yytype)
    2020                 :            :     {
    2021                 :            : 
    2022                 :            :       default:
    2023                 :      11956 :         break;
    2024                 :            :     }
    2025                 :      11956 : }
    2026                 :            : 
    2027                 :            : 
    2028                 :            : /* Prevent warnings from -Wmissing-prototypes.  */
    2029                 :            : #ifdef YYPARSE_PARAM
    2030                 :            : #if defined __STDC__ || defined __cplusplus
    2031                 :            : int yyparse (void *YYPARSE_PARAM);
    2032                 :            : #else
    2033                 :            : int yyparse ();
    2034                 :            : #endif
    2035                 :            : #else /* ! YYPARSE_PARAM */
    2036                 :            : #if defined __STDC__ || defined __cplusplus
    2037                 :            : int yyparse (void);
    2038                 :            : #else
    2039                 :            : int yyparse ();
    2040                 :            : #endif
    2041                 :            : #endif /* ! YYPARSE_PARAM */
    2042                 :            : 
    2043                 :            : 
    2044                 :            : /* The lookahead symbol.  */
    2045                 :            : int yychar;
    2046                 :            : 
    2047                 :            : /* The semantic value of the lookahead symbol.  */
    2048                 :            : YYSTYPE yylval;
    2049                 :            : 
    2050                 :            : /* Number of syntax errors so far.  */
    2051                 :            : int yynerrs;
    2052                 :            : 
    2053                 :            : 
    2054                 :            : /*----------.
    2055                 :            : | yyparse.  |
    2056                 :            : `----------*/
    2057                 :            : 
    2058                 :            : #ifdef YYPARSE_PARAM
    2059                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    2060                 :            :      || defined __cplusplus || defined _MSC_VER)
    2061                 :            : int
    2062                 :            : yyparse (void *YYPARSE_PARAM)
    2063                 :            : #else
    2064                 :            : int
    2065                 :            : yyparse (YYPARSE_PARAM)
    2066                 :            :     void *YYPARSE_PARAM;
    2067                 :            : #endif
    2068                 :            : #else /* ! YYPARSE_PARAM */
    2069                 :            : #if (defined __STDC__ || defined __C99__FUNC__ \
    2070                 :            :      || defined __cplusplus || defined _MSC_VER)
    2071                 :            : int
    2072                 :       5978 : yyparse (void)
    2073                 :            : #else
    2074                 :            : int
    2075                 :            : yyparse ()
    2076                 :            : 
    2077                 :            : #endif
    2078                 :            : #endif
    2079                 :            : {
    2080                 :            :     int yystate;
    2081                 :            :     /* Number of tokens to shift before error messages enabled.  */
    2082                 :            :     int yyerrstatus;
    2083                 :            : 
    2084                 :            :     /* The stacks and their tools:
    2085                 :            :        `yyss': related to states.
    2086                 :            :        `yyvs': related to semantic values.
    2087                 :            : 
    2088                 :            :        Refer to the stacks thru separate pointers, to allow yyoverflow
    2089                 :            :        to reallocate them elsewhere.  */
    2090                 :            : 
    2091                 :            :     /* The state stack.  */
    2092                 :            :     yytype_int16 yyssa[YYINITDEPTH];
    2093                 :            :     yytype_int16 *yyss;
    2094                 :            :     yytype_int16 *yyssp;
    2095                 :            : 
    2096                 :            :     /* The semantic value stack.  */
    2097                 :            :     YYSTYPE yyvsa[YYINITDEPTH];
    2098                 :            :     YYSTYPE *yyvs;
    2099                 :            :     YYSTYPE *yyvsp;
    2100                 :            : 
    2101                 :            :     YYSIZE_T yystacksize;
    2102                 :            : 
    2103                 :            :   int yyn;
    2104                 :            :   int yyresult;
    2105                 :            :   /* Lookahead token as an internal (translated) token number.  */
    2106                 :            :   int yytoken;
    2107                 :            :   /* The variables used to return semantic value and location from the
    2108                 :            :      action routines.  */
    2109                 :            :   YYSTYPE yyval;
    2110                 :            : 
    2111                 :            : #if YYERROR_VERBOSE
    2112                 :            :   /* Buffer for error messages, and its allocated size.  */
    2113                 :            :   char yymsgbuf[128];
    2114                 :       5978 :   char *yymsg = yymsgbuf;
    2115                 :       5978 :   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
    2116                 :            : #endif
    2117                 :            : 
    2118                 :            : #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
    2119                 :            : 
    2120                 :            :   /* The number of symbols on the RHS of the reduced rule.
    2121                 :            :      Keep to zero when no symbol should be popped.  */
    2122                 :       5978 :   int yylen = 0;
    2123                 :            : 
    2124                 :       5978 :   yytoken = 0;
    2125                 :       5978 :   yyss = yyssa;
    2126                 :       5978 :   yyvs = yyvsa;
    2127                 :       5978 :   yystacksize = YYINITDEPTH;
    2128                 :            : 
    2129 [ -  + ][ #  # ]:       5978 :   YYDPRINTF ((stderr, "Starting parse\n"));
    2130                 :            : 
    2131                 :       5978 :   yystate = 0;
    2132                 :       5978 :   yyerrstatus = 0;
    2133                 :       5978 :   yynerrs = 0;
    2134                 :       5978 :   yychar = YYEMPTY; /* Cause a token to be read.  */
    2135                 :            : 
    2136                 :            :   /* Initialize stack pointers.
    2137                 :            :      Waste one element of value and location stack
    2138                 :            :      so that they stay on the same level as the state stack.
    2139                 :            :      The wasted elements are never initialized.  */
    2140                 :       5978 :   yyssp = yyss;
    2141                 :       5978 :   yyvsp = yyvs;
    2142                 :            : 
    2143                 :       5978 :   goto yysetstate;
    2144                 :            : 
    2145                 :            : /*------------------------------------------------------------.
    2146                 :            : | yynewstate -- Push a new state, which is found in yystate.  |
    2147                 :            : `------------------------------------------------------------*/
    2148                 :            :  yynewstate:
    2149                 :            :   /* In all cases, when you get here, the value and location stacks
    2150                 :            :      have just been pushed.  So pushing a state here evens the stacks.  */
    2151                 :   16610998 :   yyssp++;
    2152                 :            : 
    2153                 :            :  yysetstate:
    2154                 :   16616976 :   *yyssp = yystate;
    2155                 :            : 
    2156         [ +  + ]:   16616976 :   if (yyss + yystacksize - 1 <= yyssp)
    2157                 :            :     {
    2158                 :            :       /* Get the current used size of the three stacks, in elements.  */
    2159                 :         10 :       YYSIZE_T yysize = yyssp - yyss + 1;
    2160                 :            : 
    2161                 :            : #ifdef yyoverflow
    2162                 :            :       {
    2163                 :            :         /* Give user a chance to reallocate the stack.  Use copies of
    2164                 :            :            these so that the &'s don't force the real ones into
    2165                 :            :            memory.  */
    2166                 :            :         YYSTYPE *yyvs1 = yyvs;
    2167                 :            :         yytype_int16 *yyss1 = yyss;
    2168                 :            : 
    2169                 :            :         /* Each stack pointer address is followed by the size of the
    2170                 :            :            data in use in that stack, in bytes.  This used to be a
    2171                 :            :            conditional around just the two extra args, but that might
    2172                 :            :            be undefined if yyoverflow is a macro.  */
    2173                 :            :         yyoverflow (YY_("memory exhausted"),
    2174                 :            :                     &yyss1, yysize * sizeof (*yyssp),
    2175                 :            :                     &yyvs1, yysize * sizeof (*yyvsp),
    2176                 :            :                     &yystacksize);
    2177                 :            : 
    2178                 :            :         yyss = yyss1;
    2179                 :            :         yyvs = yyvs1;
    2180                 :            :       }
    2181                 :            : #else /* no yyoverflow */
    2182                 :            : # ifndef YYSTACK_RELOCATE
    2183                 :            :       goto yyexhaustedlab;
    2184                 :            : # else
    2185                 :            :       /* Extend the stack our own way.  */
    2186         [ -  + ]:         10 :       if (YYMAXDEPTH <= yystacksize)
    2187                 :          0 :         goto yyexhaustedlab;
    2188                 :         10 :       yystacksize *= 2;
    2189         [ -  + ]:         10 :       if (YYMAXDEPTH < yystacksize)
    2190                 :          0 :         yystacksize = YYMAXDEPTH;
    2191                 :            : 
    2192                 :            :       {
    2193                 :         10 :         yytype_int16 *yyss1 = yyss;
    2194                 :            :         union yyalloc *yyptr =
    2195                 :         10 :           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
    2196         [ -  + ]:         10 :         if (! yyptr)
    2197                 :          0 :           goto yyexhaustedlab;
    2198                 :         10 :         YYSTACK_RELOCATE (yyss_alloc, yyss);
    2199                 :         10 :         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
    2200                 :            : #  undef YYSTACK_RELOCATE
    2201         [ +  + ]:         10 :         if (yyss1 != yyssa)
    2202                 :          1 :           YYSTACK_FREE (yyss1);
    2203                 :            :       }
    2204                 :            : # endif
    2205                 :            : #endif /* no yyoverflow */
    2206                 :            : 
    2207                 :         10 :       yyssp = yyss + yysize - 1;
    2208                 :         10 :       yyvsp = yyvs + yysize - 1;
    2209                 :            : 
    2210 [ -  + ][ #  # ]:         10 :       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
    2211                 :            :                   (unsigned long int) yystacksize));
    2212                 :            : 
    2213         [ -  + ]:         10 :       if (yyss + yystacksize - 1 <= yyssp)
    2214                 :          0 :         YYABORT;
    2215                 :            :     }
    2216                 :            : 
    2217 [ -  + ][ #  # ]:   16616976 :   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
    2218                 :            : 
    2219         [ +  + ]:   16616976 :   if (yystate == YYFINAL)
    2220                 :       5978 :     YYACCEPT;
    2221                 :            : 
    2222                 :   16610998 :   goto yybackup;
    2223                 :            : 
    2224                 :            : /*-----------.
    2225                 :            : | yybackup.  |
    2226                 :            : `-----------*/
    2227                 :            : yybackup:
    2228                 :            : 
    2229                 :            :   /* Do appropriate processing given the current state.  Read a
    2230                 :            :      lookahead token if we need one and don't already have one.  */
    2231                 :            : 
    2232                 :            :   /* First try to decide what to do without reference to lookahead token.  */
    2233                 :   16610998 :   yyn = yypact[yystate];
    2234         [ +  + ]:   16610998 :   if (yypact_value_is_default (yyn))
    2235                 :    9700086 :     goto yydefault;
    2236                 :            : 
    2237                 :            :   /* Not known => get a lookahead token if don't already have one.  */
    2238                 :            : 
    2239                 :            :   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
    2240         [ +  + ]:    6910912 :   if (yychar == YYEMPTY)
    2241                 :            :     {
    2242 [ -  + ][ #  # ]:    5129753 :       YYDPRINTF ((stderr, "Reading a token: "));
    2243         [ +  - ]:    5129753 :       yychar = YYLEX;
    2244                 :            :     }
    2245                 :            : 
    2246         [ +  + ]:    6910912 :   if (yychar <= YYEOF)
    2247                 :            :     {
    2248                 :      11956 :       yychar = yytoken = YYEOF;
    2249 [ -  + ][ #  # ]:      11956 :       YYDPRINTF ((stderr, "Now at end of input.\n"));
    2250                 :            :     }
    2251                 :            :   else
    2252                 :            :     {
    2253         [ +  - ]:    6898956 :       yytoken = YYTRANSLATE (yychar);
    2254 [ -  + ][ #  # ]:    6898956 :       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
         [ #  # ][ #  # ]
    2255                 :            :     }
    2256                 :            : 
    2257                 :            :   /* If the proper action on seeing token YYTOKEN is to reduce or to
    2258                 :            :      detect an error, take that action.  */
    2259                 :    6910912 :   yyn += yytoken;
    2260 [ +  + ][ +  - ]:    6910912 :   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
                 [ +  + ]
    2261                 :            :     goto yydefault;
    2262                 :    5569756 :   yyn = yytable[yyn];
    2263         [ +  + ]:    5569756 :   if (yyn <= 0)
    2264                 :            :     {
    2265                 :            :       if (yytable_value_is_error (yyn))
    2266                 :            :         goto yyerrlab;
    2267                 :     440003 :       yyn = -yyn;
    2268                 :     440003 :       goto yyreduce;
    2269                 :            :     }
    2270                 :            : 
    2271                 :            :   /* Count tokens shifted since error; after three, turn off error
    2272                 :            :      status.  */
    2273         [ -  + ]:    5129753 :   if (yyerrstatus)
    2274                 :          0 :     yyerrstatus--;
    2275                 :            : 
    2276                 :            :   /* Shift the lookahead token.  */
    2277 [ -  + ][ #  # ]:    5129753 :   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
         [ #  # ][ #  # ]
    2278                 :            : 
    2279                 :            :   /* Discard the shifted token.  */
    2280                 :    5129753 :   yychar = YYEMPTY;
    2281                 :            : 
    2282                 :    5129753 :   yystate = yyn;
    2283                 :    5129753 :   *++yyvsp = yylval;
    2284                 :            : 
    2285                 :    5129753 :   goto yynewstate;
    2286                 :            : 
    2287                 :            : 
    2288                 :            : /*-----------------------------------------------------------.
    2289                 :            : | yydefault -- do the default action for the current state.  |
    2290                 :            : `-----------------------------------------------------------*/
    2291                 :            : yydefault:
    2292                 :   11041242 :   yyn = yydefact[yystate];
    2293         [ -  + ]:   11041242 :   if (yyn == 0)
    2294                 :          0 :     goto yyerrlab;
    2295                 :   11041242 :   goto yyreduce;
    2296                 :            : 
    2297                 :            : 
    2298                 :            : /*-----------------------------.
    2299                 :            : | yyreduce -- Do a reduction.  |
    2300                 :            : `-----------------------------*/
    2301                 :            : yyreduce:
    2302                 :            :   /* yyn is the number of a rule to reduce with.  */
    2303                 :   11481245 :   yylen = yyr2[yyn];
    2304                 :            : 
    2305                 :            :   /* If YYLEN is nonzero, implement the default value of the action:
    2306                 :            :      `$$ = $1'.
    2307                 :            : 
    2308                 :            :      Otherwise, the following line sets YYVAL to garbage.
    2309                 :            :      This behavior is undocumented and Bison
    2310                 :            :      users should not rely upon it.  Assigning to YYVAL
    2311                 :            :      unconditionally makes the parser a bit smaller, and it avoids a
    2312                 :            :      GCC warning that YYVAL may be used uninitialized.  */
    2313                 :   11481245 :   yyval = yyvsp[1-yylen];
    2314                 :            : 
    2315                 :            : 
    2316 [ -  + ][ #  # ]:   11481245 :   YY_REDUCE_PRINT (yyn);
    2317   [ +  +  -  +  :   11481245 :   switch (yyn)
          +  +  +  -  -  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  -  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          -  +  -  +  -  
          -  +  +  -  +  
          +  -  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  -  +  
          +  +  -  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  -  -  -  
          -  +  -  -  -  
          -  -  -  -  +  
          -  +  +  +  -  
          -  -  +  +  +  
          +  +  +  +  +  
          +  +  -  +  +  
          -  -  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  -  +  +  +  
          +  -  -  +  +  
          -  -  -  -  -  
          -  -  -  -  +  
          -  -  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  -  
          -  +  +  +  +  
          -  +  +  +  +  
          +  +  +  +  +  
          +  +  +  +  +  
          -  +  +  +  +  
          +  +  +  -  +  
          +  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  +  +  
                   -  + ]
    2318                 :            :     {
    2319                 :            :         case 6:
    2320                 :            : 
    2321                 :            : /* Line 1806 of yacc.c  */
    2322                 :            : #line 424 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2323                 :            :     {
    2324                 :            :                 idlc()->setParseState(PS_ModuleDeclSeen);
    2325                 :            :         }
    2326                 :            :     break;
    2327                 :            : 
    2328                 :            :   case 7:
    2329                 :            : 
    2330                 :            : /* Line 1806 of yacc.c  */
    2331                 :            : #line 428 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2332                 :            :     {
    2333                 :            :                 idlc()->setParseState(PS_NoState);
    2334                 :            :         }
    2335                 :            :     break;
    2336                 :            : 
    2337                 :            :   case 8:
    2338                 :            : 
    2339                 :            : /* Line 1806 of yacc.c  */
    2340                 :            : #line 432 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2341                 :            :     {
    2342                 :            :                 yyerror("definitions");
    2343                 :            :                 yyerrok;
    2344                 :            :         }
    2345                 :            :     break;
    2346                 :            : 
    2347                 :            :   case 9:
    2348                 :            : 
    2349                 :            : /* Line 1806 of yacc.c  */
    2350                 :            : #line 439 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2351                 :            :     { idlc()->setPublished(true); }
    2352                 :            :     break;
    2353                 :            : 
    2354                 :            :   case 10:
    2355                 :            : 
    2356                 :            : /* Line 1806 of yacc.c  */
    2357                 :            : #line 440 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2358                 :            :     { idlc()->setPublished(false); }
    2359                 :            :     break;
    2360                 :            : 
    2361                 :            :   case 11:
    2362                 :            : 
    2363                 :            : /* Line 1806 of yacc.c  */
    2364                 :            : #line 445 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2365                 :            :     {
    2366                 :            :                 idlc()->setParseState(PS_TypeDeclSeen);
    2367                 :            :         }
    2368                 :            :     break;
    2369                 :            : 
    2370                 :            :   case 12:
    2371                 :            : 
    2372                 :            : /* Line 1806 of yacc.c  */
    2373                 :            : #line 449 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2374                 :            :     {
    2375                 :            :                 idlc()->setParseState(PS_NoState);
    2376                 :            :         }
    2377                 :            :     break;
    2378                 :            : 
    2379                 :            :   case 13:
    2380                 :            : 
    2381                 :            : /* Line 1806 of yacc.c  */
    2382                 :            : #line 453 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2383                 :            :     {
    2384                 :            :                 idlc()->setParseState(PS_ConstantDeclSeen);
    2385                 :            :         }
    2386                 :            :     break;
    2387                 :            : 
    2388                 :            :   case 14:
    2389                 :            : 
    2390                 :            : /* Line 1806 of yacc.c  */
    2391                 :            : #line 457 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2392                 :            :     {
    2393                 :            :                 idlc()->setParseState(PS_NoState);
    2394                 :            :         }
    2395                 :            :     break;
    2396                 :            : 
    2397                 :            :   case 15:
    2398                 :            : 
    2399                 :            : /* Line 1806 of yacc.c  */
    2400                 :            : #line 461 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2401                 :            :     {
    2402                 :            :                 idlc()->setParseState(PS_ExceptionDeclSeen);
    2403                 :            :         }
    2404                 :            :     break;
    2405                 :            : 
    2406                 :            :   case 16:
    2407                 :            : 
    2408                 :            : /* Line 1806 of yacc.c  */
    2409                 :            : #line 465 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2410                 :            :     {
    2411                 :            :                 idlc()->setParseState(PS_NoState);
    2412                 :            :         }
    2413                 :            :     break;
    2414                 :            : 
    2415                 :            :   case 17:
    2416                 :            : 
    2417                 :            : /* Line 1806 of yacc.c  */
    2418                 :            : #line 469 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2419                 :            :     {
    2420                 :            :                 idlc()->setParseState(PS_InterfaceDeclSeen);
    2421                 :            :         }
    2422                 :            :     break;
    2423                 :            : 
    2424                 :            :   case 18:
    2425                 :            : 
    2426                 :            : /* Line 1806 of yacc.c  */
    2427                 :            : #line 473 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2428                 :            :     {
    2429                 :            :                 idlc()->setParseState(PS_NoState);
    2430                 :            :         }
    2431                 :            :     break;
    2432                 :            : 
    2433                 :            :   case 19:
    2434                 :            : 
    2435                 :            : /* Line 1806 of yacc.c  */
    2436                 :            : #line 477 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2437                 :            :     {
    2438                 :            :                 idlc()->setParseState(PS_ServiceDeclSeen);
    2439                 :            :         }
    2440                 :            :     break;
    2441                 :            : 
    2442                 :            :   case 20:
    2443                 :            : 
    2444                 :            : /* Line 1806 of yacc.c  */
    2445                 :            : #line 481 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2446                 :            :     {
    2447                 :            :                 idlc()->setParseState(PS_NoState);
    2448                 :            :         }
    2449                 :            :     break;
    2450                 :            : 
    2451                 :            :   case 21:
    2452                 :            : 
    2453                 :            : /* Line 1806 of yacc.c  */
    2454                 :            : #line 485 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2455                 :            :     {
    2456                 :            :                 idlc()->setParseState(PS_SingletonDeclSeen);
    2457                 :            :         }
    2458                 :            :     break;
    2459                 :            : 
    2460                 :            :   case 22:
    2461                 :            : 
    2462                 :            : /* Line 1806 of yacc.c  */
    2463                 :            : #line 489 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2464                 :            :     {
    2465                 :            :                 idlc()->setParseState(PS_NoState);
    2466                 :            :         }
    2467                 :            :     break;
    2468                 :            : 
    2469                 :            :   case 23:
    2470                 :            : 
    2471                 :            : /* Line 1806 of yacc.c  */
    2472                 :            : #line 493 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2473                 :            :     {
    2474                 :            :                 idlc()->setParseState(PS_ConstantsDeclSeen);
    2475                 :            :         }
    2476                 :            :     break;
    2477                 :            : 
    2478                 :            :   case 24:
    2479                 :            : 
    2480                 :            : /* Line 1806 of yacc.c  */
    2481                 :            : #line 497 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2482                 :            :     {
    2483                 :            :                 idlc()->setParseState(PS_NoState);
    2484                 :            :         }
    2485                 :            :     break;
    2486                 :            : 
    2487                 :            :   case 25:
    2488                 :            : 
    2489                 :            : /* Line 1806 of yacc.c  */
    2490                 :            : #line 504 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2491                 :            :     {
    2492                 :            :                 idlc()->setParseState(PS_ModuleSeen);
    2493                 :            :         idlc()->setPublished(false);
    2494                 :            :         }
    2495                 :            :     break;
    2496                 :            : 
    2497                 :            :   case 26:
    2498                 :            : 
    2499                 :            : /* Line 1806 of yacc.c  */
    2500                 :            : #line 509 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2501                 :            :     {
    2502                 :            :         idlc()->setParseState(PS_ModuleIDSeen);
    2503                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    2504                 :            : 
    2505                 :            :         AstScope*               pScope = idlc()->scopes()->topNonNull();
    2506                 :            :         AstModule*              pModule = NULL;
    2507                 :            :         AstDeclaration* pExists = NULL;
    2508                 :            : 
    2509                 :            :         if ( pScope )
    2510                 :            :         {
    2511                 :            :                 pModule = new AstModule(*(yyvsp[(3) - (3)].sval), pScope);
    2512                 :            :                         if( (pExists = pScope->lookupForAdd(pModule)) )
    2513                 :            :                         {
    2514                 :            :                                 pExists->setInMainfile(idlc()->isInMainFile());
    2515                 :            :                                 pExists->setFileName(pModule->getFileName());
    2516                 :            :                 if (pExists->isPredefined())
    2517                 :            :                 {
    2518                 :            :                     pExists->setPredefined(false);
    2519                 :            :                     if (pExists->getDocumentation().getLength() == 0 &&
    2520                 :            :                         pModule->getDocumentation().getLength() > 0)
    2521                 :            :                     {
    2522                 :            :                         pExists->setDocumentation(pModule->getDocumentation());
    2523                 :            :                     }
    2524                 :            :                 }
    2525                 :            :                                 delete(pModule);
    2526                 :            :                                 pModule = (AstModule*)pExists;
    2527                 :            :                         } else
    2528                 :            :                         {
    2529                 :            :                                 pScope->addDeclaration(pModule);
    2530                 :            :                         }
    2531                 :            :                         idlc()->scopes()->push(pModule);
    2532                 :            :         }
    2533                 :            :         delete (yyvsp[(3) - (3)].sval);
    2534                 :            :     }
    2535                 :            :     break;
    2536                 :            : 
    2537                 :            :   case 27:
    2538                 :            : 
    2539                 :            : /* Line 1806 of yacc.c  */
    2540                 :            : #line 544 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2541                 :            :     {
    2542                 :            :         idlc()->setParseState(PS_ModuleSqSeen);
    2543                 :            :     }
    2544                 :            :     break;
    2545                 :            : 
    2546                 :            :   case 28:
    2547                 :            : 
    2548                 :            : /* Line 1806 of yacc.c  */
    2549                 :            : #line 548 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2550                 :            :     {
    2551                 :            :                 idlc()->setParseState(PS_ModuleBodySeen);
    2552                 :            :         }
    2553                 :            :     break;
    2554                 :            : 
    2555                 :            :   case 29:
    2556                 :            : 
    2557                 :            : /* Line 1806 of yacc.c  */
    2558                 :            : #line 552 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2559                 :            :     {
    2560                 :            :                 idlc()->setParseState(PS_ModuleQsSeen);
    2561                 :            :                 /*
    2562                 :            :                  * Finished with this module - pop it from the scope stack
    2563                 :            :                  */
    2564                 :            :                 idlc()->scopes()->pop();
    2565                 :            :         }
    2566                 :            :     break;
    2567                 :            : 
    2568                 :            :   case 32:
    2569                 :            : 
    2570                 :            : /* Line 1806 of yacc.c  */
    2571                 :            : #line 568 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2572                 :            :     {
    2573                 :            :                 idlc()->setParseState(PS_InterfaceSeen);
    2574                 :            :         }
    2575                 :            :     break;
    2576                 :            : 
    2577                 :            :   case 33:
    2578                 :            : 
    2579                 :            : /* Line 1806 of yacc.c  */
    2580                 :            : #line 572 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2581                 :            :     {
    2582                 :            :                 idlc()->setParseState(PS_InterfaceIDSeen);
    2583                 :            :        checkIdentifier((yyvsp[(3) - (3)].sval));
    2584                 :            :                 (yyval.sval) = (yyvsp[(3) - (3)].sval);
    2585                 :            :         }
    2586                 :            :     break;
    2587                 :            : 
    2588                 :            :   case 34:
    2589                 :            : 
    2590                 :            : /* Line 1806 of yacc.c  */
    2591                 :            : #line 581 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2592                 :            :     {
    2593                 :            :                 idlc()->setParseState(PS_ForwardDeclSeen);
    2594                 :            : 
    2595                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    2596                 :            :                 AstInterface*   pForward = NULL;
    2597                 :            :                 AstDeclaration* pDecl = NULL;
    2598                 :            : 
    2599                 :            :         /*
    2600                 :            :                  * Make a new forward interface node and add it to its enclosing scope
    2601                 :            :                  */
    2602                 :            :                 if ( pScope && (yyvsp[(1) - (1)].sval) ) 
    2603                 :            :                 {
    2604                 :            :                         pForward = new AstInterface(*(yyvsp[(1) - (1)].sval), NULL, pScope);
    2605                 :            :                         
    2606                 :            :                         pDecl = pScope->lookupByName(pForward->getScopedName());
    2607                 :            :                         if ( pDecl ) 
    2608                 :            :                         {
    2609                 :            :                                 if ( (pDecl != pForward) && 
    2610                 :            :                                          (pDecl->getNodeType() == NT_interface) )
    2611                 :            :                                 {
    2612                 :            :                                         delete pForward;
    2613                 :            :                                 } else
    2614                 :            :                                 {
    2615                 :            :                                         idlc()->error()->error2(EIDL_REDEF_SCOPE, scopeAsDecl(pScope), pDecl);
    2616                 :            :                                 }
    2617                 :            :                         } else
    2618                 :            :                         {
    2619                 :            :                                 /*
    2620                 :            :                                  * Add the interface to its definition scope
    2621                 :            :                                  */
    2622                 :            :                                 pScope->addDeclaration(pForward);
    2623                 :            :                         }
    2624                 :            :                 }
    2625                 :            :                 delete (yyvsp[(1) - (1)].sval);
    2626                 :            :         }
    2627                 :            :     break;
    2628                 :            : 
    2629                 :            :   case 35:
    2630                 :            : 
    2631                 :            : /* Line 1806 of yacc.c  */
    2632                 :            : #line 620 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2633                 :            :     {
    2634                 :            :                 idlc()->setParseState(PS_InterfaceHeadSeen);
    2635                 :            : 
    2636                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    2637                 :            :                 AstInterface*   pInterface = NULL;
    2638                 :            :                 AstInterface*   pForward = NULL;
    2639                 :            :                 AstDeclaration* pDecl = NULL;
    2640                 :            : 
    2641                 :            :         /*
    2642                 :            :                  * Make a new interface node and add it to its enclosing scope
    2643                 :            :                  */
    2644                 :            :                 if ( pScope && (yyvsp[(1) - (1)].ihval) ) 
    2645                 :            :                 {
    2646                 :            :                         pInterface = new AstInterface(
    2647                 :            :                 *(yyvsp[(1) - (1)].ihval)->getName(),
    2648                 :            :                 static_cast< AstInterface * >((yyvsp[(1) - (1)].ihval)->getInherits()), pScope);
    2649                 :            :                         if ( pInterface &&
    2650                 :            :                                 (pDecl = pScope->lookupByName(pInterface->getScopedName())) ) 
    2651                 :            :                         {
    2652                 :            :                                 /*
    2653                 :            :                                  * See if we're defining a forward declared interface.
    2654                 :            :                                  */
    2655                 :            :                                 if (pDecl->getNodeType() == NT_interface) 
    2656                 :            :                                 {
    2657                 :            :                                         pForward = (AstInterface*)pDecl;
    2658                 :            :                                         if ( !pForward->isDefined() ) 
    2659                 :            :                                         {
    2660                 :            :                                                 /*
    2661                 :            :                                                  * Check if redefining in same scope
    2662                 :            :                                                  */
    2663                 :            :                                                 if ( pForward->getScope() != pScope ) 
    2664                 :            :                                                 {
    2665                 :            :                                                         if ( pForward->getScopedName() != pInterface->getScopedName() )
    2666                 :            :                                                         {
    2667                 :            :                                                                 idlc()->error()->error3(EIDL_SCOPE_CONFLICT,
    2668                 :            :                                                                                  pInterface, pForward, scopeAsDecl(pScope));
    2669                 :            :                                                         }
    2670                 :            :                                                 }
    2671                 :            :                         else if ( !pInterface->isPublished()
    2672                 :            :                                   && pForward->isPublished() )
    2673                 :            :                         {
    2674                 :            :                             idlc()->error()->error0(EIDL_PUBLISHED_FORWARD);
    2675                 :            :                         }
    2676                 :            :                                                 /*
    2677                 :            :                                                  * All OK, set full definition
    2678                 :            :                                                  */
    2679                 :            :                                                 else 
    2680                 :            :                                                 {
    2681                 :            :                             pForward->forwardDefined(*pInterface);
    2682                 :            :                                                         delete pInterface;
    2683                 :            :                                                         pInterface = pForward;
    2684                 :            :                                                 }
    2685                 :            :                                         } else {
    2686                 :            :                         // special handling for XInterface because it is predefined
    2687                 :            :                         if ( pForward->isPredefined() &&
    2688                 :            :                              pForward->getScopedName() == "com::sun::star::uno::XInterface")
    2689                 :            :                         {
    2690                 :            :                             /* replace the predefined XInterface */
    2691                 :            :                             *pForward = *pInterface;
    2692                 :            :                             delete pInterface;
    2693                 :            :                             pInterface = pForward;
    2694                 :            :                         }
    2695                 :            :                         
    2696                 :            :                     }
    2697                 :            :                                 }
    2698                 :            :                         } else
    2699                 :            :                         {
    2700                 :            :                                 /*
    2701                 :            :                                  * Add the interface to its definition scope
    2702                 :            :                                  */
    2703                 :            :                                 pScope->addDeclaration(pInterface);
    2704                 :            :                         }
    2705                 :            :                 }
    2706                 :            :                 /*
    2707                 :            :                  * Push it on the scope stack
    2708                 :            :                  */
    2709                 :            :                 idlc()->scopes()->push(pInterface);
    2710                 :            :                 delete((yyvsp[(1) - (1)].ihval));
    2711                 :            :         }
    2712                 :            :     break;
    2713                 :            : 
    2714                 :            :   case 36:
    2715                 :            : 
    2716                 :            : /* Line 1806 of yacc.c  */
    2717                 :            : #line 700 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2718                 :            :     {
    2719                 :            :                 idlc()->setParseState(PS_InterfaceSqSeen);
    2720                 :            :         }
    2721                 :            :     break;
    2722                 :            : 
    2723                 :            :   case 37:
    2724                 :            : 
    2725                 :            : /* Line 1806 of yacc.c  */
    2726                 :            : #line 704 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2727                 :            :     {
    2728                 :            :         AstInterface * ifc = static_cast< AstInterface * >(
    2729                 :            :             idlc()->scopes()->topNonNull());
    2730                 :            :         if (!ifc->hasMandatoryInheritedInterfaces()
    2731                 :            :             && ifc->getScopedName() != "com::sun::star::uno::XInterface")
    2732                 :            :         {
    2733                 :            :             addInheritedInterface(
    2734                 :            :                 ifc, rtl::OString("::com::sun::star::uno::XInterface"), false,
    2735                 :            :                 rtl::OUString());
    2736                 :            :         }
    2737                 :            :         ifc->setDefined();
    2738                 :            :                 idlc()->setParseState(PS_InterfaceBodySeen);
    2739                 :            :         }
    2740                 :            :     break;
    2741                 :            : 
    2742                 :            :   case 38:
    2743                 :            : 
    2744                 :            : /* Line 1806 of yacc.c  */
    2745                 :            : #line 718 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2746                 :            :     {
    2747                 :            :                 idlc()->setParseState(PS_InterfaceQsSeen);
    2748                 :            :                 /*
    2749                 :            :                  * Done with this interface - pop it off the scopes stack
    2750                 :            :                  */
    2751                 :            :                 idlc()->scopes()->pop();
    2752                 :            :         }
    2753                 :            :     break;
    2754                 :            : 
    2755                 :            :   case 39:
    2756                 :            : 
    2757                 :            : /* Line 1806 of yacc.c  */
    2758                 :            : #line 726 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2759                 :            :     {
    2760                 :            :                 yyerror("interface definition");
    2761                 :            :                 yyerrok;
    2762                 :            :         }
    2763                 :            :     break;
    2764                 :            : 
    2765                 :            :   case 40:
    2766                 :            : 
    2767                 :            : /* Line 1806 of yacc.c  */
    2768                 :            : #line 734 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2769                 :            :     {
    2770                 :            :                 idlc()->setParseState(PS_InheritSpecSeen);
    2771                 :            : 
    2772                 :            :                 (yyval.ihval) = new FeInheritanceHeader(NT_interface, (yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].sval), 0);
    2773                 :            :                 delete (yyvsp[(2) - (2)].sval);
    2774                 :            :         }
    2775                 :            :     break;
    2776                 :            : 
    2777                 :            :   case 41:
    2778                 :            : 
    2779                 :            : /* Line 1806 of yacc.c  */
    2780                 :            : #line 744 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2781                 :            :     {
    2782                 :            :                 idlc()->setParseState(PS_InheritColonSeen);
    2783                 :            :         }
    2784                 :            :     break;
    2785                 :            : 
    2786                 :            :   case 42:
    2787                 :            : 
    2788                 :            : /* Line 1806 of yacc.c  */
    2789                 :            : #line 748 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2790                 :            :     {
    2791                 :            :         (yyval.sval) = (yyvsp[(3) - (3)].sval);
    2792                 :            :         }
    2793                 :            :     break;
    2794                 :            : 
    2795                 :            :   case 43:
    2796                 :            : 
    2797                 :            : /* Line 1806 of yacc.c  */
    2798                 :            : #line 752 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2799                 :            :     {
    2800                 :            :                 (yyval.sval) = NULL;
    2801                 :            :         }
    2802                 :            :     break;
    2803                 :            : 
    2804                 :            :   case 46:
    2805                 :            : 
    2806                 :            : /* Line 1806 of yacc.c  */
    2807                 :            : #line 764 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2808                 :            :     {
    2809                 :            :                 idlc()->setParseState(PS_AttributeDeclSeen);
    2810                 :            :         }
    2811                 :            :     break;
    2812                 :            : 
    2813                 :            :   case 47:
    2814                 :            : 
    2815                 :            : /* Line 1806 of yacc.c  */
    2816                 :            : #line 768 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2817                 :            :     {
    2818                 :            :                 idlc()->setParseState(PS_NoState);
    2819                 :            :         }
    2820                 :            :     break;
    2821                 :            : 
    2822                 :            :   case 48:
    2823                 :            : 
    2824                 :            : /* Line 1806 of yacc.c  */
    2825                 :            : #line 772 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2826                 :            :     {
    2827                 :            :                 idlc()->setParseState(PS_OperationDeclSeen);
    2828                 :            :         }
    2829                 :            :     break;
    2830                 :            : 
    2831                 :            :   case 49:
    2832                 :            : 
    2833                 :            : /* Line 1806 of yacc.c  */
    2834                 :            : #line 776 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2835                 :            :     {
    2836                 :            :                 idlc()->setParseState(PS_NoState);
    2837                 :            :         }
    2838                 :            :     break;
    2839                 :            : 
    2840                 :            :   case 50:
    2841                 :            : 
    2842                 :            : /* Line 1806 of yacc.c  */
    2843                 :            : #line 780 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2844                 :            :     {
    2845                 :            :                 idlc()->setParseState(PS_InterfaceInheritanceDeclSeen);
    2846                 :            :     }
    2847                 :            :     break;
    2848                 :            : 
    2849                 :            :   case 51:
    2850                 :            : 
    2851                 :            : /* Line 1806 of yacc.c  */
    2852                 :            : #line 784 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2853                 :            :     {
    2854                 :            :                 idlc()->setParseState(PS_NoState);
    2855                 :            :         }
    2856                 :            :     break;
    2857                 :            : 
    2858                 :            :   case 52:
    2859                 :            : 
    2860                 :            : /* Line 1806 of yacc.c  */
    2861                 :            : #line 792 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2862                 :            :     {
    2863                 :            :                 idlc()->setParseState(PS_AttrTypeSeen);
    2864                 :            :         }
    2865                 :            :     break;
    2866                 :            : 
    2867                 :            :   case 53:
    2868                 :            : 
    2869                 :            : /* Line 1806 of yacc.c  */
    2870                 :            : #line 796 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2871                 :            :     {
    2872                 :            :                 idlc()->setParseState(PS_AttrCompleted);
    2873                 :            :         if (((yyvsp[(1) - (4)].ulval) & ~(AF_BOUND | AF_READONLY)) != AF_ATTRIBUTE) {
    2874                 :            :             idlc()->error()->flagError(EIDL_BAD_ATTRIBUTE_FLAGS, (yyvsp[(1) - (4)].ulval));
    2875                 :            :         }
    2876                 :            :         AstInterface * scope = static_cast< AstInterface * >(
    2877                 :            :             idlc()->scopes()->top());
    2878                 :            :         AstAttribute * attr = new AstAttribute(
    2879                 :            :             (yyvsp[(1) - (4)].ulval), (yyvsp[(4) - (4)].fdval)->compose((yyvsp[(2) - (4)].cdclval)), (yyvsp[(4) - (4)].fdval)->getName(), scope);
    2880                 :            :         delete (yyvsp[(4) - (4)].fdval);
    2881                 :            :         AstInterface::DoubleMemberDeclarations doubleMembers(
    2882                 :            :             scope->checkMemberClashes(attr));
    2883                 :            :         if (doubleMembers.empty()) {
    2884                 :            :             scope->addMember(attr);
    2885                 :            :         } else {
    2886                 :            :             reportDoubleMemberDeclarations(doubleMembers);
    2887                 :            :         }
    2888                 :            :         idlc()->scopes()->push(attr);
    2889                 :            :     }
    2890                 :            :     break;
    2891                 :            : 
    2892                 :            :   case 54:
    2893                 :            : 
    2894                 :            : /* Line 1806 of yacc.c  */
    2895                 :            : #line 816 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2896                 :            :     {
    2897                 :            :         static_cast< AstAttribute * >(idlc()->scopes()->top())->setExceptions(
    2898                 :            :             (yyvsp[(6) - (6)].attexcval).get.documentation, (yyvsp[(6) - (6)].attexcval).get.exceptions, (yyvsp[(6) - (6)].attexcval).set.documentation,
    2899                 :            :             (yyvsp[(6) - (6)].attexcval).set.exceptions);
    2900                 :            :         delete (yyvsp[(6) - (6)].attexcval).get.documentation;
    2901                 :            :         delete (yyvsp[(6) - (6)].attexcval).get.exceptions;
    2902                 :            :         delete (yyvsp[(6) - (6)].attexcval).set.documentation;
    2903                 :            :         delete (yyvsp[(6) - (6)].attexcval).set.exceptions;
    2904                 :            :         idlc()->scopes()->pop();
    2905                 :            :     }
    2906                 :            :     break;
    2907                 :            : 
    2908                 :            :   case 55:
    2909                 :            : 
    2910                 :            : /* Line 1806 of yacc.c  */
    2911                 :            : #line 830 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2912                 :            :     {
    2913                 :            :                 idlc()->setParseState(PS_FlagHeaderSeen);
    2914                 :            :                 (yyval.ulval) = (yyvsp[(2) - (3)].ulval);
    2915                 :            :         }
    2916                 :            :     break;
    2917                 :            : 
    2918                 :            :   case 56:
    2919                 :            : 
    2920                 :            : /* Line 1806 of yacc.c  */
    2921                 :            : #line 838 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2922                 :            :     {
    2923                 :            :                 if ( ((yyvsp[(1) - (3)].ulval) & (yyvsp[(3) - (3)].ulval)) == (yyvsp[(3) - (3)].ulval) )
    2924                 :            :                         idlc()->error()->flagError(EIDL_DEFINED_ATTRIBUTEFLAG, (yyvsp[(3) - (3)].ulval));
    2925                 :            :  
    2926                 :            :                 (yyval.ulval) = (yyvsp[(1) - (3)].ulval) | (yyvsp[(3) - (3)].ulval);
    2927                 :            :         }
    2928                 :            :     break;
    2929                 :            : 
    2930                 :            :   case 57:
    2931                 :            : 
    2932                 :            : /* Line 1806 of yacc.c  */
    2933                 :            : #line 845 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2934                 :            :     {
    2935                 :            :                 (yyval.ulval) = (yyvsp[(1) - (1)].ulval);
    2936                 :            :         }
    2937                 :            :     break;
    2938                 :            : 
    2939                 :            :   case 58:
    2940                 :            : 
    2941                 :            : /* Line 1806 of yacc.c  */
    2942                 :            : #line 852 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2943                 :            :     {
    2944                 :            :                 idlc()->setParseState(PS_AttrSeen);
    2945                 :            :                 (yyval.ulval) = AF_ATTRIBUTE;
    2946                 :            :         }
    2947                 :            :     break;
    2948                 :            : 
    2949                 :            :   case 59:
    2950                 :            : 
    2951                 :            : /* Line 1806 of yacc.c  */
    2952                 :            : #line 857 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2953                 :            :     {
    2954                 :            :                 idlc()->setParseState(PS_PropertySeen);
    2955                 :            :                 (yyval.ulval) = AF_PROPERTY;
    2956                 :            :         }
    2957                 :            :     break;
    2958                 :            : 
    2959                 :            :   case 60:
    2960                 :            : 
    2961                 :            : /* Line 1806 of yacc.c  */
    2962                 :            : #line 862 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2963                 :            :     {
    2964                 :            :                 idlc()->setParseState(PS_ReadOnlySeen);
    2965                 :            :                 (yyval.ulval) = AF_READONLY;
    2966                 :            :         }
    2967                 :            :     break;
    2968                 :            : 
    2969                 :            :   case 61:
    2970                 :            : 
    2971                 :            : /* Line 1806 of yacc.c  */
    2972                 :            : #line 867 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2973                 :            :     {
    2974                 :            :                 idlc()->setParseState(PS_OptionalSeen);
    2975                 :            :                 (yyval.ulval) = AF_OPTIONAL;
    2976                 :            :         }
    2977                 :            :     break;
    2978                 :            : 
    2979                 :            :   case 62:
    2980                 :            : 
    2981                 :            : /* Line 1806 of yacc.c  */
    2982                 :            : #line 872 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2983                 :            :     {
    2984                 :            :                 idlc()->setParseState(PS_MayBeVoidSeen);
    2985                 :            :                 (yyval.ulval) = AF_MAYBEVOID;
    2986                 :            :         }
    2987                 :            :     break;
    2988                 :            : 
    2989                 :            :   case 63:
    2990                 :            : 
    2991                 :            : /* Line 1806 of yacc.c  */
    2992                 :            : #line 877 "/usr/local/src/libreoffice/idlc/source/parser.y"
    2993                 :            :     {
    2994                 :            :                 idlc()->setParseState(PS_BoundSeen);
    2995                 :            :                 (yyval.ulval) = AF_BOUND;
    2996                 :            :         }
    2997                 :            :     break;
    2998                 :            : 
    2999                 :            :   case 64:
    3000                 :            : 
    3001                 :            : /* Line 1806 of yacc.c  */
    3002                 :            : #line 882 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3003                 :            :     {
    3004                 :            :                 idlc()->setParseState(PS_ConstrainedSeen);
    3005                 :            :                 (yyval.ulval) = AF_CONSTRAINED;
    3006                 :            :         }
    3007                 :            :     break;
    3008                 :            : 
    3009                 :            :   case 65:
    3010                 :            : 
    3011                 :            : /* Line 1806 of yacc.c  */
    3012                 :            : #line 887 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3013                 :            :     {
    3014                 :            :                 idlc()->setParseState(PS_TransientSeen);
    3015                 :            :                 (yyval.ulval) = AF_TRANSIENT;
    3016                 :            :         }
    3017                 :            :     break;
    3018                 :            : 
    3019                 :            :   case 66:
    3020                 :            : 
    3021                 :            : /* Line 1806 of yacc.c  */
    3022                 :            : #line 892 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3023                 :            :     {
    3024                 :            :                 idlc()->setParseState(PS_MayBeAmbigiousSeen);
    3025                 :            :                 (yyval.ulval) = AF_MAYBEAMBIGUOUS;
    3026                 :            :         }
    3027                 :            :     break;
    3028                 :            : 
    3029                 :            :   case 67:
    3030                 :            : 
    3031                 :            : /* Line 1806 of yacc.c  */
    3032                 :            : #line 897 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3033                 :            :     {
    3034                 :            :                 idlc()->setParseState(PS_MayBeDefaultSeen);
    3035                 :            :                 (yyval.ulval) = AF_MAYBEDEFAULT;
    3036                 :            :         }
    3037                 :            :     break;
    3038                 :            : 
    3039                 :            :   case 68:
    3040                 :            : 
    3041                 :            : /* Line 1806 of yacc.c  */
    3042                 :            : #line 902 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3043                 :            :     {
    3044                 :            :                 idlc()->setParseState(PS_RemoveableSeen);
    3045                 :            :                 (yyval.ulval) = AF_REMOVEABLE;
    3046                 :            :         }
    3047                 :            :     break;
    3048                 :            : 
    3049                 :            :   case 69:
    3050                 :            : 
    3051                 :            : /* Line 1806 of yacc.c  */
    3052                 :            : #line 907 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3053                 :            :     {
    3054                 :            :        yyerror("unknown property|attribute flag");
    3055                 :            :                 yyerrok;
    3056                 :            :         }
    3057                 :            :     break;
    3058                 :            : 
    3059                 :            :   case 70:
    3060                 :            : 
    3061                 :            : /* Line 1806 of yacc.c  */
    3062                 :            : #line 914 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3063                 :            :     { (yyval.attexcval) = (yyvsp[(2) - (2)].attexcval); }
    3064                 :            :     break;
    3065                 :            : 
    3066                 :            :   case 71:
    3067                 :            : 
    3068                 :            : /* Line 1806 of yacc.c  */
    3069                 :            : #line 916 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3070                 :            :     {
    3071                 :            :         (yyval.attexcval).get.documentation = 0;
    3072                 :            :         (yyval.attexcval).get.exceptions = 0;
    3073                 :            :         (yyval.attexcval).set.documentation = 0;
    3074                 :            :         (yyval.attexcval).set.exceptions = 0;
    3075                 :            :     }
    3076                 :            :     break;
    3077                 :            : 
    3078                 :            :   case 73:
    3079                 :            : 
    3080                 :            : /* Line 1806 of yacc.c  */
    3081                 :            : #line 927 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3082                 :            :     {
    3083                 :            :         yyerror("bad attribute raises block");
    3084                 :            :         yyerrok;
    3085                 :            :         (yyval.attexcval).get.documentation = 0;
    3086                 :            :         (yyval.attexcval).get.exceptions = 0;
    3087                 :            :         (yyval.attexcval).set.documentation = 0;
    3088                 :            :         (yyval.attexcval).set.exceptions = 0;
    3089                 :            :     }
    3090                 :            :     break;
    3091                 :            : 
    3092                 :            :   case 74:
    3093                 :            : 
    3094                 :            : /* Line 1806 of yacc.c  */
    3095                 :            : #line 940 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3096                 :            :     {
    3097                 :            :         (yyval.attexcval).get = (yyvsp[(1) - (2)].attexcpval);
    3098                 :            :         (yyval.attexcval).set = (yyvsp[(2) - (2)].attexcpval);
    3099                 :            :     }
    3100                 :            :     break;
    3101                 :            : 
    3102                 :            :   case 75:
    3103                 :            : 
    3104                 :            : /* Line 1806 of yacc.c  */
    3105                 :            : #line 946 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3106                 :            :     {
    3107                 :            :         (yyval.attexcval).get = (yyvsp[(2) - (2)].attexcpval);
    3108                 :            :         (yyval.attexcval).set = (yyvsp[(1) - (2)].attexcpval);
    3109                 :            :     }
    3110                 :            :     break;
    3111                 :            : 
    3112                 :            :   case 76:
    3113                 :            : 
    3114                 :            : /* Line 1806 of yacc.c  */
    3115                 :            : #line 951 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3116                 :            :     {
    3117                 :            :         (yyval.attexcval).get.documentation = 0;
    3118                 :            :         (yyval.attexcval).get.exceptions = 0;
    3119                 :            :         (yyval.attexcval).set.documentation = 0;
    3120                 :            :         (yyval.attexcval).set.exceptions = 0;
    3121                 :            :     }
    3122                 :            :     break;
    3123                 :            : 
    3124                 :            :   case 78:
    3125                 :            : 
    3126                 :            : /* Line 1806 of yacc.c  */
    3127                 :            : #line 961 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3128                 :            :     { (yyval.attexcpval).documentation = 0; (yyval.attexcpval).exceptions = 0; }
    3129                 :            :     break;
    3130                 :            : 
    3131                 :            :   case 79:
    3132                 :            : 
    3133                 :            : /* Line 1806 of yacc.c  */
    3134                 :            : #line 966 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3135                 :            :     {
    3136                 :            :         (yyval.attexcpval).documentation = new rtl::OUString(
    3137                 :            :             rtl::OStringToOUString(
    3138                 :            :                 idlc()->getDocumentation(), RTL_TEXTENCODING_UTF8));
    3139                 :            :         (yyval.attexcpval).exceptions = (yyvsp[(2) - (3)].dclsval);
    3140                 :            :     }
    3141                 :            :     break;
    3142                 :            : 
    3143                 :            :   case 81:
    3144                 :            : 
    3145                 :            : /* Line 1806 of yacc.c  */
    3146                 :            : #line 976 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3147                 :            :     { (yyval.attexcpval).documentation = 0; (yyval.attexcpval).exceptions = 0; }
    3148                 :            :     break;
    3149                 :            : 
    3150                 :            :   case 82:
    3151                 :            : 
    3152                 :            : /* Line 1806 of yacc.c  */
    3153                 :            : #line 981 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3154                 :            :     {
    3155                 :            :         if (static_cast< AstAttribute * >(idlc()->scopes()->top())->
    3156                 :            :             isReadonly())
    3157                 :            :         {
    3158                 :            :             idlc()->error()->error0(EIDL_READONLY_ATTRIBUTE_SET_EXCEPTIONS);
    3159                 :            :         }
    3160                 :            :     }
    3161                 :            :     break;
    3162                 :            : 
    3163                 :            :   case 83:
    3164                 :            : 
    3165                 :            : /* Line 1806 of yacc.c  */
    3166                 :            : #line 989 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3167                 :            :     {
    3168                 :            :         (yyval.attexcpval).documentation = new rtl::OUString(
    3169                 :            :             rtl::OStringToOUString(
    3170                 :            :                 idlc()->getDocumentation(), RTL_TEXTENCODING_UTF8));
    3171                 :            :         (yyval.attexcpval).exceptions = (yyvsp[(3) - (4)].dclsval);
    3172                 :            :     }
    3173                 :            :     break;
    3174                 :            : 
    3175                 :            :   case 84:
    3176                 :            : 
    3177                 :            : /* Line 1806 of yacc.c  */
    3178                 :            : #line 1000 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3179                 :            :     {
    3180                 :            :                 idlc()->setParseState(PS_OpTypeSeen);
    3181                 :            :         }
    3182                 :            :     break;
    3183                 :            : 
    3184                 :            :   case 85:
    3185                 :            : 
    3186                 :            : /* Line 1806 of yacc.c  */
    3187                 :            : #line 1004 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3188                 :            :     {
    3189                 :            :                 idlc()->setParseState(PS_OpIDSeen);
    3190                 :            :        checkIdentifier((yyvsp[(4) - (4)].sval));
    3191                 :            : 
    3192                 :            :                 AstInterface * pScope = static_cast< AstInterface * >(
    3193                 :            :             idlc()->scopes()->top());
    3194                 :            :                 AstOperation*   pOp = NULL;
    3195                 :            : 
    3196                 :            :                 /*
    3197                 :            :                  * Create a node representing an operation on an interface
    3198                 :            :                  * and add it to its enclosing scope
    3199                 :            :                  */
    3200                 :            :                 if ( pScope && (yyvsp[(2) - (4)].cdclval) )
    3201                 :            :                 {
    3202                 :            :                         AstType *pType = (AstType*)(yyvsp[(2) - (4)].cdclval);
    3203                 :            :                         if ( !pType || (pType->getNodeType() == NT_exception) )
    3204                 :            :                         {
    3205                 :            :                                 // type ERROR 
    3206                 :            :                         } else 
    3207                 :            :                         {
    3208                 :            :                                 pOp = new AstOperation((yyvsp[(1) - (4)].ulval), pType, *(yyvsp[(4) - (4)].sval), pScope);
    3209                 :            : 
    3210                 :            :                 AstInterface::DoubleMemberDeclarations doubleMembers(
    3211                 :            :                     pScope->checkMemberClashes(pOp));
    3212                 :            :                 if (doubleMembers.empty()) {
    3213                 :            :                     pScope->addMember(pOp);
    3214                 :            :                 } else {
    3215                 :            :                     reportDoubleMemberDeclarations(doubleMembers);
    3216                 :            :                 }
    3217                 :            :                         }
    3218                 :            :                 }
    3219                 :            :                 delete (yyvsp[(4) - (4)].sval);
    3220                 :            :                 /*
    3221                 :            :                  * Push the operation scope onto the scopes stack
    3222                 :            :                  */
    3223                 :            :                 idlc()->scopes()->push(pOp);
    3224                 :            :         }
    3225                 :            :     break;
    3226                 :            : 
    3227                 :            :   case 86:
    3228                 :            : 
    3229                 :            : /* Line 1806 of yacc.c  */
    3230                 :            : #line 1042 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3231                 :            :     {
    3232                 :            :                 idlc()->setParseState(PS_OpSqSeen);
    3233                 :            :         }
    3234                 :            :     break;
    3235                 :            : 
    3236                 :            :   case 87:
    3237                 :            : 
    3238                 :            : /* Line 1806 of yacc.c  */
    3239                 :            : #line 1046 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3240                 :            :     {
    3241                 :            :                 idlc()->setParseState(PS_OpParsCompleted);
    3242                 :            :         }
    3243                 :            :     break;
    3244                 :            : 
    3245                 :            :   case 88:
    3246                 :            : 
    3247                 :            : /* Line 1806 of yacc.c  */
    3248                 :            : #line 1050 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3249                 :            :     {
    3250                 :            :                 idlc()->setParseState(PS_OpQsSeen);
    3251                 :            :         }
    3252                 :            :     break;
    3253                 :            : 
    3254                 :            :   case 89:
    3255                 :            : 
    3256                 :            : /* Line 1806 of yacc.c  */
    3257                 :            : #line 1054 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3258                 :            :     {
    3259                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    3260                 :            :                 AstOperation*   pOp = NULL;
    3261                 :            :                 /*
    3262                 :            :                  * Add exceptions and context to the operation
    3263                 :            :                  */
    3264                 :            :                 if ( pScope && pScope->getScopeNodeType() == NT_operation)
    3265                 :            :                 {
    3266                 :            :                         pOp = (AstOperation*)pScope;
    3267                 :            : 
    3268                 :            :                         if ( pOp )
    3269                 :            :                                 pOp->setExceptions((yyvsp[(12) - (12)].dclsval));
    3270                 :            :                 }
    3271                 :            :         delete (yyvsp[(12) - (12)].dclsval);
    3272                 :            :                 /*
    3273                 :            :                  * Done with this operation. Pop its scope from the scopes stack
    3274                 :            :                  */
    3275                 :            :                 idlc()->scopes()->pop();
    3276                 :            :         }
    3277                 :            :     break;
    3278                 :            : 
    3279                 :            :   case 90:
    3280                 :            : 
    3281                 :            : /* Line 1806 of yacc.c  */
    3282                 :            : #line 1078 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3283                 :            :     {
    3284                 :            :                 idlc()->setParseState(PS_OpOnewaySeen);
    3285                 :            :         }
    3286                 :            :     break;
    3287                 :            : 
    3288                 :            :   case 91:
    3289                 :            : 
    3290                 :            : /* Line 1806 of yacc.c  */
    3291                 :            : #line 1082 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3292                 :            :     {
    3293                 :            :                 idlc()->setParseState(PS_OpHeadSeen);
    3294                 :            :                 (yyval.ulval) = OP_ONEWAY;
    3295                 :            :         }
    3296                 :            :     break;
    3297                 :            : 
    3298                 :            :   case 92:
    3299                 :            : 
    3300                 :            : /* Line 1806 of yacc.c  */
    3301                 :            : #line 1087 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3302                 :            :     {
    3303                 :            :                 (yyval.ulval) = OP_NONE;
    3304                 :            :         }
    3305                 :            :     break;
    3306                 :            : 
    3307                 :            :   case 94:
    3308                 :            : 
    3309                 :            : /* Line 1806 of yacc.c  */
    3310                 :            : #line 1095 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3311                 :            :     {
    3312                 :            :                 (yyval.cdclval) = idlc()->scopes()->bottom()->lookupPrimitiveType(ET_void);
    3313                 :            :         }
    3314                 :            :     break;
    3315                 :            : 
    3316                 :            :   case 96:
    3317                 :            : 
    3318                 :            : /* Line 1806 of yacc.c  */
    3319                 :            : #line 1104 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3320                 :            :     {
    3321                 :            :                 idlc()->setParseState(PS_OpParCommaSeen);
    3322                 :            :         }
    3323                 :            :     break;
    3324                 :            : 
    3325                 :            :   case 99:
    3326                 :            : 
    3327                 :            : /* Line 1806 of yacc.c  */
    3328                 :            : #line 1110 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3329                 :            :     {
    3330                 :            :                 yyerror("parameter definition");
    3331                 :            :                 yyerrok;
    3332                 :            :         }
    3333                 :            :     break;
    3334                 :            : 
    3335                 :            :   case 100:
    3336                 :            : 
    3337                 :            : /* Line 1806 of yacc.c  */
    3338                 :            : #line 1120 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3339                 :            :     {
    3340                 :            :                 idlc()->setParseState(PS_OpParDirSeen);
    3341                 :            :         }
    3342                 :            :     break;
    3343                 :            : 
    3344                 :            :   case 101:
    3345                 :            : 
    3346                 :            : /* Line 1806 of yacc.c  */
    3347                 :            : #line 1124 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3348                 :            :     {
    3349                 :            :                 idlc()->setParseState(PS_OpParTypeSeen);
    3350                 :            :         }
    3351                 :            :     break;
    3352                 :            : 
    3353                 :            :   case 102:
    3354                 :            : 
    3355                 :            : /* Line 1806 of yacc.c  */
    3356                 :            : #line 1129 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3357                 :            :     {
    3358                 :            :                 idlc()->setParseState(PS_OpParDeclSeen);
    3359                 :            : 
    3360                 :            :         AstOperation * pScope = static_cast< AstOperation * >(
    3361                 :            :             idlc()->scopes()->top());
    3362                 :            :                 AstParameter*   pParam = NULL;
    3363                 :            : 
    3364                 :            :                 /*
    3365                 :            :                  * Create a node representing an argument to an operation
    3366                 :            :                  * Add it to the enclosing scope (the operation scope)
    3367                 :            :                  */
    3368                 :            :                 if ( pScope && (yyvsp[(5) - (8)].cdclval) && (yyvsp[(8) - (8)].fdval) )
    3369                 :            :                 {
    3370                 :            :             AstType const * pType = (yyvsp[(8) - (8)].fdval)->compose((yyvsp[(5) - (8)].cdclval));
    3371                 :            :                         if ( pType )
    3372                 :            :                         {
    3373                 :            :                 if (pScope->isConstructor() && (yyvsp[(2) - (8)].ulval) != DIR_IN) {
    3374                 :            :                     idlc()->error()->error0(EIDL_CONSTRUCTOR_PARAMETER_NOT_IN);
    3375                 :            :                 }
    3376                 :            :                 if (pScope->isVariadic()) {
    3377                 :            :                     idlc()->error()->error0(EIDL_REST_PARAMETER_NOT_LAST);
    3378                 :            :                 }
    3379                 :            :                 if ((yyvsp[(7) - (8)].bval)) {
    3380                 :            :                     AstDeclaration const * type = resolveTypedefs(pType);
    3381                 :            :                     if (type->getNodeType() != NT_predefined
    3382                 :            :                         || (static_cast< AstBaseType const * >(type)->
    3383                 :            :                             getExprType() != ET_any))
    3384                 :            :                     {
    3385                 :            :                         idlc()->error()->error0(EIDL_REST_PARAMETER_NOT_ANY);
    3386                 :            :                     }
    3387                 :            :                     if (pScope->isConstructor()) {
    3388                 :            :                         if (pScope->getIteratorBegin()
    3389                 :            :                             != pScope->getIteratorEnd())
    3390                 :            :                         {
    3391                 :            :                             idlc()->error()->error0(
    3392                 :            :                                 EIDL_CONSTRUCTOR_REST_PARAMETER_NOT_FIRST);
    3393                 :            :                         }
    3394                 :            :                     } else {
    3395                 :            :                         idlc()->error()->error0(EIDL_METHOD_HAS_REST_PARAMETER);
    3396                 :            :                     }
    3397                 :            :                 }
    3398                 :            : 
    3399                 :            :                                 pParam = new AstParameter(
    3400                 :            :                     static_cast< Direction >((yyvsp[(2) - (8)].ulval)), (yyvsp[(7) - (8)].bval), pType, (yyvsp[(8) - (8)].fdval)->getName(),
    3401                 :            :                     pScope);
    3402                 :            :                                                                 
    3403                 :            :                                 if ( !(yyvsp[(8) - (8)].fdval)->checkType((yyvsp[(5) - (8)].cdclval)) )
    3404                 :            :                                 {
    3405                 :            :                                         // WARNING      
    3406                 :            :                                 }
    3407                 :            : 
    3408                 :            :                                 pScope->addDeclaration(pParam);
    3409                 :            :                         }
    3410                 :            :                 }
    3411                 :            :         }
    3412                 :            :     break;
    3413                 :            : 
    3414                 :            :   case 103:
    3415                 :            : 
    3416                 :            : /* Line 1806 of yacc.c  */
    3417                 :            : #line 1186 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3418                 :            :     {
    3419                 :            :                 idlc()->setParseState(PS_NoState);
    3420                 :            :                 yyerrok;
    3421                 :            :         }
    3422                 :            :     break;
    3423                 :            : 
    3424                 :            :   case 104:
    3425                 :            : 
    3426                 :            : /* Line 1806 of yacc.c  */
    3427                 :            : #line 1194 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3428                 :            :     {
    3429                 :            :                 (yyval.ulval) = DIR_IN;
    3430                 :            :         }
    3431                 :            :     break;
    3432                 :            : 
    3433                 :            :   case 105:
    3434                 :            : 
    3435                 :            : /* Line 1806 of yacc.c  */
    3436                 :            : #line 1198 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3437                 :            :     {
    3438                 :            :                 (yyval.ulval) = DIR_OUT;
    3439                 :            :         }
    3440                 :            :     break;
    3441                 :            : 
    3442                 :            :   case 106:
    3443                 :            : 
    3444                 :            : /* Line 1806 of yacc.c  */
    3445                 :            : #line 1202 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3446                 :            :     {
    3447                 :            :                 (yyval.ulval) = DIR_INOUT;
    3448                 :            :         }
    3449                 :            :     break;
    3450                 :            : 
    3451                 :            :   case 107:
    3452                 :            : 
    3453                 :            : /* Line 1806 of yacc.c  */
    3454                 :            : #line 1209 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3455                 :            :     {
    3456                 :            :         (yyval.bval) = true;
    3457                 :            :     }
    3458                 :            :     break;
    3459                 :            : 
    3460                 :            :   case 108:
    3461                 :            : 
    3462                 :            : /* Line 1806 of yacc.c  */
    3463                 :            : #line 1213 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3464                 :            :     {
    3465                 :            :         (yyval.bval) = false;
    3466                 :            :     }
    3467                 :            :     break;
    3468                 :            : 
    3469                 :            :   case 110:
    3470                 :            : 
    3471                 :            : /* Line 1806 of yacc.c  */
    3472                 :            : #line 1221 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3473                 :            :     {
    3474                 :            :         (yyval.dclsval) = 0;
    3475                 :            :     }
    3476                 :            :     break;
    3477                 :            : 
    3478                 :            :   case 111:
    3479                 :            : 
    3480                 :            : /* Line 1806 of yacc.c  */
    3481                 :            : #line 1228 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3482                 :            :     {
    3483                 :            :         idlc()->setParseState(PS_RaiseSeen);
    3484                 :            :     }
    3485                 :            :     break;
    3486                 :            : 
    3487                 :            :   case 112:
    3488                 :            : 
    3489                 :            : /* Line 1806 of yacc.c  */
    3490                 :            : #line 1232 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3491                 :            :     {
    3492                 :            :         idlc()->setParseState(PS_RaiseSqSeen);
    3493                 :            :     }
    3494                 :            :     break;
    3495                 :            : 
    3496                 :            :   case 113:
    3497                 :            : 
    3498                 :            : /* Line 1806 of yacc.c  */
    3499                 :            : #line 1237 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3500                 :            :     {
    3501                 :            :         idlc()->setParseState(PS_RaiseQsSeen);
    3502                 :            :         (yyval.dclsval) = (yyvsp[(5) - (6)].dclsval);
    3503                 :            :     }
    3504                 :            :     break;
    3505                 :            : 
    3506                 :            :   case 114:
    3507                 :            : 
    3508                 :            : /* Line 1806 of yacc.c  */
    3509                 :            : #line 1245 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3510                 :            :     {
    3511                 :            :         (yyval.dclsval) = new DeclList;
    3512                 :            :         (yyval.dclsval)->push_back((yyvsp[(1) - (1)].dclval));
    3513                 :            :     }
    3514                 :            :     break;
    3515                 :            : 
    3516                 :            :   case 115:
    3517                 :            : 
    3518                 :            : /* Line 1806 of yacc.c  */
    3519                 :            : #line 1250 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3520                 :            :     {
    3521                 :            :         (yyvsp[(1) - (3)].dclsval)->push_back((yyvsp[(3) - (3)].dclval));
    3522                 :            :         (yyval.dclsval) = (yyvsp[(1) - (3)].dclsval);
    3523                 :            :     }
    3524                 :            :     break;
    3525                 :            : 
    3526                 :            :   case 116:
    3527                 :            : 
    3528                 :            : /* Line 1806 of yacc.c  */
    3529                 :            : #line 1258 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3530                 :            :     {
    3531                 :            :         // The topmost scope is either an AstOperation (for interface methods
    3532                 :            :         // and service constructors) or an AstAttribute (for interface
    3533                 :            :         // attributes), so look up exception names in the next-to-topmost scope:
    3534                 :            :         AstDeclaration * decl = idlc()->scopes()->nextToTop()->lookupByName(
    3535                 :            :             *(yyvsp[(1) - (1)].sval));
    3536                 :            :         if (decl == 0) {
    3537                 :            :             idlc()->error()->lookupError(*(yyvsp[(1) - (1)].sval));
    3538                 :            :         } else if (!idlc()->error()->checkPublished(decl)) {
    3539                 :            :             decl = 0;
    3540                 :            :         } else if (decl->getNodeType() != NT_exception) {
    3541                 :            :             idlc()->error()->error1(EIDL_ILLEGAL_RAISES, decl);
    3542                 :            :             decl = 0;
    3543                 :            :         }
    3544                 :            :         delete (yyvsp[(1) - (1)].sval);
    3545                 :            :         (yyval.dclval) = decl;
    3546                 :            :     }
    3547                 :            :     break;
    3548                 :            : 
    3549                 :            :   case 117:
    3550                 :            : 
    3551                 :            : /* Line 1806 of yacc.c  */
    3552                 :            : #line 1280 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3553                 :            :     {
    3554                 :            :         idlc()->setParseState(PS_ServiceIFHeadSeen);
    3555                 :            :     }
    3556                 :            :     break;
    3557                 :            : 
    3558                 :            :   case 118:
    3559                 :            : 
    3560                 :            : /* Line 1806 of yacc.c  */
    3561                 :            : #line 1284 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3562                 :            :     {
    3563                 :            :         AstInterface * ifc = static_cast< AstInterface * >(
    3564                 :            :             idlc()->scopes()->top());
    3565                 :            :         if (ifc->usesSingleInheritance()) {
    3566                 :            :             idlc()->error()->error0(EIDL_MIXED_INHERITANCE);
    3567                 :            :         } else {
    3568                 :            :             addInheritedInterface(
    3569                 :            :                 ifc, *(yyvsp[(4) - (4)].sval), (yyvsp[(1) - (4)].bval),
    3570                 :            :                 rtl::OStringToOUString(
    3571                 :            :                     idlc()->getDocumentation(), RTL_TEXTENCODING_UTF8));
    3572                 :            :         }
    3573                 :            :         delete (yyvsp[(4) - (4)].sval);
    3574                 :            :     }
    3575                 :            :     break;
    3576                 :            : 
    3577                 :            :   case 119:
    3578                 :            : 
    3579                 :            : /* Line 1806 of yacc.c  */
    3580                 :            : #line 1300 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3581                 :            :     { (yyval.bval) = true; }
    3582                 :            :     break;
    3583                 :            : 
    3584                 :            :   case 120:
    3585                 :            : 
    3586                 :            : /* Line 1806 of yacc.c  */
    3587                 :            : #line 1301 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3588                 :            :     { (yyval.bval) = false; }
    3589                 :            :     break;
    3590                 :            : 
    3591                 :            :   case 123:
    3592                 :            : 
    3593                 :            : /* Line 1806 of yacc.c  */
    3594                 :            : #line 1311 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3595                 :            :     {
    3596                 :            :                 idlc()->setParseState(PS_ConstantDeclSeen);
    3597                 :            :         }
    3598                 :            :     break;
    3599                 :            : 
    3600                 :            :   case 124:
    3601                 :            : 
    3602                 :            : /* Line 1806 of yacc.c  */
    3603                 :            : #line 1314 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3604                 :            :     {}
    3605                 :            :     break;
    3606                 :            : 
    3607                 :            :   case 125:
    3608                 :            : 
    3609                 :            : /* Line 1806 of yacc.c  */
    3610                 :            : #line 1318 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3611                 :            :     {
    3612                 :            :                 idlc()->setParseState(PS_ConstSeen);
    3613                 :            :         }
    3614                 :            :     break;
    3615                 :            : 
    3616                 :            :   case 126:
    3617                 :            : 
    3618                 :            : /* Line 1806 of yacc.c  */
    3619                 :            : #line 1322 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3620                 :            :     {
    3621                 :            :                 idlc()->setParseState(PS_ConstTypeSeen);
    3622                 :            :         }
    3623                 :            :     break;
    3624                 :            : 
    3625                 :            :   case 127:
    3626                 :            : 
    3627                 :            : /* Line 1806 of yacc.c  */
    3628                 :            : #line 1326 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3629                 :            :     {
    3630                 :            :         idlc()->setParseState(PS_ConstIDSeen);
    3631                 :            :         checkIdentifier((yyvsp[(5) - (5)].sval));
    3632                 :            :         }
    3633                 :            :     break;
    3634                 :            : 
    3635                 :            :   case 128:
    3636                 :            : 
    3637                 :            : /* Line 1806 of yacc.c  */
    3638                 :            : #line 1331 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3639                 :            :     {
    3640                 :            :                 idlc()->setParseState(PS_ConstAssignSeen);
    3641                 :            :         }
    3642                 :            :     break;
    3643                 :            : 
    3644                 :            :   case 129:
    3645                 :            : 
    3646                 :            : /* Line 1806 of yacc.c  */
    3647                 :            : #line 1335 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3648                 :            :     {
    3649                 :            :                 idlc()->setParseState(PS_ConstExprSeen);
    3650                 :            : 
    3651                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    3652                 :            :                 AstConstant*    pConstant = NULL;
    3653                 :            : 
    3654                 :            :                 if ( (yyvsp[(9) - (9)].exval) && pScope )
    3655                 :            :                 {
    3656                 :            :                         if ( !(yyvsp[(9) - (9)].exval)->coerce((yyvsp[(3) - (9)].etval)) )
    3657                 :            :                         {
    3658                 :            :                                 idlc()->error()->coercionError((yyvsp[(9) - (9)].exval), (yyvsp[(3) - (9)].etval));
    3659                 :            :                         } else
    3660                 :            :                         {
    3661                 :            :                                 pConstant = new AstConstant((yyvsp[(3) - (9)].etval), (yyvsp[(9) - (9)].exval), *(yyvsp[(5) - (9)].sval), pScope);
    3662                 :            :                                 pScope->addDeclaration(pConstant);
    3663                 :            :                         }
    3664                 :            :                 }
    3665                 :            :                 delete (yyvsp[(5) - (9)].sval);
    3666                 :            :         }
    3667                 :            :     break;
    3668                 :            : 
    3669                 :            :   case 130:
    3670                 :            : 
    3671                 :            : /* Line 1806 of yacc.c  */
    3672                 :            : #line 1358 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3673                 :            :     {
    3674                 :            :                 idlc()->setParseState(PS_ConstantsSeen);
    3675                 :            :         }
    3676                 :            :     break;
    3677                 :            : 
    3678                 :            :   case 131:
    3679                 :            : 
    3680                 :            : /* Line 1806 of yacc.c  */
    3681                 :            : #line 1362 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3682                 :            :     {
    3683                 :            :         idlc()->setParseState(PS_ConstantsIDSeen);
    3684                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    3685                 :            :         }
    3686                 :            :     break;
    3687                 :            : 
    3688                 :            :   case 132:
    3689                 :            : 
    3690                 :            : /* Line 1806 of yacc.c  */
    3691                 :            : #line 1367 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3692                 :            :     {
    3693                 :            :                 idlc()->setParseState(PS_ConstantsSqSeen);
    3694                 :            : 
    3695                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    3696                 :            :                 AstConstants*   pConstants = NULL;
    3697                 :            :                 AstDeclaration* pExists = NULL;
    3698                 :            : 
    3699                 :            :                 if ( pScope )
    3700                 :            :                 {
    3701                 :            :                         pConstants = new AstConstants(*(yyvsp[(3) - (5)].sval), pScope);
    3702                 :            :                         if( (pExists = pScope->lookupForAdd(pConstants)) )
    3703                 :            :                         {
    3704                 :            :                                 pExists->setInMainfile(idlc()->isInMainFile());
    3705                 :            :                                 delete(pConstants);
    3706                 :            :                                 pConstants = (AstConstants*)pExists;
    3707                 :            :                         } else
    3708                 :            :                         {
    3709                 :            :                                 pScope->addDeclaration(pConstants);
    3710                 :            :                         }
    3711                 :            :                         idlc()->scopes()->push(pConstants);
    3712                 :            :                 }
    3713                 :            :                 delete (yyvsp[(3) - (5)].sval);
    3714                 :            :         }
    3715                 :            :     break;
    3716                 :            : 
    3717                 :            :   case 133:
    3718                 :            : 
    3719                 :            : /* Line 1806 of yacc.c  */
    3720                 :            : #line 1391 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3721                 :            :     {
    3722                 :            :                 idlc()->setParseState(PS_ConstantsBodySeen);
    3723                 :            :         }
    3724                 :            :     break;
    3725                 :            : 
    3726                 :            :   case 134:
    3727                 :            : 
    3728                 :            : /* Line 1806 of yacc.c  */
    3729                 :            : #line 1395 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3730                 :            :     {
    3731                 :            :                 idlc()->setParseState(PS_ConstantsQsSeen);
    3732                 :            :                 /*
    3733                 :            :                  * Finished with this constants - pop it from the scope stack
    3734                 :            :                  */
    3735                 :            :                 idlc()->scopes()->pop();
    3736                 :            :         }
    3737                 :            :     break;
    3738                 :            : 
    3739                 :            :   case 138:
    3740                 :            : 
    3741                 :            : /* Line 1806 of yacc.c  */
    3742                 :            : #line 1411 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3743                 :            :     {
    3744                 :            :                 (yyval.exval) = new AstExpression(EC_or, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3745                 :            :         }
    3746                 :            :     break;
    3747                 :            : 
    3748                 :            :   case 140:
    3749                 :            : 
    3750                 :            : /* Line 1806 of yacc.c  */
    3751                 :            : #line 1419 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3752                 :            :     {
    3753                 :            :                 (yyval.exval) = new AstExpression(EC_xor, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3754                 :            :         }
    3755                 :            :     break;
    3756                 :            : 
    3757                 :            :   case 142:
    3758                 :            : 
    3759                 :            : /* Line 1806 of yacc.c  */
    3760                 :            : #line 1427 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3761                 :            :     {
    3762                 :            :                 (yyval.exval) = new AstExpression(EC_and, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3763                 :            :         }
    3764                 :            :     break;
    3765                 :            : 
    3766                 :            :   case 144:
    3767                 :            : 
    3768                 :            : /* Line 1806 of yacc.c  */
    3769                 :            : #line 1435 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3770                 :            :     {
    3771                 :            :                 (yyval.exval) = new AstExpression(EC_left, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3772                 :            :         }
    3773                 :            :     break;
    3774                 :            : 
    3775                 :            :   case 145:
    3776                 :            : 
    3777                 :            : /* Line 1806 of yacc.c  */
    3778                 :            : #line 1439 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3779                 :            :     {
    3780                 :            :                 (yyval.exval) = new AstExpression(EC_right, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3781                 :            :         }
    3782                 :            :     break;
    3783                 :            : 
    3784                 :            :   case 147:
    3785                 :            : 
    3786                 :            : /* Line 1806 of yacc.c  */
    3787                 :            : #line 1447 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3788                 :            :     {
    3789                 :            :                 (yyval.exval) = new AstExpression(EC_add, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3790                 :            :         }
    3791                 :            :     break;
    3792                 :            : 
    3793                 :            :   case 148:
    3794                 :            : 
    3795                 :            : /* Line 1806 of yacc.c  */
    3796                 :            : #line 1451 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3797                 :            :     {
    3798                 :            :                 (yyval.exval) = new AstExpression(EC_minus, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3799                 :            :         }
    3800                 :            :     break;
    3801                 :            : 
    3802                 :            :   case 150:
    3803                 :            : 
    3804                 :            : /* Line 1806 of yacc.c  */
    3805                 :            : #line 1459 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3806                 :            :     {
    3807                 :            :                 (yyval.exval) = new AstExpression(EC_mul, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3808                 :            :         }
    3809                 :            :     break;
    3810                 :            : 
    3811                 :            :   case 151:
    3812                 :            : 
    3813                 :            : /* Line 1806 of yacc.c  */
    3814                 :            : #line 1463 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3815                 :            :     {
    3816                 :            :                 (yyval.exval) = new AstExpression(EC_div, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3817                 :            :         }
    3818                 :            :     break;
    3819                 :            : 
    3820                 :            :   case 152:
    3821                 :            : 
    3822                 :            : /* Line 1806 of yacc.c  */
    3823                 :            : #line 1467 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3824                 :            :     {
    3825                 :            :                 (yyval.exval) = new AstExpression(EC_mod, (yyvsp[(1) - (3)].exval), (yyvsp[(3) - (3)].exval));
    3826                 :            :         }
    3827                 :            :     break;
    3828                 :            : 
    3829                 :            :   case 154:
    3830                 :            : 
    3831                 :            : /* Line 1806 of yacc.c  */
    3832                 :            : #line 1475 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3833                 :            :     {
    3834                 :            :                 (yyval.exval) = new AstExpression(EC_u_plus, (yyvsp[(2) - (2)].exval), NULL);
    3835                 :            :         }
    3836                 :            :     break;
    3837                 :            : 
    3838                 :            :   case 155:
    3839                 :            : 
    3840                 :            : /* Line 1806 of yacc.c  */
    3841                 :            : #line 1479 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3842                 :            :     {
    3843                 :            :                 (yyval.exval) = new AstExpression(EC_u_minus, (yyvsp[(2) - (2)].exval), NULL);
    3844                 :            :         }
    3845                 :            :     break;
    3846                 :            : 
    3847                 :            :   case 156:
    3848                 :            : 
    3849                 :            : /* Line 1806 of yacc.c  */
    3850                 :            : #line 1483 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3851                 :            :     {
    3852                 :            :         }
    3853                 :            :     break;
    3854                 :            : 
    3855                 :            :   case 157:
    3856                 :            : 
    3857                 :            : /* Line 1806 of yacc.c  */
    3858                 :            : #line 1489 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3859                 :            :     {
    3860                 :            :                 /*
    3861                 :            :                  * An expression which is a scoped name is not resolved now,
    3862                 :            :                  * but only when it is evaluated (such as when it is assigned
    3863                 :            :                  * as a constant value)
    3864                 :            :                  */
    3865                 :            :                 (yyval.exval) = new AstExpression((yyvsp[(1) - (1)].sval));
    3866                 :            :         }
    3867                 :            :     break;
    3868                 :            : 
    3869                 :            :   case 159:
    3870                 :            : 
    3871                 :            : /* Line 1806 of yacc.c  */
    3872                 :            : #line 1499 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3873                 :            :     {
    3874                 :            :                 (yyval.exval) = (yyvsp[(2) - (3)].exval);
    3875                 :            :         }
    3876                 :            :     break;
    3877                 :            : 
    3878                 :            :   case 160:
    3879                 :            : 
    3880                 :            : /* Line 1806 of yacc.c  */
    3881                 :            : #line 1506 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3882                 :            :     {
    3883                 :            :                 (yyval.exval) = new AstExpression((yyvsp[(1) - (1)].ival));
    3884                 :            :         }
    3885                 :            :     break;
    3886                 :            : 
    3887                 :            :   case 161:
    3888                 :            : 
    3889                 :            : /* Line 1806 of yacc.c  */
    3890                 :            : #line 1510 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3891                 :            :     {
    3892                 :            :         (yyval.exval) = new AstExpression((yyvsp[(1) - (1)].uval));
    3893                 :            :     }
    3894                 :            :     break;
    3895                 :            : 
    3896                 :            :   case 162:
    3897                 :            : 
    3898                 :            : /* Line 1806 of yacc.c  */
    3899                 :            : #line 1514 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3900                 :            :     {
    3901                 :            :                 (yyval.exval) = new AstExpression((yyvsp[(1) - (1)].dval));
    3902                 :            :         }
    3903                 :            :     break;
    3904                 :            : 
    3905                 :            :   case 163:
    3906                 :            : 
    3907                 :            : /* Line 1806 of yacc.c  */
    3908                 :            : #line 1518 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3909                 :            :     {
    3910                 :            :                 (yyval.exval) = new AstExpression((sal_Int32)1, ET_boolean);
    3911                 :            :         }
    3912                 :            :     break;
    3913                 :            : 
    3914                 :            :   case 164:
    3915                 :            : 
    3916                 :            : /* Line 1806 of yacc.c  */
    3917                 :            : #line 1522 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3918                 :            :     {
    3919                 :            :                 (yyval.exval) = new AstExpression((sal_Int32)0, ET_boolean);
    3920                 :            :         }
    3921                 :            :     break;
    3922                 :            : 
    3923                 :            :   case 165:
    3924                 :            : 
    3925                 :            : /* Line 1806 of yacc.c  */
    3926                 :            : #line 1529 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3927                 :            :     {
    3928                 :            :                 (yyvsp[(1) - (1)].exval)->evaluate(EK_const);
    3929                 :            :                 if ( !(yyvsp[(1) - (1)].exval)->coerce(ET_ulong) )
    3930                 :            :                 {
    3931                 :            :                         idlc()->error()->coercionError((yyvsp[(1) - (1)].exval), ET_ulong);
    3932                 :            :                         delete (yyvsp[(1) - (1)].exval);
    3933                 :            :                         (yyval.exval) = NULL;
    3934                 :            :                 }
    3935                 :            :         }
    3936                 :            :     break;
    3937                 :            : 
    3938                 :            :   case 171:
    3939                 :            : 
    3940                 :            : /* Line 1806 of yacc.c  */
    3941                 :            : #line 1547 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3942                 :            :     {
    3943                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    3944                 :            :         AstDeclaration const * type = 0;
    3945                 :            :                 
    3946                 :            :                 /*
    3947                 :            :                  * If the constant's type is a scoped name, it must resolve
    3948                 :            :                  * to a scalar constant type
    3949                 :            :                  */
    3950                 :            :                 if ( pScope && (type = pScope->lookupByName(*(yyvsp[(1) - (1)].sval))) ) {
    3951                 :            :             if (!idlc()->error()->checkPublished(type))
    3952                 :            :             {
    3953                 :            :                 type = 0;
    3954                 :            :             }
    3955                 :            :             else
    3956                 :            :             {
    3957                 :            :                 type = resolveTypedefs(type);
    3958                 :            :                 if (type->getNodeType() == NT_predefined) 
    3959                 :            :                 {
    3960                 :            :                     (yyval.etval) = static_cast< AstBaseType const * >(type)->
    3961                 :            :                         getExprType();
    3962                 :            :                 } else
    3963                 :            :                     (yyval.etval) = ET_any;
    3964                 :            :             }
    3965                 :            :                 } else
    3966                 :            :                         (yyval.etval) = ET_any;
    3967                 :            :         }
    3968                 :            :     break;
    3969                 :            : 
    3970                 :            :   case 172:
    3971                 :            : 
    3972                 :            : /* Line 1806 of yacc.c  */
    3973                 :            : #line 1577 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3974                 :            :     {
    3975                 :            :                 idlc()->setParseState(PS_ExceptSeen);
    3976                 :            :         }
    3977                 :            :     break;
    3978                 :            : 
    3979                 :            :   case 173:
    3980                 :            : 
    3981                 :            : /* Line 1806 of yacc.c  */
    3982                 :            : #line 1581 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3983                 :            :     {
    3984                 :            :         idlc()->setParseState(PS_ExceptIDSeen);
    3985                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    3986                 :            :         }
    3987                 :            :     break;
    3988                 :            : 
    3989                 :            :   case 174:
    3990                 :            : 
    3991                 :            : /* Line 1806 of yacc.c  */
    3992                 :            : #line 1586 "/usr/local/src/libreoffice/idlc/source/parser.y"
    3993                 :            :     {
    3994                 :            :                 idlc()->setParseState(PS_InheritSpecSeen);
    3995                 :            : 
    3996                 :            :                 (yyval.ihval) = new FeInheritanceHeader(NT_exception, (yyvsp[(3) - (5)].sval), (yyvsp[(5) - (5)].sval), 0);
    3997                 :            :                 delete (yyvsp[(5) - (5)].sval);
    3998                 :            :         }
    3999                 :            :     break;
    4000                 :            : 
    4001                 :            :   case 175:
    4002                 :            : 
    4003                 :            : /* Line 1806 of yacc.c  */
    4004                 :            : #line 1596 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4005                 :            :     {
    4006                 :            :                 idlc()->setParseState(PS_ExceptHeaderSeen);
    4007                 :            : 
    4008                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    4009                 :            :                 AstException*   pExcept = NULL;
    4010                 :            : 
    4011                 :            :                 if ( pScope )
    4012                 :            :                 {
    4013                 :            :                         AstException* pBase = static_cast< AstException* >(
    4014                 :            :                 (yyvsp[(1) - (1)].ihval)->getInherits());
    4015                 :            :                         pExcept = new AstException(*(yyvsp[(1) - (1)].ihval)->getName(), pBase, pScope);     
    4016                 :            :                         pScope->addDeclaration(pExcept);
    4017                 :            :                 }
    4018                 :            :                 /*
    4019                 :            :                  * Push the scope of the exception on the scopes stack
    4020                 :            :                  */
    4021                 :            :                 idlc()->scopes()->push(pExcept);
    4022                 :            :                 delete (yyvsp[(1) - (1)].ihval);
    4023                 :            :         }
    4024                 :            :     break;
    4025                 :            : 
    4026                 :            :   case 176:
    4027                 :            : 
    4028                 :            : /* Line 1806 of yacc.c  */
    4029                 :            : #line 1616 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4030                 :            :     {
    4031                 :            :                 idlc()->setParseState(PS_ExceptSqSeen);
    4032                 :            :         }
    4033                 :            :     break;
    4034                 :            : 
    4035                 :            :   case 177:
    4036                 :            : 
    4037                 :            : /* Line 1806 of yacc.c  */
    4038                 :            : #line 1620 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4039                 :            :     {
    4040                 :            :                 idlc()->setParseState(PS_ExceptBodySeen);
    4041                 :            :         }
    4042                 :            :     break;
    4043                 :            : 
    4044                 :            :   case 178:
    4045                 :            : 
    4046                 :            : /* Line 1806 of yacc.c  */
    4047                 :            : #line 1624 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4048                 :            :     {
    4049                 :            :                 idlc()->setParseState(PS_ExceptQsSeen);
    4050                 :            :                 /* this exception is finished, pop its scope from the stack */ 
    4051                 :            :                 idlc()->scopes()->pop();
    4052                 :            :         }
    4053                 :            :     break;
    4054                 :            : 
    4055                 :            :   case 179:
    4056                 :            : 
    4057                 :            : /* Line 1806 of yacc.c  */
    4058                 :            : #line 1634 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4059                 :            :     {
    4060                 :            :                 idlc()->setParseState(PS_PropertyTypeSeen);
    4061                 :            :         }
    4062                 :            :     break;
    4063                 :            : 
    4064                 :            :   case 180:
    4065                 :            : 
    4066                 :            : /* Line 1806 of yacc.c  */
    4067                 :            : #line 1638 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4068                 :            :     {
    4069                 :            :                 idlc()->setParseState(PS_PropertyCompleted);
    4070                 :            : 
    4071                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    4072                 :            :                 AstAttribute*   pAttr = NULL;
    4073                 :            :                 FeDeclList*             pList = (yyvsp[(4) - (4)].dlval);
    4074                 :            :                 FeDeclarator*   pDecl = NULL;
    4075                 :            :         AstType const * pType = NULL;
    4076                 :            : 
    4077                 :            :                 if ( pScope->getScopeNodeType() == NT_singleton )
    4078                 :            :                 {
    4079                 :            :                         idlc()->error()->error0(EIDL_ILLEGAL_ADD);                        
    4080                 :            :                 } else
    4081                 :            :                 {
    4082                 :            :                         if ( ((yyvsp[(1) - (4)].ulval) & AF_ATTRIBUTE) == AF_ATTRIBUTE )
    4083                 :            :                                 idlc()->error()->flagError(EIDL_WRONGATTRIBUTEKEYWORD, AF_ATTRIBUTE);
    4084                 :            : 
    4085                 :            :                         if ( ((yyvsp[(1) - (4)].ulval) & AF_PROPERTY) != AF_PROPERTY )
    4086                 :            :                                 idlc()->error()->flagError(EIDL_MISSINGATTRIBUTEKEYWORD, AF_PROPERTY);
    4087                 :            : 
    4088                 :            :                         /*
    4089                 :            :                          * Create nodes representing attributes and add them to the
    4090                 :            :                          * enclosing scope
    4091                 :            :                          */
    4092                 :            :                         if ( pScope && (yyvsp[(2) - (4)].cdclval) && pList )
    4093                 :            :                         {
    4094                 :            :                                 FeDeclList::iterator iter = pList->begin();
    4095                 :            :                                 FeDeclList::iterator end = pList->end();
    4096                 :            : 
    4097                 :            :                                 while (iter != end)
    4098                 :            :                                 {
    4099                 :            :                                         pDecl = (*iter);
    4100                 :            :                                         if ( !pDecl )
    4101                 :            :                                         {
    4102                 :            :                                                 iter++;
    4103                 :            :                                                 continue;
    4104                 :            :                                         }
    4105                 :            : 
    4106                 :            :                                         pType = pDecl->compose((yyvsp[(2) - (4)].cdclval));                          
    4107                 :            : 
    4108                 :            :                                         if ( !pType )
    4109                 :            :                                         {
    4110                 :            :                                                 iter++;
    4111                 :            :                                                 continue;
    4112                 :            :                                         }
    4113                 :            : 
    4114                 :            :                                         pAttr = new AstAttribute(NT_property, (yyvsp[(1) - (4)].ulval), pType, pDecl->getName(), pScope);
    4115                 :            : 
    4116                 :            :                                         pScope->addDeclaration(pAttr);
    4117                 :            :                                         iter++;
    4118                 :            :                                         delete pDecl;
    4119                 :            :                                 }
    4120                 :            :                         }
    4121                 :            :                 }                       
    4122                 :            : 
    4123                 :            :                 if ( pList )
    4124                 :            :                         delete pList;
    4125                 :            :         }
    4126                 :            :     break;
    4127                 :            : 
    4128                 :            :   case 181:
    4129                 :            : 
    4130                 :            : /* Line 1806 of yacc.c  */
    4131                 :            : #line 1697 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4132                 :            :     {
    4133                 :            :                 yyerror("property");
    4134                 :            :                 yyerrok;
    4135                 :            :         }
    4136                 :            :     break;
    4137                 :            : 
    4138                 :            :   case 184:
    4139                 :            : 
    4140                 :            : /* Line 1806 of yacc.c  */
    4141                 :            : #line 1712 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4142                 :            :     {
    4143                 :            :                 idlc()->setParseState(PS_ServiceMemberSeen);
    4144                 :            :                 
    4145                 :            :                 AstScope*                       pScope = idlc()->scopes()->topNonNull();
    4146                 :            :                 AstDeclaration*         pDecl = NULL;
    4147                 :            :                 AstInterfaceMember* pIMember = NULL;
    4148                 :            : 
    4149                 :            :                 if ( pScope->getScopeNodeType() == NT_singleton )
    4150                 :            :                 {
    4151                 :            :                         idlc()->error()->error0(EIDL_ILLEGAL_ADD);                        
    4152                 :            :                 } else
    4153                 :            :                 {
    4154                 :            :                         /*
    4155                 :            :                          * Create a node representing a class member.
    4156                 :            :                          * Store it in the enclosing scope
    4157                 :            :                  */
    4158                 :            :                         if ( pScope && (yyvsp[(2) - (3)].slval) )
    4159                 :            :                         {
    4160                 :            :                                 StringList::iterator iter = (yyvsp[(2) - (3)].slval)->begin();
    4161                 :            :                                 StringList::iterator end = (yyvsp[(2) - (3)].slval)->end();                                          
    4162                 :            : 
    4163                 :            :                                 while ( iter != end )
    4164                 :            :                                 {
    4165                 :            :                                         pDecl = pScope->lookupByName(*iter);
    4166                 :            :                                         if ( pDecl && (pDecl->getNodeType() == NT_interface) )
    4167                 :            :                                         {
    4168                 :            :                         /* we relax the strict published check and allow to add new
    4169                 :            :                          * interfaces if they are optional
    4170                 :            :                          */
    4171                 :            :                         bool bOptional = (((yyvsp[(1) - (3)].ulval) & AF_OPTIONAL) == AF_OPTIONAL);
    4172                 :            :                         if ( idlc()->error()->checkPublished(pDecl, bOptional) )
    4173                 :            :                         {
    4174                 :            :                             pIMember = new AstInterfaceMember(
    4175                 :            :                                 (yyvsp[(1) - (3)].ulval), (AstInterface*)pDecl, *iter, pScope);
    4176                 :            :                             pScope->addDeclaration(pIMember);
    4177                 :            :                         }
    4178                 :            :                                         } else
    4179                 :            :                                         {
    4180                 :            :                                                 idlc()->error()->
    4181                 :            :                                                         lookupError(EIDL_INTERFACEMEMBER_LOOKUP, *iter, scopeAsDecl(pScope));
    4182                 :            :                                         }
    4183                 :            :                                         iter++;
    4184                 :            :                                 }
    4185                 :            :                         }                               
    4186                 :            :                 }
    4187                 :            :                 delete (yyvsp[(2) - (3)].slval);
    4188                 :            :         }
    4189                 :            :     break;
    4190                 :            : 
    4191                 :            :   case 185:
    4192                 :            : 
    4193                 :            : /* Line 1806 of yacc.c  */
    4194                 :            : #line 1762 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4195                 :            :     {
    4196                 :            :                 idlc()->setParseState(PS_ServiceMemberSeen);
    4197                 :            : 
    4198                 :            :                 AstScope*                 pScope = idlc()->scopes()->topNonNull();
    4199                 :            :                 AstDeclaration*   pDecl = NULL;
    4200                 :            :                 AstServiceMember* pSMember = NULL;
    4201                 :            : 
    4202                 :            :                 /*
    4203                 :            :                  * Create a node representing a class member.
    4204                 :            :                  * Store it in the enclosing scope
    4205                 :            :          */
    4206                 :            :                 if ( pScope && (yyvsp[(2) - (3)].slval) )
    4207                 :            :                 {
    4208                 :            :                         StringList::iterator iter = (yyvsp[(2) - (3)].slval)->begin();
    4209                 :            :                         StringList::iterator end = (yyvsp[(2) - (3)].slval)->end();                                          
    4210                 :            : 
    4211                 :            :                         while ( iter != end )
    4212                 :            :                         {
    4213                 :            :                                 pDecl = pScope->lookupByName(*iter);
    4214                 :            :                                 if ( pDecl && (pDecl->getNodeType() == NT_service) )
    4215                 :            :                                 {
    4216                 :            :                                         if ( pScope->getScopeNodeType() == NT_singleton && pScope->nMembers() > 0 )
    4217                 :            :                                                 idlc()->error()->error0(EIDL_ILLEGAL_ADD);                                                                                
    4218                 :            :                     else if ( idlc()->error()->checkPublished(pDecl) )
    4219                 :            :                     {
    4220                 :            :                         pSMember = new AstServiceMember(
    4221                 :            :                             (yyvsp[(1) - (3)].ulval), (AstService*)pDecl, *iter, pScope);
    4222                 :            :                         pScope->addDeclaration(pSMember);
    4223                 :            :                     }
    4224                 :            :                                 } else
    4225                 :            :                                 {
    4226                 :            :                                         idlc()->error()->
    4227                 :            :                                                 lookupError(EIDL_SERVICEMEMBER_LOOKUP, *iter, scopeAsDecl(pScope));
    4228                 :            :                                 }
    4229                 :            :                                 iter++;
    4230                 :            :                         }
    4231                 :            :                 }                               
    4232                 :            :                 delete (yyvsp[(2) - (3)].slval);
    4233                 :            :         }
    4234                 :            :     break;
    4235                 :            : 
    4236                 :            :   case 186:
    4237                 :            : 
    4238                 :            : /* Line 1806 of yacc.c  */
    4239                 :            : #line 1804 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4240                 :            :     {
    4241                 :            :                 idlc()->setParseState(PS_ServiceMemberSeen);
    4242                 :            : 
    4243                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    4244                 :            :                 AstDeclaration* pDecl = NULL;
    4245                 :            :                 AstObserves*    pObserves = NULL;
    4246                 :            : 
    4247                 :            :                 if ( pScope->getScopeNodeType() == NT_singleton )
    4248                 :            :                 {
    4249                 :            :                         idlc()->error()->error0(EIDL_ILLEGAL_ADD);                        
    4250                 :            :                 } else
    4251                 :            :                 {
    4252                 :            :                         /*
    4253                 :            :                          * Create a node representing a class member.
    4254                 :            :                          * Store it in the enclosing scope
    4255                 :            :                  */
    4256                 :            :                         if ( pScope && (yyvsp[(2) - (3)].slval) )
    4257                 :            :                         {
    4258                 :            :                                 StringList::iterator iter = (yyvsp[(2) - (3)].slval)->begin();
    4259                 :            :                                 StringList::iterator end = (yyvsp[(2) - (3)].slval)->end();                                          
    4260                 :            : 
    4261                 :            :                                 while ( iter != end )
    4262                 :            :                                 {
    4263                 :            :                                         pDecl = pScope->lookupByName(*iter);
    4264                 :            :                                         if ( pDecl && (pDecl->getNodeType() == NT_interface) )
    4265                 :            :                                         {
    4266                 :            :                                                 pObserves = new AstObserves((AstInterface*)pDecl, *iter, pScope);
    4267                 :            :                                                 pScope->addDeclaration(pObserves);
    4268                 :            :                                         } else
    4269                 :            :                                         {
    4270                 :            :                                                 idlc()->error()->
    4271                 :            :                                                         lookupError(EIDL_INTERFACEMEMBER_LOOKUP, *iter, scopeAsDecl(pScope));
    4272                 :            :                                         }
    4273                 :            :                                         iter++;
    4274                 :            :                                 }
    4275                 :            :                         }                               
    4276                 :            :                 }
    4277                 :            :                 delete (yyvsp[(2) - (3)].slval);
    4278                 :            :         }
    4279                 :            :     break;
    4280                 :            : 
    4281                 :            :   case 187:
    4282                 :            : 
    4283                 :            : /* Line 1806 of yacc.c  */
    4284                 :            : #line 1846 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4285                 :            :     {
    4286                 :            :                 idlc()->setParseState(PS_ServiceMemberSeen);
    4287                 :            : 
    4288                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    4289                 :            :                 AstDeclaration* pDecl = NULL;
    4290                 :            :                 AstNeeds*               pNeeds = NULL;
    4291                 :            : 
    4292                 :            :                 if ( pScope->getScopeNodeType() == NT_singleton )
    4293                 :            :                 {
    4294                 :            :                         idlc()->error()->error0(EIDL_ILLEGAL_ADD);                        
    4295                 :            :                 } else
    4296                 :            :                 {
    4297                 :            :                         /*
    4298                 :            :                          * Create a node representing a class member.
    4299                 :            :                          * Store it in the enclosing scope
    4300                 :            :                  */
    4301                 :            :                         if ( pScope && (yyvsp[(2) - (3)].slval) )
    4302                 :            :                         {
    4303                 :            :                                 StringList::iterator iter = (yyvsp[(2) - (3)].slval)->begin();
    4304                 :            :                                 StringList::iterator end = (yyvsp[(2) - (3)].slval)->end();                                          
    4305                 :            : 
    4306                 :            :                                 while ( iter != end )
    4307                 :            :                                 {
    4308                 :            :                                         pDecl = pScope->lookupByName(*iter);
    4309                 :            :                                         if ( pDecl && (pDecl->getNodeType() == NT_service) )
    4310                 :            :                                         {
    4311                 :            :                                                 pNeeds = new AstNeeds((AstService*)pDecl, *iter, pScope);
    4312                 :            :                                                 pScope->addDeclaration(pNeeds);
    4313                 :            :                                         } else
    4314                 :            :                                         {
    4315                 :            :                                                 idlc()->error()->
    4316                 :            :                                                         lookupError(EIDL_SERVICEMEMBER_LOOKUP, *iter, scopeAsDecl(pScope));
    4317                 :            :                                         }
    4318                 :            :                                         iter++;
    4319                 :            :                                 }
    4320                 :            :                         }                               
    4321                 :            :                 }
    4322                 :            :                 delete (yyvsp[(2) - (3)].slval);
    4323                 :            :         }
    4324                 :            :     break;
    4325                 :            : 
    4326                 :            :   case 188:
    4327                 :            : 
    4328                 :            : /* Line 1806 of yacc.c  */
    4329                 :            : #line 1887 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4330                 :            :     {
    4331                 :            :                 idlc()->setParseState(PS_PropertyDeclSeen);
    4332                 :            :         }
    4333                 :            :     break;
    4334                 :            : 
    4335                 :            :   case 189:
    4336                 :            : 
    4337                 :            : /* Line 1806 of yacc.c  */
    4338                 :            : #line 1894 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4339                 :            :     {
    4340                 :            :                 idlc()->setParseState(PS_ServiceIFHeadSeen);
    4341                 :            :                 (yyval.ulval) = AF_INVALID;
    4342                 :            :         }
    4343                 :            :     break;
    4344                 :            : 
    4345                 :            :   case 190:
    4346                 :            : 
    4347                 :            : /* Line 1806 of yacc.c  */
    4348                 :            : #line 1900 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4349                 :            :     {
    4350                 :            :                 idlc()->setParseState(PS_ServiceIFHeadSeen);
    4351                 :            :                 if ( (AF_OPTIONAL != (yyvsp[(1) - (2)].ulval)) && ( AF_INVALID != (yyvsp[(1) - (2)].ulval)) )
    4352                 :            :                         idlc()->error()->flagError(EIDL_OPTIONALEXPECTED, (yyvsp[(1) - (2)].ulval));
    4353                 :            :                 (yyval.ulval) = (yyvsp[(1) - (2)].ulval);
    4354                 :            :         }
    4355                 :            :     break;
    4356                 :            : 
    4357                 :            :   case 191:
    4358                 :            : 
    4359                 :            : /* Line 1806 of yacc.c  */
    4360                 :            : #line 1910 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4361                 :            :     {
    4362                 :            :                 idlc()->setParseState(PS_ServiceSHeadSeen);
    4363                 :            :                 (yyval.ulval) = AF_INVALID;
    4364                 :            :         }
    4365                 :            :     break;
    4366                 :            : 
    4367                 :            :   case 192:
    4368                 :            : 
    4369                 :            : /* Line 1806 of yacc.c  */
    4370                 :            : #line 1916 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4371                 :            :     {
    4372                 :            :                 idlc()->setParseState(PS_ServiceSHeadSeen);
    4373                 :            :                 if ( (AF_OPTIONAL != (yyvsp[(1) - (2)].ulval)) && ( AF_INVALID != (yyvsp[(1) - (2)].ulval)) )
    4374                 :            :                         idlc()->error()->flagError(EIDL_OPTIONALEXPECTED, (yyvsp[(1) - (2)].ulval));
    4375                 :            :                 (yyval.ulval) = (yyvsp[(1) - (2)].ulval);
    4376                 :            :         }
    4377                 :            :     break;
    4378                 :            : 
    4379                 :            :   case 193:
    4380                 :            : 
    4381                 :            : /* Line 1806 of yacc.c  */
    4382                 :            : #line 1926 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4383                 :            :     {
    4384                 :            :                 idlc()->setParseState(PS_ServiceSeen);
    4385                 :            :         }
    4386                 :            :     break;
    4387                 :            : 
    4388                 :            :   case 194:
    4389                 :            : 
    4390                 :            : /* Line 1806 of yacc.c  */
    4391                 :            : #line 1930 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4392                 :            :     {
    4393                 :            :         idlc()->setParseState(PS_ServiceIDSeen);
    4394                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    4395                 :            : 
    4396                 :            :         AstScope*       pScope = idlc()->scopes()->topNonNull();
    4397                 :            :         AstService*     pService = NULL;
    4398                 :            : 
    4399                 :            :         /*
    4400                 :            :          * Make a new service and add it to the enclosing scope
    4401                 :            :          */
    4402                 :            :         if (pScope != NULL)
    4403                 :            :         {
    4404                 :            :             pService = new AstService(*(yyvsp[(3) - (3)].sval), pScope);
    4405                 :            :             pScope->addDeclaration(pService);
    4406                 :            :         }
    4407                 :            :         delete (yyvsp[(3) - (3)].sval);
    4408                 :            :         /*
    4409                 :            :          * Push it on the stack
    4410                 :            :          */
    4411                 :            :         idlc()->scopes()->push(pService);
    4412                 :            :         }
    4413                 :            :     break;
    4414                 :            : 
    4415                 :            :   case 195:
    4416                 :            : 
    4417                 :            : /* Line 1806 of yacc.c  */
    4418                 :            : #line 1952 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4419                 :            :     {
    4420                 :            :                 /* this service is finished, pop its scope from the stack */ 
    4421                 :            :                 idlc()->scopes()->pop();
    4422                 :            :         }
    4423                 :            :     break;
    4424                 :            : 
    4425                 :            :   case 198:
    4426                 :            : 
    4427                 :            : /* Line 1806 of yacc.c  */
    4428                 :            : #line 1965 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4429                 :            :     {
    4430                 :            :         AstScope * scope = idlc()->scopes()->nextToTop();
    4431                 :            :             // skip the scope pushed by service_dcl
    4432                 :            :         AstDeclaration * decl = scope->lookupByName(*(yyvsp[(2) - (2)].sval));
    4433                 :            :         if (decl != 0 && resolveTypedefs(decl)->getNodeType() == NT_interface) {
    4434                 :            :             if (idlc()->error()->checkPublished(decl)) {
    4435                 :            :                 idlc()->scopes()->top()->addDeclaration(decl);
    4436                 :            :             }
    4437                 :            :         } else {
    4438                 :            :             idlc()->error()->lookupError(
    4439                 :            :                 EIDL_INTERFACEMEMBER_LOOKUP, *(yyvsp[(2) - (2)].sval), scopeAsDecl(scope));
    4440                 :            :         }
    4441                 :            :         delete (yyvsp[(2) - (2)].sval);
    4442                 :            :     }
    4443                 :            :     break;
    4444                 :            : 
    4445                 :            :   case 199:
    4446                 :            : 
    4447                 :            : /* Line 1806 of yacc.c  */
    4448                 :            : #line 1980 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4449                 :            :     {
    4450                 :            :         AstService * s = static_cast< AstService * >(idlc()->scopes()->top());
    4451                 :            :         if (s != 0) {
    4452                 :            :             s->setDefaultConstructor(!(yyvsp[(4) - (4)].bval));
    4453                 :            :         }
    4454                 :            :     }
    4455                 :            :     break;
    4456                 :            : 
    4457                 :            :   case 200:
    4458                 :            : 
    4459                 :            : /* Line 1806 of yacc.c  */
    4460                 :            : #line 1989 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4461                 :            :     { (yyval.bval) = true; }
    4462                 :            :     break;
    4463                 :            : 
    4464                 :            :   case 201:
    4465                 :            : 
    4466                 :            : /* Line 1806 of yacc.c  */
    4467                 :            : #line 1990 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4468                 :            :     { (yyval.bval) = false; }
    4469                 :            :     break;
    4470                 :            : 
    4471                 :            :   case 205:
    4472                 :            : 
    4473                 :            : /* Line 1806 of yacc.c  */
    4474                 :            : #line 2006 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4475                 :            :     {
    4476                 :            :         checkIdentifier((yyvsp[(1) - (1)].sval));
    4477                 :            :         AstScope * scope = idlc()->scopes()->top();
    4478                 :            :         AstOperation * ctor = new AstOperation(OP_NONE, 0, *(yyvsp[(1) - (1)].sval), scope);
    4479                 :            :         delete (yyvsp[(1) - (1)].sval);
    4480                 :            :         scope->addDeclaration(ctor);
    4481                 :            :                 idlc()->scopes()->push(ctor);
    4482                 :            :     }
    4483                 :            :     break;
    4484                 :            : 
    4485                 :            :   case 206:
    4486                 :            : 
    4487                 :            : /* Line 1806 of yacc.c  */
    4488                 :            : #line 2018 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4489                 :            :     {
    4490                 :            :         static_cast< AstOperation * >(idlc()->scopes()->top())->setExceptions(
    4491                 :            :             (yyvsp[(6) - (6)].dclsval));
    4492                 :            :         delete (yyvsp[(6) - (6)].dclsval);
    4493                 :            :         idlc()->scopes()->pop();
    4494                 :            :         if (static_cast< AstService * >(idlc()->scopes()->top())->
    4495                 :            :             checkLastConstructor())
    4496                 :            :         {
    4497                 :            :             idlc()->error()->error0(EIDL_SIMILAR_CONSTRUCTORS);
    4498                 :            :         }
    4499                 :            :     }
    4500                 :            :     break;
    4501                 :            : 
    4502                 :            :   case 208:
    4503                 :            : 
    4504                 :            : /* Line 1806 of yacc.c  */
    4505                 :            : #line 2034 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4506                 :            :     {
    4507                 :            :                 idlc()->setParseState(PS_SingletonSeen);
    4508                 :            :         }
    4509                 :            :     break;
    4510                 :            : 
    4511                 :            :   case 209:
    4512                 :            : 
    4513                 :            : /* Line 1806 of yacc.c  */
    4514                 :            : #line 2038 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4515                 :            :     {
    4516                 :            :         idlc()->setParseState(PS_SingletonIDSeen);
    4517                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    4518                 :            : 
    4519                 :            :                 AstScope*       pScope = idlc()->scopes()->topNonNull();
    4520                 :            :                 AstService*     pService = NULL;
    4521                 :            :                 
    4522                 :            :                 /*
    4523                 :            :                  * Make a new service and add it to the enclosing scope
    4524                 :            :                  */
    4525                 :            :                 if (pScope != NULL) 
    4526                 :            :                 {
    4527                 :            :                         pService = new AstService(NT_singleton, *(yyvsp[(3) - (3)].sval), pScope);
    4528                 :            :                         pScope->addDeclaration(pService);
    4529                 :            :                 }
    4530                 :            :                 delete (yyvsp[(3) - (3)].sval);
    4531                 :            :                 /*
    4532                 :            :                  * Push it on the stack
    4533                 :            :                  */
    4534                 :            :                 idlc()->scopes()->push(pService);
    4535                 :            :         }
    4536                 :            :     break;
    4537                 :            : 
    4538                 :            :   case 210:
    4539                 :            : 
    4540                 :            : /* Line 1806 of yacc.c  */
    4541                 :            : #line 2060 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4542                 :            :     {
    4543                 :            :                 /* this singelton is finished, pop its scope from the stack */ 
    4544                 :            :                 idlc()->scopes()->pop();
    4545                 :            :         }
    4546                 :            :     break;
    4547                 :            : 
    4548                 :            :   case 213:
    4549                 :            : 
    4550                 :            : /* Line 1806 of yacc.c  */
    4551                 :            : #line 2073 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4552                 :            :     {
    4553                 :            :         AstScope * scope = idlc()->scopes()->nextToTop();
    4554                 :            :             // skip the scope (needlessly) pushed by singleton_dcl
    4555                 :            :         AstDeclaration * decl = scope->lookupByName(*(yyvsp[(2) - (2)].sval));
    4556                 :            :         if (decl != 0 && resolveTypedefs(decl)->getNodeType() == NT_interface) {
    4557                 :            :             if (idlc()->error()->checkPublished(decl)) {
    4558                 :            :                 idlc()->scopes()->top()->addDeclaration(decl);
    4559                 :            :             }
    4560                 :            :         } else {
    4561                 :            :             idlc()->error()->lookupError(
    4562                 :            :                 EIDL_INTERFACEMEMBER_LOOKUP, *(yyvsp[(2) - (2)].sval), scopeAsDecl(scope));
    4563                 :            :         }
    4564                 :            :         delete (yyvsp[(2) - (2)].sval);
    4565                 :            :     }
    4566                 :            :     break;
    4567                 :            : 
    4568                 :            :   case 214:
    4569                 :            : 
    4570                 :            : /* Line 1806 of yacc.c  */
    4571                 :            : #line 2091 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4572                 :            :     {
    4573                 :            :         idlc()->setParseState(
    4574                 :            :             idlc()->scopes()->top()->getScopeNodeType() == NT_service
    4575                 :            :             ? PS_ServiceSqSeen : PS_SingletonSqSeen);
    4576                 :            :     }
    4577                 :            :     break;
    4578                 :            : 
    4579                 :            :   case 215:
    4580                 :            : 
    4581                 :            : /* Line 1806 of yacc.c  */
    4582                 :            : #line 2097 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4583                 :            :     {
    4584                 :            :         idlc()->setParseState(
    4585                 :            :             idlc()->scopes()->top()->getScopeNodeType() == NT_service
    4586                 :            :             ? PS_ServiceBodySeen : PS_SingletonBodySeen);
    4587                 :            :     }
    4588                 :            :     break;
    4589                 :            : 
    4590                 :            :   case 216:
    4591                 :            : 
    4592                 :            : /* Line 1806 of yacc.c  */
    4593                 :            : #line 2103 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4594                 :            :     {
    4595                 :            :         idlc()->setParseState(
    4596                 :            :             idlc()->scopes()->top()->getScopeNodeType() == NT_service
    4597                 :            :             ? PS_ServiceQsSeen : PS_SingletonQsSeen);
    4598                 :            :     }
    4599                 :            :     break;
    4600                 :            : 
    4601                 :            :   case 217:
    4602                 :            : 
    4603                 :            : /* Line 1806 of yacc.c  */
    4604                 :            : #line 2112 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4605                 :            :     {
    4606                 :            :                 idlc()->setParseState(PS_TypedefSeen);
    4607                 :            :         }
    4608                 :            :     break;
    4609                 :            : 
    4610                 :            :   case 218:
    4611                 :            : 
    4612                 :            : /* Line 1806 of yacc.c  */
    4613                 :            : #line 2115 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4614                 :            :     {}
    4615                 :            :     break;
    4616                 :            : 
    4617                 :            :   case 219:
    4618                 :            : 
    4619                 :            : /* Line 1806 of yacc.c  */
    4620                 :            : #line 2116 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4621                 :            :     {}
    4622                 :            :     break;
    4623                 :            : 
    4624                 :            :   case 220:
    4625                 :            : 
    4626                 :            : /* Line 1806 of yacc.c  */
    4627                 :            : #line 2117 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4628                 :            :     {}
    4629                 :            :     break;
    4630                 :            : 
    4631                 :            :   case 221:
    4632                 :            : 
    4633                 :            : /* Line 1806 of yacc.c  */
    4634                 :            : #line 2118 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4635                 :            :     {}
    4636                 :            :     break;
    4637                 :            : 
    4638                 :            :   case 222:
    4639                 :            : 
    4640                 :            : /* Line 1806 of yacc.c  */
    4641                 :            : #line 2123 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4642                 :            :     {
    4643                 :            :                 idlc()->setParseState(PS_TypeSpecSeen);
    4644                 :            :         if ((yyvsp[(1) - (1)].cdclval) != 0 && (yyvsp[(1) - (1)].cdclval)->getNodeType() == NT_instantiated_struct) {
    4645                 :            :             idlc()->error()->error0(EIDL_INSTANTIATED_STRUCT_TYPE_TYPEDEF);
    4646                 :            :         }
    4647                 :            :         }
    4648                 :            :     break;
    4649                 :            : 
    4650                 :            :   case 223:
    4651                 :            : 
    4652                 :            : /* Line 1806 of yacc.c  */
    4653                 :            : #line 2130 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4654                 :            :     {
    4655                 :            :                 idlc()->setParseState(PS_DeclaratorsSeen);
    4656                 :            : 
    4657                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    4658                 :            :                 AstTypeDef*     pTypeDef = NULL;
    4659                 :            :                 FeDeclList*             pList = (yyvsp[(3) - (3)].dlval);
    4660                 :            :                 FeDeclarator*   pDecl = NULL;
    4661                 :            :         AstType const * pType = NULL;
    4662                 :            : 
    4663                 :            :                 /*
    4664                 :            :                  * Create nodes representing typedefs and add them to the
    4665                 :            :                  * enclosing scope
    4666                 :            :                  */
    4667                 :            :                 if ( pScope && (yyvsp[(1) - (3)].cdclval) && pList )
    4668                 :            :                 {
    4669                 :            :                         FeDeclList::iterator iter = pList->begin();
    4670                 :            :                         FeDeclList::iterator end = pList->end();
    4671                 :            : 
    4672                 :            :                         while (iter != end)
    4673                 :            :                         {
    4674                 :            :                                 pDecl = (*iter);
    4675                 :            :                                 if ( !pDecl )
    4676                 :            :                                 {
    4677                 :            :                                         iter++;
    4678                 :            :                                         continue;
    4679                 :            :                                 }
    4680                 :            : 
    4681                 :            :                                 pType = pDecl->compose((yyvsp[(1) - (3)].cdclval));
    4682                 :            : 
    4683                 :            :                                 if ( !pType )
    4684                 :            :                                 {
    4685                 :            :                                         iter++;
    4686                 :            :                                         continue;
    4687                 :            :                                 }
    4688                 :            : 
    4689                 :            :                                 pTypeDef = new AstTypeDef(pType, pDecl->getName(), pScope);
    4690                 :            : 
    4691                 :            :                                 pScope->addDeclaration(pTypeDef);
    4692                 :            :                                 iter++;
    4693                 :            :                                 delete pDecl;
    4694                 :            :                         }
    4695                 :            :                         delete pList;
    4696                 :            :                 }
    4697                 :            :         }
    4698                 :            :     break;
    4699                 :            : 
    4700                 :            :   case 224:
    4701                 :            : 
    4702                 :            : /* Line 1806 of yacc.c  */
    4703                 :            : #line 2178 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4704                 :            :     {
    4705                 :            :                 if ( (yyvsp[(2) - (2)].dlval) )
    4706                 :            :                 {
    4707                 :            :                         (yyvsp[(2) - (2)].dlval)->push_back((yyvsp[(1) - (2)].fdval));
    4708                 :            :                         (yyval.dlval) = (yyvsp[(2) - (2)].dlval);
    4709                 :            :                 } else
    4710                 :            :                 {
    4711                 :            :                         FeDeclList* pList = new FeDeclList();
    4712                 :            :                         pList->push_back((yyvsp[(1) - (2)].fdval));
    4713                 :            :                         (yyval.dlval) = pList;
    4714                 :            :                 }
    4715                 :            :         }
    4716                 :            :     break;
    4717                 :            : 
    4718                 :            :   case 225:
    4719                 :            : 
    4720                 :            : /* Line 1806 of yacc.c  */
    4721                 :            : #line 2195 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4722                 :            :     {
    4723                 :            :                 idlc()->setParseState(PS_DeclsCommaSeen);
    4724                 :            :         }
    4725                 :            :     break;
    4726                 :            : 
    4727                 :            :   case 226:
    4728                 :            : 
    4729                 :            : /* Line 1806 of yacc.c  */
    4730                 :            : #line 2199 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4731                 :            :     {
    4732                 :            :                 idlc()->setParseState(PS_DeclsDeclSeen);
    4733                 :            :                 if ( (yyvsp[(1) - (4)].dlval) )
    4734                 :            :                 {
    4735                 :            :                         (yyvsp[(1) - (4)].dlval)->push_back((yyvsp[(4) - (4)].fdval));
    4736                 :            :                         (yyval.dlval) = (yyvsp[(1) - (4)].dlval);
    4737                 :            :                 } else
    4738                 :            :                 {
    4739                 :            :                         FeDeclList* pList = new FeDeclList();
    4740                 :            :                         pList->push_back((yyvsp[(4) - (4)].fdval));
    4741                 :            :                         (yyval.dlval) = pList;
    4742                 :            :                 }
    4743                 :            :         }
    4744                 :            :     break;
    4745                 :            : 
    4746                 :            :   case 227:
    4747                 :            : 
    4748                 :            : /* Line 1806 of yacc.c  */
    4749                 :            : #line 2213 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4750                 :            :     {
    4751                 :            :                 (yyval.dlval) = NULL;
    4752                 :            :         }
    4753                 :            :     break;
    4754                 :            : 
    4755                 :            :   case 230:
    4756                 :            : 
    4757                 :            : /* Line 1806 of yacc.c  */
    4758                 :            : #line 2225 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4759                 :            :     {
    4760                 :            :         // For historic reasons, the struct com.sun.star.uno.Uik contains
    4761                 :            :         // members with illegal names (of the form "m_DataN"); avoid useless
    4762                 :            :         // warnings about them:
    4763                 :            :         AstScope * scope = idlc()->scopes()->top();
    4764                 :            :         if (scope == 0 || scope->getScopeNodeType() != NT_struct
    4765                 :            :             || (scopeAsDecl(scope)->getScopedName()
    4766                 :            :                 != "com::sun::star::uno::Uik"))
    4767                 :            :         {
    4768                 :            :             checkIdentifier((yyvsp[(1) - (1)].sval));
    4769                 :            :         }
    4770                 :            : 
    4771                 :            :         (yyval.fdval) = new FeDeclarator(*(yyvsp[(1) - (1)].sval), FeDeclarator::FD_simple, NULL);
    4772                 :            :         delete (yyvsp[(1) - (1)].sval);
    4773                 :            :         }
    4774                 :            :     break;
    4775                 :            : 
    4776                 :            :   case 231:
    4777                 :            : 
    4778                 :            : /* Line 1806 of yacc.c  */
    4779                 :            : #line 2244 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4780                 :            :     {
    4781                 :            :                 (yyval.fdval) = new FeDeclarator((yyvsp[(1) - (1)].dclval)->getLocalName(), FeDeclarator::FD_complex, (yyvsp[(1) - (1)].dclval));
    4782                 :            :         }
    4783                 :            :     break;
    4784                 :            : 
    4785                 :            :   case 232:
    4786                 :            : 
    4787                 :            : /* Line 1806 of yacc.c  */
    4788                 :            : #line 2251 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4789                 :            :     {
    4790                 :            :         idlc()->setParseState(PS_ArrayIDSeen);
    4791                 :            :         checkIdentifier((yyvsp[(1) - (1)].sval));
    4792                 :            :         }
    4793                 :            :     break;
    4794                 :            : 
    4795                 :            :   case 233:
    4796                 :            : 
    4797                 :            : /* Line 1806 of yacc.c  */
    4798                 :            : #line 2256 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4799                 :            :     {
    4800                 :            :                 idlc()->setParseState(PS_ArrayCompleted);
    4801                 :            :                 (yyval.dclval) = new AstArray(*(yyvsp[(1) - (3)].sval), NULL, *(yyvsp[(3) - (3)].exlval), idlc()->scopes()->bottom());
    4802                 :            :                 delete (yyvsp[(1) - (3)].sval);
    4803                 :            :         }
    4804                 :            :     break;
    4805                 :            : 
    4806                 :            :   case 234:
    4807                 :            : 
    4808                 :            : /* Line 1806 of yacc.c  */
    4809                 :            : #line 2265 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4810                 :            :     {
    4811                 :            :                 if( (yyvsp[(2) - (2)].exlval) )
    4812                 :            :                 {
    4813                 :            :                         (yyvsp[(2) - (2)].exlval)->push_front((yyvsp[(1) - (2)].exval));
    4814                 :            :                         (yyval.exlval) = (yyvsp[(2) - (2)].exlval);
    4815                 :            :                 } else
    4816                 :            :                 {
    4817                 :            :                         ExprList* pList = new ExprList();
    4818                 :            :                         pList->push_back((yyvsp[(1) - (2)].exval));
    4819                 :            :                         (yyval.exlval) = pList;
    4820                 :            :                 }
    4821                 :            :         }
    4822                 :            :     break;
    4823                 :            : 
    4824                 :            :   case 235:
    4825                 :            : 
    4826                 :            : /* Line 1806 of yacc.c  */
    4827                 :            : #line 2281 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4828                 :            :     {
    4829                 :            :                 if( (yyvsp[(1) - (2)].exlval) )
    4830                 :            :                 {
    4831                 :            :                         (yyvsp[(1) - (2)].exlval)->push_back((yyvsp[(2) - (2)].exval));
    4832                 :            :                         (yyval.exlval) = (yyvsp[(1) - (2)].exlval);
    4833                 :            :                 } else
    4834                 :            :                 {
    4835                 :            :                         ExprList* pList = new ExprList();
    4836                 :            :                         pList->push_back((yyvsp[(2) - (2)].exval));
    4837                 :            :                         (yyval.exlval) = pList;
    4838                 :            :                 }
    4839                 :            :         }
    4840                 :            :     break;
    4841                 :            : 
    4842                 :            :   case 236:
    4843                 :            : 
    4844                 :            : /* Line 1806 of yacc.c  */
    4845                 :            : #line 2294 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4846                 :            :     {
    4847                 :            :                 (yyval.exlval) = NULL;
    4848                 :            :         }
    4849                 :            :     break;
    4850                 :            : 
    4851                 :            :   case 237:
    4852                 :            : 
    4853                 :            : /* Line 1806 of yacc.c  */
    4854                 :            : #line 2301 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4855                 :            :     {
    4856                 :            :                 idlc()->setParseState(PS_DimSqSeen);
    4857                 :            :         }
    4858                 :            :     break;
    4859                 :            : 
    4860                 :            :   case 238:
    4861                 :            : 
    4862                 :            : /* Line 1806 of yacc.c  */
    4863                 :            : #line 2305 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4864                 :            :     {
    4865                 :            :                 idlc()->setParseState(PS_DimExprSeen);
    4866                 :            :         }
    4867                 :            :     break;
    4868                 :            : 
    4869                 :            :   case 239:
    4870                 :            : 
    4871                 :            : /* Line 1806 of yacc.c  */
    4872                 :            : #line 2309 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4873                 :            :     {
    4874                 :            :                 idlc()->setParseState(PS_DimQsSeen);
    4875                 :            :                 /*
    4876                 :            :                  * Array dimensions are expressions which must be coerced to
    4877                 :            :                  * positive integers
    4878                 :            :                  */
    4879                 :            :                 if ( !(yyvsp[(3) - (5)].exval) || !(yyvsp[(3) - (5)].exval)->coerce(ET_uhyper) ) 
    4880                 :            :                 {
    4881                 :            :                         idlc()->error()->coercionError((yyvsp[(3) - (5)].exval), ET_uhyper);
    4882                 :            :                         (yyval.exval) = NULL;
    4883                 :            :                 } else
    4884                 :            :                         (yyval.exval) = (yyvsp[(3) - (5)].exval);
    4885                 :            :         }
    4886                 :            :     break;
    4887                 :            : 
    4888                 :            :   case 240:
    4889                 :            : 
    4890                 :            : /* Line 1806 of yacc.c  */
    4891                 :            : #line 2326 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4892                 :            :     {
    4893                 :            :                 if ((yyvsp[(2) - (2)].slval))
    4894                 :            :                 {
    4895                 :            :                         (yyvsp[(2) - (2)].slval)->push_front(*(yyvsp[(1) - (2)].sval));
    4896                 :            :                         (yyval.slval) = (yyvsp[(2) - (2)].slval);
    4897                 :            :                 } else
    4898                 :            :                 {
    4899                 :            :                         StringList* pNames = new StringList();
    4900                 :            :                         pNames->push_back(*(yyvsp[(1) - (2)].sval));
    4901                 :            :                         (yyval.slval) = pNames;
    4902                 :            :                 }
    4903                 :            :                 delete((yyvsp[(1) - (2)].sval));
    4904                 :            :         }
    4905                 :            :     break;
    4906                 :            : 
    4907                 :            :   case 241:
    4908                 :            : 
    4909                 :            : /* Line 1806 of yacc.c  */
    4910                 :            : #line 2344 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4911                 :            :     {
    4912                 :            :                 idlc()->setParseState(PS_SNListCommaSeen);
    4913                 :            :         }
    4914                 :            :     break;
    4915                 :            : 
    4916                 :            :   case 242:
    4917                 :            : 
    4918                 :            : /* Line 1806 of yacc.c  */
    4919                 :            : #line 2348 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4920                 :            :     {
    4921                 :            :                 idlc()->setParseState(PS_ScopedNameSeen);
    4922                 :            :                 if ((yyvsp[(1) - (4)].slval))
    4923                 :            :                 {
    4924                 :            :                         (yyvsp[(1) - (4)].slval)->push_back(*(yyvsp[(4) - (4)].sval));
    4925                 :            :                         (yyval.slval) = (yyvsp[(1) - (4)].slval);
    4926                 :            :                 } else
    4927                 :            :                 {
    4928                 :            :                         StringList* pNames = new StringList();
    4929                 :            :                         pNames->push_back(*(yyvsp[(4) - (4)].sval));
    4930                 :            :                         (yyval.slval) = pNames;
    4931                 :            :                 }
    4932                 :            :                 delete((yyvsp[(4) - (4)].sval));
    4933                 :            :         }
    4934                 :            :     break;
    4935                 :            : 
    4936                 :            :   case 243:
    4937                 :            : 
    4938                 :            : /* Line 1806 of yacc.c  */
    4939                 :            : #line 2363 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4940                 :            :     {
    4941                 :            :                 (yyval.slval) = NULL;
    4942                 :            :         }
    4943                 :            :     break;
    4944                 :            : 
    4945                 :            :   case 244:
    4946                 :            : 
    4947                 :            : /* Line 1806 of yacc.c  */
    4948                 :            : #line 2370 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4949                 :            :     {
    4950                 :            :         idlc()->setParseState(PS_SN_IDSeen);
    4951                 :            :         checkIdentifier((yyvsp[(1) - (1)].sval));
    4952                 :            :         (yyval.sval) = (yyvsp[(1) - (1)].sval);
    4953                 :            :         }
    4954                 :            :     break;
    4955                 :            : 
    4956                 :            :   case 245:
    4957                 :            : 
    4958                 :            : /* Line 1806 of yacc.c  */
    4959                 :            : #line 2376 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4960                 :            :     {
    4961                 :            :                 idlc()->setParseState(PS_ScopeDelimSeen);
    4962                 :            :         }
    4963                 :            :     break;
    4964                 :            : 
    4965                 :            :   case 246:
    4966                 :            : 
    4967                 :            : /* Line 1806 of yacc.c  */
    4968                 :            : #line 2380 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4969                 :            :     {
    4970                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    4971                 :            :         OString* pName = new OString("::");
    4972                 :            :         *pName += *(yyvsp[(3) - (3)].sval);
    4973                 :            :         delete (yyvsp[(3) - (3)].sval);
    4974                 :            :         (yyval.sval) = pName;
    4975                 :            :         }
    4976                 :            :     break;
    4977                 :            : 
    4978                 :            :   case 247:
    4979                 :            : 
    4980                 :            : /* Line 1806 of yacc.c  */
    4981                 :            : #line 2389 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4982                 :            :     {
    4983                 :            :         }
    4984                 :            :     break;
    4985                 :            : 
    4986                 :            :   case 248:
    4987                 :            : 
    4988                 :            : /* Line 1806 of yacc.c  */
    4989                 :            : #line 2392 "/usr/local/src/libreoffice/idlc/source/parser.y"
    4990                 :            :     {
    4991                 :            :         checkIdentifier((yyvsp[(4) - (4)].sval));
    4992                 :            :         *(yyvsp[(1) - (4)].sval) += ::rtl::OString("::");
    4993                 :            :         *(yyvsp[(1) - (4)].sval) += *(yyvsp[(4) - (4)].sval);
    4994                 :            :         delete (yyvsp[(4) - (4)].sval);
    4995                 :            :         (yyval.sval) = (yyvsp[(1) - (4)].sval);
    4996                 :            :         }
    4997                 :            :     break;
    4998                 :            : 
    4999                 :            :   case 252:
    5000                 :            : 
    5001                 :            : /* Line 1806 of yacc.c  */
    5002                 :            : #line 2409 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5003                 :            :     {
    5004                 :            :         (yyval.cdclval) = createNamedType((yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].dclsval));
    5005                 :            :         }
    5006                 :            :     break;
    5007                 :            : 
    5008                 :            :   case 253:
    5009                 :            : 
    5010                 :            : /* Line 1806 of yacc.c  */
    5011                 :            : #line 2416 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5012                 :            :     {
    5013                 :            :                 (yyval.cdclval) = idlc()->scopes()->bottom()->lookupPrimitiveType((yyvsp[(1) - (1)].etval));
    5014                 :            :         }
    5015                 :            :     break;
    5016                 :            : 
    5017                 :            :   case 255:
    5018                 :            : 
    5019                 :            : /* Line 1806 of yacc.c  */
    5020                 :            : #line 2423 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5021                 :            :     { (yyval.dclsval) = (yyvsp[(2) - (3)].dclsval); }
    5022                 :            :     break;
    5023                 :            : 
    5024                 :            :   case 256:
    5025                 :            : 
    5026                 :            : /* Line 1806 of yacc.c  */
    5027                 :            : #line 2424 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5028                 :            :     { (yyval.dclsval) = 0; }
    5029                 :            :     break;
    5030                 :            : 
    5031                 :            :   case 257:
    5032                 :            : 
    5033                 :            : /* Line 1806 of yacc.c  */
    5034                 :            : #line 2429 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5035                 :            :     {
    5036                 :            :         (yyval.dclsval) = new DeclList;
    5037                 :            :         (yyval.dclsval)->push_back(const_cast< AstDeclaration * >((yyvsp[(1) - (1)].cdclval))); //TODO: const_cast
    5038                 :            :     }
    5039                 :            :     break;
    5040                 :            : 
    5041                 :            :   case 258:
    5042                 :            : 
    5043                 :            : /* Line 1806 of yacc.c  */
    5044                 :            : #line 2434 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5045                 :            :     {
    5046                 :            :         (yyvsp[(1) - (3)].dclsval)->push_back(const_cast< AstDeclaration * >((yyvsp[(3) - (3)].cdclval))); //TODO: const_cast
    5047                 :            :         (yyval.dclsval) = (yyvsp[(1) - (3)].dclsval);
    5048                 :            :     }
    5049                 :            :     break;
    5050                 :            : 
    5051                 :            :   case 259:
    5052                 :            : 
    5053                 :            : /* Line 1806 of yacc.c  */
    5054                 :            : #line 2442 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5055                 :            :     {
    5056                 :            :         if ((yyvsp[(1) - (1)].cdclval) != 0 && static_cast< AstType const * >((yyvsp[(1) - (1)].cdclval))->isUnsigned()) {
    5057                 :            :             idlc()->error()->error0(EIDL_UNSIGNED_TYPE_ARGUMENT);
    5058                 :            :         }
    5059                 :            :         (yyval.cdclval) = (yyvsp[(1) - (1)].cdclval);
    5060                 :            :     }
    5061                 :            :     break;
    5062                 :            : 
    5063                 :            :   case 270:
    5064                 :            : 
    5065                 :            : /* Line 1806 of yacc.c  */
    5066                 :            : #line 2468 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5067                 :            :     {
    5068                 :            :                 (yyval.etval) = ET_long;
    5069                 :            :         }
    5070                 :            :     break;
    5071                 :            : 
    5072                 :            :   case 271:
    5073                 :            : 
    5074                 :            : /* Line 1806 of yacc.c  */
    5075                 :            : #line 2472 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5076                 :            :     {
    5077                 :            :                 (yyval.etval) = ET_hyper;
    5078                 :            :         }
    5079                 :            :     break;
    5080                 :            : 
    5081                 :            :   case 272:
    5082                 :            : 
    5083                 :            : /* Line 1806 of yacc.c  */
    5084                 :            : #line 2476 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5085                 :            :     {
    5086                 :            :                 (yyval.etval) = ET_short;
    5087                 :            :         }
    5088                 :            :     break;
    5089                 :            : 
    5090                 :            :   case 273:
    5091                 :            : 
    5092                 :            : /* Line 1806 of yacc.c  */
    5093                 :            : #line 2483 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5094                 :            :     {
    5095                 :            :                 (yyval.etval) = ET_ulong;
    5096                 :            :         }
    5097                 :            :     break;
    5098                 :            : 
    5099                 :            :   case 274:
    5100                 :            : 
    5101                 :            : /* Line 1806 of yacc.c  */
    5102                 :            : #line 2487 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5103                 :            :     {
    5104                 :            :                 (yyval.etval) = ET_uhyper;
    5105                 :            :         }
    5106                 :            :     break;
    5107                 :            : 
    5108                 :            :   case 275:
    5109                 :            : 
    5110                 :            : /* Line 1806 of yacc.c  */
    5111                 :            : #line 2491 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5112                 :            :     {
    5113                 :            :                 (yyval.etval) = ET_ushort;
    5114                 :            :         }
    5115                 :            :     break;
    5116                 :            : 
    5117                 :            :   case 276:
    5118                 :            : 
    5119                 :            : /* Line 1806 of yacc.c  */
    5120                 :            : #line 2498 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5121                 :            :     {
    5122                 :            :                 (yyval.etval) = ET_double;
    5123                 :            :         }
    5124                 :            :     break;
    5125                 :            : 
    5126                 :            :   case 277:
    5127                 :            : 
    5128                 :            : /* Line 1806 of yacc.c  */
    5129                 :            : #line 2502 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5130                 :            :     {
    5131                 :            :                 (yyval.etval) = ET_float;
    5132                 :            :         }
    5133                 :            :     break;
    5134                 :            : 
    5135                 :            :   case 278:
    5136                 :            : 
    5137                 :            : /* Line 1806 of yacc.c  */
    5138                 :            : #line 2509 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5139                 :            :     {
    5140                 :            :                 (yyval.etval) = ET_char;
    5141                 :            :         }
    5142                 :            :     break;
    5143                 :            : 
    5144                 :            :   case 279:
    5145                 :            : 
    5146                 :            : /* Line 1806 of yacc.c  */
    5147                 :            : #line 2516 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5148                 :            :     {
    5149                 :            :                 (yyval.etval) = ET_byte;
    5150                 :            :         }
    5151                 :            :     break;
    5152                 :            : 
    5153                 :            :   case 280:
    5154                 :            : 
    5155                 :            : /* Line 1806 of yacc.c  */
    5156                 :            : #line 2523 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5157                 :            :     {
    5158                 :            :                 (yyval.etval) = ET_boolean;
    5159                 :            :         }
    5160                 :            :     break;
    5161                 :            : 
    5162                 :            :   case 281:
    5163                 :            : 
    5164                 :            : /* Line 1806 of yacc.c  */
    5165                 :            : #line 2530 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5166                 :            :     {
    5167                 :            :                 (yyval.etval) = ET_any;
    5168                 :            :         }
    5169                 :            :     break;
    5170                 :            : 
    5171                 :            :   case 282:
    5172                 :            : 
    5173                 :            : /* Line 1806 of yacc.c  */
    5174                 :            : #line 2537 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5175                 :            :     {
    5176                 :            :                 (yyval.etval) = ET_type;
    5177                 :            :         }
    5178                 :            :     break;
    5179                 :            : 
    5180                 :            :   case 283:
    5181                 :            : 
    5182                 :            : /* Line 1806 of yacc.c  */
    5183                 :            : #line 2544 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5184                 :            :     {
    5185                 :            :                 (yyval.etval) = ET_string;
    5186                 :            :         }
    5187                 :            :     break;
    5188                 :            : 
    5189                 :            :   case 289:
    5190                 :            : 
    5191                 :            : /* Line 1806 of yacc.c  */
    5192                 :            : #line 2562 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5193                 :            :     {
    5194                 :            :                 idlc()->setParseState(PS_ArrayTypeSeen);
    5195                 :            :         }
    5196                 :            :     break;
    5197                 :            : 
    5198                 :            :   case 290:
    5199                 :            : 
    5200                 :            : /* Line 1806 of yacc.c  */
    5201                 :            : #line 2566 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5202                 :            :     {
    5203                 :            :                 idlc()->setParseState(PS_ArrayCompleted);
    5204                 :            : 
    5205                 :            :                 AstScope* pScope = idlc()->scopes()->bottom();
    5206                 :            :                 AstDeclaration* pDecl = NULL;
    5207                 :            :                 AstDeclaration* pArray = NULL;
    5208                 :            : 
    5209                 :            :                 if ( (yyvsp[(1) - (3)].cdclval) )
    5210                 :            :                 {
    5211                 :            :                         pArray = new AstArray((AstType*)(yyvsp[(1) - (3)].cdclval), *(yyvsp[(3) - (3)].exlval), idlc()->scopes()->bottom());
    5212                 :            :                         if ( pScope )
    5213                 :            :                         {
    5214                 :            :                                 pDecl = pScope->addDeclaration(pArray);                              
    5215                 :            :                                 if ( pArray != pDecl )
    5216                 :            :                                 {
    5217                 :            :                                         // if array type already defined then use it
    5218                 :            :                                         delete pArray;
    5219                 :            :                                         pArray = pDecl;                                 
    5220                 :            :                                 }
    5221                 :            :                         }
    5222                 :            :                 }
    5223                 :            :                 (yyval.cdclval) = pArray; 
    5224                 :            :         }
    5225                 :            :     break;
    5226                 :            : 
    5227                 :            :   case 291:
    5228                 :            : 
    5229                 :            : /* Line 1806 of yacc.c  */
    5230                 :            : #line 2593 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5231                 :            :     {
    5232                 :            :                 idlc()->setParseState(PS_SequenceSeen);
    5233                 :            :                 /*
    5234                 :            :                  * Push a sequence marker on scopes stack
    5235                 :            :                  */
    5236                 :            :                 idlc()->scopes()->push(NULL);
    5237                 :            :         }
    5238                 :            :     break;
    5239                 :            : 
    5240                 :            :   case 292:
    5241                 :            : 
    5242                 :            : /* Line 1806 of yacc.c  */
    5243                 :            : #line 2601 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5244                 :            :     {
    5245                 :            :                 idlc()->setParseState(PS_SequenceSqSeen);
    5246                 :            :         }
    5247                 :            :     break;
    5248                 :            : 
    5249                 :            :   case 293:
    5250                 :            : 
    5251                 :            : /* Line 1806 of yacc.c  */
    5252                 :            : #line 2605 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5253                 :            :     {
    5254                 :            :                 idlc()->setParseState(PS_SequenceTypeSeen);
    5255                 :            :         }
    5256                 :            :     break;
    5257                 :            : 
    5258                 :            :   case 294:
    5259                 :            : 
    5260                 :            : /* Line 1806 of yacc.c  */
    5261                 :            : #line 2609 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5262                 :            :     {
    5263                 :            :                 idlc()->setParseState(PS_SequenceQsSeen);
    5264                 :            :                 /*
    5265                 :            :                  * Remove sequence marker from scopes stack
    5266                 :            :                  */
    5267                 :            :                 if (idlc()->scopes()->top() == NULL)
    5268                 :            :                         idlc()->scopes()->pop();
    5269                 :            :                 /*
    5270                 :            :                  * Create a node representing a sequence
    5271                 :            :                  */
    5272                 :            :                 AstScope* pScope = idlc()->scopes()->bottom();
    5273                 :            :                 AstDeclaration* pDecl = NULL;
    5274                 :            :                 AstDeclaration* pSeq = NULL;
    5275                 :            :                 
    5276                 :            :                 if ( (yyvsp[(5) - (7)].cdclval) )
    5277                 :            :                 {
    5278                 :            :                         AstType *pType = (AstType*)(yyvsp[(5) - (7)].cdclval);
    5279                 :            :                         if ( pType )
    5280                 :            :                         {
    5281                 :            :                                 pSeq = new AstSequence(pType, pScope);
    5282                 :            :                                 /*
    5283                 :            :                                  * Add this AstSequence to the types defined in the global scope
    5284                 :            :                                  */
    5285                 :            :                                 pDecl = pScope->addDeclaration(pSeq);
    5286                 :            :                                 if ( pSeq != pDecl )
    5287                 :            :                                 {
    5288                 :            :                                         // if sequence type already defined then use it
    5289                 :            :                                         delete pSeq;
    5290                 :            :                                         pSeq = pDecl;
    5291                 :            :                                 }
    5292                 :            :                         }
    5293                 :            :         }
    5294                 :            :                 (yyval.cdclval) = pSeq;
    5295                 :            :         }
    5296                 :            :     break;
    5297                 :            : 
    5298                 :            :   case 295:
    5299                 :            : 
    5300                 :            : /* Line 1806 of yacc.c  */
    5301                 :            : #line 2644 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5302                 :            :     {
    5303                 :            :                 yyerror("sequence declaration");
    5304                 :            :                 yyerrok;
    5305                 :            :         (yyval.cdclval) = 0;
    5306                 :            :         }
    5307                 :            :     break;
    5308                 :            : 
    5309                 :            :   case 296:
    5310                 :            : 
    5311                 :            : /* Line 1806 of yacc.c  */
    5312                 :            : #line 2653 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5313                 :            :     {
    5314                 :            :                 idlc()->setParseState(PS_StructHeaderSeen);
    5315                 :            : 
    5316                 :            :                 AstScope*       pScope = idlc()->scopes()->topNonNull();
    5317                 :            :                 AstStruct*      pStruct = NULL;
    5318                 :            : 
    5319                 :            :                 if ( pScope )
    5320                 :            :                 {
    5321                 :            :                         AstStruct* pBase= static_cast< AstStruct* >((yyvsp[(1) - (1)].ihval)->getInherits());
    5322                 :            :             pStruct = new AstStruct(
    5323                 :            :                 *(yyvsp[(1) - (1)].ihval)->getName(), (yyvsp[(1) - (1)].ihval)->getTypeParameters(), pBase, pScope);
    5324                 :            :                         pScope->addDeclaration(pStruct);
    5325                 :            :                 }
    5326                 :            :                 /*
    5327                 :            :                  * Push the scope of the struct on the scopes stack
    5328                 :            :                  */
    5329                 :            :                 idlc()->scopes()->push(pStruct);
    5330                 :            :                 delete (yyvsp[(1) - (1)].ihval);
    5331                 :            :         }
    5332                 :            :     break;
    5333                 :            : 
    5334                 :            :   case 297:
    5335                 :            : 
    5336                 :            : /* Line 1806 of yacc.c  */
    5337                 :            : #line 2673 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5338                 :            :     {
    5339                 :            :                 idlc()->setParseState(PS_StructSqSeen);
    5340                 :            :         }
    5341                 :            :     break;
    5342                 :            : 
    5343                 :            :   case 298:
    5344                 :            : 
    5345                 :            : /* Line 1806 of yacc.c  */
    5346                 :            : #line 2677 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5347                 :            :     {
    5348                 :            :                 idlc()->setParseState(PS_StructBodySeen);
    5349                 :            :         }
    5350                 :            :     break;
    5351                 :            : 
    5352                 :            :   case 299:
    5353                 :            : 
    5354                 :            : /* Line 1806 of yacc.c  */
    5355                 :            : #line 2681 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5356                 :            :     {
    5357                 :            :                 idlc()->setParseState(PS_StructQsSeen);
    5358                 :            :                 /* this exception is finished, pop its scope from the stack */ 
    5359                 :            :                 idlc()->scopes()->pop();
    5360                 :            :         }
    5361                 :            :     break;
    5362                 :            : 
    5363                 :            :   case 300:
    5364                 :            : 
    5365                 :            : /* Line 1806 of yacc.c  */
    5366                 :            : #line 2690 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5367                 :            :     {
    5368                 :            :         idlc()->setParseState(PS_StructSeen);
    5369                 :            :         }
    5370                 :            :     break;
    5371                 :            : 
    5372                 :            :   case 301:
    5373                 :            : 
    5374                 :            : /* Line 1806 of yacc.c  */
    5375                 :            : #line 2694 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5376                 :            :     {
    5377                 :            :         idlc()->setParseState(PS_StructIDSeen);
    5378                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    5379                 :            :         }
    5380                 :            :     break;
    5381                 :            : 
    5382                 :            :   case 302:
    5383                 :            : 
    5384                 :            : /* Line 1806 of yacc.c  */
    5385                 :            : #line 2700 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5386                 :            :     {
    5387                 :            :         idlc()->setParseState(PS_InheritSpecSeen);
    5388                 :            : 
    5389                 :            :         // Polymorphic struct type templates with base types would cause various
    5390                 :            :         // problems in language bindings, so forbid them here.  For example,
    5391                 :            :         // GCC prior to version 3.4 fails with code like
    5392                 :            :         //
    5393                 :            :         //  struct Base { ... };
    5394                 :            :         //  template< typename typeparam_T > struct Derived: public Base {
    5395                 :            :         //      int member1 CPPU_GCC3_ALIGN(Base);
    5396                 :            :         //      ... };
    5397                 :            :         //
    5398                 :            :         // (Note that plain struct types with instantiated polymorphic struct
    5399                 :            :         // type bases, which might also cause problems in language bindings, are
    5400                 :            :         // already rejected on a syntactic level.)
    5401                 :            :         if ((yyvsp[(5) - (6)].svals) != 0 && (yyvsp[(6) - (6)].sval) != 0) {
    5402                 :            :             idlc()->error()->error0(EIDL_STRUCT_TYPE_TEMPLATE_WITH_BASE);
    5403                 :            :         }
    5404                 :            : 
    5405                 :            :         (yyval.ihval) = new FeInheritanceHeader(NT_struct, (yyvsp[(3) - (6)].sval), (yyvsp[(6) - (6)].sval), (yyvsp[(5) - (6)].svals));
    5406                 :            :         delete (yyvsp[(5) - (6)].svals);
    5407                 :            :         delete (yyvsp[(6) - (6)].sval);
    5408                 :            :         }
    5409                 :            :     break;
    5410                 :            : 
    5411                 :            :   case 303:
    5412                 :            : 
    5413                 :            : /* Line 1806 of yacc.c  */
    5414                 :            : #line 2726 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5415                 :            :     { (yyval.svals) = (yyvsp[(2) - (3)].svals); }
    5416                 :            :     break;
    5417                 :            : 
    5418                 :            :   case 304:
    5419                 :            : 
    5420                 :            : /* Line 1806 of yacc.c  */
    5421                 :            : #line 2727 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5422                 :            :     { (yyval.svals) = 0; }
    5423                 :            :     break;
    5424                 :            : 
    5425                 :            :   case 305:
    5426                 :            : 
    5427                 :            : /* Line 1806 of yacc.c  */
    5428                 :            : #line 2732 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5429                 :            :     {
    5430                 :            :         (yyval.svals) = new std::vector< rtl::OString >;
    5431                 :            :         (yyval.svals)->push_back(*(yyvsp[(1) - (1)].sval));
    5432                 :            :         delete (yyvsp[(1) - (1)].sval);
    5433                 :            :     }
    5434                 :            :     break;
    5435                 :            : 
    5436                 :            :   case 306:
    5437                 :            : 
    5438                 :            : /* Line 1806 of yacc.c  */
    5439                 :            : #line 2738 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5440                 :            :     {
    5441                 :            :         if (std::find((yyvsp[(1) - (3)].svals)->begin(), (yyvsp[(1) - (3)].svals)->end(), *(yyvsp[(3) - (3)].sval)) != (yyvsp[(1) - (3)].svals)->end()) {
    5442                 :            :             idlc()->error()->error0(EIDL_IDENTICAL_TYPE_PARAMETERS);
    5443                 :            :         }
    5444                 :            :         (yyvsp[(1) - (3)].svals)->push_back(*(yyvsp[(3) - (3)].sval));
    5445                 :            :         delete (yyvsp[(3) - (3)].sval);
    5446                 :            :         (yyval.svals) = (yyvsp[(1) - (3)].svals);
    5447                 :            :     }
    5448                 :            :     break;
    5449                 :            : 
    5450                 :            :   case 310:
    5451                 :            : 
    5452                 :            : /* Line 1806 of yacc.c  */
    5453                 :            : #line 2757 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5454                 :            :     {
    5455                 :            :                 idlc()->setParseState(PS_MemberTypeSeen);
    5456                 :            :         }
    5457                 :            :     break;
    5458                 :            : 
    5459                 :            :   case 311:
    5460                 :            : 
    5461                 :            : /* Line 1806 of yacc.c  */
    5462                 :            : #line 2761 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5463                 :            :     {
    5464                 :            :                 idlc()->setParseState(PS_MemberDeclsSeen);
    5465                 :            :         }
    5466                 :            :     break;
    5467                 :            : 
    5468                 :            :   case 312:
    5469                 :            : 
    5470                 :            : /* Line 1806 of yacc.c  */
    5471                 :            : #line 2765 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5472                 :            :     {
    5473                 :            :                 idlc()->setParseState(PS_MemberDeclsCompleted);
    5474                 :            : 
    5475                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5476                 :            :                 AstMember*              pMember = NULL;
    5477                 :            :                 FeDeclList*             pList = (yyvsp[(3) - (5)].dlval);
    5478                 :            :                 FeDeclarator*   pDecl = NULL;
    5479                 :            :         AstType const * pType = NULL;
    5480                 :            : 
    5481                 :            :                 // !!! check recursive type
    5482                 :            : 
    5483                 :            :                 if ( pScope && pList && (yyvsp[(1) - (5)].cdclval) )
    5484                 :            :                 {
    5485                 :            :                         FeDeclList::iterator iter = pList->begin();
    5486                 :            :                         FeDeclList::iterator end = pList->end();
    5487                 :            :                         while (iter != end)
    5488                 :            :                         {
    5489                 :            :                                 pDecl = (*iter);
    5490                 :            :                                 if ( !pDecl )
    5491                 :            :                                 {
    5492                 :            :                                         iter++;
    5493                 :            :                                         continue;
    5494                 :            :                                 }
    5495                 :            : 
    5496                 :            :                                 pType = pDecl->compose((yyvsp[(1) - (5)].cdclval));                          
    5497                 :            : 
    5498                 :            :                                 if ( !pType )
    5499                 :            :                                 {
    5500                 :            :                                         iter++;
    5501                 :            :                                         continue;
    5502                 :            :                                 }
    5503                 :            : 
    5504                 :            :                                 pMember = new AstMember(pType, pDecl->getName(), pScope);
    5505                 :            : 
    5506                 :            :                                 if ( !pDecl->checkType((yyvsp[(1) - (5)].cdclval)) )
    5507                 :            :                                 {
    5508                 :            :                                         // WARNING      
    5509                 :            :                                 }
    5510                 :            : 
    5511                 :            :                                 pScope->addDeclaration(pMember);
    5512                 :            :                                 iter++;
    5513                 :            :                                 delete pDecl;
    5514                 :            :                         }
    5515                 :            :                         delete pList;
    5516                 :            :                 }
    5517                 :            :         }
    5518                 :            :     break;
    5519                 :            : 
    5520                 :            :   case 313:
    5521                 :            : 
    5522                 :            : /* Line 1806 of yacc.c  */
    5523                 :            : #line 2812 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5524                 :            :     {
    5525                 :            :                 yyerror("member definition");
    5526                 :            :                 yyerrok;
    5527                 :            :         }
    5528                 :            :     break;
    5529                 :            : 
    5530                 :            :   case 315:
    5531                 :            : 
    5532                 :            : /* Line 1806 of yacc.c  */
    5533                 :            : #line 2821 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5534                 :            :     {
    5535                 :            :         AstDeclaration const * decl = 0;
    5536                 :            :         AstStruct * scope = static_cast< AstStruct * >(idlc()->scopes()->top());
    5537                 :            :         if (scope != 0 && (yyvsp[(2) - (2)].dclsval) == 0) {
    5538                 :            :             decl = scope->findTypeParameter(*(yyvsp[(1) - (2)].sval));
    5539                 :            :         }
    5540                 :            :         if (decl != 0) {
    5541                 :            :             delete (yyvsp[(1) - (2)].sval);
    5542                 :            :             delete (yyvsp[(2) - (2)].dclsval);
    5543                 :            :         } else {
    5544                 :            :             decl = createNamedType((yyvsp[(1) - (2)].sval), (yyvsp[(2) - (2)].dclsval));
    5545                 :            :             if (scope != 0 && includes(decl, scopeAsDecl(scope))) {
    5546                 :            :                 idlc()->error()->error1(
    5547                 :            :                     EIDL_RECURSIVE_TYPE, scopeAsDecl(scope));
    5548                 :            :                 decl = 0;
    5549                 :            :             }
    5550                 :            :         }
    5551                 :            :         (yyval.cdclval) = decl;
    5552                 :            :         }
    5553                 :            :     break;
    5554                 :            : 
    5555                 :            :   case 316:
    5556                 :            : 
    5557                 :            : /* Line 1806 of yacc.c  */
    5558                 :            : #line 2844 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5559                 :            :     {
    5560                 :            :                 idlc()->setParseState(PS_EnumSeen);
    5561                 :            :         }
    5562                 :            :     break;
    5563                 :            : 
    5564                 :            :   case 317:
    5565                 :            : 
    5566                 :            : /* Line 1806 of yacc.c  */
    5567                 :            : #line 2848 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5568                 :            :     {
    5569                 :            :         idlc()->setParseState(PS_EnumIDSeen);
    5570                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    5571                 :            : 
    5572                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5573                 :            :                 AstEnum*                pEnum = NULL;
    5574                 :            : 
    5575                 :            :                 /*
    5576                 :            :                  * Create a node representing an enum and add it to its
    5577                 :            :                  * enclosing scope
    5578                 :            :                  */
    5579                 :            :                 if (pScope != NULL) 
    5580                 :            :                 {
    5581                 :            :                         pEnum = new AstEnum(*(yyvsp[(3) - (3)].sval), pScope);
    5582                 :            :                         /*
    5583                 :            :                          * Add it to its defining scope
    5584                 :            :                          */
    5585                 :            :                         pScope->addDeclaration(pEnum);
    5586                 :            :                 }
    5587                 :            :                 delete (yyvsp[(3) - (3)].sval);
    5588                 :            :                 /*
    5589                 :            :                  * Push the enum scope on the scopes stack
    5590                 :            :                  */
    5591                 :            :                 idlc()->scopes()->push(pEnum);
    5592                 :            :                 
    5593                 :            :         }
    5594                 :            :     break;
    5595                 :            : 
    5596                 :            :   case 318:
    5597                 :            : 
    5598                 :            : /* Line 1806 of yacc.c  */
    5599                 :            : #line 2875 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5600                 :            :     {
    5601                 :            :                 idlc()->setParseState(PS_EnumSqSeen);
    5602                 :            :         }
    5603                 :            :     break;
    5604                 :            : 
    5605                 :            :   case 319:
    5606                 :            : 
    5607                 :            : /* Line 1806 of yacc.c  */
    5608                 :            : #line 2879 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5609                 :            :     {
    5610                 :            :                 idlc()->setParseState(PS_EnumBodySeen);
    5611                 :            :         }
    5612                 :            :     break;
    5613                 :            : 
    5614                 :            :   case 320:
    5615                 :            : 
    5616                 :            : /* Line 1806 of yacc.c  */
    5617                 :            : #line 2883 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5618                 :            :     {
    5619                 :            :                 idlc()->setParseState(PS_EnumQsSeen);
    5620                 :            :                 /*
    5621                 :            :                  * Done with this enum. Pop its scope from the scopes stack
    5622                 :            :                  */
    5623                 :            :                 if (idlc()->scopes()->top() == NULL)
    5624                 :            :                         (yyval.cdclval) = NULL;
    5625                 :            :                 else 
    5626                 :            :                 {
    5627                 :            :                         (yyval.cdclval) = (AstEnum*)idlc()->scopes()->topNonNull();
    5628                 :            :                         idlc()->scopes()->pop();
    5629                 :            :                 }
    5630                 :            :         }
    5631                 :            :     break;
    5632                 :            : 
    5633                 :            :   case 322:
    5634                 :            : 
    5635                 :            : /* Line 1806 of yacc.c  */
    5636                 :            : #line 2903 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5637                 :            :     {
    5638                 :            :                 idlc()->setParseState(PS_EnumCommaSeen);
    5639                 :            :         }
    5640                 :            :     break;
    5641                 :            : 
    5642                 :            :   case 325:
    5643                 :            : 
    5644                 :            : /* Line 1806 of yacc.c  */
    5645                 :            : #line 2909 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5646                 :            :     {
    5647                 :            :                 yyerror("enumerator definition");
    5648                 :            :                 yyerrok;
    5649                 :            :         }
    5650                 :            :     break;
    5651                 :            : 
    5652                 :            :   case 326:
    5653                 :            : 
    5654                 :            : /* Line 1806 of yacc.c  */
    5655                 :            : #line 2917 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5656                 :            :     {
    5657                 :            :         checkIdentifier((yyvsp[(1) - (1)].sval));
    5658                 :            : 
    5659                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5660                 :            :                 AstEnum*                pEnum = NULL;
    5661                 :            :                 AstConstant*    pEnumVal = NULL;
    5662                 :            : 
    5663                 :            :                 if ( pScope && pScope->getScopeNodeType() == NT_enum) 
    5664                 :            :                 {
    5665                 :            :                         pEnum = (AstEnum*)pScope;
    5666                 :            :                         if (pEnum && (yyvsp[(1) - (1)].sval))
    5667                 :            :                         {
    5668                 :            :                                 AstExpression* pExpr = new AstExpression(pEnum->getEnumValueCount());
    5669                 :            :                                 pEnumVal = new AstConstant(ET_long , NT_enum_val, 
    5670                 :            :                                                                                    pExpr, *(yyvsp[(1) - (1)].sval), pScope);
    5671                 :            :                         }
    5672                 :            :                         if ( pEnum->checkValue(pEnumVal->getConstValue()) )
    5673                 :            :                                 idlc()->error()->error1(EIDL_EVAL_ERROR, pEnum);                          
    5674                 :            : 
    5675                 :            :                         pScope->addDeclaration(pEnumVal);
    5676                 :            :                 }
    5677                 :            :                 delete (yyvsp[(1) - (1)].sval);
    5678                 :            :         }
    5679                 :            :     break;
    5680                 :            : 
    5681                 :            :   case 327:
    5682                 :            : 
    5683                 :            : /* Line 1806 of yacc.c  */
    5684                 :            : #line 2943 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5685                 :            :     {
    5686                 :            :         checkIdentifier((yyvsp[(1) - (3)].sval));
    5687                 :            : 
    5688                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5689                 :            :                 AstEnum*                pEnum = NULL;
    5690                 :            :                 AstConstant*    pEnumVal = NULL;
    5691                 :            : 
    5692                 :            :                 if ( (yyvsp[(3) - (3)].exval) && pScope && pScope->getScopeNodeType() == NT_enum) 
    5693                 :            :                 {
    5694                 :            :                         (yyvsp[(3) - (3)].exval)->evaluate(EK_const);
    5695                 :            :                         if ( (yyvsp[(3) - (3)].exval)->coerce(ET_long) )
    5696                 :            :                         {
    5697                 :            :                                 pEnum = (AstEnum*)pScope;
    5698                 :            :                                 if (pEnum)
    5699                 :            :                                 {
    5700                 :            :                                         pEnumVal = new AstConstant(ET_long , NT_enum_val, 
    5701                 :            :                                                                                            (yyvsp[(3) - (3)].exval), *(yyvsp[(1) - (3)].sval), pScope);
    5702                 :            :                                 }
    5703                 :            :                                 if ( pEnum->checkValue(pEnumVal->getConstValue()) )
    5704                 :            :                                         idlc()->error()->error1(EIDL_EVAL_ERROR, pEnum);                          
    5705                 :            : 
    5706                 :            :                                 pScope->addDeclaration(pEnumVal);
    5707                 :            :                         } else
    5708                 :            :                         {
    5709                 :            :                                 idlc()->error()->coercionError((yyvsp[(3) - (3)].exval), ET_long);
    5710                 :            :                                 delete (yyvsp[(3) - (3)].exval);
    5711                 :            :                         }
    5712                 :            :                 }
    5713                 :            :                 delete (yyvsp[(1) - (3)].sval);
    5714                 :            :         }
    5715                 :            :     break;
    5716                 :            : 
    5717                 :            :   case 328:
    5718                 :            : 
    5719                 :            : /* Line 1806 of yacc.c  */
    5720                 :            : #line 2977 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5721                 :            :     {
    5722                 :            :                 idlc()->setParseState(PS_UnionSeen);
    5723                 :            :         }
    5724                 :            :     break;
    5725                 :            : 
    5726                 :            :   case 329:
    5727                 :            : 
    5728                 :            : /* Line 1806 of yacc.c  */
    5729                 :            : #line 2981 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5730                 :            :     {
    5731                 :            :         idlc()->setParseState(PS_UnionIDSeen);
    5732                 :            :         checkIdentifier((yyvsp[(3) - (3)].sval));
    5733                 :            :         }
    5734                 :            :     break;
    5735                 :            : 
    5736                 :            :   case 330:
    5737                 :            : 
    5738                 :            : /* Line 1806 of yacc.c  */
    5739                 :            : #line 2986 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5740                 :            :     {
    5741                 :            :                 idlc()->setParseState(PS_SwitchSeen);
    5742                 :            :         }
    5743                 :            :     break;
    5744                 :            : 
    5745                 :            :   case 331:
    5746                 :            : 
    5747                 :            : /* Line 1806 of yacc.c  */
    5748                 :            : #line 2990 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5749                 :            :     {
    5750                 :            :                 idlc()->setParseState(PS_SwitchOpenParSeen);
    5751                 :            :         }
    5752                 :            :     break;
    5753                 :            : 
    5754                 :            :   case 332:
    5755                 :            : 
    5756                 :            : /* Line 1806 of yacc.c  */
    5757                 :            : #line 2994 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5758                 :            :     {
    5759                 :            :                 idlc()->setParseState(PS_SwitchTypeSeen);
    5760                 :            :         }
    5761                 :            :     break;
    5762                 :            : 
    5763                 :            :   case 333:
    5764                 :            : 
    5765                 :            : /* Line 1806 of yacc.c  */
    5766                 :            : #line 2998 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5767                 :            :     {
    5768                 :            :                 idlc()->setParseState(PS_SwitchCloseParSeen);
    5769                 :            : 
    5770                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5771                 :            :                 AstUnion*               pUnion = NULL;
    5772                 :            : 
    5773                 :            :                 /*
    5774                 :            :                  * Create a node representing a union. Add it to its enclosing
    5775                 :            :                  * scope
    5776                 :            :                  */
    5777                 :            :                 if ( (yyvsp[(9) - (11)].cdclval) && pScope ) 
    5778                 :            :                 {
    5779                 :            :                         AstType* pType = (AstType*)(yyvsp[(9) - (11)].cdclval);
    5780                 :            :                         if ( !pType) 
    5781                 :            :                         {
    5782                 :            :                                 idlc()->error()->noTypeError((yyvsp[(9) - (11)].cdclval));
    5783                 :            :                         } else 
    5784                 :            :                         {
    5785                 :            :                                 pUnion = new AstUnion(*(yyvsp[(3) - (11)].sval), pType, pScope);
    5786                 :            :                                 pScope->addDeclaration(pUnion);
    5787                 :            :                         }
    5788                 :            :                 }
    5789                 :            :                 delete (yyvsp[(3) - (11)].sval);
    5790                 :            :                 /*
    5791                 :            :                  * Push the scope of the union on the scopes stack
    5792                 :            :                  */
    5793                 :            :                 idlc()->scopes()->push(pUnion);
    5794                 :            :         }
    5795                 :            :     break;
    5796                 :            : 
    5797                 :            :   case 334:
    5798                 :            : 
    5799                 :            : /* Line 1806 of yacc.c  */
    5800                 :            : #line 3027 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5801                 :            :     {
    5802                 :            :                 idlc()->setParseState(PS_UnionSqSeen);
    5803                 :            :         }
    5804                 :            :     break;
    5805                 :            : 
    5806                 :            :   case 335:
    5807                 :            : 
    5808                 :            : /* Line 1806 of yacc.c  */
    5809                 :            : #line 3031 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5810                 :            :     {
    5811                 :            :                 idlc()->setParseState(PS_UnionBodySeen);
    5812                 :            :         }
    5813                 :            :     break;
    5814                 :            : 
    5815                 :            :   case 336:
    5816                 :            : 
    5817                 :            : /* Line 1806 of yacc.c  */
    5818                 :            : #line 3035 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5819                 :            :     {
    5820                 :            :                 idlc()->setParseState(PS_UnionQsSeen);
    5821                 :            :                 /* this union is finished, pop its scope from the stack */ 
    5822                 :            :                 idlc()->scopes()->pop();
    5823                 :            :         }
    5824                 :            :     break;
    5825                 :            : 
    5826                 :            :   case 337:
    5827                 :            : 
    5828                 :            : /* Line 1806 of yacc.c  */
    5829                 :            : #line 3044 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5830                 :            :     {   
    5831                 :            :                 (yyval.cdclval) = idlc()->scopes()->bottom()->lookupPrimitiveType((yyvsp[(1) - (1)].etval));
    5832                 :            :         }
    5833                 :            :     break;
    5834                 :            : 
    5835                 :            :   case 338:
    5836                 :            : 
    5837                 :            : /* Line 1806 of yacc.c  */
    5838                 :            : #line 3048 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5839                 :            :     {
    5840                 :            :                 (yyval.cdclval) = idlc()->scopes()->bottom()->lookupPrimitiveType((yyvsp[(1) - (1)].etval));
    5841                 :            :         }
    5842                 :            :     break;
    5843                 :            : 
    5844                 :            :   case 339:
    5845                 :            : 
    5846                 :            : /* Line 1806 of yacc.c  */
    5847                 :            : #line 3052 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5848                 :            :     {
    5849                 :            :                 (yyval.cdclval) = idlc()->scopes()->bottom()->lookupPrimitiveType((yyvsp[(1) - (1)].etval));
    5850                 :            :         }
    5851                 :            :     break;
    5852                 :            : 
    5853                 :            :   case 341:
    5854                 :            : 
    5855                 :            : /* Line 1806 of yacc.c  */
    5856                 :            : #line 3057 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5857                 :            :     {
    5858                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5859                 :            :                 AstBaseType*    pBaseType = NULL;
    5860                 :            :         AstDeclaration const * pDecl = NULL;
    5861                 :            :                 AstTypeDef*             pTypeDef = NULL;
    5862                 :            :                 sal_Bool                bFound = sal_False;
    5863                 :            :                 /*
    5864                 :            :                  * If the constant's type is a scoped name, it must resolve
    5865                 :            :                  * to a scalar constant type
    5866                 :            :                  */
    5867                 :            :                 if ( pScope && (pDecl = pScope->lookupByName(*(yyvsp[(1) - (1)].sval))) ) 
    5868                 :            :                 {
    5869                 :            :                         /*
    5870                 :            :                          * Look through typedefs
    5871                 :            :                          */
    5872                 :            :                         while ( !bFound ) 
    5873                 :            :                         {
    5874                 :            :                                 switch (pDecl->getNodeType()) 
    5875                 :            :                                 {
    5876                 :            :                                         case NT_enum:
    5877                 :            :                                                 (yyval.cdclval) = pDecl;
    5878                 :            :                                                 bFound = sal_True;
    5879                 :            :                                                 break;
    5880                 :            :                                         case NT_predefined:
    5881                 :            :                                                 pBaseType = (AstBaseType*)pDecl;
    5882                 :            :                                                 if ( pBaseType ) 
    5883                 :            :                                                 {
    5884                 :            :                                                         switch (pBaseType->getExprType()) 
    5885                 :            :                                                         {
    5886                 :            :                                                                 case ET_short:
    5887                 :            :                                                                 case ET_ushort:
    5888                 :            :                                                                 case ET_long:
    5889                 :            :                                                                 case ET_ulong:
    5890                 :            :                                                                 case ET_hyper:
    5891                 :            :                                                                 case ET_uhyper:
    5892                 :            :                                                                 case ET_char:
    5893                 :            :                                                                 case ET_byte:
    5894                 :            :                                                                 case ET_boolean:
    5895                 :            :                                                                         (yyval.cdclval) = pBaseType;
    5896                 :            :                                                                         bFound = sal_True;
    5897                 :            :                                                                         break;
    5898                 :            :                                                                 default:
    5899                 :            :                                                                         (yyval.cdclval) = NULL;
    5900                 :            :                                                                         bFound = sal_True;
    5901                 :            :                                                                         break;
    5902                 :            :                                                         }
    5903                 :            :                                                 }
    5904                 :            :                                                 break;
    5905                 :            :                                         case NT_typedef:
    5906                 :            :                                                 pTypeDef = (AstTypeDef*)pDecl;
    5907                 :            :                                                 if ( pTypeDef )
    5908                 :            :                                                         pDecl = pTypeDef->getBaseType();
    5909                 :            :                                                 break;
    5910                 :            :                                         default:
    5911                 :            :                                                 (yyval.cdclval) = NULL;
    5912                 :            :                                                 bFound = sal_True;
    5913                 :            :                                break;           
    5914                 :            :                                 }
    5915                 :            :                         }
    5916                 :            :                 } else
    5917                 :            :                         (yyval.cdclval) = NULL;
    5918                 :            : 
    5919                 :            :                 if ((yyval.cdclval) == NULL)
    5920                 :            :                         idlc()->error()->lookupError(*(yyvsp[(1) - (1)].sval));
    5921                 :            :         }
    5922                 :            :     break;
    5923                 :            : 
    5924                 :            :   case 345:
    5925                 :            : 
    5926                 :            : /* Line 1806 of yacc.c  */
    5927                 :            : #line 3133 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5928                 :            :     {
    5929                 :            :                 idlc()->setParseState(PS_UnionLabelSeen);
    5930                 :            :         }
    5931                 :            :     break;
    5932                 :            : 
    5933                 :            :   case 346:
    5934                 :            : 
    5935                 :            : /* Line 1806 of yacc.c  */
    5936                 :            : #line 3137 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5937                 :            :     {
    5938                 :            :                 idlc()->setParseState(PS_UnionElemSeen);
    5939                 :            : 
    5940                 :            :                 AstScope*               pScope = idlc()->scopes()->topNonNull();
    5941                 :            :                 AstUnionLabel*  pLabel = NULL;
    5942                 :            :                 AstUnionBranch* pBranch = NULL;
    5943                 :            :                 AstMember*              pMember = (yyvsp[(3) - (3)].mval);
    5944                 :            : 
    5945                 :            :                 /*
    5946                 :            :                  * Create several nodes representing branches of a union.
    5947                 :            :                  * Add them to the enclosing scope (the union scope)
    5948                 :            :                  */
    5949                 :            :                 if ( pScope && (yyvsp[(1) - (3)].llval) && (yyvsp[(3) - (3)].mval) ) 
    5950                 :            :                 {
    5951                 :            :                         LabelList::iterator iter = (yyvsp[(1) - (3)].llval)->begin();
    5952                 :            :                         LabelList::iterator end = (yyvsp[(1) - (3)].llval)->end();
    5953                 :            :                         for (;iter != end; iter++) 
    5954                 :            :                         {
    5955                 :            :                                 pLabel = *iter;
    5956                 :            :                                 if ( !pLabel )
    5957                 :            :                                 {
    5958                 :            :                                         iter++;
    5959                 :            :                                         continue;
    5960                 :            :                                 }
    5961                 :            :                                 pBranch = new AstUnionBranch(pLabel, pMember->getType(),
    5962                 :            :                                                  pMember->getLocalName(), pScope);
    5963                 :            :                                 pScope->addDeclaration(pBranch);
    5964                 :            :                         }
    5965                 :            :                 }
    5966                 :            :                 if ( (yyvsp[(1) - (3)].llval) ) delete((yyvsp[(1) - (3)].llval));
    5967                 :            :         }
    5968                 :            :     break;
    5969                 :            : 
    5970                 :            :   case 347:
    5971                 :            : 
    5972                 :            : /* Line 1806 of yacc.c  */
    5973                 :            : #line 3172 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5974                 :            :     {
    5975                 :            :                 if ( (yyvsp[(2) - (2)].llval) )
    5976                 :            :                 {
    5977                 :            :                         (yyvsp[(2) - (2)].llval)->push_front((yyvsp[(1) - (2)].lbval));
    5978                 :            :                         (yyval.llval) = (yyvsp[(2) - (2)].llval);
    5979                 :            :                 } else
    5980                 :            :                 {
    5981                 :            :                         LabelList* pLabels = new LabelList();
    5982                 :            :                         pLabels->push_back((yyvsp[(1) - (2)].lbval));
    5983                 :            :                         (yyval.llval) = pLabels;
    5984                 :            :                 }
    5985                 :            :         }
    5986                 :            :     break;
    5987                 :            : 
    5988                 :            :   case 348:
    5989                 :            : 
    5990                 :            : /* Line 1806 of yacc.c  */
    5991                 :            : #line 3188 "/usr/local/src/libreoffice/idlc/source/parser.y"
    5992                 :            :     {
    5993                 :            :                 if ( (yyvsp[(1) - (2)].llval) )
    5994                 :            :                 {
    5995                 :            :                         (yyvsp[(1) - (2)].llval)->push_back((yyvsp[(2) - (2)].lbval));
    5996                 :            :                         (yyval.llval) = (yyvsp[(1) - (2)].llval);
    5997                 :            :                 } else
    5998                 :            :                 {
    5999                 :            :                         LabelList* pLabels = new LabelList();
    6000                 :            :                         pLabels->push_back((yyvsp[(2) - (2)].lbval));
    6001                 :            :                         (yyval.llval) = pLabels;
    6002                 :            :                 }
    6003                 :            :         }
    6004                 :            :     break;
    6005                 :            : 
    6006                 :            :   case 349:
    6007                 :            : 
    6008                 :            : /* Line 1806 of yacc.c  */
    6009                 :            : #line 3201 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6010                 :            :     {
    6011                 :            :                 (yyval.llval) = NULL;
    6012                 :            :         }
    6013                 :            :     break;
    6014                 :            : 
    6015                 :            :   case 350:
    6016                 :            : 
    6017                 :            : /* Line 1806 of yacc.c  */
    6018                 :            : #line 3208 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6019                 :            :     {
    6020                 :            :                 idlc()->setParseState(PS_DefaultSeen);
    6021                 :            :         }
    6022                 :            :     break;
    6023                 :            : 
    6024                 :            :   case 351:
    6025                 :            : 
    6026                 :            : /* Line 1806 of yacc.c  */
    6027                 :            : #line 3212 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6028                 :            :     {
    6029                 :            :                 idlc()->setParseState(PS_LabelColonSeen);
    6030                 :            :                 (yyval.lbval) = new AstUnionLabel(UL_default, NULL);
    6031                 :            :         }
    6032                 :            :     break;
    6033                 :            : 
    6034                 :            :   case 352:
    6035                 :            : 
    6036                 :            : /* Line 1806 of yacc.c  */
    6037                 :            : #line 3217 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6038                 :            :     {
    6039                 :            :                 idlc()->setParseState(PS_CaseSeen);
    6040                 :            :         }
    6041                 :            :     break;
    6042                 :            : 
    6043                 :            :   case 353:
    6044                 :            : 
    6045                 :            : /* Line 1806 of yacc.c  */
    6046                 :            : #line 3221 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6047                 :            :     {
    6048                 :            :                 idlc()->setParseState(PS_LabelExprSeen);
    6049                 :            :         }
    6050                 :            :     break;
    6051                 :            : 
    6052                 :            :   case 354:
    6053                 :            : 
    6054                 :            : /* Line 1806 of yacc.c  */
    6055                 :            : #line 3225 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6056                 :            :     {
    6057                 :            :                 idlc()->setParseState(PS_LabelColonSeen);
    6058                 :            :                 (yyval.lbval) = new AstUnionLabel(UL_label, (yyvsp[(3) - (5)].exval));
    6059                 :            :         }
    6060                 :            :     break;
    6061                 :            : 
    6062                 :            :   case 355:
    6063                 :            : 
    6064                 :            : /* Line 1806 of yacc.c  */
    6065                 :            : #line 3233 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6066                 :            :     {
    6067                 :            :                 idlc()->setParseState(PS_UnionElemTypeSeen);
    6068                 :            :         }
    6069                 :            :     break;
    6070                 :            : 
    6071                 :            :   case 356:
    6072                 :            : 
    6073                 :            : /* Line 1806 of yacc.c  */
    6074                 :            : #line 3237 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6075                 :            :     {
    6076                 :            :                 idlc()->setParseState(PS_UnionElemDeclSeen);
    6077                 :            :         }
    6078                 :            :     break;
    6079                 :            : 
    6080                 :            :   case 357:
    6081                 :            : 
    6082                 :            : /* Line 1806 of yacc.c  */
    6083                 :            : #line 3241 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6084                 :            :     {
    6085                 :            :                 idlc()->setParseState(PS_UnionElemCompleted);
    6086                 :            : 
    6087                 :            :                 AstScope* pScope = idlc()->scopes()->topNonNull();
    6088                 :            :                 /*
    6089                 :            :                  * Check for illegal recursive use of type
    6090                 :            :                  */
    6091                 :            : //              if ( $1 && AST_illegal_recursive_type($1))
    6092                 :            : //                      idlc()->error()->error1(EIDL_RECURSIVE_TYPE, $1);
    6093                 :            :                 /*
    6094                 :            :                  * Create a field in a union branch
    6095                 :            :                  */
    6096                 :            :                 if ( (yyvsp[(1) - (5)].cdclval) && (yyvsp[(3) - (5)].fdval) )
    6097                 :            :                 {
    6098                 :            :             AstType const * pType = (yyvsp[(3) - (5)].fdval)->compose((yyvsp[(1) - (5)].cdclval));
    6099                 :            :                         if ( !pType )
    6100                 :            :                                 (yyval.mval) = NULL;
    6101                 :            :                         else
    6102                 :            :                                 (yyval.mval) = new AstMember(pType, (yyvsp[(3) - (5)].fdval)->getName(), pScope);
    6103                 :            :                 } else
    6104                 :            :                         (yyval.mval) = NULL;
    6105                 :            :                 
    6106                 :            :                 if ( (yyvsp[(3) - (5)].fdval) ) delete (yyvsp[(3) - (5)].fdval);
    6107                 :            :         }
    6108                 :            :     break;
    6109                 :            : 
    6110                 :            :   case 358:
    6111                 :            : 
    6112                 :            : /* Line 1806 of yacc.c  */
    6113                 :            : #line 3267 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6114                 :            :     {
    6115                 :            :                 (yyval.mval) = NULL;
    6116                 :            :         }
    6117                 :            :     break;
    6118                 :            : 
    6119                 :            :   case 360:
    6120                 :            : 
    6121                 :            : /* Line 1806 of yacc.c  */
    6122                 :            : #line 3274 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6123                 :            :     { (yyval.sval) = new OString("get"); }
    6124                 :            :     break;
    6125                 :            : 
    6126                 :            :   case 361:
    6127                 :            : 
    6128                 :            : /* Line 1806 of yacc.c  */
    6129                 :            : #line 3275 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6130                 :            :     { (yyval.sval) = new OString("set"); }
    6131                 :            :     break;
    6132                 :            : 
    6133                 :            :   case 362:
    6134                 :            : 
    6135                 :            : /* Line 1806 of yacc.c  */
    6136                 :            : #line 3276 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6137                 :            :     { (yyval.sval) = new OString("published"); }
    6138                 :            :     break;
    6139                 :            : 
    6140                 :            : 
    6141                 :            : 
    6142                 :            : /* Line 1806 of yacc.c  */
    6143                 :            : #line 6144 "/usr/local/src/libreoffice/workdir/unxlngi6.pro/YaccTarget/idlc/source/parser.cxx"
    6144                 :    3727313 :       default: break;
    6145                 :            :     }
    6146                 :            :   /* User semantic actions sometimes alter yychar, and that requires
    6147                 :            :      that yytoken be updated with the new translation.  We take the
    6148                 :            :      approach of translating immediately before every use of yytoken.
    6149                 :            :      One alternative is translating here after every semantic action,
    6150                 :            :      but that translation would be missed if the semantic action invokes
    6151                 :            :      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
    6152                 :            :      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
    6153                 :            :      incorrect destructor might then be invoked immediately.  In the
    6154                 :            :      case of YYERROR or YYBACKUP, subsequent parser actions might lead
    6155                 :            :      to an incorrect destructor call or verbose syntax error message
    6156                 :            :      before the lookahead is translated.  */
    6157 [ -  + ][ #  # ]:   11481245 :   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
         [ #  # ][ #  # ]
    6158                 :            : 
    6159                 :   11481245 :   YYPOPSTACK (yylen);
    6160                 :   11481245 :   yylen = 0;
    6161 [ -  + ][ #  # ]:   11481245 :   YY_STACK_PRINT (yyss, yyssp);
    6162                 :            : 
    6163                 :   11481245 :   *++yyvsp = yyval;
    6164                 :            : 
    6165                 :            :   /* Now `shift' the result of the reduction.  Determine what state
    6166                 :            :      that goes to, based on the state we popped back to and the rule
    6167                 :            :      number reduced by.  */
    6168                 :            : 
    6169                 :   11481245 :   yyn = yyr1[yyn];
    6170                 :            : 
    6171                 :   11481245 :   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
    6172 [ +  + ][ +  - ]:   11481245 :   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
                 [ +  + ]
    6173                 :    3791060 :     yystate = yytable[yystate];
    6174                 :            :   else
    6175                 :    7690185 :     yystate = yydefgoto[yyn - YYNTOKENS];
    6176                 :            : 
    6177                 :   11481245 :   goto yynewstate;
    6178                 :            : 
    6179                 :            : 
    6180                 :            : /*------------------------------------.
    6181                 :            : | yyerrlab -- here on detecting error |
    6182                 :            : `------------------------------------*/
    6183                 :            : yyerrlab:
    6184                 :            :   /* Make sure we have latest lookahead translation.  See comments at
    6185                 :            :      user semantic actions for why this is necessary.  */
    6186 [ #  # ][ #  # ]:          0 :   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
    6187                 :            : 
    6188                 :            :   /* If not already recovering from an error, report this error.  */
    6189         [ #  # ]:          0 :   if (!yyerrstatus)
    6190                 :            :     {
    6191                 :          0 :       ++yynerrs;
    6192                 :            : #if ! YYERROR_VERBOSE
    6193                 :            :       yyerror (YY_("syntax error"));
    6194                 :            : #else
    6195                 :            : # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
    6196                 :            :                                         yyssp, yytoken)
    6197                 :            :       {
    6198                 :          0 :         char const *yymsgp = YY_("syntax error");
    6199                 :            :         int yysyntax_error_status;
    6200                 :          0 :         yysyntax_error_status = YYSYNTAX_ERROR;
    6201         [ #  # ]:          0 :         if (yysyntax_error_status == 0)
    6202                 :          0 :           yymsgp = yymsg;
    6203         [ #  # ]:          0 :         else if (yysyntax_error_status == 1)
    6204                 :            :           {
    6205         [ #  # ]:          0 :             if (yymsg != yymsgbuf)
    6206                 :          0 :               YYSTACK_FREE (yymsg);
    6207                 :          0 :             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
    6208         [ #  # ]:          0 :             if (!yymsg)
    6209                 :            :               {
    6210                 :          0 :                 yymsg = yymsgbuf;
    6211                 :          0 :                 yymsg_alloc = sizeof yymsgbuf;
    6212                 :          0 :                 yysyntax_error_status = 2;
    6213                 :            :               }
    6214                 :            :             else
    6215                 :            :               {
    6216                 :          0 :                 yysyntax_error_status = YYSYNTAX_ERROR;
    6217                 :          0 :                 yymsgp = yymsg;
    6218                 :            :               }
    6219                 :            :           }
    6220         [ #  # ]:          0 :         yyerror (yymsgp);
    6221         [ #  # ]:          0 :         if (yysyntax_error_status == 2)
    6222                 :          0 :           goto yyexhaustedlab;
    6223                 :            :       }
    6224                 :            : # undef YYSYNTAX_ERROR
    6225                 :            : #endif
    6226                 :            :     }
    6227                 :            : 
    6228                 :            : 
    6229                 :            : 
    6230         [ #  # ]:          0 :   if (yyerrstatus == 3)
    6231                 :            :     {
    6232                 :            :       /* If just tried and failed to reuse lookahead token after an
    6233                 :            :          error, discard it.  */
    6234                 :            : 
    6235         [ #  # ]:          0 :       if (yychar <= YYEOF)
    6236                 :            :         {
    6237                 :            :           /* Return failure if at end of input.  */
    6238         [ #  # ]:          0 :           if (yychar == YYEOF)
    6239                 :          0 :             YYABORT;
    6240                 :            :         }
    6241                 :            :       else
    6242                 :            :         {
    6243                 :            :           yydestruct ("Error: discarding",
    6244         [ #  # ]:          0 :                       yytoken, &yylval);
    6245                 :          0 :           yychar = YYEMPTY;
    6246                 :            :         }
    6247                 :            :     }
    6248                 :            : 
    6249                 :            :   /* Else will try to reuse lookahead token after shifting the error
    6250                 :            :      token.  */
    6251                 :          0 :   goto yyerrlab1;
    6252                 :            : 
    6253                 :            : 
    6254                 :            : /*---------------------------------------------------.
    6255                 :            : | yyerrorlab -- error raised explicitly by YYERROR.  |
    6256                 :            : `---------------------------------------------------*/
    6257                 :            : yyerrorlab:
    6258                 :            : 
    6259                 :            :   /* Pacify compilers like GCC when the user code never invokes
    6260                 :            :      YYERROR and the label yyerrorlab therefore never appears in user
    6261                 :            :      code.  */
    6262                 :            :   if (/*CONSTCOND*/ 0)
    6263                 :            :      goto yyerrorlab;
    6264                 :            : 
    6265                 :            :   /* Do not reclaim the symbols of the rule which action triggered
    6266                 :            :      this YYERROR.  */
    6267                 :            :   YYPOPSTACK (yylen);
    6268                 :            :   yylen = 0;
    6269                 :            :   YY_STACK_PRINT (yyss, yyssp);
    6270                 :            :   yystate = *yyssp;
    6271                 :            :   goto yyerrlab1;
    6272                 :            : 
    6273                 :            : 
    6274                 :            : /*-------------------------------------------------------------.
    6275                 :            : | yyerrlab1 -- common code for both syntax error and YYERROR.  |
    6276                 :            : `-------------------------------------------------------------*/
    6277                 :            : yyerrlab1:
    6278                 :          0 :   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
    6279                 :            : 
    6280                 :          0 :   for (;;)
    6281                 :            :     {
    6282                 :          0 :       yyn = yypact[yystate];
    6283         [ #  # ]:          0 :       if (!yypact_value_is_default (yyn))
    6284                 :            :         {
    6285                 :          0 :           yyn += YYTERROR;
    6286 [ #  # ][ #  # ]:          0 :           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
                 [ #  # ]
    6287                 :            :             {
    6288                 :          0 :               yyn = yytable[yyn];
    6289         [ #  # ]:          0 :               if (0 < yyn)
    6290                 :          0 :                 break;
    6291                 :            :             }
    6292                 :            :         }
    6293                 :            : 
    6294                 :            :       /* Pop the current state because it cannot handle the error token.  */
    6295         [ #  # ]:          0 :       if (yyssp == yyss)
    6296                 :          0 :         YYABORT;
    6297                 :            : 
    6298                 :            : 
    6299                 :            :       yydestruct ("Error: popping",
    6300         [ #  # ]:          0 :                   yystos[yystate], yyvsp);
    6301                 :          0 :       YYPOPSTACK (1);
    6302                 :          0 :       yystate = *yyssp;
    6303 [ #  # ][ #  # ]:          0 :       YY_STACK_PRINT (yyss, yyssp);
    6304                 :            :     }
    6305                 :            : 
    6306                 :          0 :   *++yyvsp = yylval;
    6307                 :            : 
    6308                 :            : 
    6309                 :            :   /* Shift the error token.  */
    6310 [ #  # ][ #  # ]:          0 :   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
         [ #  # ][ #  # ]
    6311                 :            : 
    6312                 :          0 :   yystate = yyn;
    6313                 :          0 :   goto yynewstate;
    6314                 :            : 
    6315                 :            : 
    6316                 :            : /*-------------------------------------.
    6317                 :            : | yyacceptlab -- YYACCEPT comes here.  |
    6318                 :            : `-------------------------------------*/
    6319                 :            : yyacceptlab:
    6320                 :       5978 :   yyresult = 0;
    6321                 :       5978 :   goto yyreturn;
    6322                 :            : 
    6323                 :            : /*-----------------------------------.
    6324                 :            : | yyabortlab -- YYABORT comes here.  |
    6325                 :            : `-----------------------------------*/
    6326                 :            : yyabortlab:
    6327                 :          0 :   yyresult = 1;
    6328                 :          0 :   goto yyreturn;
    6329                 :            : 
    6330                 :            : #if !defined(yyoverflow) || YYERROR_VERBOSE
    6331                 :            : /*-------------------------------------------------.
    6332                 :            : | yyexhaustedlab -- memory exhaustion comes here.  |
    6333                 :            : `-------------------------------------------------*/
    6334                 :            : yyexhaustedlab:
    6335         [ #  # ]:          0 :   yyerror (YY_("memory exhausted"));
    6336                 :          0 :   yyresult = 2;
    6337                 :            :   /* Fall through.  */
    6338                 :            : #endif
    6339                 :            : 
    6340                 :            : yyreturn:
    6341         [ -  + ]:       5978 :   if (yychar != YYEMPTY)
    6342                 :            :     {
    6343                 :            :       /* Make sure we have latest lookahead translation.  See comments at
    6344                 :            :          user semantic actions for why this is necessary.  */
    6345         [ #  # ]:          0 :       yytoken = YYTRANSLATE (yychar);
    6346                 :            :       yydestruct ("Cleanup: discarding lookahead",
    6347         [ #  # ]:          0 :                   yytoken, &yylval);
    6348                 :            :     }
    6349                 :            :   /* Do not reclaim the symbols of the rule which action triggered
    6350                 :            :      this YYABORT or YYACCEPT.  */
    6351                 :       5978 :   YYPOPSTACK (yylen);
    6352 [ -  + ][ #  # ]:       5978 :   YY_STACK_PRINT (yyss, yyssp);
    6353         [ +  + ]:      17934 :   while (yyssp != yyss)
    6354                 :            :     {
    6355                 :            :       yydestruct ("Cleanup: popping",
    6356         [ +  - ]:      11956 :                   yystos[*yyssp], yyvsp);
    6357                 :      11956 :       YYPOPSTACK (1);
    6358                 :            :     }
    6359                 :            : #ifndef yyoverflow
    6360         [ +  + ]:       5978 :   if (yyss != yyssa)
    6361                 :          9 :     YYSTACK_FREE (yyss);
    6362                 :            : #endif
    6363                 :            : #if YYERROR_VERBOSE
    6364         [ -  + ]:       5978 :   if (yymsg != yymsgbuf)
    6365                 :          0 :     YYSTACK_FREE (yymsg);
    6366                 :            : #endif
    6367                 :            :   /* Make sure YYID is used.  */
    6368                 :       5978 :   return YYID (yyresult);
    6369                 :            : }
    6370                 :            : 
    6371                 :            : 
    6372                 :            : 
    6373                 :            : /* Line 2067 of yacc.c  */
    6374                 :            : #line 3279 "/usr/local/src/libreoffice/idlc/source/parser.y"
    6375                 :            : 
    6376                 :            : 
    6377                 :            : /*
    6378                 :            :  * Report an error situation discovered in a production
    6379                 :            :  */
    6380                 :            : void yyerror(char const *errmsg)
    6381                 :            : {
    6382                 :            :         idlc()->error()->syntaxError(idlc()->getParseState(), idlc()->getLineNumber(), errmsg);
    6383                 :            :         idlc()->setParseState(PS_NoState);
    6384                 :            : }
    6385                 :            : 

Generated by: LCOV version 1.10