diff options
Diffstat (limited to 'TAO/TAO_IDL/fe')
-rw-r--r-- | TAO/TAO_IDL/fe/fe_init.cpp | 57 | ||||
-rw-r--r-- | TAO/TAO_IDL/fe/fe_interface_header.cpp | 273 | ||||
-rw-r--r-- | TAO/TAO_IDL/fe/idl.ll | 23 | ||||
-rw-r--r-- | TAO/TAO_IDL/fe/idl.yy | 355 | ||||
-rw-r--r-- | TAO/TAO_IDL/fe/lex.yy.cpp | 2731 | ||||
-rw-r--r-- | TAO/TAO_IDL/fe/y.tab.cpp | 4380 | ||||
-rw-r--r-- | TAO/TAO_IDL/fe/y.tab.h | 74 |
7 files changed, 4366 insertions, 3527 deletions
diff --git a/TAO/TAO_IDL/fe/fe_init.cpp b/TAO/TAO_IDL/fe/fe_init.cpp index 6ede75fca0b..32b82f1731e 100644 --- a/TAO/TAO_IDL/fe/fe_init.cpp +++ b/TAO/TAO_IDL/fe/fe_init.cpp @@ -187,6 +187,17 @@ fe_populate(AST_Module *m) NULL); m->fe_add_predefined_type(pdt); +# ifdef IDL_HAS_VALUETYPE + if (idl_global->obv_support ()) + { + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("ValueBase"), + NULL); + m->fe_add_predefined_type(pdt); + } +# endif /* IDL_HAS_VALUETYPE */ + /* * Add these to make all keywords protected even in different spellings */ @@ -316,6 +327,52 @@ fe_populate(AST_Module *m) create_scoped_name("FALSE"), NULL); m->fe_add_predefined_type(pdt); + +# ifdef IDL_HAS_VALUETYPE + if (idl_global->obv_support ()) + { + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("abstract"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("custom"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("init"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("private"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("public"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("supports"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("truncatable"), + NULL); + m->fe_add_predefined_type(pdt); + pdt = idl_global->gen() + ->create_predefined_type(AST_PredefinedType::PT_pseudo, + create_scoped_name("valuetype"), + NULL); + m->fe_add_predefined_type(pdt); + } +# endif /* IDL_HAS_VALUETYPE */ } /* diff --git a/TAO/TAO_IDL/fe/fe_interface_header.cpp b/TAO/TAO_IDL/fe/fe_interface_header.cpp index e1b70fb99aa..1922b537a6f 100644 --- a/TAO/TAO_IDL/fe/fe_interface_header.cpp +++ b/TAO/TAO_IDL/fe/fe_interface_header.cpp @@ -53,8 +53,8 @@ Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR Sun, Sun Microsystems and the Sun logo are trademarks or registered trademarks of Sun Microsystems, Inc. -SunSoft, Inc. -2550 Garcia Avenue +SunSoft, Inc. +2550 Garcia Avenue Mountain View, California 94043 NOTE: @@ -72,10 +72,10 @@ trademarks or registered trademarks of Sun Microsystems, Inc. * AST_Interface node used to represent this interface is created. */ -#include "idl.h" -#include "idl_extern.h" +#include "idl.h" +#include "idl_extern.h" -#include "fe_private.h" +#include "fe_private.h" ACE_RCSID(fe, fe_interface_header, "$Id$") @@ -83,10 +83,13 @@ ACE_RCSID(fe, fe_interface_header, "$Id$") * Constructor(s) and destructor */ -FE_InterfaceHeader::FE_InterfaceHeader(UTL_ScopedName *n, UTL_NameList *nl) - : pd_interface_name(n) +FE_InterfaceHeader::FE_InterfaceHeader(UTL_ScopedName *n, UTL_NameList *nl, + UTL_NameList *supports, + idl_bool compile_now) + : pd_interface_name(n) { - compile_inheritance(nl); + if (compile_now) + compile_inheritance (nl, supports); } /* @@ -95,16 +98,16 @@ FE_InterfaceHeader::FE_InterfaceHeader(UTL_ScopedName *n, UTL_NameList *nl) // Compute flattened, non-repeating list of inherited interfaces -#undef INCREMENT -#define INCREMENT 512 +#undef INCREMENT +#define INCREMENT 512 /* * Private storage used to store interfaces seen already in the * computation of the unique, flattened inheritance list */ static AST_Interface **iseen = NULL; -static long iallocated = 0; -static long iused = 0; +static long iallocated = 0; +static long iused = 0; /* * Add an interface to an inheritance spec @@ -112,8 +115,8 @@ static long iused = 0; static void add_inheritance(AST_Interface *i) { - long k; - AST_Interface **oiseen; + long k; + AST_Interface **oiseen; /* * Make sure there's space for one more @@ -127,7 +130,7 @@ add_inheritance(AST_Interface *i) iallocated += INCREMENT; iseen = new AST_Interface *[iallocated]; for (k = 0; k < iused; k++) - iseen[k] = oiseen[k]; + iseen[k] = oiseen[k]; delete oiseen; } } @@ -144,7 +147,7 @@ add_inheritance(AST_Interface *i) static long already_seen(AST_Interface *ip) { - long i; + long i; for (i = 0; i < iused; i++) { if (iseen[i] == ip) @@ -179,71 +182,104 @@ FE_InterfaceHeader::compile_one_inheritance(AST_Interface *i) * Compute the list of top-level interfaces this one inherits from */ void -FE_InterfaceHeader::compile_inheritance(UTL_NameList *nl) +FE_InterfaceHeader::compile_inheritance(UTL_NameList *ifaces, + UTL_NameList *supports) { - UTL_NamelistActiveIterator *l = new UTL_NamelistActiveIterator(nl); - AST_Decl *d; - AST_Interface *i; - long k; + UTL_NamelistActiveIterator *l; + AST_Decl *d; + AST_Interface *i; + long k; + UTL_NameList *nl; + int loops; + long ichecked = 0; + idl_bool inh_err = 0; + idl_bool in_supports = 0; iused = 0; /* * Compute expanded flattened non-repeating list of interfaces * which this one inherits from */ - while (!(l->is_done())) { - /* - * Check that scope stack is valid - */ - if (idl_global->scopes()->top() == NULL) { - idl_global->err()->lookup_error(l->item()); - return; + nl = ifaces; + // loop twice if nl and supports are nonempty + for (loops = 0; loops < 2; ++loops) { + if (nl != NULL) { + l = new UTL_NamelistActiveIterator(nl); + while (!(l->is_done())) { + /* + * Check that scope stack is valid + */ + if (idl_global->scopes()->top() == NULL) { + idl_global->err()->lookup_error(l->item()); + return; + } + /* + * Look it up + */ + d = idl_global->scopes()->top()->lookup_by_name(l->item(), I_TRUE); + /* + * Not found? + */ + if (d == NULL) { + idl_global->err()->lookup_error(l->item()); + return; + } + /* + * Not an appropriate interface? + */ + while(d->node_type() == AST_Decl::NT_typedef) + d = AST_Typedef::narrow_from_decl(d)->base_type(); + if (d->node_type() == AST_Decl::NT_interface) + i = AST_Interface::narrow_from_decl(d); + else + i = NULL; + if (i != NULL) + { + if (in_supports) + { + inh_err = ! this->check_supports (i); + } + else + { + if (ichecked == 0) + inh_err = ! this->check_first (i); + else + inh_err = ! this->check_further (i); + } + } + else + { + inh_err = 1; + } + if (inh_err) + { + idl_global->err()->inheritance_error(pd_interface_name, d); + return; //%! really ? inh_err=0; and test the remaining...? + } + /* + * Forward declared interface? + */ + if (!i->is_defined()) { + idl_global->err()->inheritance_fwd_error(pd_interface_name, i); + return; + } + /* + * OK, see if we have to add this to the list of interfaces + * inherited from + */ + compile_one_inheritance(i); + + /* + * Next element in header list + */ + ++ ichecked; + l->next(); + } + delete l; } - /* - * Look it up - */ - d = idl_global->scopes()->top()->lookup_by_name(l->item(), I_TRUE); - /* - * Not found? - */ - if (d == NULL) { - idl_global->err()->lookup_error(l->item()); - return; - } - /* - * Not an interface? - */ - while(d->node_type() == AST_Decl::NT_typedef) - d = AST_Typedef::narrow_from_decl(d)->base_type(); - if (d->node_type() != AST_Decl::NT_interface) { - idl_global->err()->inheritance_error(pd_interface_name, d); - return; - } - /* - * OK, cast to an interface - */ - i = AST_Interface::narrow_from_decl(d); - if (i == NULL) - idl_global->err()->inheritance_error(pd_interface_name, d); - /* - * Forward declared interface? - */ - if (!i->is_defined()) { - idl_global->err()->inheritance_fwd_error(pd_interface_name, i); - return; - } - /* - * OK, see if we have to add this to the list of interfaces - * inherited from - */ - compile_one_inheritance(i); - - /* - * Next element in header list - */ - l->next(); + in_supports = 1; + nl = supports; } - delete l; /* * OK, install in interface header */ @@ -253,6 +289,35 @@ FE_InterfaceHeader::compile_inheritance(UTL_NameList *nl) pd_n_inherits = iused; } +// check_ methods called from compile_inheritance() +// overridden in derived classes +idl_bool +FE_InterfaceHeader::check_first (AST_Interface *i) +{ + // nothing special for the first + return this->check_further (i); +} + +idl_bool +FE_InterfaceHeader::check_further (AST_Interface *i) +{ + if (i && ! i->is_valuetype()) + { + return 1; + } + else + { + return 0; + } +} + +idl_bool +FE_InterfaceHeader::check_supports (AST_Interface *i) +{ + return 0; +} + + /* * Public operations */ @@ -282,3 +347,67 @@ FE_InterfaceHeader::n_inherits() { return pd_n_inherits; } + + +// #ifdef IDL_HAS_VALUETYPE + +// FE_obv_header + +FE_obv_header::FE_obv_header (UTL_ScopedName *n, UTL_NameList *nl, UTL_NameList *supports) + : FE_InterfaceHeader (n, nl, supports,0), + truncatable_ (0), + n_concrete_ (0) +{ + compile_inheritance (nl, supports); +} + +// check_ methods called from compile_inheritance() +idl_bool +FE_obv_header::check_first (AST_Interface *i) +{ + if (i && i->is_valuetype()) + { + if (! i->is_abstract_valuetype()) + ++ n_concrete_; + return 1; + } + else + { + return 0; + } +} + +idl_bool +FE_obv_header::check_further (AST_Interface *i) +{ + if (i && i->is_valuetype() && i->is_abstract_valuetype()) + { + return 1; + } + else + { + return 0; + } +} + +idl_bool +FE_obv_header::check_supports (AST_Interface *i) +{ + if (i && ! i->is_valuetype()) + { + return 1; + } + else + { + return 0; + } +} + + +long +FE_obv_header::n_concrete () +{ + return n_concrete_; +} + +// #endif /* IDL_HAS_VALUETYPE */ diff --git a/TAO/TAO_IDL/fe/idl.ll b/TAO/TAO_IDL/fe/idl.ll index 2b976240b61..f6c597e405d 100644 --- a/TAO/TAO_IDL/fe/idl.ll +++ b/TAO/TAO_IDL/fe/idl.ll @@ -1,6 +1,6 @@ %{ -/* +/* $Id$ COPYRIGHT @@ -93,6 +93,19 @@ inline char *__yytext() #else #define ace_yytext yytext #endif /* 0 */ + +static int scan_obv_token (int token) +{ +#ifdef IDL_HAS_VALUETYPE + if (idl_global->obv_support ()) + { + return token; + } +#endif /* IDL_HAS_VALUETYPE */ + yylval.strval = ACE_OS::strdup (ace_yytext); + return IDENTIFIER; +} + %} /* SO we don't choke on files that use \r\n */ @@ -133,6 +146,14 @@ boolean return IDL_BOOLEAN; octet return IDL_OCTET; void return IDL_VOID; native return IDL_NATIVE; +abstract return scan_obv_token (IDL_ABSTRACT); +custom return scan_obv_token (IDL_CUSTOM); +init return scan_obv_token (IDL_INIT); +private return scan_obv_token (IDL_PRIVATE); +public return scan_obv_token (IDL_PUBLIC); +supports return scan_obv_token (IDL_SUPPORTS); +truncatable return scan_obv_token (IDL_TRUNCATABLE); +valuetype return scan_obv_token (IDL_VALUETYPE); TRUE return IDL_TRUETOK; FALSE return IDL_FALSETOK; diff --git a/TAO/TAO_IDL/fe/idl.yy b/TAO/TAO_IDL/fe/idl.yy index 45d2762f2b8..94bddc33d33 100644 --- a/TAO/TAO_IDL/fe/idl.yy +++ b/TAO/TAO_IDL/fe/idl.yy @@ -1,4 +1,4 @@ - +/* $Id$ */ /* @@ -102,9 +102,11 @@ extern int yyleng; UTL_LabelList *llval; /* Label list */ UTL_DeclList *dlval; /* Declaration list */ FE_InterfaceHeader *ihval; /* Interface header */ + FE_obv_header *vhval; /* Valuetype header */ AST_Expression *exval; /* Expression value */ AST_UnionLabel *ulval; /* Union label */ AST_Field *ffval; /* Field value */ + AST_Field::Visibility vival; /* N/A, pub or priv */ AST_Expression::ExprType etval; /* Expression type */ AST_Argument::Direction dival; /* Argument direction */ AST_Operation::Flags ofval; /* Operation flags */ @@ -162,6 +164,15 @@ extern int yyleng; %token IDL_RAISES %token IDL_CONTEXT %token IDL_NATIVE + /* OBV tokens see OMG ptc/98-10-04 3.2.4 */ +%token IDL_ABSTRACT +%token IDL_CUSTOM +%token IDL_INIT +%token IDL_PRIVATE +%token IDL_PUBLIC +%token IDL_SUPPORTS +%token IDL_TRUNCATABLE +%token IDL_VALUETYPE %token <ival> IDL_INTEGER_LITERAL %token <sval> IDL_STRING_LITERAL @@ -189,7 +200,7 @@ extern int yyleng; %type <slval> string_literals %type <nlval> at_least_one_scoped_name scoped_names inheritance_spec -%type <nlval> opt_raises +%type <nlval> opt_raises supports_spec %type <elval> at_least_one_array_dim array_dims @@ -200,6 +211,8 @@ extern int yyleng; %type <ihval> interface_header +%type <vhval> value_header + %type <exval> expression const_expr or_expr xor_expr and_expr shift_expr %type <exval> add_expr mult_expr unary_expr primary_expr literal %type <exval> positive_int_expr array_dim @@ -218,9 +231,9 @@ extern int yyleng; %type <deval> declarator simple_declarator complex_declarator -%type <bval> opt_readonly +%type <bval> opt_readonly, opt_truncatable -%type <idval> interface_decl id +%type <idval> interface_decl value_decl id %type <ival> type_dcl %% @@ -276,6 +289,14 @@ definition { idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } + | value_def + { + idl_global->set_parse_state(IDL_GlobalData::PS_ValuetypeDeclSeen); + } + ';' + { + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + } | error { idl_global->err()->syntax_error(idl_global->parse_state()); @@ -348,9 +369,6 @@ interface : AST_Interface *i = NULL; AST_Decl *v = NULL; UTL_StrList *p = idl_global->pragmas(); - AST_Decl *d = NULL; - AST_Interface *fd = NULL; - ACE_UNUSED_ARG (v); /* @@ -361,61 +379,7 @@ interface : $1->inherits(), $1->n_inherits(), p); - if (i != NULL && - (d = s->lookup_by_name(i->name(), I_FALSE)) != NULL) { - /* - * See if we're defining a forward declared interface. - */ - if (d->node_type() == AST_Decl::NT_interface) { - /* - * Narrow to an interface - */ - fd = AST_Interface::narrow_from_decl(d); - /* - * Successful? - */ - if (fd == NULL) { - /* - * Should we give an error here? - */ - } - /* - * If it is a forward declared interface.. - */ - else if (!fd->is_defined()) { - /* - * Check if redefining in same scope - */ - if (fd->defined_in() != s) { - idl_global->err() - ->error3(UTL_Error::EIDL_SCOPE_CONFLICT, - i, - fd, - ScopeAsDecl(s)); - } - /* - * All OK, do the redefinition - */ - else { - fd->set_inherits($1->inherits()); - fd->set_n_inherits($1->n_inherits()); - /* - * Update place of definition - */ - fd->set_imported(idl_global->imported()); - fd->set_in_main_file(idl_global->in_main_file()); - fd->set_line(idl_global->lineno()); - fd->set_file_name(idl_global->filename()); - fd->add_pragmas(p); - /* - * Use full definition node - */ - delete i; - i = fd; - } - } - } - } + AST_Interface::fwd_redefinition_helper (i,s,p); /* * Add the interface to its definition scope */ @@ -491,6 +455,250 @@ inheritance_spec } ; +value_def + : valuetype + | value_abs_decl + | value_forward_decl + | value_box_decl + ; + +valuetype + : IDL_CUSTOM value_concrete_decl + { + cerr << "error in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "Sorry, I (TAO_IDL) can't handle custom yet\n"; + /* set custom (if not truncatable) */ + } + | value_concrete_decl + ; + +value_concrete_decl : + value_header + { + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Interface *i = NULL; + UTL_StrList *p = idl_global->pragmas(); + + if (s != NULL && $1 != NULL) { + i = idl_global->gen()->create_valuetype($1->interface_name(), + $1->inherits(), + $1->n_inherits(), + p); + AST_Interface::fwd_redefinition_helper (i,s,p); + /* + * Add the valuetype to its definition scope + */ + (void) s->fe_add_interface(i); + } + /* + * Push it on the scope stack + */ + idl_global->scopes()->push(i); + } + '{' + { + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSqSeen); + } + value_elements + { + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceBodySeen); + } + '}' + { + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceQsSeen); + /* + * Done with this interface - pop it off the scopes stack + */ + UTL_Scope* s = idl_global->scopes()->top(); + AST_Interface* m = AST_Interface::narrow_from_scope (s); + UTL_StrList *p = m->pragmas (); + if (p != 0) p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); + } + ; + +value_abs_decl : + IDL_ABSTRACT + value_header + { + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Interface *i = NULL; + UTL_StrList *p = idl_global->pragmas(); + + if (s != NULL && $2 != NULL) { + + if ($2->n_concrete() > 0) { + idl_global->err()->abstract_inheritance_error ($2->interface_name ()); + } + + i = idl_global->gen()->create_valuetype($2->interface_name(), + $2->inherits(), + $2->n_inherits(), + p); + i->set_abstract_valuetype (); + AST_Interface::fwd_redefinition_helper (i,s,p); + /* + * Add the valuetype to its definition scope + */ + (void) s->fe_add_interface(i); + } + /* + * Push it on the scope stack + */ + idl_global->scopes()->push(i); + } + '{' + { + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSqSeen); + } + exports + { + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceBodySeen); + } + '}' + { + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceQsSeen); + /* + * Done with this interface - pop it off the scopes stack + */ + UTL_Scope* s = idl_global->scopes()->top(); + AST_Interface* m = AST_Interface::narrow_from_scope (s); + UTL_StrList *p = m->pragmas (); + if (p != 0) p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); + } + + ; + +value_header : + value_decl + opt_truncatable + inheritance_spec + supports_spec + { + $$ = new FE_obv_header (new UTL_ScopedName ($1, NULL), $3, $4); + } + ; + +value_decl + : IDL_VALUETYPE + { + idl_global->set_parse_state(IDL_GlobalData::PS_ValuetypeSeen); + } + id + { + idl_global->set_parse_state(IDL_GlobalData::PS_ValuetypeIDSeen); + $$ = $3; + } + ; + +opt_truncatable : + IDL_TRUNCATABLE + { + cerr << "warning in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "truncatable modifier not supported and is ignored\n"; + $$ = I_FALSE; + /* $$ = I_TRUE; */ + } + | /* EMPTY */ + { + $$ = I_FALSE; + } + ; + +supports_spec : + IDL_SUPPORTS + scoped_name + { + $$ = new UTL_NameList($2, NULL); + } + | /* empty */ + { + $$ = NULL; + } + ; + +value_forward_decl : + IDL_ABSTRACT + value_decl + { + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName($2, NULL); + AST_InterfaceFwd *f = NULL; + UTL_StrList *p = idl_global->pragmas(); + + idl_global->set_parse_state(IDL_GlobalData::PS_ForwardDeclSeen); + /* + * Create a node representing a forward declaration of an + * valuetype. Store it in the enclosing scope + */ + if (s != NULL) { + f = idl_global->gen()->create_valuetype_fwd(n, p); + // if ($1) + f->set_abstract_valuetype (); + (void) s->fe_add_interface_fwd(f); + } + } + | + value_decl + { + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName($1, NULL); + AST_InterfaceFwd *f = NULL; + UTL_StrList *p = idl_global->pragmas(); + + idl_global->set_parse_state(IDL_GlobalData::PS_ForwardDeclSeen); + /* + * Create a node representing a forward declaration of an + * valuetype. Store it in the enclosing scope + */ + if (s != NULL) { + f = idl_global->gen()->create_valuetype_fwd(n, p); + (void) s->fe_add_interface_fwd(f); + } + } + ; + + +value_box_decl + : value_decl type_spec /* in this order %!?*/ + { + cerr << "error in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "Sorry, I (TAO_IDL) can't handle boxes yet\n"; + } + ; + +value_elements + : value_elements value_element + | /* EMPTY */ + ; + +value_element + : state_member + | export + | init_decl + ; + +state_member + : IDL_PUBLIC + { + /* is $0 to member_i */ + $<vival>$ = AST_Field::vis_PUBLIC; + } + member_i + | IDL_PRIVATE + { + /* is $0 to member_i */ + $<vival>$ = AST_Field::vis_PRIVATE; + } + member_i + ; + exports : exports export | /* EMPTY */ @@ -1219,7 +1427,15 @@ members | /* EMPTY */ ; -member : +member : + { + /* is $0 to member_i */ + $<vival>$ = AST_Field::vis_NA; + } + member_i + ; + +member_i: type_spec { idl_global->set_parse_state(IDL_GlobalData::PS_MemberTypeSeen); @@ -1255,7 +1471,8 @@ member : AST_Type *tp = d->compose($1); if (tp == NULL) continue; - f = idl_global->gen()->create_field(tp, d->name(), p); + /* $0 denotes Visibility, must be on yacc reduction stack */ + f = idl_global->gen()->create_field(tp, d->name(), p, $<vival>0); (void) s->fe_add_field(f); } delete l; @@ -2124,6 +2341,16 @@ op_type_spec } ; +init_decl + : IDL_INIT + { + cerr << "error in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "Sorry, I (TAO_IDL) can't handle init yet\n"; + } + ; + + parameter_list : '(' { diff --git a/TAO/TAO_IDL/fe/lex.yy.cpp b/TAO/TAO_IDL/fe/lex.yy.cpp index ff87610fa03..868409f6c93 100644 --- a/TAO/TAO_IDL/fe/lex.yy.cpp +++ b/TAO/TAO_IDL/fe/lex.yy.cpp @@ -28,15 +28,15 @@ /* The "const" storage-class-modifier is valid. */ #define TAO_YY_USE_CONST -#else /* ! __cplusplus */ +#else /* ! __cplusplus */ #if __STDC__ #define TAO_YY_USE_PROTOS #define TAO_YY_USE_CONST -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ #ifdef __TURBOC__ #pragma warn -rch @@ -105,10 +105,10 @@ extern FILE *tao_yyin, *tao_yyout; * int a single C statement (which needs a semi-colon terminator). This * avoids problems with code like: * - * if ( condition_holds ) - * tao_yyless( 5 ); - * else - * do_something_else(); + * if ( condition_holds ) + * tao_yyless( 5 ); + * else + * do_something_else(); * * Prior to using the do-while the compiler would get upset at the * "else" because it interpreted the "if" statement as being all @@ -118,15 +118,15 @@ extern FILE *tao_yyin, *tao_yyout; /* Return all but the first 'n' matched characters back to the input stream. */ #define tao_yyless(n) \ - do \ - { \ - /* Undo effects of setting up tao_yytext. */ \ - *tao_yy_cp = tao_yy_hold_char; \ - TAO_YY_RESTORE_TAO_YY_MORE_OFFSET \ - tao_yy_c_buf_p = tao_yy_cp = tao_yy_bp + n - TAO_YY_MORE_ADJ; \ - TAO_YY_DO_BEFORE_ACTION; /* set up tao_yytext again */ \ - } \ - while ( 0 ) + do \ + { \ + /* Undo effects of setting up tao_yytext. */ \ + *tao_yy_cp = tao_yy_hold_char; \ + TAO_YY_RESTORE_TAO_YY_MORE_OFFSET \ + tao_yy_c_buf_p = tao_yy_cp = tao_yy_bp + n - TAO_YY_MORE_ADJ; \ + TAO_YY_DO_BEFORE_ACTION; /* set up tao_yytext again */ \ + } \ + while ( 0 ) #define unput(c) tao_yyunput( c, tao_yytext_ptr ) @@ -138,61 +138,61 @@ typedef unsigned int tao_yy_size_t; struct tao_yy_buffer_state - { - FILE *tao_yy_input_file; - - char *tao_yy_ch_buf; /* input buffer */ - char *tao_yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - tao_yy_size_t tao_yy_buf_size; - - /* Number of characters read into tao_yy_ch_buf, not including EOB - * characters. - */ - int tao_yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int tao_yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int tao_yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int tao_yy_at_bol; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int tao_yy_fill_buffer; - - int tao_yy_buffer_status; + { + FILE *tao_yy_input_file; + + char *tao_yy_ch_buf; /* input buffer */ + char *tao_yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + tao_yy_size_t tao_yy_buf_size; + + /* Number of characters read into tao_yy_ch_buf, not including EOB + * characters. + */ + int tao_yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int tao_yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int tao_yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int tao_yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int tao_yy_fill_buffer; + + int tao_yy_buffer_status; #define TAO_YY_BUFFER_NEW 0 #define TAO_YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as TAO_YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via tao_yyrestart()), so that the user can continue scanning by - * just pointing tao_yyin at a new input file. - */ + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as TAO_YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via tao_yyrestart()), so that the user can continue scanning by + * just pointing tao_yyin at a new input file. + */ #define TAO_YY_BUFFER_EOF_PENDING 2 - }; + }; static TAO_YY_BUFFER_STATE tao_yy_current_buffer = 0; @@ -206,15 +206,15 @@ static TAO_YY_BUFFER_STATE tao_yy_current_buffer = 0; /* tao_yy_hold_char holds the character lost when tao_yytext is formed. */ static char tao_yy_hold_char; -static int tao_yy_n_chars; /* number of characters read into tao_yy_ch_buf */ +static int tao_yy_n_chars; /* number of characters read into tao_yy_ch_buf */ int tao_yyleng; /* Points to current character in buffer. */ static char *tao_yy_c_buf_p = (char *) 0; -static int tao_yy_init = 1; /* whether we need to initialize */ -static int tao_yy_start = 0; /* start state number */ +static int tao_yy_init = 1; /* whether we need to initialize */ +static int tao_yy_start = 0; /* start state number */ /* Flag which is used to allow tao_yywrap()'s to do buffer switches * instead of setting up a fresh tao_yyin. A bit of a hack ... @@ -242,18 +242,18 @@ static void tao_yy_flex_free TAO_YY_PROTO(( void * )); #define tao_yy_new_buffer tao_yy_create_buffer #define tao_yy_set_interactive(is_interactive) \ - { \ - if ( ! tao_yy_current_buffer ) \ - tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); \ - tao_yy_current_buffer->tao_yy_is_interactive = is_interactive; \ - } + { \ + if ( ! tao_yy_current_buffer ) \ + tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); \ + tao_yy_current_buffer->tao_yy_is_interactive = is_interactive; \ + } #define tao_yy_set_bol(at_bol) \ - { \ - if ( ! tao_yy_current_buffer ) \ - tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); \ - tao_yy_current_buffer->tao_yy_at_bol = at_bol; \ - } + { \ + if ( ! tao_yy_current_buffer ) \ + tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); \ + tao_yy_current_buffer->tao_yy_at_bol = at_bol; \ + } #define TAO_YY_AT_BOL() (tao_yy_current_buffer->tao_yy_at_bol) @@ -272,50 +272,56 @@ static void tao_yy_fatal_error TAO_YY_PROTO(( tao_yyconst char msg[] )); * corresponding action - sets up tao_yytext. */ #define TAO_YY_DO_BEFORE_ACTION \ - tao_yytext_ptr = tao_yy_bp; \ - tao_yyleng = (int) (tao_yy_cp - tao_yy_bp); \ - tao_yy_hold_char = *tao_yy_cp; \ - *tao_yy_cp = '\0'; \ - if ( tao_yyleng >= TAO_YYLMAX ) \ - TAO_YY_FATAL_ERROR( "token too large, exceeds TAO_YYLMAX" ); \ - tao_yy_flex_strncpy( tao_yytext, tao_yytext_ptr, tao_yyleng + 1 ); \ - tao_yy_c_buf_p = tao_yy_cp; - -#define TAO_YY_NUM_RULES 62 -#define TAO_YY_END_OF_BUFFER 63 -static tao_yyconst short int tao_yy_accept[288] = + tao_yytext_ptr = tao_yy_bp; \ + tao_yyleng = (int) (tao_yy_cp - tao_yy_bp); \ + tao_yy_hold_char = *tao_yy_cp; \ + *tao_yy_cp = '\0'; \ + if ( tao_yyleng >= TAO_YYLMAX ) \ + TAO_YY_FATAL_ERROR( "token too large, exceeds TAO_YYLMAX" ); \ + tao_yy_flex_strncpy( tao_yytext, tao_yytext_ptr, tao_yyleng + 1 ); \ + tao_yy_c_buf_p = tao_yy_cp; + +#define TAO_YY_NUM_RULES 70 +#define TAO_YY_END_OF_BUFFER 71 +static tao_yyconst short int tao_yy_accept[339] = { 0, - 59, 59, 63, 61, 59, 60, 60, 61, 61, 61, - 61, 45, 43, 61, 61, 61, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 61, 59, 0, 46, - 0, 0, 45, 43, 58, 0, 41, 45, 0, 0, - 0, 43, 39, 37, 38, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 34, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 0, 55, 0, - 0, 0, 0, 0, 47, 0, 47, 0, 0, 0, - - 57, 57, 41, 0, 41, 0, 42, 44, 40, 40, - 1, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 35, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 0, 0, 0, 0, 0, 50, 48, 0, 0, - 0, 41, 42, 40, 31, 40, 40, 18, 25, 40, - 40, 40, 40, 12, 40, 40, 40, 40, 22, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 29, 40, 40, 0, 0, 0, 0, - 0, 48, 0, 49, 0, 32, 40, 40, 9, 40, - - 40, 40, 40, 20, 33, 40, 40, 40, 28, 40, - 40, 40, 40, 23, 40, 40, 40, 40, 16, 40, - 26, 40, 53, 0, 0, 0, 0, 40, 40, 40, - 40, 21, 40, 40, 2, 30, 36, 3, 40, 40, - 13, 11, 17, 40, 40, 40, 52, 0, 0, 0, - 0, 0, 0, 40, 27, 7, 19, 40, 40, 40, - 40, 10, 40, 14, 0, 56, 56, 0, 0, 0, - 40, 40, 40, 4, 15, 24, 0, 0, 0, 5, - 6, 8, 54, 0, 51, 51, 0 + 67, 67, 71, 69, 67, 68, 68, 69, 69, 69, + 69, 53, 51, 69, 69, 69, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 69, 67, 0, + 54, 0, 0, 53, 51, 66, 0, 49, 53, 0, + 0, 0, 51, 47, 45, 46, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 42, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 0, 63, 0, 0, 0, + + 0, 0, 55, 0, 55, 0, 0, 0, 65, 65, + 49, 0, 49, 0, 50, 52, 48, 48, 48, 1, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 43, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 0, 0, 0, + 0, 0, 58, 56, 0, 0, 0, 49, 50, 48, + 39, 48, 48, 48, 18, 25, 48, 48, 48, 48, + 48, 12, 48, 48, 33, 48, 48, 22, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + + 48, 48, 48, 48, 48, 48, 48, 29, 48, 48, + 0, 0, 0, 0, 0, 56, 0, 57, 0, 40, + 48, 48, 48, 9, 48, 48, 48, 48, 48, 20, + 41, 48, 48, 48, 28, 48, 48, 48, 48, 48, + 48, 23, 48, 48, 48, 48, 48, 48, 16, 48, + 48, 26, 48, 61, 0, 0, 0, 0, 48, 48, + 48, 48, 32, 48, 21, 48, 48, 2, 30, 44, + 48, 35, 3, 48, 48, 13, 11, 48, 17, 48, + 48, 48, 48, 48, 60, 0, 0, 0, 0, 0, + 0, 48, 48, 27, 7, 19, 48, 48, 34, 48, + + 48, 48, 48, 10, 48, 48, 14, 0, 64, 64, + 0, 0, 0, 31, 48, 48, 48, 4, 15, 36, + 48, 24, 48, 0, 0, 0, 5, 6, 8, 48, + 38, 62, 0, 59, 59, 48, 37, 0 } ; static tao_yyconst int tao_yy_ec[256] = @@ -360,204 +366,224 @@ static tao_yyconst int tao_yy_meta[56] = 5, 5, 5, 5, 5 } ; -static tao_yyconst short int tao_yy_base[300] = +static tao_yyconst short int tao_yy_base[351] = { 0, - 0, 468, 474, 476, 54, 476, 476, 467, 441, 46, - 54, 54, 59, 454, 452, 450, 0, 448, 441, 14, - 421, 32, 41, 35, 423, 420, 418, 417, 428, 48, - 57, 45, 405, 415, 413, 52, 107, 95, 451, 476, - 448, 105, 102, 114, 476, 99, 146, 128, 158, 171, - 0, 177, 476, 476, 476, 0, 430, 425, 398, 402, - 406, 401, 416, 404, 409, 395, 394, 409, 398, 43, - 398, 405, 390, 389, 401, 387, 395, 402, 387, 388, - 384, 390, 384, 66, 388, 388, 377, 384, 476, 99, - 193, 389, 383, 375, 476, 414, 413, 119, 412, 134, - - 476, 142, 0, 190, 476, 161, 196, 0, 392, 396, - 0, 369, 374, 378, 366, 105, 380, 378, 368, 373, - 376, 357, 370, 367, 354, 363, 366, 349, 0, 352, - 364, 348, 350, 106, 347, 359, 350, 353, 357, 359, - 343, 384, 383, 351, 343, 353, 476, 476, 208, 377, - 210, 214, 476, 362, 0, 342, 345, 0, 0, 331, - 343, 328, 336, 0, 331, 326, 325, 326, 0, 331, - 320, 321, 337, 332, 323, 330, 316, 321, 329, 328, - 326, 317, 321, 0, 311, 317, 351, 228, 312, 318, - 315, 476, 345, 476, 344, 0, 317, 317, 0, 295, - - 306, 310, 296, 0, 0, 307, 307, 306, 0, 287, - 292, 296, 295, 0, 299, 287, 296, 298, 0, 290, - 0, 289, 476, 232, 282, 239, 288, 247, 247, 228, - 224, 0, 231, 236, 0, 0, 0, 0, 226, 224, - 0, 0, 0, 213, 208, 201, 476, 246, 160, 261, - 265, 268, 194, 170, 0, 0, 0, 172, 178, 139, - 153, 0, 122, 0, 163, 476, 175, 146, 125, 213, - 88, 62, 67, 0, 0, 0, 74, 199, 239, 0, - 0, 0, 476, 254, 476, 261, 476, 284, 289, 291, - 296, 301, 53, 304, 308, 311, 315, 320, 325 - + 0, 518, 524, 526, 54, 526, 526, 517, 491, 46, + 54, 54, 59, 504, 502, 500, 0, 498, 491, 38, + 471, 47, 20, 35, 473, 470, 468, 467, 478, 42, + 46, 62, 63, 30, 466, 57, 66, 115, 102, 503, + 526, 500, 97, 110, 121, 526, 106, 151, 138, 165, + 180, 0, 170, 526, 526, 526, 0, 482, 477, 456, + 449, 453, 457, 452, 467, 455, 449, 459, 445, 444, + 459, 448, 118, 448, 455, 440, 439, 451, 437, 445, + 451, 443, 450, 435, 436, 432, 433, 437, 426, 430, + 93, 433, 433, 433, 422, 429, 526, 156, 196, 434, + + 428, 420, 526, 459, 458, 130, 457, 145, 526, 166, + 0, 203, 526, 189, 206, 0, 437, 441, 412, 0, + 413, 418, 422, 410, 122, 407, 423, 421, 411, 416, + 419, 401, 399, 412, 409, 396, 405, 408, 391, 0, + 391, 400, 392, 404, 388, 390, 165, 391, 386, 391, + 397, 388, 391, 380, 394, 396, 380, 421, 420, 388, + 380, 390, 526, 526, 218, 414, 209, 220, 526, 399, + 0, 372, 378, 381, 0, 0, 367, 379, 370, 363, + 371, 0, 366, 361, 0, 360, 361, 0, 366, 355, + 356, 372, 371, 362, 365, 356, 363, 349, 354, 362, + + 351, 360, 359, 357, 348, 352, 353, 0, 341, 347, + 381, 234, 342, 348, 345, 526, 375, 526, 374, 0, + 348, 346, 346, 0, 324, 334, 334, 338, 324, 0, + 0, 335, 335, 334, 0, 315, 319, 333, 318, 322, + 321, 0, 325, 313, 314, 321, 327, 322, 0, 314, + 307, 0, 312, 526, 237, 305, 245, 311, 318, 301, + 307, 300, 0, 299, 0, 307, 314, 0, 0, 0, + 309, 0, 0, 303, 309, 0, 0, 293, 0, 292, + 303, 303, 284, 299, 526, 251, 205, 266, 270, 273, + 272, 248, 233, 0, 0, 0, 234, 242, 0, 187, + + 193, 166, 164, 0, 147, 132, 0, 224, 526, 253, + 149, 140, 244, 0, 104, 95, 91, 0, 0, 0, + 89, 0, 84, 100, 260, 266, 0, 0, 0, 41, + 0, 526, 270, 526, 287, 27, 0, 526, 291, 296, + 298, 303, 308, 54, 311, 315, 318, 322, 327, 332 } ; -static tao_yyconst short int tao_yy_def[300] = +static tao_yyconst short int tao_yy_def[351] = { 0, - 287, 1, 287, 287, 287, 287, 287, 288, 289, 287, - 287, 287, 287, 287, 287, 287, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 287, 287, 288, 287, - 287, 291, 287, 287, 287, 292, 287, 287, 287, 287, - 293, 287, 287, 287, 287, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 37, 287, 37, - 287, 287, 287, 287, 287, 287, 287, 287, 294, 292, - - 287, 292, 47, 287, 287, 287, 287, 293, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 295, 287, 287, 287, 287, 287, 287, 287, 296, - 287, 287, 287, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 295, 287, 287, 287, - 287, 287, 287, 287, 287, 290, 290, 290, 290, 290, - - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 287, 287, 287, 287, 287, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 287, 287, 297, 287, - 287, 287, 287, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 297, 287, 297, 298, 287, 287, - 290, 290, 290, 290, 290, 290, 298, 287, 299, 290, - 290, 290, 287, 299, 287, 299, 0, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287 - + 338, 1, 338, 338, 338, 338, 338, 339, 340, 338, + 338, 338, 338, 338, 338, 338, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 338, 338, 339, + 338, 338, 342, 338, 338, 338, 343, 338, 338, 338, + 338, 344, 338, 338, 338, 338, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 38, 338, 38, 338, 338, + + 338, 338, 338, 338, 338, 338, 345, 343, 338, 343, + 48, 338, 338, 338, 338, 344, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 346, 338, 338, + 338, 338, 338, 338, 338, 347, 338, 338, 338, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 346, 338, 338, 338, 338, 338, 338, 338, 338, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 338, 338, 338, 338, 338, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 338, 338, 348, 338, 338, 338, + 338, 341, 341, 341, 341, 341, 341, 341, 341, 341, + + 341, 341, 341, 341, 341, 341, 341, 348, 338, 348, + 349, 338, 338, 341, 341, 341, 341, 341, 341, 341, + 341, 341, 341, 349, 338, 350, 341, 341, 341, 341, + 341, 338, 350, 338, 350, 341, 341, 0, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338 } ; -static tao_yyconst short int tao_yy_nxt[532] = +static tao_yyconst short int tao_yy_nxt[582] = { 0, 4, 5, 6, 7, 5, 8, 4, 9, 4, 4, 10, 4, 11, 12, 13, 13, 14, 15, 16, 17, 17, 17, 18, 17, 17, 17, 17, 19, 17, 17, 4, 4, 20, 21, 22, 23, 24, 25, 17, 17, - 26, 27, 28, 29, 30, 17, 17, 31, 32, 33, - 34, 35, 36, 17, 17, 38, 108, 59, 38, 43, - 44, 44, 45, 60, 62, 47, 46, 48, 48, 49, - 47, 63, 52, 52, 52, 50, 64, 65, 67, 278, - 50, 79, 74, 51, 80, 66, 86, 122, 68, 77, - 50, 75, 123, 78, 81, 50, 38, 82, 76, 38, - - 87, 101, 102, 282, 142, 281, 137, 51, 88, 89, - 89, 90, 97, 47, 138, 48, 48, 49, 98, 98, - 91, 91, 91, 50, 280, 47, 148, 52, 52, 52, - 268, 51, 149, 149, 99, 50, 101, 102, 50, 47, - 287, 48, 48, 49, 101, 102, 178, 92, 93, 50, - 50, 278, 94, 160, 161, 51, 179, 276, 99, 103, - 103, 103, 266, 267, 50, 266, 267, 104, 105, 47, - 105, 49, 49, 49, 107, 107, 107, 266, 267, 50, - 106, 106, 104, 105, 107, 107, 107, 105, 47, 275, - 52, 52, 52, 274, 50, 89, 89, 143, 50, 151, - - 151, 283, 283, 152, 152, 152, 91, 91, 91, 107, - 107, 107, 273, 50, 279, 192, 272, 279, 153, 271, - 153, 193, 193, 152, 152, 152, 270, 152, 152, 152, - 223, 223, 224, 153, 247, 247, 105, 153, 105, 264, - 250, 285, 286, 251, 263, 248, 248, 248, 247, 247, - 262, 105, 252, 252, 252, 105, 285, 286, 261, 248, - 248, 248, 250, 285, 286, 251, 250, 260, 259, 251, - 268, 258, 269, 257, 252, 252, 252, 256, 252, 252, - 252, 252, 252, 252, 39, 39, 39, 39, 39, 41, - 255, 41, 41, 41, 56, 56, 96, 254, 96, 96, - - 96, 100, 100, 100, 100, 100, 150, 150, 187, 187, - 187, 187, 187, 195, 195, 265, 265, 265, 265, 265, - 277, 277, 277, 277, 277, 284, 284, 284, 284, 284, - 253, 249, 246, 245, 244, 243, 242, 241, 240, 239, - 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, - 228, 194, 192, 227, 226, 225, 188, 222, 221, 220, - 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, - 209, 208, 207, 206, 205, 204, 203, 202, 201, 200, - 199, 198, 197, 196, 194, 191, 190, 189, 142, 188, - 186, 185, 184, 183, 182, 181, 180, 177, 176, 175, - - 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, - 164, 163, 162, 159, 158, 157, 156, 155, 154, 147, - 147, 147, 146, 145, 144, 287, 141, 140, 139, 136, - 135, 134, 133, 132, 131, 130, 129, 128, 127, 126, - 125, 124, 121, 120, 119, 118, 117, 116, 115, 114, - 113, 112, 111, 110, 109, 95, 40, 85, 84, 83, - 73, 72, 71, 70, 69, 61, 58, 57, 55, 54, - 53, 42, 40, 287, 37, 3, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287 + 26, 27, 28, 29, 30, 31, 17, 32, 33, 34, + 35, 36, 37, 17, 17, 39, 68, 116, 39, 44, + 45, 45, 46, 337, 69, 48, 47, 49, 49, 50, + 48, 60, 53, 53, 53, 51, 77, 89, 70, 64, + 51, 61, 336, 52, 90, 78, 65, 62, 71, 92, + 51, 66, 79, 80, 82, 51, 81, 67, 83, 84, + + 94, 93, 85, 39, 105, 325, 39, 52, 109, 110, + 106, 106, 86, 87, 95, 88, 96, 97, 97, 98, + 331, 48, 330, 49, 49, 50, 107, 329, 99, 99, + 99, 51, 48, 152, 53, 53, 53, 164, 328, 52, + 327, 153, 51, 165, 165, 311, 51, 109, 110, 48, + 107, 49, 49, 50, 325, 100, 101, 51, 132, 51, + 102, 158, 133, 52, 111, 111, 111, 134, 109, 110, + 177, 178, 112, 113, 51, 113, 48, 323, 50, 50, + 50, 48, 322, 53, 53, 53, 51, 112, 113, 114, + 114, 51, 113, 115, 115, 115, 321, 338, 97, 97, + + 159, 51, 115, 115, 115, 199, 51, 309, 310, 99, + 99, 99, 167, 167, 320, 200, 168, 168, 168, 115, + 115, 115, 168, 168, 168, 216, 309, 310, 169, 319, + 169, 217, 217, 168, 168, 168, 254, 254, 255, 285, + 285, 318, 113, 169, 113, 326, 288, 169, 326, 289, + 286, 286, 286, 285, 285, 309, 310, 113, 290, 290, + 290, 113, 332, 332, 286, 286, 286, 288, 334, 335, + 289, 288, 334, 335, 289, 311, 317, 312, 316, 290, + 290, 290, 315, 290, 290, 290, 290, 290, 290, 334, + 335, 40, 40, 40, 40, 40, 42, 314, 42, 42, + + 42, 57, 57, 104, 313, 104, 104, 104, 108, 108, + 108, 108, 108, 166, 166, 211, 211, 211, 211, 211, + 219, 219, 308, 308, 308, 308, 308, 324, 324, 324, + 324, 324, 333, 333, 333, 333, 333, 307, 306, 305, + 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, + 294, 293, 292, 291, 287, 284, 283, 282, 281, 280, + 279, 278, 277, 276, 275, 274, 273, 272, 271, 270, + 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, + 259, 218, 216, 258, 257, 256, 212, 253, 252, 251, + 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, + + 240, 239, 238, 237, 236, 235, 234, 233, 232, 231, + 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, + 220, 218, 215, 214, 213, 158, 212, 210, 209, 208, + 207, 206, 205, 204, 203, 202, 201, 198, 197, 196, + 195, 194, 193, 192, 191, 190, 189, 188, 187, 186, + 185, 184, 183, 182, 181, 180, 179, 176, 175, 174, + 173, 172, 171, 170, 163, 163, 163, 162, 161, 160, + 338, 157, 156, 155, 154, 151, 150, 149, 148, 147, + 146, 145, 144, 143, 142, 141, 140, 139, 138, 137, + 136, 135, 131, 130, 129, 128, 127, 126, 125, 124, + + 123, 122, 121, 120, 119, 118, 117, 103, 41, 91, + 76, 75, 74, 73, 72, 63, 59, 58, 56, 55, + 54, 43, 41, 338, 38, 3, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338 } ; -static tao_yyconst short int tao_yy_chk[532] = +static tao_yyconst short int tao_yy_chk[582] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 5, 293, 20, 5, 10, - 10, 10, 11, 20, 22, 12, 11, 12, 12, 12, - 13, 22, 13, 13, 13, 12, 22, 23, 24, 277, - 13, 32, 30, 12, 32, 23, 36, 70, 24, 31, - 12, 30, 70, 31, 32, 13, 38, 32, 30, 38, - - 36, 46, 46, 273, 90, 272, 84, 12, 37, 37, - 37, 37, 42, 43, 84, 43, 43, 43, 42, 42, - 37, 37, 37, 43, 271, 44, 98, 44, 44, 44, - 269, 43, 98, 98, 42, 44, 100, 100, 43, 48, - 90, 48, 48, 48, 102, 102, 134, 37, 37, 48, - 44, 268, 37, 116, 116, 43, 134, 263, 42, 47, - 47, 47, 249, 249, 48, 265, 265, 47, 47, 49, - 47, 49, 49, 49, 106, 106, 106, 267, 267, 49, - 50, 50, 47, 47, 50, 50, 50, 47, 52, 261, - 52, 52, 52, 260, 49, 91, 91, 91, 52, 104, - - 104, 278, 278, 104, 104, 104, 91, 91, 91, 107, - 107, 107, 259, 52, 270, 149, 258, 270, 107, 254, - 107, 149, 149, 151, 151, 151, 253, 152, 152, 152, - 188, 188, 188, 107, 224, 224, 152, 107, 152, 246, - 226, 279, 279, 226, 245, 224, 224, 224, 248, 248, - 244, 152, 226, 226, 226, 152, 284, 284, 240, 248, - 248, 248, 250, 286, 286, 250, 251, 239, 234, 251, - 251, 233, 252, 231, 250, 250, 250, 230, 251, 251, - 251, 252, 252, 252, 288, 288, 288, 288, 288, 289, - 229, 289, 289, 289, 290, 290, 291, 228, 291, 291, - - 291, 292, 292, 292, 292, 292, 294, 294, 295, 295, - 295, 295, 295, 296, 296, 297, 297, 297, 297, 297, - 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, - 227, 225, 222, 220, 218, 217, 216, 215, 213, 212, - 211, 210, 208, 207, 206, 203, 202, 201, 200, 198, - 197, 195, 193, 191, 190, 189, 187, 186, 185, 183, - 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, - 172, 171, 170, 168, 167, 166, 165, 163, 162, 161, - 160, 157, 156, 154, 150, 146, 145, 144, 143, 142, - 141, 140, 139, 138, 137, 136, 135, 133, 132, 131, - - 130, 128, 127, 126, 125, 124, 123, 122, 121, 120, - 119, 118, 117, 115, 114, 113, 112, 110, 109, 99, - 97, 96, 94, 93, 92, 88, 87, 86, 85, 83, - 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, - 72, 71, 69, 68, 67, 66, 65, 64, 63, 62, - 61, 60, 59, 58, 57, 41, 39, 35, 34, 33, + 1, 1, 1, 1, 1, 5, 23, 344, 5, 10, + 10, 10, 11, 336, 23, 12, 11, 12, 12, 12, + 13, 20, 13, 13, 13, 12, 30, 34, 24, 22, + 13, 20, 330, 12, 34, 30, 22, 20, 24, 36, + 12, 22, 30, 31, 32, 13, 31, 22, 32, 33, + + 37, 36, 33, 39, 43, 324, 39, 12, 47, 47, + 43, 43, 33, 33, 37, 33, 38, 38, 38, 38, + 323, 44, 321, 44, 44, 44, 43, 317, 38, 38, + 38, 44, 45, 91, 45, 45, 45, 106, 316, 44, + 315, 91, 45, 106, 106, 312, 44, 108, 108, 49, + 43, 49, 49, 49, 311, 38, 38, 45, 73, 49, + 38, 98, 73, 44, 48, 48, 48, 73, 110, 110, + 125, 125, 48, 48, 49, 48, 50, 306, 50, 50, + 50, 53, 305, 53, 53, 53, 50, 48, 48, 51, + 51, 53, 48, 51, 51, 51, 303, 98, 99, 99, + + 99, 50, 114, 114, 114, 147, 53, 287, 287, 99, + 99, 99, 112, 112, 302, 147, 112, 112, 112, 115, + 115, 115, 167, 167, 167, 165, 308, 308, 115, 301, + 115, 165, 165, 168, 168, 168, 212, 212, 212, 255, + 255, 300, 168, 115, 168, 313, 257, 115, 313, 257, + 255, 255, 255, 286, 286, 310, 310, 168, 257, 257, + 257, 168, 325, 325, 286, 286, 286, 288, 326, 326, + 288, 289, 333, 333, 289, 289, 298, 290, 297, 288, + 288, 288, 293, 289, 289, 289, 290, 290, 290, 335, + 335, 339, 339, 339, 339, 339, 340, 292, 340, 340, + + 340, 341, 341, 342, 291, 342, 342, 342, 343, 343, + 343, 343, 343, 345, 345, 346, 346, 346, 346, 346, + 347, 347, 348, 348, 348, 348, 348, 349, 349, 349, + 349, 349, 350, 350, 350, 350, 350, 284, 283, 282, + 281, 280, 278, 275, 274, 271, 267, 266, 264, 262, + 261, 260, 259, 258, 256, 253, 251, 250, 248, 247, + 246, 245, 244, 243, 241, 240, 239, 238, 237, 236, + 234, 233, 232, 229, 228, 227, 226, 225, 223, 222, + 221, 219, 217, 215, 214, 213, 211, 210, 209, 207, + 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, + + 196, 195, 194, 193, 192, 191, 190, 189, 187, 186, + 184, 183, 181, 180, 179, 178, 177, 174, 173, 172, + 170, 166, 162, 161, 160, 159, 158, 157, 156, 155, + 154, 153, 152, 151, 150, 149, 148, 146, 145, 144, + 143, 142, 141, 139, 138, 137, 136, 135, 134, 133, + 132, 131, 130, 129, 128, 127, 126, 124, 123, 122, + 121, 119, 118, 117, 107, 105, 104, 102, 101, 100, + 96, 95, 94, 93, 92, 90, 89, 88, 87, 86, + 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, + 75, 74, 72, 71, 70, 69, 68, 67, 66, 65, + + 64, 63, 62, 61, 60, 59, 58, 42, 40, 35, 29, 28, 27, 26, 25, 21, 19, 18, 16, 15, - 14, 9, 8, 3, 2, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287 + 14, 9, 8, 3, 2, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, + 338 } ; static tao_yy_state_type tao_yy_last_accepting_state; @@ -579,7 +605,7 @@ char *tao_yytext_ptr; #line 1 "fe/idl.ll" #define INITIAL 0 #line 3 "fe/idl.ll" -/* +/* $Id: idl.ll,v 1.6 1999/04/08 09:46:19 tkue Exp $ COPYRIGHT @@ -652,11 +678,11 @@ trademarks or registered trademarks of Sun Microsystems, Inc. #include "fe_private.h" #include "y.tab.h" -static char idl_escape_reader(char *); -static double idl_atof(char *); -static long idl_atoi(char *, long); -static void idl_parse_line_and_file(char *); -static void idl_store_pragma(char *); +static char idl_escape_reader(char *); +static double idl_atof(char *); +static long idl_atoi(char *, long); +static void idl_parse_line_and_file(char *); +static void idl_store_pragma(char *); #if 0 /* defined (HPUX) */ // HPUX has tao_yytext typed to unsigned char *. We make sure here that @@ -672,6 +698,19 @@ inline char *__tao_yytext() #else #define ace_tao_yytext tao_yytext #endif /* 0 */ + +static int scan_obv_token (int token) +{ +#ifdef IDL_HAS_VALUETYPE + if (idl_global->obv_support ()) + { + return token; + } +#endif /* IDL_HAS_VALUETYPE */ + tao_yylval.strval = ACE_OS::strdup (ace_tao_yytext); + return IDENTIFIER; +} + /* SO we don't choke on files that use \r\n */ #define TAO_YY_NEVER_INTERACTIVE 1 @@ -760,21 +799,21 @@ TAO_YY_MALLOC_DECL */ #ifndef TAO_YY_INPUT #define TAO_YY_INPUT(buf,result,max_size) \ - if ( tao_yy_current_buffer->tao_yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( tao_yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( tao_yyin ) ) \ - TAO_YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, tao_yyin )) == 0) \ - && ferror( tao_yyin ) ) \ - TAO_YY_FATAL_ERROR( "input in flex scanner failed" ); + if ( tao_yy_current_buffer->tao_yy_is_interactive ) \ + { \ + int c = '*', n; \ + for ( n = 0; n < max_size && \ + (c = getc( tao_yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( tao_yyin ) ) \ + TAO_YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else if ( ((result = fread( buf, 1, max_size, tao_yyin )) == 0) \ + && ferror( tao_yyin ) ) \ + TAO_YY_FATAL_ERROR( "input in flex scanner failed" ); #endif /* No semi-colon after return; correct usage is to write "tao_yyterminate();" - @@ -811,308 +850,348 @@ TAO_YY_MALLOC_DECL /* Code executed at the end of each rule. */ #ifndef TAO_YY_BREAK -#define TAO_YY_BREAK ACE_NOTREACHED (break;) +#define TAO_YY_BREAK break; #endif #define TAO_YY_RULE_SETUP \ - if ( tao_yyleng > 0 ) \ - tao_yy_current_buffer->tao_yy_at_bol = \ - (tao_yytext[tao_yyleng - 1] == '\n'); \ - TAO_YY_USER_ACTION + if ( tao_yyleng > 0 ) \ + tao_yy_current_buffer->tao_yy_at_bol = \ + (tao_yytext[tao_yyleng - 1] == '\n'); \ + TAO_YY_USER_ACTION TAO_YY_DECL - { - register tao_yy_state_type tao_yy_current_state; - register char *tao_yy_cp, *tao_yy_bp; - register int tao_yy_act; + { + register tao_yy_state_type tao_yy_current_state; + register char *tao_yy_cp, *tao_yy_bp; + register int tao_yy_act; -#line 104 "fe/idl.ll" +#line 117 "fe/idl.ll" - if ( tao_yy_init ) - { - tao_yy_init = 0; + if ( tao_yy_init ) + { + tao_yy_init = 0; #ifdef TAO_YY_USER_INIT - TAO_YY_USER_INIT; + TAO_YY_USER_INIT; #endif - if ( ! tao_yy_start ) - tao_yy_start = 1; /* first start state */ + if ( ! tao_yy_start ) + tao_yy_start = 1; /* first start state */ - if ( ! tao_yyin ) - tao_yyin = stdin; + if ( ! tao_yyin ) + tao_yyin = stdin; - if ( ! tao_yyout ) - tao_yyout = stdout; + if ( ! tao_yyout ) + tao_yyout = stdout; - if ( ! tao_yy_current_buffer ) - tao_yy_current_buffer = - tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); + if ( ! tao_yy_current_buffer ) + tao_yy_current_buffer = + tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); - tao_yy_load_buffer_state(); - } + tao_yy_load_buffer_state(); + } - while ( 1 ) /* loops until end-of-file is reached */ - { - tao_yy_cp = tao_yy_c_buf_p; + while ( 1 ) /* loops until end-of-file is reached */ + { + tao_yy_cp = tao_yy_c_buf_p; - /* Support of tao_yytext. */ - *tao_yy_cp = tao_yy_hold_char; + /* Support of tao_yytext. */ + *tao_yy_cp = tao_yy_hold_char; - /* tao_yy_bp points to the position in tao_yy_ch_buf of the start of - * the current run. - */ - tao_yy_bp = tao_yy_cp; + /* tao_yy_bp points to the position in tao_yy_ch_buf of the start of + * the current run. + */ + tao_yy_bp = tao_yy_cp; - tao_yy_current_state = tao_yy_start; - tao_yy_current_state += TAO_YY_AT_BOL(); + tao_yy_current_state = tao_yy_start; + tao_yy_current_state += TAO_YY_AT_BOL(); tao_yy_match: - do - { - register TAO_YY_CHAR tao_yy_c = tao_yy_ec[TAO_YY_SC_TO_UI(*tao_yy_cp)]; - if ( tao_yy_accept[tao_yy_current_state] ) - { - tao_yy_last_accepting_state = tao_yy_current_state; - tao_yy_last_accepting_cpos = tao_yy_cp; - } - while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state ) - { - tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state]; - if ( tao_yy_current_state >= 288 ) - tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c]; - } - tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c]; - ++tao_yy_cp; - } - while ( tao_yy_base[tao_yy_current_state] != 476 ); + do + { + register TAO_YY_CHAR tao_yy_c = tao_yy_ec[TAO_YY_SC_TO_UI(*tao_yy_cp)]; + if ( tao_yy_accept[tao_yy_current_state] ) + { + tao_yy_last_accepting_state = tao_yy_current_state; + tao_yy_last_accepting_cpos = tao_yy_cp; + } + while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state ) + { + tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state]; + if ( tao_yy_current_state >= 339 ) + tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c]; + } + tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c]; + ++tao_yy_cp; + } + while ( tao_yy_base[tao_yy_current_state] != 526 ); tao_yy_find_action: - tao_yy_act = tao_yy_accept[tao_yy_current_state]; - if ( tao_yy_act == 0 ) - { /* have to back up */ - tao_yy_cp = tao_yy_last_accepting_cpos; - tao_yy_current_state = tao_yy_last_accepting_state; - tao_yy_act = tao_yy_accept[tao_yy_current_state]; - } + tao_yy_act = tao_yy_accept[tao_yy_current_state]; + if ( tao_yy_act == 0 ) + { /* have to back up */ + tao_yy_cp = tao_yy_last_accepting_cpos; + tao_yy_current_state = tao_yy_last_accepting_state; + tao_yy_act = tao_yy_accept[tao_yy_current_state]; + } - TAO_YY_DO_BEFORE_ACTION; + TAO_YY_DO_BEFORE_ACTION; -do_action: /* This label is used only to access EOF actions. */ +do_action: /* This label is used only to access EOF actions. */ - switch ( tao_yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of TAO_YY_DO_BEFORE_ACTION */ - *tao_yy_cp = tao_yy_hold_char; - tao_yy_cp = tao_yy_last_accepting_cpos; - tao_yy_current_state = tao_yy_last_accepting_state; - goto tao_yy_find_action; + switch ( tao_yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of TAO_YY_DO_BEFORE_ACTION */ + *tao_yy_cp = tao_yy_hold_char; + tao_yy_cp = tao_yy_last_accepting_cpos; + tao_yy_current_state = tao_yy_last_accepting_state; + goto tao_yy_find_action; case 1: TAO_YY_RULE_SETUP -#line 106 "fe/idl.ll" +#line 119 "fe/idl.ll" return IDL_ANY; - TAO_YY_BREAK + TAO_YY_BREAK case 2: TAO_YY_RULE_SETUP -#line 107 "fe/idl.ll" +#line 120 "fe/idl.ll" return IDL_MODULE; - TAO_YY_BREAK + TAO_YY_BREAK case 3: TAO_YY_RULE_SETUP -#line 108 "fe/idl.ll" +#line 121 "fe/idl.ll" return IDL_RAISES; - TAO_YY_BREAK + TAO_YY_BREAK case 4: TAO_YY_RULE_SETUP -#line 109 "fe/idl.ll" +#line 122 "fe/idl.ll" return IDL_READONLY; - TAO_YY_BREAK + TAO_YY_BREAK case 5: TAO_YY_RULE_SETUP -#line 110 "fe/idl.ll" +#line 123 "fe/idl.ll" return IDL_ATTRIBUTE; - TAO_YY_BREAK + TAO_YY_BREAK case 6: TAO_YY_RULE_SETUP -#line 111 "fe/idl.ll" +#line 124 "fe/idl.ll" return IDL_EXCEPTION; - TAO_YY_BREAK + TAO_YY_BREAK case 7: TAO_YY_RULE_SETUP -#line 112 "fe/idl.ll" +#line 125 "fe/idl.ll" return IDL_CONTEXT; - TAO_YY_BREAK + TAO_YY_BREAK case 8: TAO_YY_RULE_SETUP -#line 113 "fe/idl.ll" +#line 126 "fe/idl.ll" return IDL_INTERFACE; - TAO_YY_BREAK + TAO_YY_BREAK case 9: TAO_YY_RULE_SETUP -#line 114 "fe/idl.ll" +#line 127 "fe/idl.ll" return IDL_CONST; - TAO_YY_BREAK + TAO_YY_BREAK case 10: TAO_YY_RULE_SETUP -#line 115 "fe/idl.ll" +#line 128 "fe/idl.ll" return IDL_TYPEDEF; - TAO_YY_BREAK + TAO_YY_BREAK case 11: TAO_YY_RULE_SETUP -#line 116 "fe/idl.ll" +#line 129 "fe/idl.ll" return IDL_STRUCT; - TAO_YY_BREAK + TAO_YY_BREAK case 12: TAO_YY_RULE_SETUP -#line 117 "fe/idl.ll" +#line 130 "fe/idl.ll" return IDL_ENUM; - TAO_YY_BREAK + TAO_YY_BREAK case 13: TAO_YY_RULE_SETUP -#line 118 "fe/idl.ll" +#line 131 "fe/idl.ll" return IDL_STRING; - TAO_YY_BREAK + TAO_YY_BREAK case 14: TAO_YY_RULE_SETUP -#line 119 "fe/idl.ll" +#line 132 "fe/idl.ll" return IDL_WSTRING; - TAO_YY_BREAK + TAO_YY_BREAK case 15: TAO_YY_RULE_SETUP -#line 120 "fe/idl.ll" +#line 133 "fe/idl.ll" return IDL_SEQUENCE; - TAO_YY_BREAK + TAO_YY_BREAK case 16: TAO_YY_RULE_SETUP -#line 121 "fe/idl.ll" +#line 134 "fe/idl.ll" return IDL_UNION; - TAO_YY_BREAK + TAO_YY_BREAK case 17: TAO_YY_RULE_SETUP -#line 122 "fe/idl.ll" +#line 135 "fe/idl.ll" return IDL_SWITCH; - TAO_YY_BREAK + TAO_YY_BREAK case 18: TAO_YY_RULE_SETUP -#line 123 "fe/idl.ll" +#line 136 "fe/idl.ll" return IDL_CASE; - TAO_YY_BREAK + TAO_YY_BREAK case 19: TAO_YY_RULE_SETUP -#line 124 "fe/idl.ll" +#line 137 "fe/idl.ll" return IDL_DEFAULT; - TAO_YY_BREAK + TAO_YY_BREAK case 20: TAO_YY_RULE_SETUP -#line 125 "fe/idl.ll" +#line 138 "fe/idl.ll" return IDL_FLOAT; - TAO_YY_BREAK + TAO_YY_BREAK case 21: TAO_YY_RULE_SETUP -#line 126 "fe/idl.ll" +#line 139 "fe/idl.ll" return IDL_DOUBLE; - TAO_YY_BREAK + TAO_YY_BREAK case 22: TAO_YY_RULE_SETUP -#line 127 "fe/idl.ll" +#line 140 "fe/idl.ll" return IDL_LONG; - TAO_YY_BREAK + TAO_YY_BREAK case 23: TAO_YY_RULE_SETUP -#line 128 "fe/idl.ll" +#line 141 "fe/idl.ll" return IDL_SHORT; - TAO_YY_BREAK + TAO_YY_BREAK case 24: TAO_YY_RULE_SETUP -#line 129 "fe/idl.ll" +#line 142 "fe/idl.ll" return IDL_UNSIGNED; - TAO_YY_BREAK + TAO_YY_BREAK case 25: TAO_YY_RULE_SETUP -#line 130 "fe/idl.ll" +#line 143 "fe/idl.ll" return IDL_CHAR; - TAO_YY_BREAK + TAO_YY_BREAK case 26: TAO_YY_RULE_SETUP -#line 131 "fe/idl.ll" +#line 144 "fe/idl.ll" return IDL_WCHAR; - TAO_YY_BREAK + TAO_YY_BREAK case 27: TAO_YY_RULE_SETUP -#line 132 "fe/idl.ll" +#line 145 "fe/idl.ll" return IDL_BOOLEAN; - TAO_YY_BREAK + TAO_YY_BREAK case 28: TAO_YY_RULE_SETUP -#line 133 "fe/idl.ll" +#line 146 "fe/idl.ll" return IDL_OCTET; - TAO_YY_BREAK + TAO_YY_BREAK case 29: TAO_YY_RULE_SETUP -#line 134 "fe/idl.ll" +#line 147 "fe/idl.ll" return IDL_VOID; - TAO_YY_BREAK + TAO_YY_BREAK case 30: TAO_YY_RULE_SETUP -#line 135 "fe/idl.ll" +#line 148 "fe/idl.ll" return IDL_NATIVE; - TAO_YY_BREAK + TAO_YY_BREAK case 31: TAO_YY_RULE_SETUP -#line 137 "fe/idl.ll" -return IDL_TRUETOK; - TAO_YY_BREAK +#line 149 "fe/idl.ll" +return scan_obv_token (IDL_ABSTRACT); + TAO_YY_BREAK case 32: TAO_YY_RULE_SETUP -#line 138 "fe/idl.ll" -return IDL_FALSETOK; - TAO_YY_BREAK +#line 150 "fe/idl.ll" +return scan_obv_token (IDL_CUSTOM); + TAO_YY_BREAK case 33: TAO_YY_RULE_SETUP -#line 140 "fe/idl.ll" -return IDL_INOUT; - TAO_YY_BREAK +#line 151 "fe/idl.ll" +return scan_obv_token (IDL_INIT); + TAO_YY_BREAK case 34: TAO_YY_RULE_SETUP -#line 141 "fe/idl.ll" -return IDL_IN; - TAO_YY_BREAK +#line 152 "fe/idl.ll" +return scan_obv_token (IDL_PRIVATE); + TAO_YY_BREAK case 35: TAO_YY_RULE_SETUP -#line 142 "fe/idl.ll" -return IDL_OUT; - TAO_YY_BREAK +#line 153 "fe/idl.ll" +return scan_obv_token (IDL_PUBLIC); + TAO_YY_BREAK case 36: TAO_YY_RULE_SETUP -#line 143 "fe/idl.ll" -return IDL_ONEWAY; - TAO_YY_BREAK +#line 154 "fe/idl.ll" +return scan_obv_token (IDL_SUPPORTS); + TAO_YY_BREAK case 37: TAO_YY_RULE_SETUP -#line 145 "fe/idl.ll" -return IDL_LEFT_SHIFT; - TAO_YY_BREAK +#line 155 "fe/idl.ll" +return scan_obv_token (IDL_TRUNCATABLE); + TAO_YY_BREAK case 38: TAO_YY_RULE_SETUP -#line 146 "fe/idl.ll" -return IDL_RIGHT_SHIFT; - TAO_YY_BREAK +#line 156 "fe/idl.ll" +return scan_obv_token (IDL_VALUETYPE); + TAO_YY_BREAK case 39: TAO_YY_RULE_SETUP -#line 147 "fe/idl.ll" -{ - tao_yylval.strval = "::"; - return IDL_SCOPE_DELIMITOR; - } +#line 158 "fe/idl.ll" +return IDL_TRUETOK; TAO_YY_BREAK case 40: TAO_YY_RULE_SETUP -#line 152 "fe/idl.ll" +#line 159 "fe/idl.ll" +return IDL_FALSETOK; + TAO_YY_BREAK +case 41: +TAO_YY_RULE_SETUP +#line 161 "fe/idl.ll" +return IDL_INOUT; + TAO_YY_BREAK +case 42: +TAO_YY_RULE_SETUP +#line 162 "fe/idl.ll" +return IDL_IN; + TAO_YY_BREAK +case 43: +TAO_YY_RULE_SETUP +#line 163 "fe/idl.ll" +return IDL_OUT; + TAO_YY_BREAK +case 44: +TAO_YY_RULE_SETUP +#line 164 "fe/idl.ll" +return IDL_ONEWAY; + TAO_YY_BREAK +case 45: +TAO_YY_RULE_SETUP +#line 166 "fe/idl.ll" +return IDL_LEFT_SHIFT; + TAO_YY_BREAK +case 46: +TAO_YY_RULE_SETUP +#line 167 "fe/idl.ll" +return IDL_RIGHT_SHIFT; + TAO_YY_BREAK +case 47: +TAO_YY_RULE_SETUP +#line 168 "fe/idl.ll" +{ + tao_yylval.strval = "::"; + return IDL_SCOPE_DELIMITOR; + } + TAO_YY_BREAK +case 48: +TAO_YY_RULE_SETUP +#line 173 "fe/idl.ll" { /* make sure that this identifier is not a C++ keyword. If it is, prepend it with a _cxx_. Lookup in the perfect hash table for @@ -1132,490 +1211,490 @@ TAO_YY_RULE_SETUP } return IDENTIFIER; } - TAO_YY_BREAK -case 41: + TAO_YY_BREAK +case 49: TAO_YY_RULE_SETUP -#line 172 "fe/idl.ll" +#line 193 "fe/idl.ll" { tao_yylval.dval = idl_atof(ace_tao_yytext); return IDL_FLOATING_PT_LITERAL; } - TAO_YY_BREAK -case 42: + TAO_YY_BREAK +case 50: TAO_YY_RULE_SETUP -#line 176 "fe/idl.ll" +#line 197 "fe/idl.ll" { tao_yylval.dval = idl_atof(ace_tao_yytext); return IDL_FLOATING_PT_LITERAL; } - TAO_YY_BREAK -case 43: + TAO_YY_BREAK +case 51: TAO_YY_RULE_SETUP -#line 181 "fe/idl.ll" +#line 202 "fe/idl.ll" { - tao_yylval.ival = idl_atoi(ace_tao_yytext, 10); - return IDL_INTEGER_LITERAL; - } - TAO_YY_BREAK -case 44: + tao_yylval.ival = idl_atoi(ace_tao_yytext, 10); + return IDL_INTEGER_LITERAL; + } + TAO_YY_BREAK +case 52: TAO_YY_RULE_SETUP -#line 185 "fe/idl.ll" +#line 206 "fe/idl.ll" { - tao_yylval.ival = idl_atoi(ace_tao_yytext, 16); - return IDL_INTEGER_LITERAL; - } - TAO_YY_BREAK -case 45: + tao_yylval.ival = idl_atoi(ace_tao_yytext, 16); + return IDL_INTEGER_LITERAL; + } + TAO_YY_BREAK +case 53: TAO_YY_RULE_SETUP -#line 189 "fe/idl.ll" +#line 210 "fe/idl.ll" { - tao_yylval.ival = idl_atoi(ace_tao_yytext, 8); - return IDL_INTEGER_LITERAL; - } - TAO_YY_BREAK -case 46: + tao_yylval.ival = idl_atoi(ace_tao_yytext, 8); + return IDL_INTEGER_LITERAL; + } + TAO_YY_BREAK +case 54: TAO_YY_RULE_SETUP -#line 194 "fe/idl.ll" +#line 215 "fe/idl.ll" { - /* Skip the quotes */ - char *tmp = ace_tao_yytext; - tmp[strlen(tmp)-1] = '\0'; - tao_yylval.sval = new String(tmp + 1); - return IDL_STRING_LITERAL; - } - TAO_YY_BREAK -case 47: + /* Skip the quotes */ + char *tmp = ace_tao_yytext; + tmp[strlen(tmp)-1] = '\0'; + tao_yylval.sval = new String(tmp + 1); + return IDL_STRING_LITERAL; + } + TAO_YY_BREAK +case 55: TAO_YY_RULE_SETUP -#line 201 "fe/idl.ll" +#line 222 "fe/idl.ll" { - tao_yylval.cval = ace_tao_yytext [1]; - return IDL_CHARACTER_LITERAL; - } - TAO_YY_BREAK -case 48: + tao_yylval.cval = ace_tao_yytext [1]; + return IDL_CHARACTER_LITERAL; + } + TAO_YY_BREAK +case 56: TAO_YY_RULE_SETUP -#line 205 "fe/idl.ll" +#line 226 "fe/idl.ll" { - // octal character constant - tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1); - return IDL_CHARACTER_LITERAL; - } - TAO_YY_BREAK -case 49: + // octal character constant + tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1); + return IDL_CHARACTER_LITERAL; + } + TAO_YY_BREAK +case 57: TAO_YY_RULE_SETUP -#line 210 "fe/idl.ll" +#line 231 "fe/idl.ll" { - // hexadecimal character constant - tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1); - return IDL_CHARACTER_LITERAL; - } - TAO_YY_BREAK -case 50: + // hexadecimal character constant + tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1); + return IDL_CHARACTER_LITERAL; + } + TAO_YY_BREAK +case 58: TAO_YY_RULE_SETUP -#line 215 "fe/idl.ll" +#line 236 "fe/idl.ll" { - tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1); - return IDL_CHARACTER_LITERAL; - } - TAO_YY_BREAK -case 51: + tao_yylval.cval = idl_escape_reader(ace_tao_yytext + 1); + return IDL_CHARACTER_LITERAL; + } + TAO_YY_BREAK +case 59: TAO_YY_RULE_SETUP -#line 219 "fe/idl.ll" +#line 240 "fe/idl.ll" {/* remember pragma */ - idl_global->set_lineno(idl_global->lineno() + 1); - idl_store_pragma(ace_tao_yytext); - } - break; -case 52: + idl_global->set_lineno(idl_global->lineno() + 1); + idl_store_pragma(ace_tao_yytext); + } + TAO_YY_BREAK +case 60: TAO_YY_RULE_SETUP -#line 223 "fe/idl.ll" +#line 244 "fe/idl.ll" { - idl_parse_line_and_file(ace_tao_yytext); - } - break; -case 53: + idl_parse_line_and_file(ace_tao_yytext); + } + TAO_YY_BREAK +case 61: TAO_YY_RULE_SETUP -#line 226 "fe/idl.ll" +#line 247 "fe/idl.ll" { - idl_parse_line_and_file(ace_tao_yytext); - } - break; -case 54: + idl_parse_line_and_file(ace_tao_yytext); + } + TAO_YY_BREAK +case 62: TAO_YY_RULE_SETUP -#line 229 "fe/idl.ll" +#line 250 "fe/idl.ll" { - idl_parse_line_and_file(ace_tao_yytext); - } - break; -case 55: + idl_parse_line_and_file(ace_tao_yytext); + } + TAO_YY_BREAK +case 63: TAO_YY_RULE_SETUP -#line 232 "fe/idl.ll" +#line 253 "fe/idl.ll" { - idl_parse_line_and_file(ace_tao_yytext); - } - break; -case 56: + idl_parse_line_and_file(ace_tao_yytext); + } + TAO_YY_BREAK +case 64: TAO_YY_RULE_SETUP -#line 235 "fe/idl.ll" +#line 256 "fe/idl.ll" { - /* ignore cpp ident */ - idl_global->set_lineno(idl_global->lineno() + 1); - } - break; -case 57: + /* ignore cpp ident */ + idl_global->set_lineno(idl_global->lineno() + 1); + } + TAO_YY_BREAK +case 65: TAO_YY_RULE_SETUP -#line 239 "fe/idl.ll" +#line 260 "fe/idl.ll" { - /* ignore comments */ - idl_global->set_lineno(idl_global->lineno() + 1); - } - break; -case 58: + /* ignore comments */ + idl_global->set_lineno(idl_global->lineno() + 1); + } + TAO_YY_BREAK +case 66: TAO_YY_RULE_SETUP -#line 243 "fe/idl.ll" +#line 264 "fe/idl.ll" { - for(;;) { - char c = tao_yyinput(); - if (c == '*') { - char next = tao_yyinput(); - if (next == '/') - break; - else - tao_yyunput(c, NULL); - if (c == '\n') - idl_global->set_lineno(idl_global->lineno() + 1); - } - } - } - break; -case 59: + for(;;) { + char c = tao_yyinput(); + if (c == '*') { + char next = tao_yyinput(); + if (next == '/') + break; + else + tao_yyunput(c, NULL); + if (c == '\n') + idl_global->set_lineno(idl_global->lineno() + 1); + } + } + } + TAO_YY_BREAK +case 67: TAO_YY_RULE_SETUP -#line 257 "fe/idl.ll" +#line 278 "fe/idl.ll" ; - break; -case 60: + TAO_YY_BREAK +case 68: TAO_YY_RULE_SETUP -#line 258 "fe/idl.ll" +#line 279 "fe/idl.ll" { - idl_global->set_lineno(idl_global->lineno() + 1); - } - break; -case 61: + idl_global->set_lineno(idl_global->lineno() + 1); + } + TAO_YY_BREAK +case 69: TAO_YY_RULE_SETUP -#line 261 "fe/idl.ll" +#line 282 "fe/idl.ll" return ace_tao_yytext [0]; - TAO_YY_BREAK -case 62: + TAO_YY_BREAK +case 70: TAO_YY_RULE_SETUP -#line 263 "fe/idl.ll" +#line 284 "fe/idl.ll" TAO_YY_ECHO; - break; + TAO_YY_BREAK case TAO_YY_STATE_EOF(INITIAL): - tao_yyterminate(); - - case TAO_YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int tao_yy_amount_of_matched_text = (int) (tao_yy_cp - tao_yytext_ptr) - 1; - - /* Undo the effects of TAO_YY_DO_BEFORE_ACTION. */ - *tao_yy_cp = tao_yy_hold_char; - TAO_YY_RESTORE_TAO_YY_MORE_OFFSET - - if ( tao_yy_current_buffer->tao_yy_buffer_status == TAO_YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed tao_yyin at a new source and called - * tao_yylex(). If so, then we have to assure - * consistency between tao_yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - tao_yy_n_chars = tao_yy_current_buffer->tao_yy_n_chars; - tao_yy_current_buffer->tao_yy_input_file = tao_yyin; - tao_yy_current_buffer->tao_yy_buffer_status = TAO_YY_BUFFER_NORMAL; - } - - /* Note that here we test for tao_yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since tao_yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( tao_yy_c_buf_p <= &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] ) - { /* This was really a NUL. */ - tao_yy_state_type tao_yy_next_state; - - tao_yy_c_buf_p = tao_yytext_ptr + tao_yy_amount_of_matched_text; - - tao_yy_current_state = tao_yy_get_previous_state(); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * tao_yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - tao_yy_next_state = tao_yy_try_NUL_trans( tao_yy_current_state ); - - tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ; - - if ( tao_yy_next_state ) - { - /* Consume the NUL. */ - tao_yy_cp = ++tao_yy_c_buf_p; - tao_yy_current_state = tao_yy_next_state; - goto tao_yy_match; - } - - else - { - tao_yy_cp = tao_yy_c_buf_p; - goto tao_yy_find_action; - } - } - - else switch ( tao_yy_get_next_buffer() ) - { - case EOB_ACT_END_OF_FILE: - { - tao_yy_did_buffer_switch_on_eof = 0; - - if ( tao_yywrap() ) - { - /* Note: because we've taken care in - * tao_yy_get_next_buffer() to have set up - * tao_yytext, we can now set up - * tao_yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * TAO_YY_NULL, it'll still work - another - * TAO_YY_NULL will get returned. - */ - tao_yy_c_buf_p = tao_yytext_ptr + TAO_YY_MORE_ADJ; - - tao_yy_act = TAO_YY_STATE_EOF(TAO_YY_START); - goto do_action; - } - - else - { - if ( ! tao_yy_did_buffer_switch_on_eof ) - TAO_YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - tao_yy_c_buf_p = - tao_yytext_ptr + tao_yy_amount_of_matched_text; - - tao_yy_current_state = tao_yy_get_previous_state(); - - tao_yy_cp = tao_yy_c_buf_p; - tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ; - goto tao_yy_match; - - case EOB_ACT_LAST_MATCH: - tao_yy_c_buf_p = - &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars]; - - tao_yy_current_state = tao_yy_get_previous_state(); - - tao_yy_cp = tao_yy_c_buf_p; - tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ; - goto tao_yy_find_action; - } - break; - } - - default: - TAO_YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of tao_yylex */ + tao_yyterminate(); + + case TAO_YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int tao_yy_amount_of_matched_text = (int) (tao_yy_cp - tao_yytext_ptr) - 1; + + /* Undo the effects of TAO_YY_DO_BEFORE_ACTION. */ + *tao_yy_cp = tao_yy_hold_char; + TAO_YY_RESTORE_TAO_YY_MORE_OFFSET + + if ( tao_yy_current_buffer->tao_yy_buffer_status == TAO_YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed tao_yyin at a new source and called + * tao_yylex(). If so, then we have to assure + * consistency between tao_yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + tao_yy_n_chars = tao_yy_current_buffer->tao_yy_n_chars; + tao_yy_current_buffer->tao_yy_input_file = tao_yyin; + tao_yy_current_buffer->tao_yy_buffer_status = TAO_YY_BUFFER_NORMAL; + } + + /* Note that here we test for tao_yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since tao_yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( tao_yy_c_buf_p <= &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] ) + { /* This was really a NUL. */ + tao_yy_state_type tao_yy_next_state; + + tao_yy_c_buf_p = tao_yytext_ptr + tao_yy_amount_of_matched_text; + + tao_yy_current_state = tao_yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * tao_yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + tao_yy_next_state = tao_yy_try_NUL_trans( tao_yy_current_state ); + + tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ; + + if ( tao_yy_next_state ) + { + /* Consume the NUL. */ + tao_yy_cp = ++tao_yy_c_buf_p; + tao_yy_current_state = tao_yy_next_state; + goto tao_yy_match; + } + + else + { + tao_yy_cp = tao_yy_c_buf_p; + goto tao_yy_find_action; + } + } + + else switch ( tao_yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + tao_yy_did_buffer_switch_on_eof = 0; + + if ( tao_yywrap() ) + { + /* Note: because we've taken care in + * tao_yy_get_next_buffer() to have set up + * tao_yytext, we can now set up + * tao_yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * TAO_YY_NULL, it'll still work - another + * TAO_YY_NULL will get returned. + */ + tao_yy_c_buf_p = tao_yytext_ptr + TAO_YY_MORE_ADJ; + + tao_yy_act = TAO_YY_STATE_EOF(TAO_YY_START); + goto do_action; + } + + else + { + if ( ! tao_yy_did_buffer_switch_on_eof ) + TAO_YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + tao_yy_c_buf_p = + tao_yytext_ptr + tao_yy_amount_of_matched_text; + + tao_yy_current_state = tao_yy_get_previous_state(); + + tao_yy_cp = tao_yy_c_buf_p; + tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ; + goto tao_yy_match; + + case EOB_ACT_LAST_MATCH: + tao_yy_c_buf_p = + &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars]; + + tao_yy_current_state = tao_yy_get_previous_state(); + + tao_yy_cp = tao_yy_c_buf_p; + tao_yy_bp = tao_yytext_ptr + TAO_YY_MORE_ADJ; + goto tao_yy_find_action; + } + break; + } + + default: + TAO_YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of tao_yylex */ /* tao_yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file */ static int tao_yy_get_next_buffer() - { - register char *dest = tao_yy_current_buffer->tao_yy_ch_buf; - register char *source = tao_yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( tao_yy_c_buf_p > &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars + 1] ) - TAO_YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( tao_yy_current_buffer->tao_yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( tao_yy_c_buf_p - tao_yytext_ptr - TAO_YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (tao_yy_c_buf_p - tao_yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( tao_yy_current_buffer->tao_yy_buffer_status == TAO_YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars = 0; - - else - { - int num_to_read = - tao_yy_current_buffer->tao_yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ + { + register char *dest = tao_yy_current_buffer->tao_yy_ch_buf; + register char *source = tao_yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( tao_yy_c_buf_p > &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars + 1] ) + TAO_YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( tao_yy_current_buffer->tao_yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( tao_yy_c_buf_p - tao_yytext_ptr - TAO_YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (tao_yy_c_buf_p - tao_yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( tao_yy_current_buffer->tao_yy_buffer_status == TAO_YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars = 0; + + else + { + int num_to_read = + tao_yy_current_buffer->tao_yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ #ifdef TAO_YY_USES_REJECT - TAO_YY_FATAL_ERROR( + TAO_YY_FATAL_ERROR( "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); #else - /* just a shorter name for the current buffer */ - TAO_YY_BUFFER_STATE b = tao_yy_current_buffer; + /* just a shorter name for the current buffer */ + TAO_YY_BUFFER_STATE b = tao_yy_current_buffer; - int tao_yy_c_buf_p_offset = - (int) (tao_yy_c_buf_p - b->tao_yy_ch_buf); + int tao_yy_c_buf_p_offset = + (int) (tao_yy_c_buf_p - b->tao_yy_ch_buf); - if ( b->tao_yy_is_our_buffer ) - { - int new_size = b->tao_yy_buf_size * 2; + if ( b->tao_yy_is_our_buffer ) + { + int new_size = b->tao_yy_buf_size * 2; - if ( new_size <= 0 ) - b->tao_yy_buf_size += b->tao_yy_buf_size / 8; - else - b->tao_yy_buf_size *= 2; + if ( new_size <= 0 ) + b->tao_yy_buf_size += b->tao_yy_buf_size / 8; + else + b->tao_yy_buf_size *= 2; - b->tao_yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - tao_yy_flex_realloc( (void *) b->tao_yy_ch_buf, - b->tao_yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->tao_yy_ch_buf = 0; + b->tao_yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + tao_yy_flex_realloc( (void *) b->tao_yy_ch_buf, + b->tao_yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->tao_yy_ch_buf = 0; - if ( ! b->tao_yy_ch_buf ) - TAO_YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); + if ( ! b->tao_yy_ch_buf ) + TAO_YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); - tao_yy_c_buf_p = &b->tao_yy_ch_buf[tao_yy_c_buf_p_offset]; + tao_yy_c_buf_p = &b->tao_yy_ch_buf[tao_yy_c_buf_p_offset]; - num_to_read = tao_yy_current_buffer->tao_yy_buf_size - - number_to_move - 1; + num_to_read = tao_yy_current_buffer->tao_yy_buf_size - + number_to_move - 1; #endif - } - - if ( num_to_read > TAO_YY_READ_BUF_SIZE ) - num_to_read = TAO_YY_READ_BUF_SIZE; + } - /* Read in more data. */ - TAO_YY_INPUT( (&tao_yy_current_buffer->tao_yy_ch_buf[number_to_move]), - tao_yy_n_chars, num_to_read ); + if ( num_to_read > TAO_YY_READ_BUF_SIZE ) + num_to_read = TAO_YY_READ_BUF_SIZE; - tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars; - } + /* Read in more data. */ + TAO_YY_INPUT( (&tao_yy_current_buffer->tao_yy_ch_buf[number_to_move]), + tao_yy_n_chars, num_to_read ); - if ( tao_yy_n_chars == 0 ) - { - if ( number_to_move == TAO_YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - tao_yyrestart( tao_yyin ); - } + tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars; + } - else - { - ret_val = EOB_ACT_LAST_MATCH; - tao_yy_current_buffer->tao_yy_buffer_status = - TAO_YY_BUFFER_EOF_PENDING; - } - } + if ( tao_yy_n_chars == 0 ) + { + if ( number_to_move == TAO_YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + tao_yyrestart( tao_yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + tao_yy_current_buffer->tao_yy_buffer_status = + TAO_YY_BUFFER_EOF_PENDING; + } + } - else - ret_val = EOB_ACT_CONTINUE_SCAN; + else + ret_val = EOB_ACT_CONTINUE_SCAN; - tao_yy_n_chars += number_to_move; - tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] = TAO_YY_END_OF_BUFFER_CHAR; - tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars + 1] = TAO_YY_END_OF_BUFFER_CHAR; + tao_yy_n_chars += number_to_move; + tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] = TAO_YY_END_OF_BUFFER_CHAR; + tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars + 1] = TAO_YY_END_OF_BUFFER_CHAR; - tao_yytext_ptr = &tao_yy_current_buffer->tao_yy_ch_buf[0]; + tao_yytext_ptr = &tao_yy_current_buffer->tao_yy_ch_buf[0]; - return ret_val; - } + return ret_val; + } /* tao_yy_get_previous_state - get the state just before the EOB char was reached */ static tao_yy_state_type tao_yy_get_previous_state() - { - register tao_yy_state_type tao_yy_current_state; - register char *tao_yy_cp; - - tao_yy_current_state = tao_yy_start; - tao_yy_current_state += TAO_YY_AT_BOL(); - - for ( tao_yy_cp = tao_yytext_ptr + TAO_YY_MORE_ADJ; tao_yy_cp < tao_yy_c_buf_p; ++tao_yy_cp ) - { - register TAO_YY_CHAR tao_yy_c = (*tao_yy_cp ? tao_yy_ec[TAO_YY_SC_TO_UI(*tao_yy_cp)] : 1); - if ( tao_yy_accept[tao_yy_current_state] ) - { - tao_yy_last_accepting_state = tao_yy_current_state; - tao_yy_last_accepting_cpos = tao_yy_cp; - } - while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state ) - { - tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state]; - if ( tao_yy_current_state >= 288 ) - tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c]; - } - tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c]; - } - - return tao_yy_current_state; - } + { + register tao_yy_state_type tao_yy_current_state; + register char *tao_yy_cp; + + tao_yy_current_state = tao_yy_start; + tao_yy_current_state += TAO_YY_AT_BOL(); + + for ( tao_yy_cp = tao_yytext_ptr + TAO_YY_MORE_ADJ; tao_yy_cp < tao_yy_c_buf_p; ++tao_yy_cp ) + { + register TAO_YY_CHAR tao_yy_c = (*tao_yy_cp ? tao_yy_ec[TAO_YY_SC_TO_UI(*tao_yy_cp)] : 1); + if ( tao_yy_accept[tao_yy_current_state] ) + { + tao_yy_last_accepting_state = tao_yy_current_state; + tao_yy_last_accepting_cpos = tao_yy_cp; + } + while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state ) + { + tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state]; + if ( tao_yy_current_state >= 339 ) + tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c]; + } + tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c]; + } + + return tao_yy_current_state; + } /* tao_yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis - * next_state = tao_yy_try_NUL_trans( current_state ); + * next_state = tao_yy_try_NUL_trans( current_state ); */ #ifdef TAO_YY_USE_PROTOS @@ -1624,27 +1703,27 @@ static tao_yy_state_type tao_yy_try_NUL_trans( tao_yy_state_type tao_yy_current_ static tao_yy_state_type tao_yy_try_NUL_trans( tao_yy_current_state ) tao_yy_state_type tao_yy_current_state; #endif - { - register int tao_yy_is_jam; - register char *tao_yy_cp = tao_yy_c_buf_p; - - register TAO_YY_CHAR tao_yy_c = 1; - if ( tao_yy_accept[tao_yy_current_state] ) - { - tao_yy_last_accepting_state = tao_yy_current_state; - tao_yy_last_accepting_cpos = tao_yy_cp; - } - while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state ) - { - tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state]; - if ( tao_yy_current_state >= 288 ) - tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c]; - } - tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c]; - tao_yy_is_jam = (tao_yy_current_state == 287); - - return tao_yy_is_jam ? 0 : tao_yy_current_state; - } + { + register int tao_yy_is_jam; + register char *tao_yy_cp = tao_yy_c_buf_p; + + register TAO_YY_CHAR tao_yy_c = 1; + if ( tao_yy_accept[tao_yy_current_state] ) + { + tao_yy_last_accepting_state = tao_yy_current_state; + tao_yy_last_accepting_cpos = tao_yy_cp; + } + while ( tao_yy_chk[tao_yy_base[tao_yy_current_state] + tao_yy_c] != tao_yy_current_state ) + { + tao_yy_current_state = (int) tao_yy_def[tao_yy_current_state]; + if ( tao_yy_current_state >= 339 ) + tao_yy_c = tao_yy_meta[(unsigned int) tao_yy_c]; + } + tao_yy_current_state = tao_yy_nxt[tao_yy_base[tao_yy_current_state] + (unsigned int) tao_yy_c]; + tao_yy_is_jam = (tao_yy_current_state == 338); + + return tao_yy_is_jam ? 0 : tao_yy_current_state; + } #ifndef TAO_YY_NO_UNPUT @@ -1655,41 +1734,41 @@ static void tao_yyunput( c, tao_yy_bp ) int c; register char *tao_yy_bp; #endif - { - register char *tao_yy_cp = tao_yy_c_buf_p; - - /* undo effects of setting up tao_yytext */ - *tao_yy_cp = tao_yy_hold_char; - - if ( tao_yy_cp < tao_yy_current_buffer->tao_yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = tao_yy_n_chars + 2; - register char *dest = &tao_yy_current_buffer->tao_yy_ch_buf[ - tao_yy_current_buffer->tao_yy_buf_size + 2]; - register char *source = - &tao_yy_current_buffer->tao_yy_ch_buf[number_to_move]; - - while ( source > tao_yy_current_buffer->tao_yy_ch_buf ) - *--dest = *--source; - - tao_yy_cp += (int) (dest - source); - tao_yy_bp += (int) (dest - source); - tao_yy_current_buffer->tao_yy_n_chars = - tao_yy_n_chars = tao_yy_current_buffer->tao_yy_buf_size; - - if ( tao_yy_cp < tao_yy_current_buffer->tao_yy_ch_buf + 2 ) - TAO_YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } + { + register char *tao_yy_cp = tao_yy_c_buf_p; + + /* undo effects of setting up tao_yytext */ + *tao_yy_cp = tao_yy_hold_char; + + if ( tao_yy_cp < tao_yy_current_buffer->tao_yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = tao_yy_n_chars + 2; + register char *dest = &tao_yy_current_buffer->tao_yy_ch_buf[ + tao_yy_current_buffer->tao_yy_buf_size + 2]; + register char *source = + &tao_yy_current_buffer->tao_yy_ch_buf[number_to_move]; + + while ( source > tao_yy_current_buffer->tao_yy_ch_buf ) + *--dest = *--source; + + tao_yy_cp += (int) (dest - source); + tao_yy_bp += (int) (dest - source); + tao_yy_current_buffer->tao_yy_n_chars = + tao_yy_n_chars = tao_yy_current_buffer->tao_yy_buf_size; + + if ( tao_yy_cp < tao_yy_current_buffer->tao_yy_ch_buf + 2 ) + TAO_YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } - *--tao_yy_cp = (char) c; + *--tao_yy_cp = (char) c; - tao_yytext_ptr = tao_yy_bp; - tao_yy_hold_char = *tao_yy_cp; - tao_yy_c_buf_p = tao_yy_cp; - } -#endif /* ifndef TAO_YY_NO_UNPUT */ + tao_yytext_ptr = tao_yy_bp; + tao_yy_hold_char = *tao_yy_cp; + tao_yy_c_buf_p = tao_yy_cp; + } +#endif /* ifndef TAO_YY_NO_UNPUT */ #ifdef __cplusplus @@ -1697,73 +1776,73 @@ static int tao_yyinput() #else static int input() #endif - { - int c; - - *tao_yy_c_buf_p = tao_yy_hold_char; - - if ( *tao_yy_c_buf_p == TAO_YY_END_OF_BUFFER_CHAR ) - { - /* tao_yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( tao_yy_c_buf_p < &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] ) - /* This was really a NUL. */ - *tao_yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = tao_yy_c_buf_p - tao_yytext_ptr; - ++tao_yy_c_buf_p; - - switch ( tao_yy_get_next_buffer() ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because tao_yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - tao_yyrestart( tao_yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( tao_yywrap() ) - return EOF; - - if ( ! tao_yy_did_buffer_switch_on_eof ) - TAO_YY_NEW_FILE; + { + int c; + + *tao_yy_c_buf_p = tao_yy_hold_char; + + if ( *tao_yy_c_buf_p == TAO_YY_END_OF_BUFFER_CHAR ) + { + /* tao_yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( tao_yy_c_buf_p < &tao_yy_current_buffer->tao_yy_ch_buf[tao_yy_n_chars] ) + /* This was really a NUL. */ + *tao_yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = tao_yy_c_buf_p - tao_yytext_ptr; + ++tao_yy_c_buf_p; + + switch ( tao_yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because tao_yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + tao_yyrestart( tao_yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( tao_yywrap() ) + return EOF; + + if ( ! tao_yy_did_buffer_switch_on_eof ) + TAO_YY_NEW_FILE; #ifdef __cplusplus - return tao_yyinput(); + return tao_yyinput(); #else - return input(); + return input(); #endif - } + } - case EOB_ACT_CONTINUE_SCAN: - tao_yy_c_buf_p = tao_yytext_ptr + offset; - break; - } - } - } + case EOB_ACT_CONTINUE_SCAN: + tao_yy_c_buf_p = tao_yytext_ptr + offset; + break; + } + } + } - c = *(unsigned char *) tao_yy_c_buf_p; /* cast for 8-bit char's */ - *tao_yy_c_buf_p = '\0'; /* preserve tao_yytext */ - tao_yy_hold_char = *++tao_yy_c_buf_p; + c = *(unsigned char *) tao_yy_c_buf_p; /* cast for 8-bit char's */ + *tao_yy_c_buf_p = '\0'; /* preserve tao_yytext */ + tao_yy_hold_char = *++tao_yy_c_buf_p; - tao_yy_current_buffer->tao_yy_at_bol = (c == '\n'); + tao_yy_current_buffer->tao_yy_at_bol = (c == '\n'); - return c; - } + return c; + } #ifdef TAO_YY_USE_PROTOS @@ -1772,13 +1851,13 @@ void tao_yyrestart( FILE *input_file ) void tao_yyrestart( input_file ) FILE *input_file; #endif - { - if ( ! tao_yy_current_buffer ) - tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); + { + if ( ! tao_yy_current_buffer ) + tao_yy_current_buffer = tao_yy_create_buffer( tao_yyin, TAO_YY_BUF_SIZE ); - tao_yy_init_buffer( tao_yy_current_buffer, input_file ); - tao_yy_load_buffer_state(); - } + tao_yy_init_buffer( tao_yy_current_buffer, input_file ); + tao_yy_load_buffer_state(); + } #ifdef TAO_YY_USE_PROTOS @@ -1787,28 +1866,28 @@ void tao_yy_switch_to_buffer( TAO_YY_BUFFER_STATE new_buffer ) void tao_yy_switch_to_buffer( new_buffer ) TAO_YY_BUFFER_STATE new_buffer; #endif - { - if ( tao_yy_current_buffer == new_buffer ) - return; - - if ( tao_yy_current_buffer ) - { - /* Flush out information for old buffer. */ - *tao_yy_c_buf_p = tao_yy_hold_char; - tao_yy_current_buffer->tao_yy_buf_pos = tao_yy_c_buf_p; - tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars; - } + { + if ( tao_yy_current_buffer == new_buffer ) + return; + + if ( tao_yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *tao_yy_c_buf_p = tao_yy_hold_char; + tao_yy_current_buffer->tao_yy_buf_pos = tao_yy_c_buf_p; + tao_yy_current_buffer->tao_yy_n_chars = tao_yy_n_chars; + } - tao_yy_current_buffer = new_buffer; - tao_yy_load_buffer_state(); + tao_yy_current_buffer = new_buffer; + tao_yy_load_buffer_state(); - /* We don't actually know whether we did this switch during - * EOF (tao_yywrap()) processing, but the only time this flag - * is looked at is after tao_yywrap() is called, so it's safe - * to go ahead and always set it. - */ - tao_yy_did_buffer_switch_on_eof = 1; - } + /* We don't actually know whether we did this switch during + * EOF (tao_yywrap()) processing, but the only time this flag + * is looked at is after tao_yywrap() is called, so it's safe + * to go ahead and always set it. + */ + tao_yy_did_buffer_switch_on_eof = 1; + } #ifdef TAO_YY_USE_PROTOS @@ -1816,12 +1895,12 @@ void tao_yy_load_buffer_state( void ) #else void tao_yy_load_buffer_state() #endif - { - tao_yy_n_chars = tao_yy_current_buffer->tao_yy_n_chars; - tao_yytext_ptr = tao_yy_c_buf_p = tao_yy_current_buffer->tao_yy_buf_pos; - tao_yyin = tao_yy_current_buffer->tao_yy_input_file; - tao_yy_hold_char = *tao_yy_c_buf_p; - } + { + tao_yy_n_chars = tao_yy_current_buffer->tao_yy_n_chars; + tao_yytext_ptr = tao_yy_c_buf_p = tao_yy_current_buffer->tao_yy_buf_pos; + tao_yyin = tao_yy_current_buffer->tao_yy_input_file; + tao_yy_hold_char = *tao_yy_c_buf_p; + } #ifdef TAO_YY_USE_PROTOS @@ -1831,28 +1910,28 @@ TAO_YY_BUFFER_STATE tao_yy_create_buffer( file, size ) FILE *file; int size; #endif - { - TAO_YY_BUFFER_STATE b; + { + TAO_YY_BUFFER_STATE b; - b = (TAO_YY_BUFFER_STATE) tao_yy_flex_alloc( sizeof( struct tao_yy_buffer_state ) ); - if ( ! b ) - TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_create_buffer()" ); + b = (TAO_YY_BUFFER_STATE) tao_yy_flex_alloc( sizeof( struct tao_yy_buffer_state ) ); + if ( ! b ) + TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_create_buffer()" ); - b->tao_yy_buf_size = size; + b->tao_yy_buf_size = size; - /* tao_yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->tao_yy_ch_buf = (char *) tao_yy_flex_alloc( b->tao_yy_buf_size + 2 ); - if ( ! b->tao_yy_ch_buf ) - TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_create_buffer()" ); + /* tao_yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->tao_yy_ch_buf = (char *) tao_yy_flex_alloc( b->tao_yy_buf_size + 2 ); + if ( ! b->tao_yy_ch_buf ) + TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_create_buffer()" ); - b->tao_yy_is_our_buffer = 1; + b->tao_yy_is_our_buffer = 1; - tao_yy_init_buffer( b, file ); + tao_yy_init_buffer( b, file ); - return b; - } + return b; + } #ifdef TAO_YY_USE_PROTOS @@ -1861,18 +1940,18 @@ void tao_yy_delete_buffer( TAO_YY_BUFFER_STATE b ) void tao_yy_delete_buffer( b ) TAO_YY_BUFFER_STATE b; #endif - { - if ( ! b ) - return; + { + if ( ! b ) + return; - if ( b == tao_yy_current_buffer ) - tao_yy_current_buffer = (TAO_YY_BUFFER_STATE) 0; + if ( b == tao_yy_current_buffer ) + tao_yy_current_buffer = (TAO_YY_BUFFER_STATE) 0; - if ( b->tao_yy_is_our_buffer ) - tao_yy_flex_free( (void *) b->tao_yy_ch_buf ); + if ( b->tao_yy_is_our_buffer ) + tao_yy_flex_free( (void *) b->tao_yy_ch_buf ); - tao_yy_flex_free( (void *) b ); - } + tao_yy_flex_free( (void *) b ); + } #ifndef TAO_YY_ALWAYS_INTERACTIVE @@ -1890,22 +1969,22 @@ FILE *file; #endif - { - tao_yy_flush_buffer( b ); + { + tao_yy_flush_buffer( b ); - b->tao_yy_input_file = file; - b->tao_yy_fill_buffer = 1; + b->tao_yy_input_file = file; + b->tao_yy_fill_buffer = 1; #if TAO_YY_ALWAYS_INTERACTIVE - b->tao_yy_is_interactive = 1; + b->tao_yy_is_interactive = 1; #else #if TAO_YY_NEVER_INTERACTIVE - b->tao_yy_is_interactive = 0; + b->tao_yy_is_interactive = 0; #else - b->tao_yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + b->tao_yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; #endif #endif - } + } #ifdef TAO_YY_USE_PROTOS @@ -1915,27 +1994,27 @@ void tao_yy_flush_buffer( b ) TAO_YY_BUFFER_STATE b; #endif - { - if ( ! b ) - return; + { + if ( ! b ) + return; - b->tao_yy_n_chars = 0; + b->tao_yy_n_chars = 0; - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->tao_yy_ch_buf[0] = TAO_YY_END_OF_BUFFER_CHAR; - b->tao_yy_ch_buf[1] = TAO_YY_END_OF_BUFFER_CHAR; + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->tao_yy_ch_buf[0] = TAO_YY_END_OF_BUFFER_CHAR; + b->tao_yy_ch_buf[1] = TAO_YY_END_OF_BUFFER_CHAR; - b->tao_yy_buf_pos = &b->tao_yy_ch_buf[0]; + b->tao_yy_buf_pos = &b->tao_yy_ch_buf[0]; - b->tao_yy_at_bol = 1; - b->tao_yy_buffer_status = TAO_YY_BUFFER_NEW; + b->tao_yy_at_bol = 1; + b->tao_yy_buffer_status = TAO_YY_BUFFER_NEW; - if ( b == tao_yy_current_buffer ) - tao_yy_load_buffer_state(); - } + if ( b == tao_yy_current_buffer ) + tao_yy_load_buffer_state(); + } #ifndef TAO_YY_NO_SCAN_BUFFER @@ -1946,33 +2025,33 @@ TAO_YY_BUFFER_STATE tao_yy_scan_buffer( base, size ) char *base; tao_yy_size_t size; #endif - { - TAO_YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != TAO_YY_END_OF_BUFFER_CHAR || - base[size-1] != TAO_YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (TAO_YY_BUFFER_STATE) tao_yy_flex_alloc( sizeof( struct tao_yy_buffer_state ) ); - if ( ! b ) - TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_scan_buffer()" ); - - b->tao_yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->tao_yy_buf_pos = b->tao_yy_ch_buf = base; - b->tao_yy_is_our_buffer = 0; - b->tao_yy_input_file = 0; - b->tao_yy_n_chars = b->tao_yy_buf_size; - b->tao_yy_is_interactive = 0; - b->tao_yy_at_bol = 1; - b->tao_yy_fill_buffer = 0; - b->tao_yy_buffer_status = TAO_YY_BUFFER_NEW; - - tao_yy_switch_to_buffer( b ); - - return b; - } + { + TAO_YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != TAO_YY_END_OF_BUFFER_CHAR || + base[size-1] != TAO_YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (TAO_YY_BUFFER_STATE) tao_yy_flex_alloc( sizeof( struct tao_yy_buffer_state ) ); + if ( ! b ) + TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_scan_buffer()" ); + + b->tao_yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->tao_yy_buf_pos = b->tao_yy_ch_buf = base; + b->tao_yy_is_our_buffer = 0; + b->tao_yy_input_file = 0; + b->tao_yy_n_chars = b->tao_yy_buf_size; + b->tao_yy_is_interactive = 0; + b->tao_yy_at_bol = 1; + b->tao_yy_fill_buffer = 0; + b->tao_yy_buffer_status = TAO_YY_BUFFER_NEW; + + tao_yy_switch_to_buffer( b ); + + return b; + } #endif @@ -1983,13 +2062,13 @@ TAO_YY_BUFFER_STATE tao_yy_scan_string( tao_yyconst char *tao_yy_str ) TAO_YY_BUFFER_STATE tao_yy_scan_string( tao_yy_str ) tao_yyconst char *tao_yy_str; #endif - { - int len; - for ( len = 0; tao_yy_str[len]; ++len ) - ; + { + int len; + for ( len = 0; tao_yy_str[len]; ++len ) + ; - return tao_yy_scan_bytes( tao_yy_str, len ); - } + return tao_yy_scan_bytes( tao_yy_str, len ); + } #endif @@ -2001,34 +2080,34 @@ TAO_YY_BUFFER_STATE tao_yy_scan_bytes( bytes, len ) tao_yyconst char *bytes; int len; #endif - { - TAO_YY_BUFFER_STATE b; - char *buf; - tao_yy_size_t n; - int i; + { + TAO_YY_BUFFER_STATE b; + char *buf; + tao_yy_size_t n; + int i; - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) tao_yy_flex_alloc( n ); - if ( ! buf ) - TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_scan_bytes()" ); + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (char *) tao_yy_flex_alloc( n ); + if ( ! buf ) + TAO_YY_FATAL_ERROR( "out of dynamic memory in tao_yy_scan_bytes()" ); - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; + for ( i = 0; i < len; ++i ) + buf[i] = bytes[i]; - buf[len] = buf[len+1] = TAO_YY_END_OF_BUFFER_CHAR; + buf[len] = buf[len+1] = TAO_YY_END_OF_BUFFER_CHAR; - b = tao_yy_scan_buffer( buf, n ); - if ( ! b ) - TAO_YY_FATAL_ERROR( "bad buffer in tao_yy_scan_bytes()" ); + b = tao_yy_scan_buffer( buf, n ); + if ( ! b ) + TAO_YY_FATAL_ERROR( "bad buffer in tao_yy_scan_bytes()" ); - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->tao_yy_is_our_buffer = 1; + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->tao_yy_is_our_buffer = 1; - return b; - } + return b; + } #endif @@ -2039,49 +2118,49 @@ static void tao_yy_push_state( int new_state ) static void tao_yy_push_state( new_state ) int new_state; #endif - { - if ( tao_yy_start_stack_ptr >= tao_yy_start_stack_depth ) - { - tao_yy_size_t new_size; + { + if ( tao_yy_start_stack_ptr >= tao_yy_start_stack_depth ) + { + tao_yy_size_t new_size; - tao_yy_start_stack_depth += TAO_YY_START_STACK_INCR; - new_size = tao_yy_start_stack_depth * sizeof( int ); + tao_yy_start_stack_depth += TAO_YY_START_STACK_INCR; + new_size = tao_yy_start_stack_depth * sizeof( int ); - if ( ! tao_yy_start_stack ) - tao_yy_start_stack = (int *) tao_yy_flex_alloc( new_size ); + if ( ! tao_yy_start_stack ) + tao_yy_start_stack = (int *) tao_yy_flex_alloc( new_size ); - else - tao_yy_start_stack = (int *) tao_yy_flex_realloc( - (void *) tao_yy_start_stack, new_size ); + else + tao_yy_start_stack = (int *) tao_yy_flex_realloc( + (void *) tao_yy_start_stack, new_size ); - if ( ! tao_yy_start_stack ) - TAO_YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } + if ( ! tao_yy_start_stack ) + TAO_YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } - tao_yy_start_stack[tao_yy_start_stack_ptr++] = TAO_YY_START; + tao_yy_start_stack[tao_yy_start_stack_ptr++] = TAO_YY_START; - BEGIN(new_state); - } + BEGIN(new_state); + } #endif #ifndef TAO_YY_NO_POP_STATE static void tao_yy_pop_state() - { - if ( --tao_yy_start_stack_ptr < 0 ) - TAO_YY_FATAL_ERROR( "start-condition stack underflow" ); + { + if ( --tao_yy_start_stack_ptr < 0 ) + TAO_YY_FATAL_ERROR( "start-condition stack underflow" ); - BEGIN(tao_yy_start_stack[tao_yy_start_stack_ptr]); - } + BEGIN(tao_yy_start_stack[tao_yy_start_stack_ptr]); + } #endif #ifndef TAO_YY_NO_TOP_STATE static int tao_yy_top_state() - { - return tao_yy_start_stack[tao_yy_start_stack_ptr - 1]; - } + { + return tao_yy_start_stack[tao_yy_start_stack_ptr - 1]; + } #endif #ifndef TAO_YY_EXIT_FAILURE @@ -2094,10 +2173,10 @@ static void tao_yy_fatal_error( tao_yyconst char msg[] ) static void tao_yy_fatal_error( msg ) char msg[]; #endif - { - (void) fprintf( stderr, "%s\n", msg ); - ACE_OS::exit (TAO_YY_EXIT_FAILURE); - } + { + (void) fprintf( stderr, "%s\n", msg ); + exit( TAO_YY_EXIT_FAILURE ); + } @@ -2105,16 +2184,16 @@ char msg[]; #undef tao_yyless #define tao_yyless(n) \ - do \ - { \ - /* Undo effects of setting up tao_yytext. */ \ - tao_yytext[tao_yyleng] = tao_yy_hold_char; \ - tao_yy_c_buf_p = tao_yytext + n; \ - tao_yy_hold_char = *tao_yy_c_buf_p; \ - *tao_yy_c_buf_p = '\0'; \ - tao_yyleng = n; \ - } \ - while ( 0 ) + do \ + { \ + /* Undo effects of setting up tao_yytext. */ \ + tao_yytext[tao_yyleng] = tao_yy_hold_char; \ + tao_yy_c_buf_p = tao_yytext + n; \ + tao_yy_hold_char = *tao_yy_c_buf_p; \ + *tao_yy_c_buf_p = '\0'; \ + tao_yyleng = n; \ + } \ + while ( 0 ) /* Internal utility routines. */ @@ -2128,11 +2207,11 @@ char *s1; tao_yyconst char *s2; int n; #endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } #endif #ifdef TAO_YY_NEED_STRLEN @@ -2142,13 +2221,13 @@ static int tao_yy_flex_strlen( tao_yyconst char *s ) static int tao_yy_flex_strlen( s ) tao_yyconst char *s; #endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; + { + register int n; + for ( n = 0; s[n]; ++n ) + ; - return n; - } + return n; + } #endif @@ -2158,9 +2237,9 @@ static void *tao_yy_flex_alloc( tao_yy_size_t size ) static void *tao_yy_flex_alloc( size ) tao_yy_size_t size; #endif - { - return (void *) malloc( size ); - } + { + return (void *) malloc( size ); + } #ifdef TAO_YY_USE_PROTOS static void *tao_yy_flex_realloc( void *ptr, tao_yy_size_t size ) @@ -2169,16 +2248,16 @@ static void *tao_yy_flex_realloc( ptr, size ) void *ptr; tao_yy_size_t size; #endif - { - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); - } + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } #ifdef TAO_YY_USE_PROTOS static void tao_yy_flex_free( void *ptr ) @@ -2186,20 +2265,20 @@ static void tao_yy_flex_free( void *ptr ) static void tao_yy_flex_free( ptr ) void *ptr; #endif - { - free( ptr ); - } + { + free( ptr ); + } #if TAO_YY_MAIN int main() - { - tao_yylex(); - return 0; - } + { + tao_yylex(); + return 0; + } #endif -#line 263 "fe/idl.ll" +#line 284 "fe/idl.ll" - /* subroutines */ + /* subroutines */ /* * Strip down a name to the last component, i.e. everything after the last @@ -2208,11 +2287,11 @@ int main() static char * stripped_name(UTL_String *fn) { - char *n = fn->get_string(); - long l; + char *n = fn->get_string(); + long l; if (n == NULL) - return NULL; + return NULL; l = strlen(n); for (n += l; l > 0 && *n != '/'; l--, n--); if (*n == '/') n++; @@ -2225,9 +2304,9 @@ stripped_name(UTL_String *fn) static void idl_parse_line_and_file(char *buf) { - char *r = buf; - char *h; - UTL_String *nm; + char *r = buf; + char *h; + UTL_String *nm; /* Skip initial '#' */ if (*r != '#') @@ -2270,9 +2349,9 @@ idl_parse_line_and_file(char *buf) for (i = 0, j = 0; h[j] != '\0'; i++, j++) { if (h[j] == '\\' && h[j + 1] == '\\') - j++; + j++; - h[i] = h[j]; + h[i] = h[j]; } h[i] = '\0'; idl_global->set_filename(new String(h)); @@ -2307,7 +2386,7 @@ idl_store_pragma(char *buf) while (*sp != '\n') { *tp = *sp; - ++tp; ++sp; + ++tp; ++sp; } } @@ -2338,32 +2417,32 @@ idl_store_pragma(char *buf) static long idl_atoi(char *s, long b) { - long r = 0; - long negative = 0; - - if (*s == '-') { - negative = 1; - s++; - } - if (b == 8 && *s == '0') - s++; - else if (b == 16 && *s == '0' && (*(s + 1) == 'x' || *(s + 1) == 'X')) - s += 2; - - for (; *s; s++) - if (*s <= '9' && *s >= '0') - r = (r * b) + (*s - '0'); - else if (b > 10 && *s <= 'f' && *s >= 'a') - r = (r * b) + (*s - 'a' + 10); - else if (b > 10 && *s <= 'F' && *s >= 'A') - r = (r * b) + (*s - 'A' + 10); - else - break; - - if (negative) - r *= -1; - - return r; + long r = 0; + long negative = 0; + + if (*s == '-') { + negative = 1; + s++; + } + if (b == 8 && *s == '0') + s++; + else if (b == 16 && *s == '0' && (*(s + 1) == 'x' || *(s + 1) == 'X')) + s += 2; + + for (; *s; s++) + if (*s <= '9' && *s >= '0') + r = (r * b) + (*s - '0'); + else if (b > 10 && *s <= 'f' && *s >= 'a') + r = (r * b) + (*s - 'a' + 10); + else if (b > 10 && *s <= 'F' && *s >= 'A') + r = (r * b) + (*s - 'A' + 10); + else + break; + + if (negative) + r *= -1; + + return r; } /* @@ -2372,56 +2451,56 @@ idl_atoi(char *s, long b) static double idl_atof(char *s) { - char *h = s; - double d = 0.0; - double f = 0.0; - double e, k; - long neg = 0, negexp = 0; - - ACE_UNUSED_ARG (f); - ACE_UNUSED_ARG (h); - - if (*s == '-') { - neg = 1; - s++; - } - while (*s >= '0' && *s <= '9') { - d = (d * 10) + *s - '0'; - s++; - } - if (*s == '.') { - s++; - e = 10; - while (*s >= '0' && *s <= '9') { - d += (*s - '0') / (e * 1.0); - e *= 10; - s++; - } - } - if (*s == 'e' || *s == 'E') { - s++; - if (*s == '-') { - negexp = 1; - s++; - } else if (*s == '+') - s++; - e = 0; - while (*s >= '0' && *s <= '9') { - e = (e * 10) + *s - '0'; - s++; - } - if (e > 0) { - for (k = 1; e > 0; k *= 10, e--); - if (negexp) - d /= k; - else - d *= k; - } - } - - if (neg) d *= -1.0; - - return d; + char *h = s; + double d = 0.0; + double f = 0.0; + double e, k; + long neg = 0, negexp = 0; + + ACE_UNUSED_ARG (f); + ACE_UNUSED_ARG (h); + + if (*s == '-') { + neg = 1; + s++; + } + while (*s >= '0' && *s <= '9') { + d = (d * 10) + *s - '0'; + s++; + } + if (*s == '.') { + s++; + e = 10; + while (*s >= '0' && *s <= '9') { + d += (*s - '0') / (e * 1.0); + e *= 10; + s++; + } + } + if (*s == 'e' || *s == 'E') { + s++; + if (*s == '-') { + negexp = 1; + s++; + } else if (*s == '+') + s++; + e = 0; + while (*s >= '0' && *s <= '9') { + e = (e * 10) + *s - '0'; + s++; + } + if (e > 0) { + for (k = 1; e > 0; k *= 10, e--); + if (negexp) + d /= k; + else + d *= k; + } + } + + if (neg) d *= -1.0; + + return d; } /* @@ -2433,61 +2512,61 @@ idl_escape_reader( ) { if (str[0] != '\\') { - return str[0]; + return str[0]; } switch (str[1]) { case 'n': - return '\n'; + return '\n'; case 't': - return '\t'; + return '\t'; case 'v': - return '\v'; + return '\v'; case 'b': - return '\b'; + return '\b'; case 'r': - return '\r'; + return '\r'; case 'f': - return '\f'; + return '\f'; case 'a': - return '\a'; + return '\a'; case '\\': - return '\\'; + return '\\'; case '\?': - return '?'; + return '?'; case '\'': - return '\''; + return '\''; case '"': - return '"'; + return '"'; case 'x': - { - int i; - // hex value - for (i = 2; str[i] != '\0' && isxdigit(str[i]); i++) { - continue; - } - char save = str[i]; - str[i] = '\0'; - char out = (char)idl_atoi(&str[2], 16); - str[i] = save; - return out; - } - TAO_YY_BREAK; + { + int i; + // hex value + for (i = 2; str[i] != '\0' && isxdigit(str[i]); i++) { + continue; + } + char save = str[i]; + str[i] = '\0'; + char out = (char)idl_atoi(&str[2], 16); + str[i] = save; + return out; + } + break; default: - // check for octal value - if (str[1] >= '0' && str[1] <= '7') { - int i; - for (i = 1; str[i] >= '0' && str[i] <= '7'; i++) { - continue; - } - char save = str[i]; - str[i] = '\0'; - char out = (char)idl_atoi(&str[1], 8); - str[i] = save; - return out; - } else { - return str[1] - 'a'; - } - TAO_YY_BREAK; + // check for octal value + if (str[1] >= '0' && str[1] <= '7') { + int i; + for (i = 1; str[i] >= '0' && str[i] <= '7'; i++) { + continue; + } + char save = str[i]; + str[i] = '\0'; + char out = (char)idl_atoi(&str[1], 8); + str[i] = save; + return out; + } else { + return str[1] - 'a'; + } + break; } } diff --git a/TAO/TAO_IDL/fe/y.tab.cpp b/TAO/TAO_IDL/fe/y.tab.cpp index 5240ad07aef..9272762ed31 100644 --- a/TAO/TAO_IDL/fe/y.tab.cpp +++ b/TAO/TAO_IDL/fe/y.tab.cpp @@ -1,6 +1,6 @@ // $Id$ #ifndef lint -char tao_yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90 \n\ +char tao_yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90 \n\ Modified 5/2/90 by J. Roskind to support graphic debugging modes"; #endif #line 74 "fe/idl.tao_yy" @@ -10,8 +10,8 @@ char tao_yysccsid[] = "@(#)yaccpar 1.4 (Berkeley) 02/25/90 \n\ #include <stdio.h> #if (defined(apollo) || defined(hpux)) && defined(__cplusplus) -extern "C" int tao_yywrap(); -#endif /* (defined(apollo) || defined(hpux)) && defined(__cplusplus)*/ +extern "C" int tao_yywrap(); +#endif /* (defined(apollo) || defined(hpux)) && defined(__cplusplus)*/ void tao_yyerror (const char *); int tao_yylex (void); @@ -23,32 +23,34 @@ extern int tao_yyleng; #define TAO_YYDEBUG 1 #line 97 "fe/idl.tao_yy" typedef union { - AST_Decl *dcval; /* Decl value */ - UTL_StrList *slval; /* String list */ - UTL_NameList *nlval; /* Name list */ - UTL_ExprList *elval; /* Expression list */ - UTL_LabelList *llval; /* Label list */ - UTL_DeclList *dlval; /* Declaration list */ - FE_InterfaceHeader *ihval; /* Interface header */ - AST_Expression *exval; /* Expression value */ - AST_UnionLabel *ulval; /* Union label */ - AST_Field *ffval; /* Field value */ - AST_Expression::ExprType etval; /* Expression type */ - AST_Argument::Direction dival; /* Argument direction */ - AST_Operation::Flags ofval; /* Operation flags */ - FE_Declarator *deval; /* Declarator value */ - idl_bool bval; /* Boolean value */ - long ival; /* Long value */ - double dval; /* Double value */ - float fval; /* Float value */ - char cval; /* Char value */ + AST_Decl *dcval; /* Decl value */ + UTL_StrList *slval; /* String list */ + UTL_NameList *nlval; /* Name list */ + UTL_ExprList *elval; /* Expression list */ + UTL_LabelList *llval; /* Label list */ + UTL_DeclList *dlval; /* Declaration list */ + FE_InterfaceHeader *ihval; /* Interface header */ + FE_obv_header *vhval; /* Valuetype header */ + AST_Expression *exval; /* Expression value */ + AST_UnionLabel *ulval; /* Union label */ + AST_Field *ffval; /* Field value */ + AST_Field::Visibility vival; /* N/A, pub or priv */ + AST_Expression::ExprType etval; /* Expression type */ + AST_Argument::Direction dival; /* Argument direction */ + AST_Operation::Flags ofval; /* Operation flags */ + FE_Declarator *deval; /* Declarator value */ + idl_bool bval; /* Boolean value */ + long ival; /* Long value */ + double dval; /* Double value */ + float fval; /* Float value */ + char cval; /* Char value */ - String *sval; /* String value */ - char *strval; /* char * value */ - Identifier *idval; /* Identifier */ - UTL_IdList *idlist; /* Identifier list */ + String *sval; /* String value */ + char *strval; /* char * value */ + Identifier *idval; /* Identifier */ + UTL_IdList *idlist; /* Identifier list */ } TAO_YYSTYPE; -#line 51 "y.tab.cpp" +#line 53 "y.tab.cpp" #define IDENTIFIER 257 #define IDL_CONST 258 #define IDL_MODULE 259 @@ -85,382 +87,459 @@ typedef union { #define IDL_RAISES 290 #define IDL_CONTEXT 291 #define IDL_NATIVE 292 -#define IDL_INTEGER_LITERAL 293 -#define IDL_STRING_LITERAL 294 -#define IDL_CHARACTER_LITERAL 295 -#define IDL_FLOATING_PT_LITERAL 296 -#define IDL_TRUETOK 297 -#define IDL_FALSETOK 298 -#define IDL_SCOPE_DELIMITOR 299 -#define IDL_LEFT_SHIFT 300 -#define IDL_RIGHT_SHIFT 301 +#define IDL_ABSTRACT 293 +#define IDL_CUSTOM 294 +#define IDL_INIT 295 +#define IDL_PRIVATE 296 +#define IDL_PUBLIC 297 +#define IDL_SUPPORTS 298 +#define IDL_TRUNCATABLE 299 +#define IDL_VALUETYPE 300 +#define IDL_INTEGER_LITERAL 301 +#define IDL_STRING_LITERAL 302 +#define IDL_CHARACTER_LITERAL 303 +#define IDL_FLOATING_PT_LITERAL 304 +#define IDL_TRUETOK 305 +#define IDL_FALSETOK 306 +#define IDL_SCOPE_DELIMITOR 307 +#define IDL_LEFT_SHIFT 308 +#define IDL_RIGHT_SHIFT 309 #define TAO_YYERRCODE 256 short tao_yylhs[] = { -1, - 0, 67, 67, 69, 68, 71, 68, 73, 68, 75, - 68, 77, 68, 78, 68, 79, 80, 81, 82, 76, - 74, 74, 85, 87, 88, 83, 89, 64, 32, 90, - 22, 22, 86, 86, 92, 91, 93, 91, 94, 91, - 96, 91, 98, 91, 99, 91, 20, 100, 21, 21, - 16, 101, 16, 102, 16, 65, 84, 103, 104, 105, - 106, 70, 48, 48, 48, 48, 48, 48, 48, 48, - 33, 34, 35, 35, 36, 36, 37, 37, 38, 38, - 38, 39, 39, 39, 40, 40, 40, 40, 41, 41, - 41, 41, 42, 42, 42, 43, 43, 43, 43, 43, - 43, 44, 108, 66, 66, 66, 66, 66, 109, 107, - 1, 1, 2, 2, 2, 56, 56, 56, 56, 56, - 56, 4, 4, 4, 3, 3, 3, 28, 110, 29, - 29, 60, 60, 30, 111, 31, 31, 61, 62, 49, - 49, 54, 54, 54, 55, 55, 55, 52, 52, 52, - 50, 50, 57, 51, 53, 112, 113, 115, 116, 7, - 114, 118, 118, 119, 120, 117, 121, 117, 122, 123, - 124, 125, 126, 127, 129, 130, 10, 9, 9, 9, - 9, 9, 9, 128, 132, 132, 133, 134, 131, 135, - 131, 26, 27, 27, 136, 46, 137, 138, 46, 139, - 47, 140, 141, 143, 144, 8, 142, 147, 146, 146, - 145, 148, 149, 5, 5, 150, 151, 13, 153, 154, - 6, 6, 152, 156, 157, 14, 14, 155, 158, 11, - 24, 25, 25, 159, 160, 45, 161, 162, 95, 63, - 63, 163, 164, 165, 166, 72, 167, 169, 170, 171, - 97, 59, 59, 59, 12, 12, 172, 168, 174, 168, - 173, 177, 176, 176, 178, 179, 175, 15, 15, 15, - 58, 58, 58, 180, 181, 23, 23, 182, 183, 17, - 17, 18, 184, 19, 19, + 0, 71, 71, 73, 72, 75, 72, 77, 72, 79, + 72, 81, 72, 83, 72, 84, 72, 85, 86, 87, + 88, 80, 78, 78, 91, 93, 94, 89, 95, 67, + 33, 96, 22, 22, 82, 82, 82, 82, 97, 97, + 102, 104, 105, 101, 106, 107, 108, 98, 34, 109, + 68, 66, 66, 24, 24, 99, 99, 100, 103, 103, + 110, 110, 110, 115, 111, 116, 111, 92, 92, 117, + 112, 118, 112, 119, 112, 121, 112, 123, 112, 124, + 112, 20, 125, 21, 21, 16, 126, 16, 127, 16, + 69, 90, 128, 129, 130, 131, 74, 50, 50, 50, + 50, 50, 50, 50, 50, 35, 36, 37, 37, 38, + 38, 39, 39, 40, 40, 40, 41, 41, 41, 42, + 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, + 45, 45, 45, 45, 45, 45, 46, 133, 70, 70, + 70, 70, 70, 134, 132, 1, 1, 2, 2, 2, + 58, 58, 58, 58, 58, 58, 4, 4, 4, 3, + 3, 3, 29, 135, 30, 30, 62, 62, 31, 136, + 32, 32, 63, 64, 51, 51, 56, 56, 56, 57, + 57, 57, 54, 54, 54, 52, 52, 59, 53, 55, + 137, 138, 140, 141, 7, 139, 143, 143, 144, 142, + 145, 146, 114, 147, 114, 148, 149, 150, 151, 152, + 153, 155, 156, 10, 9, 9, 9, 9, 9, 9, + 154, 158, 158, 159, 160, 157, 161, 157, 27, 28, + 28, 162, 48, 163, 164, 48, 165, 49, 166, 167, + 169, 170, 8, 168, 173, 172, 172, 171, 174, 175, + 5, 5, 176, 177, 13, 179, 180, 6, 6, 178, + 182, 183, 14, 14, 181, 184, 11, 25, 26, 26, + 185, 186, 47, 187, 188, 120, 65, 65, 189, 190, + 191, 192, 76, 193, 195, 196, 197, 122, 61, 61, + 61, 12, 12, 113, 198, 194, 200, 194, 199, 203, + 202, 202, 204, 205, 201, 15, 15, 15, 60, 60, + 60, 206, 207, 23, 23, 208, 209, 17, 17, 18, + 210, 19, 19, }; short tao_yylen[] = { 2, 1, 2, 0, 0, 3, 0, 3, 0, 3, 0, - 3, 0, 3, 0, 3, 0, 0, 0, 0, 9, - 1, 1, 0, 0, 0, 7, 0, 3, 2, 0, - 3, 0, 2, 0, 0, 3, 0, 3, 0, 3, - 0, 3, 0, 3, 0, 3, 2, 0, 4, 0, - 1, 0, 3, 0, 4, 1, 1, 0, 0, 0, - 0, 9, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 3, 1, 3, 1, 3, - 3, 1, 3, 3, 1, 3, 3, 3, 1, 2, - 2, 2, 1, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 0, 3, 1, 1, 1, 2, 0, 3, + 3, 0, 3, 0, 3, 0, 3, 0, 0, 0, + 0, 9, 1, 1, 0, 0, 0, 7, 0, 3, + 2, 0, 3, 0, 1, 1, 1, 1, 2, 1, + 0, 0, 0, 7, 0, 0, 0, 8, 4, 0, + 3, 1, 0, 2, 0, 2, 1, 2, 2, 0, + 1, 1, 1, 0, 3, 0, 3, 2, 0, 0, + 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, + 3, 2, 0, 4, 0, 1, 0, 3, 0, 4, + 1, 1, 0, 0, 0, 0, 9, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 3, 1, 3, 1, 3, 3, 1, 3, 3, 1, + 3, 3, 3, 1, 2, 2, 2, 1, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 0, 3, 1, + 1, 1, 2, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 4, - 0, 1, 1, 2, 0, 4, 0, 1, 1, 1, - 1, 1, 2, 1, 2, 3, 2, 1, 1, 2, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 9, - 2, 2, 0, 0, 0, 5, 0, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 17, 1, 1, 1, - 1, 1, 1, 2, 2, 0, 0, 0, 5, 0, - 3, 2, 2, 0, 0, 3, 0, 0, 5, 0, - 3, 0, 0, 0, 0, 9, 2, 0, 4, 0, - 1, 0, 0, 6, 2, 0, 0, 5, 0, 0, - 6, 1, 1, 0, 0, 6, 1, 1, 0, 3, - 2, 2, 0, 0, 0, 5, 0, 0, 6, 1, - 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, - 10, 1, 1, 0, 1, 1, 0, 3, 0, 4, - 2, 0, 4, 0, 0, 0, 5, 1, 1, 1, - 1, 1, 1, 0, 0, 6, 0, 0, 0, 6, - 0, 2, 0, 4, 0, + 1, 1, 2, 0, 4, 0, 1, 1, 2, 0, + 4, 0, 1, 1, 1, 1, 1, 2, 1, 2, + 3, 2, 1, 1, 2, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 9, 2, 2, 0, 0, 2, + 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 17, 1, 1, 1, 1, 1, 1, + 2, 2, 0, 0, 0, 5, 0, 3, 2, 2, + 0, 0, 3, 0, 0, 5, 0, 3, 0, 0, + 0, 0, 9, 2, 0, 4, 0, 1, 0, 0, + 6, 2, 0, 0, 5, 0, 0, 6, 1, 1, + 0, 0, 6, 1, 1, 0, 3, 2, 2, 0, + 0, 0, 5, 0, 0, 6, 1, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 10, 1, 1, + 0, 1, 1, 1, 0, 3, 0, 4, 2, 0, + 4, 0, 0, 0, 5, 1, 1, 1, 1, 1, + 1, 0, 0, 6, 0, 0, 0, 6, 0, 2, + 0, 4, 0, }; short tao_yydefred[] = { 0, - 14, 58, 16, 27, 103, 156, 169, 202, 242, 0, - 0, 105, 107, 106, 23, 0, 4, 1, 0, 6, - 8, 10, 12, 21, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 108, 138, 0, 30, 29, - 0, 2, 0, 0, 0, 0, 15, 0, 144, 0, - 148, 149, 151, 152, 153, 154, 223, 228, 52, 68, - 69, 0, 59, 63, 64, 66, 67, 140, 141, 65, - 51, 0, 0, 17, 28, 155, 216, 109, 111, 112, - 114, 122, 123, 125, 127, 126, 0, 124, 0, 116, - 118, 119, 117, 121, 113, 120, 104, 157, 170, 203, - 243, 24, 0, 5, 7, 9, 11, 13, 143, 150, - 0, 147, 0, 54, 0, 219, 224, 0, 0, 0, - 212, 215, 0, 0, 0, 0, 34, 0, 31, 146, - 53, 0, 60, 0, 0, 18, 217, 139, 110, 131, - 132, 133, 0, 0, 158, 171, 204, 244, 0, 0, - 55, 0, 96, 97, 98, 99, 100, 101, 0, 0, - 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, - 85, 89, 94, 220, 225, 0, 0, 0, 0, 213, - 0, 0, 0, 163, 45, 240, 252, 253, 0, 0, - 35, 37, 39, 0, 33, 41, 43, 48, 61, 90, - 91, 92, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 19, 218, 129, 234, 230, - 233, 0, 167, 164, 159, 163, 172, 211, 205, 210, - 0, 0, 256, 269, 247, 255, 0, 268, 237, 0, - 0, 0, 26, 0, 0, 0, 0, 95, 0, 0, - 0, 0, 0, 0, 0, 86, 87, 88, 221, 226, - 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, - 0, 0, 162, 0, 46, 0, 0, 36, 38, 40, - 42, 44, 0, 62, 71, 20, 130, 235, 232, 168, - 165, 160, 0, 182, 173, 0, 178, 179, 181, 180, - 206, 208, 246, 248, 238, 0, 0, 0, 0, 0, - 0, 236, 166, 174, 209, 0, 249, 239, 137, 0, - 0, 0, 0, 0, 175, 258, 271, 272, 273, 265, - 0, 264, 274, 250, 135, 0, 0, 260, 0, 0, - 0, 0, 190, 197, 195, 187, 194, 176, 186, 266, - 262, 275, 278, 251, 136, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 191, 198, 196, 200, - 188, 193, 177, 185, 267, 263, 0, 279, 0, 0, - 0, 276, 0, 199, 201, 189, 285, 0, 0, 280, - 283, 0, 284, + 16, 93, 18, 29, 138, 191, 206, 239, 279, 0, + 0, 0, 50, 0, 140, 142, 141, 25, 41, 0, + 0, 4, 1, 0, 6, 8, 10, 12, 14, 23, + 24, 35, 36, 37, 38, 40, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 91, 143, 173, 45, 0, + 0, 39, 0, 0, 0, 32, 31, 0, 179, 0, + 183, 184, 186, 187, 188, 189, 190, 253, 260, 265, + 52, 87, 58, 146, 147, 149, 157, 158, 160, 162, + 161, 0, 159, 0, 151, 153, 154, 152, 156, 175, + 176, 148, 155, 0, 86, 0, 0, 0, 2, 0, + 0, 0, 0, 0, 17, 103, 104, 0, 94, 98, + 99, 101, 102, 100, 19, 30, 144, 139, 192, 207, + 240, 280, 0, 51, 26, 42, 0, 178, 185, 0, + 182, 0, 0, 249, 252, 89, 0, 256, 261, 5, + 7, 9, 11, 13, 15, 0, 0, 0, 0, 0, + 0, 0, 46, 69, 60, 0, 33, 181, 254, 88, + 0, 0, 0, 49, 0, 0, 95, 20, 174, 145, + 166, 167, 168, 0, 193, 208, 241, 281, 69, 0, + 0, 0, 0, 131, 132, 133, 134, 135, 136, 0, + 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, + 0, 120, 124, 129, 250, 90, 0, 257, 262, 0, + 0, 0, 0, 199, 0, 0, 198, 0, 80, 277, + 289, 290, 0, 0, 70, 72, 74, 0, 68, 76, + 78, 294, 66, 64, 0, 59, 61, 62, 63, 83, + 255, 125, 126, 127, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 96, 21, + 164, 271, 267, 270, 194, 198, 0, 209, 248, 242, + 247, 0, 0, 0, 293, 307, 284, 292, 0, 306, + 274, 0, 0, 0, 28, 0, 0, 0, 0, 44, + 0, 130, 0, 0, 0, 0, 0, 0, 0, 121, + 122, 123, 251, 258, 263, 0, 0, 0, 0, 0, + 0, 0, 204, 201, 200, 0, 0, 0, 197, 0, + 48, 81, 0, 0, 71, 73, 75, 77, 79, 67, + 65, 0, 97, 106, 22, 165, 272, 269, 195, 0, + 0, 0, 219, 210, 0, 215, 216, 218, 217, 243, + 245, 283, 285, 275, 0, 205, 202, 0, 0, 0, + 0, 273, 0, 211, 246, 0, 286, 276, 172, 203, + 0, 0, 0, 0, 0, 212, 296, 309, 310, 311, + 303, 0, 302, 312, 287, 170, 0, 0, 298, 0, + 0, 0, 0, 227, 234, 232, 224, 231, 213, 223, + 304, 300, 313, 316, 288, 171, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 235, 233, + 237, 225, 230, 214, 222, 305, 301, 0, 317, 0, + 0, 0, 314, 0, 236, 238, 226, 323, 0, 0, + 318, 321, 0, 322, }; -short tao_yydgoto[] = { 11, - 224, 79, 80, 81, 82, 83, 84, 85, 295, 86, - 138, 235, 87, 88, 236, 163, 354, 388, 389, 129, - 150, 40, 334, 220, 264, 346, 360, 139, 178, 318, - 324, 15, 284, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 221, 347, 371, 63, 90, 91, - 92, 93, 94, 68, 69, 95, 96, 330, 189, 140, - 141, 142, 190, 16, 71, 17, 18, 19, 41, 20, - 43, 21, 44, 22, 45, 23, 46, 26, 28, 118, - 176, 261, 24, 25, 38, 149, 127, 194, 29, 103, - 195, 240, 241, 242, 196, 244, 197, 245, 232, 246, - 113, 132, 27, 115, 152, 247, 97, 30, 120, 262, - 342, 31, 123, 225, 181, 268, 273, 231, 267, 307, - 266, 32, 124, 182, 270, 308, 320, 348, 336, 361, - 349, 362, 359, 381, 356, 358, 357, 379, 380, 33, - 125, 229, 183, 271, 230, 272, 309, 144, 222, 119, - 177, 72, 134, 214, 73, 135, 215, 179, 263, 306, - 277, 311, 34, 126, 184, 274, 276, 317, 310, 323, - 341, 321, 331, 322, 332, 339, 364, 337, 363, 340, - 365, 366, 383, 392, +short tao_yydgoto[] = { 14, + 314, 74, 75, 76, 77, 78, 15, 16, 344, 17, + 169, 277, 82, 83, 278, 194, 405, 439, 440, 157, + 182, 57, 385, 164, 263, 310, 397, 411, 170, 212, + 368, 375, 18, 19, 333, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 264, 398, 422, 109, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 381, + 223, 171, 172, 173, 224, 94, 20, 21, 95, 22, + 23, 24, 98, 25, 100, 26, 101, 27, 102, 28, + 103, 29, 104, 37, 39, 147, 211, 307, 30, 31, + 54, 180, 154, 228, 40, 127, 32, 33, 34, 35, + 36, 55, 181, 155, 235, 123, 179, 273, 53, 236, + 237, 229, 239, 315, 289, 288, 282, 283, 284, 230, + 286, 231, 287, 274, 291, 133, 162, 38, 146, 210, + 306, 118, 41, 148, 308, 393, 42, 149, 265, 214, + 311, 319, 272, 267, 341, 363, 340, 43, 150, 215, + 316, 358, 371, 399, 387, 412, 400, 413, 410, 432, + 407, 409, 408, 430, 431, 44, 151, 270, 216, 317, + 271, 318, 359, 161, 256, 132, 183, 96, 165, 257, + 97, 166, 258, 213, 309, 355, 324, 361, 45, 152, + 217, 320, 323, 367, 360, 374, 392, 372, 382, 373, + 383, 390, 415, 388, 414, 391, 416, 417, 434, 443, }; -short tao_yysindex[] = { 333, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, - 0, 0, 0, 0, 0, 10, 0, 0, 333, 0, - 0, 0, 0, 0, 0, 25, 254, -177, -194, 162, - -194, -194, -194, -194, 0, 0, 0, -34, 0, 0, - 47, 0, 52, 61, 78, 103, 0, -54, 0, -187, +short tao_yysindex[] = { 493, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, + -269, -269, 0, 0, 0, 0, 0, 0, 0, -3, + 312, 0, 0, 493, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 17, 440, -198, -234, + 358, -234, -234, -234, -234, 0, 0, 0, 0, -208, + -208, 0, -234, -21, 5, 0, 0, -92, 0, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -131, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 126, 150, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 77, 0, -131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, - -90, 0, -194, 0, -194, 0, 0, 72, 152, -194, - 0, 0, 95, -53, 119, 122, 0, -131, 0, 0, - 0, -194, 0, 26, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 0, 0, 0, 303, 212, - 0, 209, 0, 0, 0, 0, 0, 0, -30, -30, - -30, 26, -131, 0, 156, 182, 246, -154, 159, 89, - 0, 0, 0, 0, 0, 333, 211, 242, 196, 0, - 137, 248, 32, 0, 0, 0, 0, 0, 228, 13, - 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, - 0, 0, 250, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 230, 235, 0, 0, 0, 0, 0, - 0, 236, 0, 0, 0, 0, 0, 0, 0, 0, - 137, 243, 0, 0, 0, 0, -131, 0, 0, 245, - 247, 249, 0, 251, 253, -183, 26, 0, 182, 246, - -154, 159, 159, 89, 89, 0, 0, 0, 0, 0, - 180, -194, 26, 196, 0, 257, -194, 188, 137, 287, - 192, 263, 0, 193, 0, 71, 271, 0, 0, 0, - 0, 0, -131, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 67, 0, 0, -131, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 238, 277, 296, 32, 298, - -194, 0, 0, 0, 0, 0, 0, 0, 0, 219, - 302, -63, 55, 300, 0, 0, 0, 0, 0, 0, - 305, 0, 0, 0, 0, -74, 271, 0, 304, 307, - 58, -194, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 293, 26, 297, 162, -102, - 229, -74, -194, -63, -183, 318, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 319, 0, 301, -194, - 306, 0, 69, 0, 0, 0, 0, 323, 324, 0, - 0, 79, 0, + 0, 69, 0, -191, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -3, 0, 74, 81, 88, 0, 123, + 128, 135, 150, 157, 0, 0, 0, -191, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 101, 0, 0, 0, -215, 0, 0, -6, + 0, 182, -234, 0, 0, 0, -52, 0, 0, 0, + 0, 0, 0, 0, 0, -234, 129, -234, 144, 29, + 156, 195, 0, 0, 0, -191, 0, 0, 0, 0, + 72, -234, -215, 0, 72, 72, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 547, + 517, 246, 392, 0, 0, 0, 0, 0, 0, 20, + 20, 20, 72, -191, 0, 181, 234, 292, -119, 43, + 196, 0, 0, 0, 0, 0, -191, 0, 0, 274, + 493, 293, 245, 0, 298, 82, 0, 547, 0, 0, + 0, 0, 409, 57, 0, 0, 0, 217, 0, 0, + 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 305, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 285, 286, 288, 0, 0, + 0, 0, 0, 0, 0, 0, 287, 0, 0, 0, + 0, 0, 224, 294, 0, 0, 0, 0, -191, 0, + 0, 296, 299, 300, 0, 303, 306, 287, 287, 0, + -215, 0, 234, 292, -119, 43, 43, 196, 196, 0, + 0, 0, 0, 0, 0, 72, 227, -234, 72, 245, + 241, 0, 0, 0, 0, 473, 242, 325, 0, 255, + 0, 0, 124, 457, 0, 0, 0, 0, 0, 0, + 0, -191, 0, 0, 0, 0, 0, 0, 0, 323, + -234, 125, 0, 0, -191, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 295, 0, 0, 344, 82, 349, + -234, 0, 333, 0, 0, 0, 0, 0, 0, 0, + 270, 354, -67, 108, 355, 0, 0, 0, 0, 0, + 0, 359, 0, 0, 0, 0, -155, 457, 0, 357, + 362, 112, -234, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 72, 351, 358, + -84, 289, -155, -234, -67, -215, 370, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 371, 0, 353, + -234, 356, 0, 111, 0, 0, 0, 0, 378, 372, + 0, 0, 118, 0, }; -short tao_yyrindex[] = { 371, +short tao_yyrindex[] = { 422, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + -45, 0, 0, 39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, + -43, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -27, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -94, 0, 107, 115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, + 0, 0, 0, 0, 0, 0, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 38, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, + 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 158, 0, 0, 0, 0, 0, 207, + 232, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3, 0, 248, 126, 113, 167, 25, + 11, 0, 0, 0, 0, 0, 320, 0, 0, 0, + 338, 385, 0, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 94, 0, 0, 0, 0, 0, 112, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -29, 0, 99, 129, 155, 107, 50, -7, - 0, 0, 0, 0, 0, 259, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 161, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 177, 121, 479, 52, 62, 36, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 258, + 0, 184, 0, 0, 0, 0, 0, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 417, 0, 0, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 261, 0, 0, 0, 0, 0, 130, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 157, 268, - 135, 56, 66, -1, 40, 0, 0, 0, 0, 0, - 0, 0, 0, 140, 0, 0, 0, 0, 265, 0, - 0, 266, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 0, 355, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -30, 0, 0, 0, 0, + 0, 0, 0, -47, 408, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 438, + 0, 421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -14, 0, 0, 0, 0, - 0, 0, -56, 338, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 375, 0, - 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, - 0, 292, 0, 0, 0, 0, 0, 0, 0, 0, + 375, 0, 360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 377, 0, - 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 0, 0, }; short tao_yygindex[] = { 0, - -24, 244, 0, 0, 0, -22, 54, 7, 0, 60, - 0, 0, 0, 393, -207, -26, 0, 0, 0, 76, - 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, - 0, 0, 0, -134, 0, 218, 240, 217, 39, 51, - 21, 80, 0, -88, 179, 86, 0, 0, -16, -12, - 8, 420, 0, 0, 0, -148, 12, 0, 0, -209, - -8, 0, 0, 0, -10, 299, 1, 0, 0, 317, - 0, 320, 0, 0, 0, 0, 0, 0, 0, 0, + -19, 304, 0, 0, 0, -32, -13, -16, 0, -5, + 0, 0, 0, 443, -235, -20, 0, 0, 0, 67, + 0, 394, 0, 0, 0, 0, 0, 0, 145, 0, + 0, 0, 0, 481, 0, -174, 0, 260, 257, 262, + -49, 12, -23, 103, 0, -128, 197, 94, 0, 0, + -34, -31, -29, 470, 0, 0, 0, -176, -28, 0, + 0, -236, -7, 0, 0, 0, 0, 302, -10, 30, + 2, 0, 0, 47, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, + 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 350, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 286, 258, 0, 0, + 0, 318, 247, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, + 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 136, 0, 0, 0, 0, 0, - 0, 0, 0, 0, + 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; -#define TAO_YYTABLESIZE 625 -short tao_yytable[] = { 37, - 62, 36, 277, 89, 60, 78, 13, 93, 93, 162, - 64, 93, 93, 93, 65, 93, 3, 93, 75, 42, - 98, 99, 100, 101, 142, 13, 257, 203, 93, 93, - 82, 57, 93, 82, 66, 82, 83, 82, 70, 83, - 238, 83, 142, 83, 50, 145, 175, 50, 145, 47, - 82, 82, 287, 12, 82, 180, 83, 83, 49, 14, - 83, 49, 35, 93, 93, 162, 145, 39, 159, 305, - 160, 222, 12, 35, 111, 112, 128, 84, 14, 74, - 84, 227, 84, 47, 84, 82, 82, 79, 102, 222, - 79, 83, 83, 80, 93, 32, 80, 84, 84, 227, - 115, 84, 131, 81, 133, 104, 81, 79, 79, 143, - 105, 79, 285, 80, 80, 59, 82, 80, 115, 106, - 121, 151, 83, 81, 81, 213, 50, 81, 238, 350, - 211, 47, 84, 84, 138, 212, 107, 138, 122, 72, - 49, 3, 79, 79, 77, 207, 208, 77, 80, 80, - 89, 161, 138, 375, 89, 13, 72, 72, 81, 81, - 72, 108, 237, 84, 77, 77, 234, 114, 77, 73, - 385, 130, 78, 79, 288, 78, 216, 344, 345, 80, - 231, 343, 13, 231, 229, 116, 73, 73, 238, 81, - 73, 72, 78, 78, 136, 75, 78, 74, 231, 77, - 77, 209, 12, 210, 89, 344, 345, 109, 14, 117, - 110, 137, 75, 75, 74, 74, 75, 145, 74, 283, - 146, 73, 368, 327, 328, 329, 35, 78, 78, 12, - 77, 256, 257, 258, 277, 14, 25, 142, 200, 201, - 202, 147, 89, 296, 148, 252, 253, 75, 75, 74, - 237, 143, 73, 297, 234, 198, 143, 298, 78, 254, - 255, 145, 153, 154, 155, 156, 157, 158, 59, 199, - 93, 93, 259, 259, 259, 205, 294, 299, 75, 204, - 74, 300, 35, 206, 222, 218, 219, 227, 228, 243, - 248, 259, 82, 82, 227, 239, 260, 265, 83, 83, - 37, 275, 319, 278, 286, 279, 302, 280, 76, 281, - 237, 282, 292, 115, 234, 290, 301, 303, 153, 154, - 155, 156, 157, 158, 59, 76, 76, 304, 109, 76, - 312, 37, 89, 355, 370, 313, 314, 316, 128, 84, - 84, 325, 326, 335, 333, 338, 352, 351, 353, 79, - 79, 367, 143, 373, 369, 80, 80, 378, 384, 382, - 76, 76, 387, 390, 386, 81, 81, 391, 254, 143, - 3, 70, 393, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 3, 128, 245, 270, 142, 254, 161, - 207, 76, 223, 35, 241, 183, 134, 254, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 76, 6, 7, - 254, 8, 77, 57, 58, 261, 184, 282, 35, 61, - 217, 249, 251, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 76, 6, 7, 59, 8, 77, 57, 58, - 377, 291, 289, 192, 250, 372, 67, 191, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 59, 192, 192, 192, 192, 192, 226, 35, 193, 374, - 0, 315, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 76, 0, 269, 35, 192, 77, 57, 58, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 76, 376, - 0, 0, 0, 0, 57, 0, 0, 0, 0, 59, - 35, 0, 0, 233, 0, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 0, 0, 59, 35, 0, 0, - 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 76, 0, 35, 0, 0, 0, 57, 293, 49, - 50, 0, 59, 53, 54, 55, 56, 0, 185, 0, - 2, 8, 0, 5, 0, 0, 0, 0, 0, 59, - 0, 0, 0, 0, 6, 7, 0, 8, 0, 0, - 0, 9, 0, 0, 186, 59, 187, 188, 1, 0, - 2, 3, 4, 5, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 7, 0, 8, 0, 0, - 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, +#define TAO_YYTABLESIZE 839 +short tao_yytable[] = { 48, + 84, 73, 47, 110, 80, 106, 111, 79, 112, 114, + 295, 315, 53, 57, 53, 81, 85, 108, 245, 85, + 84, 117, 46, 84, 80, 99, 84, 79, 34, 116, + 13, 119, 120, 121, 122, 81, 208, 209, 3, 128, + 128, 46, 124, 128, 128, 128, 280, 128, 117, 128, + 82, 117, 177, 117, 56, 117, 53, 56, 115, 193, + 128, 128, 114, 180, 128, 114, 180, 177, 117, 117, + 177, 336, 117, 118, 92, 105, 118, 53, 118, 53, + 118, 180, 114, 114, 180, 251, 114, 252, 354, 115, + 71, 72, 115, 118, 118, 128, 128, 118, 85, 116, + 394, 125, 116, 117, 117, 84, 156, 130, 131, 115, + 115, 193, 134, 115, 190, 136, 191, 114, 114, 116, + 116, 53, 160, 116, 395, 396, 128, 126, 118, 118, + 135, 334, 82, 138, 117, 167, 119, 174, 34, 119, + 139, 119, 207, 119, 115, 115, 140, 280, 114, 150, + 259, 206, 401, 110, 116, 116, 119, 119, 264, 118, + 119, 111, 84, 3, 150, 259, 108, 150, 259, 128, + 110, 110, 129, 264, 110, 115, 264, 426, 111, 111, + 337, 141, 111, 108, 108, 116, 142, 108, 249, 250, + 276, 119, 119, 143, 436, 395, 396, 192, 173, 296, + 297, 173, 279, 34, 112, 110, 110, 112, 144, 225, + 225, 280, 260, 111, 111, 145, 173, 109, 108, 378, + 379, 380, 119, 153, 112, 112, 226, 226, 112, 300, + 301, 302, 255, 419, 109, 109, 110, 253, 109, 227, + 227, 159, 254, 315, 111, 163, 84, 225, 266, 108, + 80, 168, 53, 79, 53, 158, 297, 297, 297, 112, + 112, 81, 298, 299, 226, 177, 175, 84, 84, 109, + 332, 80, 80, 85, 79, 79, 46, 227, 177, 180, + 84, 346, 81, 81, 347, 282, 348, 349, 107, 240, + 112, 276, 242, 243, 244, 345, 53, 174, 268, 343, + 109, 268, 176, 279, 246, 107, 107, 82, 196, 107, + 128, 128, 50, 51, 330, 331, 268, 178, 117, 117, + 184, 185, 186, 187, 188, 189, 72, 247, 46, 248, + 174, 27, 114, 114, 259, 262, 261, 268, 269, 281, + 107, 285, 290, 118, 118, 292, 303, 304, 321, 305, + 48, 335, 322, 369, 325, 276, 43, 326, 327, 115, + 115, 328, 150, 259, 329, 339, 350, 279, 351, 116, + 116, 264, 184, 185, 186, 187, 188, 189, 72, 352, + 353, 356, 48, 47, 364, 406, 128, 362, 366, 84, + 421, 370, 376, 80, 377, 156, 79, 384, 386, 389, + 402, 403, 404, 174, 81, 418, 119, 119, 420, 429, + 435, 433, 438, 424, 437, 442, 199, 199, 441, 444, + 174, 3, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 105, 199, 199, 199, 199, 199, + 199, 55, 54, 163, 308, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 177, 199, 199, + 199, 199, 3, 291, 244, 220, 169, 199, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 299, 319, + 107, 320, 428, 291, 221, 357, 241, 137, 291, 278, + 199, 49, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 294, 423, 293, 338, 113, 291, 295, + 218, 52, 312, 291, 278, 291, 113, 291, 365, 113, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 238, 266, 425, 427, 0, 291, 113, 113, 291, 0, + 113, 278, 313, 46, 291, 0, 0, 0, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 6, 7, + 0, 8, 68, 69, 70, 291, 0, 0, 46, 0, + 0, 113, 113, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 6, 7, 0, 8, 68, 69, 70, + 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, + 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, + 71, 0, 0, 0, 46, 0, 0, 0, 72, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 6, + 7, 229, 8, 68, 69, 70, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 46, 229, + 229, 229, 229, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 0, 72, 46, 0, 68, 69, 70, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 0, 229, 0, 0, 0, 69, 0, 0, 0, 0, + 0, 0, 0, 0, 275, 0, 46, 0, 72, 0, + 0, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 0, 0, 0, 46, 0, 72, 69, 70, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 0, 46, + 0, 0, 0, 69, 342, 59, 60, 0, 0, 63, + 64, 65, 66, 0, 0, 0, 72, 8, 1, 0, + 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 72, 6, 7, 0, 8, 0, 0, + 0, 9, 219, 0, 2, 0, 0, 5, 0, 72, + 0, 0, 0, 0, 10, 11, 12, 0, 6, 7, + 0, 8, 13, 0, 0, 9, 0, 0, 220, 0, + 221, 222, 219, 0, 2, 0, 0, 5, 10, 0, + 0, 232, 233, 234, 0, 0, 0, 0, 6, 7, + 0, 8, 0, 0, 0, 9, 0, 0, 220, 0, + 221, 222, 0, 0, 0, 0, 0, 0, 10, }; short tao_yycheck[] = { 10, - 27, 10, 59, 30, 27, 30, 0, 37, 38, 40, - 27, 41, 42, 43, 27, 45, 0, 47, 29, 19, - 31, 32, 33, 34, 44, 19, 41, 162, 58, 59, - 38, 59, 62, 41, 27, 43, 38, 45, 27, 41, - 189, 43, 62, 45, 41, 41, 135, 44, 44, 41, - 58, 59, 262, 0, 62, 144, 58, 59, 41, 0, - 62, 44, 257, 93, 94, 40, 62, 58, 43, 277, - 45, 44, 19, 257, 262, 263, 103, 38, 19, 257, - 41, 44, 43, 59, 45, 93, 94, 38, 123, 62, - 41, 93, 94, 38, 124, 123, 41, 58, 59, 62, - 44, 62, 113, 38, 115, 59, 41, 58, 59, 120, - 59, 62, 247, 58, 59, 299, 124, 62, 62, 59, - 44, 132, 124, 58, 59, 37, 123, 62, 277, 337, - 42, 123, 93, 94, 41, 47, 59, 44, 62, 41, - 123, 125, 93, 94, 38, 300, 301, 41, 93, 94, - 177, 126, 59, 363, 181, 149, 58, 59, 93, 94, - 62, 59, 189, 124, 58, 59, 189, 299, 62, 41, - 380, 262, 38, 124, 263, 41, 176, 280, 281, 124, - 41, 256, 176, 44, 91, 60, 58, 59, 337, 124, - 62, 93, 58, 59, 123, 41, 62, 41, 59, 93, - 94, 43, 149, 45, 231, 280, 281, 262, 149, 60, - 265, 60, 58, 59, 58, 59, 62, 123, 62, 246, - 274, 93, 357, 287, 288, 289, 257, 93, 94, 176, - 124, 211, 212, 213, 291, 176, 125, 257, 159, 160, - 161, 123, 269, 270, 123, 207, 208, 93, 94, 93, - 277, 262, 124, 270, 277, 44, 267, 270, 124, 209, - 210, 257, 293, 294, 295, 296, 297, 298, 299, 61, - 300, 301, 287, 288, 289, 94, 270, 270, 124, 124, - 124, 270, 257, 38, 257, 44, 91, 40, 257, 125, - 41, 62, 300, 301, 257, 283, 62, 62, 300, 301, - 311, 59, 311, 59, 125, 59, 44, 59, 41, 59, - 337, 59, 125, 257, 337, 59, 125, 125, 293, 294, - 295, 296, 297, 298, 299, 58, 59, 257, 262, 62, - 93, 342, 359, 342, 359, 59, 41, 40, 365, 300, - 301, 123, 41, 44, 290, 41, 40, 44, 291, 300, - 301, 59, 363, 125, 58, 300, 301, 40, 58, 41, - 93, 94, 294, 41, 59, 300, 301, 44, 257, 380, - 0, 257, 294, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 125, 59, 125, 257, 41, 277, 125, - 125, 124, 256, 257, 283, 41, 59, 286, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 299, 275, 276, 277, 278, 41, 125, 41, 257, 27, - 177, 204, 206, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 299, 275, 276, 277, 278, - 365, 267, 264, 257, 205, 360, 27, 149, 262, 263, + 21, 21, 10, 38, 21, 38, 38, 21, 38, 38, + 41, 59, 58, 59, 58, 21, 41, 38, 193, 44, + 41, 41, 257, 41, 41, 24, 44, 41, 123, 40, + 300, 42, 43, 44, 45, 41, 165, 166, 0, 37, + 38, 257, 53, 41, 42, 43, 223, 45, 38, 47, + 41, 41, 44, 43, 58, 45, 58, 59, 257, 40, + 58, 59, 38, 41, 62, 41, 44, 59, 58, 59, + 62, 308, 62, 38, 59, 59, 41, 123, 43, 123, + 45, 59, 58, 59, 62, 43, 62, 45, 324, 38, + 299, 307, 41, 58, 59, 93, 94, 62, 123, 38, + 256, 123, 41, 93, 94, 123, 127, 262, 263, 58, + 59, 40, 44, 62, 43, 307, 45, 93, 94, 58, + 59, 123, 133, 62, 280, 281, 124, 123, 93, 94, + 62, 306, 123, 60, 124, 146, 38, 148, 123, 41, + 60, 43, 163, 45, 93, 94, 59, 324, 124, 44, + 44, 162, 388, 41, 93, 94, 58, 59, 44, 124, + 62, 41, 183, 125, 59, 59, 41, 62, 62, 262, + 58, 59, 265, 59, 62, 124, 62, 414, 58, 59, + 309, 59, 62, 58, 59, 124, 59, 62, 308, 309, + 223, 93, 94, 59, 431, 280, 281, 126, 41, 249, + 250, 44, 223, 298, 38, 93, 94, 41, 59, 180, + 181, 388, 211, 93, 94, 59, 59, 41, 93, 287, + 288, 289, 124, 123, 58, 59, 180, 181, 62, 253, + 254, 255, 37, 408, 58, 59, 124, 42, 62, 180, + 181, 60, 47, 291, 124, 298, 267, 218, 91, 124, + 267, 123, 298, 267, 298, 262, 287, 288, 289, 93, + 94, 267, 251, 252, 218, 257, 123, 288, 289, 93, + 291, 288, 289, 298, 288, 289, 257, 218, 123, 257, + 298, 316, 288, 289, 316, 125, 316, 316, 41, 44, + 124, 324, 190, 191, 192, 316, 298, 308, 41, 316, + 124, 44, 274, 324, 124, 58, 59, 298, 125, 62, + 308, 309, 11, 12, 288, 289, 59, 123, 308, 309, + 301, 302, 303, 304, 305, 306, 307, 94, 257, 38, + 341, 125, 308, 309, 61, 91, 44, 40, 257, 283, + 93, 125, 125, 308, 309, 41, 62, 62, 125, 62, + 361, 125, 59, 361, 59, 388, 125, 59, 59, 308, + 309, 59, 257, 257, 59, 125, 125, 388, 44, 308, + 309, 257, 301, 302, 303, 304, 305, 306, 307, 125, + 257, 59, 393, 125, 41, 393, 262, 93, 40, 410, + 410, 59, 123, 410, 41, 416, 410, 290, 44, 41, + 44, 40, 291, 414, 410, 59, 308, 309, 58, 40, + 58, 41, 302, 125, 59, 44, 256, 257, 41, 302, + 431, 0, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 257, 275, 276, 277, 278, 256, + 257, 123, 123, 59, 257, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 41, 275, 276, + 277, 278, 125, 257, 125, 41, 59, 307, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 41, 59, + 38, 41, 416, 277, 125, 341, 183, 94, 257, 283, + 307, 11, 286, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 247, 411, 246, 310, 38, 277, 248, + 179, 12, 266, 307, 283, 257, 38, 286, 359, 41, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 181, 214, 413, 415, -1, 277, 58, 59, 307, -1, + 62, 283, 256, 257, 286, -1, -1, -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 299, 275, 276, 277, 278, 149, 181, 257, 149, 362, - -1, 309, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, -1, 226, 257, 299, 276, 277, 278, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 364, - -1, -1, -1, -1, 277, -1, -1, -1, -1, 299, - 257, -1, -1, 286, -1, 262, 263, 264, 265, 266, - 267, 268, 269, 270, -1, -1, 299, 257, -1, -1, - 277, 278, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, -1, 257, -1, -1, -1, 277, 262, 263, - 264, -1, 299, 267, 268, 269, 270, -1, 256, -1, - 258, 275, -1, 261, -1, -1, -1, -1, -1, 299, - -1, -1, -1, -1, 272, 273, -1, 275, -1, -1, - -1, 279, -1, -1, 282, 299, 284, 285, 256, -1, - 258, 259, 260, 261, 292, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 272, 273, -1, 275, -1, -1, - -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 292, + -1, 275, 276, 277, 278, 307, -1, -1, 257, -1, + -1, 93, 94, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, -1, 275, 276, 277, 278, + -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, + -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, + 299, -1, -1, -1, 257, -1, -1, -1, 307, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 257, 275, 276, 277, 278, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 257, 275, + 276, 277, 278, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, -1, 307, 257, -1, 276, 277, 278, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + -1, 307, -1, -1, -1, 277, -1, -1, -1, -1, + -1, -1, -1, -1, 286, -1, 257, -1, 307, -1, + -1, 262, 263, 264, 265, 266, 267, 268, 269, 270, + -1, -1, -1, 257, -1, 307, 277, 278, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, -1, 257, + -1, -1, -1, 277, 262, 263, 264, -1, -1, 267, + 268, 269, 270, -1, -1, -1, 307, 275, 256, -1, + 258, 259, 260, 261, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 307, 272, 273, -1, 275, -1, -1, + -1, 279, 256, -1, 258, -1, -1, 261, -1, 307, + -1, -1, -1, -1, 292, 293, 294, -1, 272, 273, + -1, 275, 300, -1, -1, 279, -1, -1, 282, -1, + 284, 285, 256, -1, 258, -1, -1, 261, 292, -1, + -1, 295, 296, 297, -1, -1, -1, -1, 272, 273, + -1, 275, -1, -1, -1, 279, -1, -1, 282, -1, + 284, 285, -1, -1, -1, -1, -1, -1, 292, }; -#define TAO_YYFINAL 11 +#define TAO_YYFINAL 14 #ifndef TAO_YYDEBUG #define TAO_YYDEBUG 0 #endif -#define TAO_YYMAXTOKEN 301 +#define TAO_YYMAXTOKEN 309 #if TAO_YYDEBUG char *tao_yyname[] = { "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -477,9 +556,11 @@ char *tao_yyname[] = { "IDL_SEQUENCE","IDL_STRING","IDL_WSTRING","IDL_EXCEPTION","IDL_CASE", "IDL_DEFAULT","IDL_READONLY","IDL_ATTRIBUTE","IDL_ONEWAY","IDL_IDEMPOTENT", "IDL_VOID","IDL_IN","IDL_OUT","IDL_INOUT","IDL_RAISES","IDL_CONTEXT", -"IDL_NATIVE","IDL_INTEGER_LITERAL","IDL_STRING_LITERAL","IDL_CHARACTER_LITERAL", -"IDL_FLOATING_PT_LITERAL","IDL_TRUETOK","IDL_FALSETOK","IDL_SCOPE_DELIMITOR", -"IDL_LEFT_SHIFT","IDL_RIGHT_SHIFT", +"IDL_NATIVE","IDL_ABSTRACT","IDL_CUSTOM","IDL_INIT","IDL_PRIVATE","IDL_PUBLIC", +"IDL_SUPPORTS","IDL_TRUNCATABLE","IDL_VALUETYPE","IDL_INTEGER_LITERAL", +"IDL_STRING_LITERAL","IDL_CHARACTER_LITERAL","IDL_FLOATING_PT_LITERAL", +"IDL_TRUETOK","IDL_FALSETOK","IDL_SCOPE_DELIMITOR","IDL_LEFT_SHIFT", +"IDL_RIGHT_SHIFT", }; char *tao_yyrule[] = { "$accept : start", @@ -497,54 +578,89 @@ char *tao_yyrule[] = { "$$5 :", "definition : module $$5 ';'", "$$6 :", -"definition : error $$6 ';'", +"definition : value_def $$6 ';'", "$$7 :", +"definition : error $$7 ';'", "$$8 :", "$$9 :", "$$10 :", -"module : IDL_MODULE $$7 IDENTIFIER $$8 '{' $$9 definitions $$10 '}'", +"$$11 :", +"module : IDL_MODULE $$8 IDENTIFIER $$9 '{' $$10 definitions $$11 '}'", "interface_def : interface", "interface_def : forward", -"$$11 :", "$$12 :", "$$13 :", -"interface : interface_header $$11 '{' $$12 exports $$13 '}'", "$$14 :", -"interface_decl : IDL_INTERFACE $$14 id", -"interface_header : interface_decl inheritance_spec", +"interface : interface_header $$12 '{' $$13 exports $$14 '}'", "$$15 :", -"inheritance_spec : ':' $$15 at_least_one_scoped_name", -"inheritance_spec :", -"exports : exports export", -"exports :", +"interface_decl : IDL_INTERFACE $$15 id", +"interface_header : interface_decl inheritance_spec", "$$16 :", -"export : type_dcl $$16 ';'", +"inheritance_spec : ':' $$16 at_least_one_scoped_name", +"inheritance_spec :", +"value_def : valuetype", +"value_def : value_abs_decl", +"value_def : value_forward_decl", +"value_def : value_box_decl", +"valuetype : IDL_CUSTOM value_concrete_decl", +"valuetype : value_concrete_decl", "$$17 :", -"export : const_dcl $$17 ';'", "$$18 :", -"export : exception $$18 ';'", "$$19 :", -"export : attribute $$19 ';'", +"value_concrete_decl : value_header $$17 '{' $$18 value_elements $$19 '}'", "$$20 :", -"export : operation $$20 ';'", "$$21 :", -"export : error $$21 ';'", -"at_least_one_scoped_name : scoped_name scoped_names", "$$22 :", -"scoped_names : scoped_names ',' $$22 scoped_name", -"scoped_names :", -"scoped_name : id", +"value_abs_decl : IDL_ABSTRACT value_header $$20 '{' $$21 exports $$22 '}'", +"value_header : value_decl opt_truncatable inheritance_spec supports_spec", "$$23 :", -"scoped_name : IDL_SCOPE_DELIMITOR $$23 id", +"value_decl : IDL_VALUETYPE $$23 id", +"opt_truncatable : IDL_TRUNCATABLE", +"opt_truncatable :", +"supports_spec : IDL_SUPPORTS scoped_name", +"supports_spec :", +"value_forward_decl : IDL_ABSTRACT value_decl", +"value_forward_decl : value_decl", +"value_box_decl : value_decl type_spec", +"value_elements : value_elements value_element", +"value_elements :", +"value_element : state_member", +"value_element : export", +"value_element : init_decl", "$$24 :", -"scoped_name : scoped_name IDL_SCOPE_DELIMITOR $$24 id", -"id : IDENTIFIER", -"forward : interface_decl", +"state_member : IDL_PUBLIC $$24 member_i", "$$25 :", +"state_member : IDL_PRIVATE $$25 member_i", +"exports : exports export", +"exports :", "$$26 :", +"export : type_dcl $$26 ';'", "$$27 :", +"export : const_dcl $$27 ';'", "$$28 :", -"const_dcl : IDL_CONST $$25 const_type $$26 id $$27 '=' $$28 expression", +"export : exception $$28 ';'", +"$$29 :", +"export : attribute $$29 ';'", +"$$30 :", +"export : operation $$30 ';'", +"$$31 :", +"export : error $$31 ';'", +"at_least_one_scoped_name : scoped_name scoped_names", +"$$32 :", +"scoped_names : scoped_names ',' $$32 scoped_name", +"scoped_names :", +"scoped_name : id", +"$$33 :", +"scoped_name : IDL_SCOPE_DELIMITOR $$33 id", +"$$34 :", +"scoped_name : scoped_name IDL_SCOPE_DELIMITOR $$34 id", +"id : IDENTIFIER", +"forward : interface_decl", +"$$35 :", +"$$36 :", +"$$37 :", +"$$38 :", +"const_dcl : IDL_CONST $$35 const_type $$36 id $$37 '=' $$38 expression", "const_type : integer_type", "const_type : char_type", "const_type : octet_type", @@ -585,14 +701,14 @@ char *tao_yyrule[] = { "literal : IDL_TRUETOK", "literal : IDL_FALSETOK", "positive_int_expr : const_expr", -"$$29 :", -"type_dcl : IDL_TYPEDEF $$29 type_declarator", +"$$39 :", +"type_dcl : IDL_TYPEDEF $$39 type_declarator", "type_dcl : struct_type", "type_dcl : union_type", "type_dcl : enum_type", "type_dcl : IDL_NATIVE simple_declarator", -"$$30 :", -"type_declarator : type_spec $$30 at_least_one_declarator", +"$$40 :", +"type_declarator : type_spec $$40 at_least_one_declarator", "type_spec : simple_type_spec", "type_spec : constructed_type_spec", "simple_type_spec : base_type_spec", @@ -611,14 +727,14 @@ char *tao_yyrule[] = { "constructed_type_spec : union_type", "constructed_type_spec : enum_type", "at_least_one_declarator : declarator declarators", -"$$31 :", -"declarators : declarators ',' $$31 declarator", +"$$41 :", +"declarators : declarators ',' $$41 declarator", "declarators :", "declarator : simple_declarator", "declarator : complex_declarator", "at_least_one_simple_declarator : simple_declarator simple_declarators", -"$$32 :", -"simple_declarators : simple_declarators ',' $$32 simple_declarator", +"$$42 :", +"simple_declarators : simple_declarators ',' $$42 simple_declarator", "simple_declarators :", "simple_declarator : id", "complex_declarator : array_declarator", @@ -638,135 +754,138 @@ char *tao_yyrule[] = { "octet_type : IDL_OCTET", "boolean_type : IDL_BOOLEAN", "any_type : IDL_ANY", -"$$33 :", -"$$34 :", -"$$35 :", -"$$36 :", -"struct_type : IDL_STRUCT $$33 id $$34 '{' $$35 at_least_one_member $$36 '}'", -"at_least_one_member : member members", -"members : members member", -"members :", -"$$37 :", -"$$38 :", -"member : type_spec $$37 at_least_one_declarator $$38 ';'", -"$$39 :", -"member : error $$39 ';'", -"$$40 :", -"$$41 :", -"$$42 :", "$$43 :", "$$44 :", "$$45 :", "$$46 :", +"struct_type : IDL_STRUCT $$43 id $$44 '{' $$45 at_least_one_member $$46 '}'", +"at_least_one_member : member members", +"members : members member", +"members :", "$$47 :", -"union_type : IDL_UNION $$40 id $$41 IDL_SWITCH $$42 '(' $$43 switch_type_spec $$44 ')' $$45 '{' $$46 at_least_one_case_branch $$47 '}'", -"switch_type_spec : integer_type", -"switch_type_spec : char_type", -"switch_type_spec : octet_type", -"switch_type_spec : boolean_type", -"switch_type_spec : enum_type", -"switch_type_spec : scoped_name", -"at_least_one_case_branch : case_branch case_branches", -"case_branches : case_branches case_branch", -"case_branches :", +"member : $$47 member_i", "$$48 :", "$$49 :", -"case_branch : at_least_one_case_label $$48 element_spec $$49 ';'", +"member_i : type_spec $$48 at_least_one_declarator $$49 ';'", "$$50 :", -"case_branch : error $$50 ';'", -"at_least_one_case_label : case_label case_labels", -"case_labels : case_labels case_label", -"case_labels :", +"member_i : error $$50 ';'", "$$51 :", -"case_label : IDL_DEFAULT $$51 ':'", "$$52 :", "$$53 :", -"case_label : IDL_CASE $$52 const_expr $$53 ':'", "$$54 :", -"element_spec : type_spec $$54 declarator", "$$55 :", "$$56 :", "$$57 :", "$$58 :", -"enum_type : IDL_ENUM $$55 id $$56 '{' $$57 at_least_one_enumerator $$58 '}'", -"at_least_one_enumerator : enumerator enumerators", +"union_type : IDL_UNION $$51 id $$52 IDL_SWITCH $$53 '(' $$54 switch_type_spec $$55 ')' $$56 '{' $$57 at_least_one_case_branch $$58 '}'", +"switch_type_spec : integer_type", +"switch_type_spec : char_type", +"switch_type_spec : octet_type", +"switch_type_spec : boolean_type", +"switch_type_spec : enum_type", +"switch_type_spec : scoped_name", +"at_least_one_case_branch : case_branch case_branches", +"case_branches : case_branches case_branch", +"case_branches :", "$$59 :", -"enumerators : enumerators ',' $$59 enumerator", -"enumerators :", -"enumerator : IDENTIFIER", "$$60 :", +"case_branch : at_least_one_case_label $$59 element_spec $$60 ';'", "$$61 :", -"sequence_type_spec : seq_head ',' $$60 positive_int_expr $$61 '>'", -"sequence_type_spec : seq_head '>'", +"case_branch : error $$61 ';'", +"at_least_one_case_label : case_label case_labels", +"case_labels : case_labels case_label", +"case_labels :", "$$62 :", +"case_label : IDL_DEFAULT $$62 ':'", "$$63 :", -"seq_head : IDL_SEQUENCE $$62 '<' $$63 simple_type_spec", "$$64 :", +"case_label : IDL_CASE $$63 const_expr $$64 ':'", "$$65 :", -"string_type_spec : string_head '<' $$64 positive_int_expr $$65 '>'", -"string_type_spec : string_head", -"string_head : IDL_STRING", +"element_spec : type_spec $$65 declarator", "$$66 :", "$$67 :", -"wstring_type_spec : wstring_head '<' $$66 positive_int_expr $$67 '>'", -"wstring_type_spec : wstring_head", -"wstring_head : IDL_WSTRING", "$$68 :", -"array_declarator : id $$68 at_least_one_array_dim", -"at_least_one_array_dim : array_dim array_dims", -"array_dims : array_dims array_dim", -"array_dims :", "$$69 :", +"enum_type : IDL_ENUM $$66 id $$67 '{' $$68 at_least_one_enumerator $$69 '}'", +"at_least_one_enumerator : enumerator enumerators", "$$70 :", -"array_dim : '[' $$69 positive_int_expr $$70 ']'", +"enumerators : enumerators ',' $$70 enumerator", +"enumerators :", +"enumerator : IDENTIFIER", "$$71 :", "$$72 :", -"attribute : opt_readonly IDL_ATTRIBUTE $$71 param_type_spec $$72 at_least_one_simple_declarator", -"opt_readonly : IDL_READONLY", -"opt_readonly :", +"sequence_type_spec : seq_head ',' $$71 positive_int_expr $$72 '>'", +"sequence_type_spec : seq_head '>'", "$$73 :", "$$74 :", +"seq_head : IDL_SEQUENCE $$73 '<' $$74 simple_type_spec", "$$75 :", "$$76 :", -"exception : IDL_EXCEPTION $$73 id $$74 '{' $$75 members $$76 '}'", +"string_type_spec : string_head '<' $$75 positive_int_expr $$76 '>'", +"string_type_spec : string_head", +"string_head : IDL_STRING", "$$77 :", "$$78 :", +"wstring_type_spec : wstring_head '<' $$77 positive_int_expr $$78 '>'", +"wstring_type_spec : wstring_head", +"wstring_head : IDL_WSTRING", "$$79 :", +"array_declarator : id $$79 at_least_one_array_dim", +"at_least_one_array_dim : array_dim array_dims", +"array_dims : array_dims array_dim", +"array_dims :", "$$80 :", -"operation : opt_op_attribute op_type_spec $$77 IDENTIFIER $$78 parameter_list $$79 opt_raises $$80 opt_context", +"$$81 :", +"array_dim : '[' $$80 positive_int_expr $$81 ']'", +"$$82 :", +"$$83 :", +"attribute : opt_readonly IDL_ATTRIBUTE $$82 param_type_spec $$83 at_least_one_simple_declarator", +"opt_readonly : IDL_READONLY", +"opt_readonly :", +"$$84 :", +"$$85 :", +"$$86 :", +"$$87 :", +"exception : IDL_EXCEPTION $$84 id $$85 '{' $$86 members $$87 '}'", +"$$88 :", +"$$89 :", +"$$90 :", +"$$91 :", +"operation : opt_op_attribute op_type_spec $$88 IDENTIFIER $$89 parameter_list $$90 opt_raises $$91 opt_context", "opt_op_attribute : IDL_ONEWAY", "opt_op_attribute : IDL_IDEMPOTENT", "opt_op_attribute :", "op_type_spec : param_type_spec", "op_type_spec : IDL_VOID", -"$$81 :", -"parameter_list : '(' $$81 ')'", -"$$82 :", -"parameter_list : '(' $$82 at_least_one_parameter ')'", +"init_decl : IDL_INIT", +"$$92 :", +"parameter_list : '(' $$92 ')'", +"$$93 :", +"parameter_list : '(' $$93 at_least_one_parameter ')'", "at_least_one_parameter : parameter parameters", -"$$83 :", -"parameters : parameters ',' $$83 parameter", +"$$94 :", +"parameters : parameters ',' $$94 parameter", "parameters :", -"$$84 :", -"$$85 :", -"parameter : direction $$84 param_type_spec $$85 declarator", +"$$95 :", +"$$96 :", +"parameter : direction $$95 param_type_spec $$96 declarator", "param_type_spec : base_type_spec", "param_type_spec : string_type_spec", "param_type_spec : scoped_name", "direction : IDL_IN", "direction : IDL_OUT", "direction : IDL_INOUT", -"$$86 :", -"$$87 :", -"opt_raises : IDL_RAISES $$86 '(' $$87 at_least_one_scoped_name ')'", +"$$97 :", +"$$98 :", +"opt_raises : IDL_RAISES $$97 '(' $$98 at_least_one_scoped_name ')'", "opt_raises :", -"$$88 :", -"$$89 :", -"opt_context : IDL_CONTEXT $$88 '(' $$89 at_least_one_string_literal ')'", +"$$99 :", +"$$100 :", +"opt_context : IDL_CONTEXT $$99 '(' $$100 at_least_one_string_literal ')'", "opt_context :", "at_least_one_string_literal : IDL_STRING_LITERAL string_literals", -"$$90 :", -"string_literals : string_literals ',' $$90 IDL_STRING_LITERAL", +"$$101 :", +"string_literals : string_literals ',' $$101 IDL_STRING_LITERAL", "string_literals :", }; #endif @@ -790,7 +909,7 @@ TAO_YYSTYPE tao_yylval; #define tao_yystacksize TAO_YYSTACKSIZE short tao_yyss[TAO_YYSTACKSIZE]; TAO_YYSTYPE tao_yyvs[TAO_YYSTACKSIZE]; -#line 2294 "fe/idl.tao_yy" +#line 2521 "fe/idl.tao_yy" /* programs */ /* @@ -812,7 +931,7 @@ void tao_yyerror(const char *) { } -#line 815 "y.tab.cpp" +#line 934 "y.tab.cpp" #define TAO_YYABORT goto tao_yyabort #define TAO_YYACCEPT goto tao_yyaccept #define TAO_YYERROR goto tao_yyerrlab @@ -1097,7 +1216,7 @@ tao_yyinrecovery: if (5 < tao_yydebug) printf("tao_yydebug: state %d, error recovery discards token %d (%s)\n", tao_yystate, tao_yychar, tao_yys); - else + else TAO_YYDEBUG_DISCARD_TOKEN(tao_yystate, tao_yychar, tao_yys, tao_yyssp-tao_yyss); } #endif @@ -1118,2189 +1237,2386 @@ tao_yyreduce: switch (tao_yyn) { case 4: -#line 240 "fe/idl.tao_yy" +#line 253 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_TypeDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_TypeDeclSeen); } break; case 5: -#line 244 "fe/idl.tao_yy" +#line 257 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } break; case 6: -#line 248 "fe/idl.tao_yy" +#line 261 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ConstDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_ConstDeclSeen); } break; case 7: -#line 252 "fe/idl.tao_yy" +#line 265 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } break; case 8: -#line 256 "fe/idl.tao_yy" +#line 269 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptDeclSeen); } break; case 9: -#line 260 "fe/idl.tao_yy" +#line 273 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } break; case 10: -#line 264 "fe/idl.tao_yy" +#line 277 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceDeclSeen); } break; case 11: -#line 268 "fe/idl.tao_yy" +#line 281 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } break; case 12: -#line 272 "fe/idl.tao_yy" +#line 285 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ModuleDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_ModuleDeclSeen); } break; case 13: -#line 276 "fe/idl.tao_yy" +#line 289 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } break; case 14: -#line 280 "fe/idl.tao_yy" +#line 293 "fe/idl.tao_yy" { - idl_global->err()->syntax_error(idl_global->parse_state()); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ValuetypeDeclSeen); + } break; case 15: -#line 284 "fe/idl.tao_yy" +#line 297 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); - tao_yyerrok; - } + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + } break; case 16: -#line 291 "fe/idl.tao_yy" +#line 301 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ModuleSeen); - } + idl_global->err()->syntax_error(idl_global->parse_state()); + } break; case 17: -#line 295 "fe/idl.tao_yy" +#line 305 "fe/idl.tao_yy" { - UTL_ScopedName *n = - new UTL_ScopedName(new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE), NULL); - AST_Module *m = NULL; - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_StrList *p = idl_global->pragmas(); - - idl_global->set_parse_state(IDL_GlobalData::PS_ModuleIDSeen); - /* - * Make a new module and add it to the enclosing scope - */ - if (s != NULL) { - m = idl_global->gen()->create_module(n, p); - (void) s->fe_add_module(m); - } - /* - * Push it on the stack - */ - idl_global->scopes()->push(m); - } + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + tao_yyerrok; + } break; case 18: -#line 316 "fe/idl.tao_yy" +#line 312 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ModuleSqSeen); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ModuleSeen); + } break; case 19: -#line 320 "fe/idl.tao_yy" +#line 316 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ModuleBodySeen); - } + UTL_ScopedName *n = + new UTL_ScopedName(new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE), NULL); + AST_Module *m = NULL; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_StrList *p = idl_global->pragmas(); + + idl_global->set_parse_state(IDL_GlobalData::PS_ModuleIDSeen); + /* + * Make a new module and add it to the enclosing scope + */ + if (s != NULL) { + m = idl_global->gen()->create_module(n, p); + (void) s->fe_add_module(m); + } + /* + * Push it on the stack + */ + idl_global->scopes()->push(m); + } break; case 20: -#line 324 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_ModuleQsSeen); - /* - * Finished with this module - pop it from the scope stack - */ - UTL_Scope* s = idl_global->scopes()->top(); - AST_Module* m = AST_Module::narrow_from_scope (s); - UTL_StrList *p = m->pragmas (); - if (p != 0) - p = (UTL_StrList*)p->copy (); - idl_global->set_pragmas (p); - idl_global->scopes()->pop(); - } -break; -case 23: -#line 346 "fe/idl.tao_yy" -{ - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Interface *i = NULL; - AST_Decl *v = NULL; - UTL_StrList *p = idl_global->pragmas(); - AST_Decl *d = NULL; - AST_Interface *fd = NULL; - - ACE_UNUSED_ARG (v); - - /* - * Make a new interface node and add it to its enclosing scope - */ - if (s != NULL && tao_yyvsp[0].ihval != NULL) { - i = idl_global->gen()->create_interface(tao_yyvsp[0].ihval->interface_name(), - tao_yyvsp[0].ihval->inherits(), - tao_yyvsp[0].ihval->n_inherits(), - p); - if (i != NULL && - (d = s->lookup_by_name(i->name(), I_FALSE)) != NULL) { - /* - * See if we're defining a forward declared interface. - */ - if (d->node_type() == AST_Decl::NT_interface) { - /* - * Narrow to an interface - */ - fd = AST_Interface::narrow_from_decl(d); - /* - * Successful? - */ - if (fd == NULL) { - /* - * Should we give an error here? - */ - } - /* - * If it is a forward declared interface.. - */ - else if (!fd->is_defined()) { - /* - * Check if redefining in same scope - */ - if (fd->defined_in() != s) { - idl_global->err() - ->error3(UTL_Error::EIDL_SCOPE_CONFLICT, - i, - fd, - ScopeAsDecl(s)); - } - /* - * All OK, do the redefinition - */ - else { - fd->set_inherits(tao_yyvsp[0].ihval->inherits()); - fd->set_n_inherits(tao_yyvsp[0].ihval->n_inherits()); - /* - * Update place of definition - */ - fd->set_imported(idl_global->imported()); - fd->set_in_main_file(idl_global->in_main_file()); - fd->set_line(idl_global->lineno()); - fd->set_file_name(idl_global->filename()); - fd->add_pragmas(p); - /* - * Use full definition node - */ - delete i; - i = fd; - } - } - } - } - /* - * Add the interface to its definition scope - */ - (void) s->fe_add_interface(i); - } - /* - * Push it on the scope stack - */ - idl_global->scopes()->push(i); - } -break; -case 24: -#line 430 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSqSeen); - } +#line 337 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ModuleSqSeen); + } +break; +case 21: +#line 341 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ModuleBodySeen); + } +break; +case 22: +#line 345 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ModuleQsSeen); + /* + * Finished with this module - pop it from the scope stack + */ + UTL_Scope* s = idl_global->scopes()->top(); + AST_Module* m = AST_Module::narrow_from_scope (s); + UTL_StrList *p = m->pragmas (); + if (p != 0) + p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); + } break; case 25: -#line 434 "fe/idl.tao_yy" +#line 367 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceBodySeen); - } + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Interface *i = NULL; + AST_Decl *v = NULL; + UTL_StrList *p = idl_global->pragmas(); + ACE_UNUSED_ARG (v); + + /* + * Make a new interface node and add it to its enclosing scope + */ + if (s != NULL && tao_yyvsp[0].ihval != NULL) { + i = idl_global->gen()->create_interface(tao_yyvsp[0].ihval->interface_name(), + tao_yyvsp[0].ihval->inherits(), + tao_yyvsp[0].ihval->n_inherits(), + p); + AST_Interface::fwd_redefinition_helper (i,s,p); + /* + * Add the interface to its definition scope + */ + (void) s->fe_add_interface(i); + } + /* + * Push it on the scope stack + */ + idl_global->scopes()->push(i); + } break; case 26: -#line 438 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceQsSeen); - /* - * Done with this interface - pop it off the scopes stack - */ - UTL_Scope* s = idl_global->scopes()->top(); - AST_Interface* m = AST_Interface::narrow_from_scope (s); - UTL_StrList *p = m->pragmas (); - if (p != 0) - p = (UTL_StrList*)p->copy (); - idl_global->set_pragmas (p); - idl_global->scopes()->pop(); - } +#line 394 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSqSeen); + } break; case 27: -#line 455 "fe/idl.tao_yy" +#line 398 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSeen); - } + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceBodySeen); + } break; case 28: -#line 459 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceIDSeen); - tao_yyval.idval = tao_yyvsp[0].idval; - } +#line 402 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceQsSeen); + /* + * Done with this interface - pop it off the scopes stack + */ + UTL_Scope* s = idl_global->scopes()->top(); + AST_Interface* m = AST_Interface::narrow_from_scope (s); + UTL_StrList *p = m->pragmas (); + if (p != 0) + p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); + } break; case 29: -#line 467 "fe/idl.tao_yy" +#line 419 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_InheritSpecSeen); - /* - * Create an AST representation of the information in the header - * part of an interface - this representation contains a computed - * list of all interfaces which this interface inherits from, - * recursively - */ - tao_yyval.ihval = new FE_InterfaceHeader(new UTL_ScopedName(tao_yyvsp[-1].idval, NULL), tao_yyvsp[0].nlval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSeen); + } break; case 30: -#line 481 "fe/idl.tao_yy" +#line 423 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_InheritColonSeen); - } + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceIDSeen); + tao_yyval.idval = tao_yyvsp[0].idval; + } break; case 31: -#line 485 "fe/idl.tao_yy" +#line 431 "fe/idl.tao_yy" { - tao_yyval.nlval = tao_yyvsp[0].nlval; - } -break; -case 32: -#line 489 "fe/idl.tao_yy" -{ - tao_yyval.nlval = NULL; - } -break; -case 35: -#line 501 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_TypeDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_InheritSpecSeen); + /* + * Create an AST representation of the information in the header + * part of an interface - this representation contains a computed + * list of all interfaces which this interface inherits from, + * recursively + */ + tao_yyval.ihval = new FE_InterfaceHeader(new UTL_ScopedName(tao_yyvsp[-1].idval, NULL), tao_yyvsp[0].nlval); } break; -case 36: -#line 505 "fe/idl.tao_yy" +case 32: +#line 445 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_InheritColonSeen); } break; -case 37: -#line 509 "fe/idl.tao_yy" +case 33: +#line 449 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ConstDeclSeen); + tao_yyval.nlval = tao_yyvsp[0].nlval; } break; -case 38: -#line 513 "fe/idl.tao_yy" +case 34: +#line 453 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + tao_yyval.nlval = NULL; } break; case 39: -#line 517 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptDeclSeen); - } -break; -case 40: -#line 521 "fe/idl.tao_yy" +#line 467 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + cerr << "error in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "Sorry, I (TAO_IDL) can't handle custom yet\n"; + /* set custom (if not truncatable) */ } break; case 41: -#line 525 "fe/idl.tao_yy" +#line 478 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_AttrDeclSeen); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Interface *i = NULL; + UTL_StrList *p = idl_global->pragmas(); + + if (s != NULL && tao_yyvsp[0].vhval != NULL) { + i = idl_global->gen()->create_valuetype(tao_yyvsp[0].vhval->interface_name(), + tao_yyvsp[0].vhval->inherits(), + tao_yyvsp[0].vhval->n_inherits(), + p); + AST_Interface::fwd_redefinition_helper (i,s,p); + /* + * Add the valuetype to its definition scope + */ + (void) s->fe_add_interface(i); + } + /* + * Push it on the scope stack + */ + idl_global->scopes()->push(i); } break; case 42: -#line 529 "fe/idl.tao_yy" +#line 500 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSqSeen); } break; case 43: -#line 533 "fe/idl.tao_yy" +#line 504 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceBodySeen); } break; case 44: -#line 537 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); +#line 508 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceQsSeen); + /* + * Done with this interface - pop it off the scopes stack + */ + UTL_Scope* s = idl_global->scopes()->top(); + AST_Interface* m = AST_Interface::narrow_from_scope (s); + UTL_StrList *p = m->pragmas (); + if (p != 0) p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); } break; case 45: -#line 541 "fe/idl.tao_yy" +#line 525 "fe/idl.tao_yy" { - idl_global->err()->syntax_error(idl_global->parse_state()); - } + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Interface *i = NULL; + UTL_StrList *p = idl_global->pragmas(); + + if (s != NULL && tao_yyvsp[0].vhval != NULL) { + + if (tao_yyvsp[0].vhval->n_concrete() > 0) { + idl_global->err()->abstract_inheritance_error (tao_yyvsp[0].vhval->interface_name ()); + } + + i = idl_global->gen()->create_valuetype(tao_yyvsp[0].vhval->interface_name(), + tao_yyvsp[0].vhval->inherits(), + tao_yyvsp[0].vhval->n_inherits(), + p); + i->set_abstract_valuetype (); + AST_Interface::fwd_redefinition_helper (i,s,p); + /* + * Add the valuetype to its definition scope + */ + (void) s->fe_add_interface(i); + } + /* + * Push it on the scope stack + */ + idl_global->scopes()->push(i); + } break; case 46: -#line 545 "fe/idl.tao_yy" +#line 553 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); - tao_yyerrok; - } + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceSqSeen); + } break; case 47: -#line 553 "fe/idl.tao_yy" +#line 557 "fe/idl.tao_yy" { - tao_yyval.nlval = new UTL_NameList(tao_yyvsp[-1].idlist, tao_yyvsp[0].nlval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceBodySeen); + } break; case 48: #line 561 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SNListCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_InterfaceQsSeen); + /* + * Done with this interface - pop it off the scopes stack + */ + UTL_Scope* s = idl_global->scopes()->top(); + AST_Interface* m = AST_Interface::narrow_from_scope (s); + UTL_StrList *p = m->pragmas (); + if (p != 0) p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); } break; case 49: -#line 565 "fe/idl.tao_yy" +#line 581 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ScopedNameSeen); - - if (tao_yyvsp[-3].nlval == NULL) - tao_yyval.nlval = new UTL_NameList(tao_yyvsp[0].idlist, NULL); - else { - tao_yyvsp[-3].nlval->nconc(new UTL_NameList(tao_yyvsp[0].idlist, NULL)); - tao_yyval.nlval = tao_yyvsp[-3].nlval; - } - } + tao_yyval.vhval = new FE_obv_header (new UTL_ScopedName (tao_yyvsp[-3].idval, NULL), tao_yyvsp[-1].nlval, tao_yyvsp[0].nlval); + } break; case 50: -#line 576 "fe/idl.tao_yy" +#line 588 "fe/idl.tao_yy" { - tao_yyval.nlval = NULL; - } + idl_global->set_parse_state(IDL_GlobalData::PS_ValuetypeSeen); + } break; case 51: -#line 583 "fe/idl.tao_yy" +#line 592 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SN_IDSeen); - - tao_yyval.idlist = new UTL_IdList(tao_yyvsp[0].idval, NULL); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ValuetypeIDSeen); + tao_yyval.idval = tao_yyvsp[0].idval; + } break; case 52: -#line 589 "fe/idl.tao_yy" +#line 600 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ScopeDelimSeen); - } + cerr << "warning in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "truncatable modifier not supported and is ignored\n"; + tao_yyval.bval = I_FALSE; + /* $$ = I_TRUE; */ + } break; case 53: -#line 593 "fe/idl.tao_yy" +#line 608 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SN_IDSeen); - - tao_yyval.idlist = new UTL_IdList(new Identifier(tao_yyvsp[-2].strval, 1, 0, I_FALSE), - new UTL_IdList(tao_yyvsp[0].idval, NULL)); - } + tao_yyval.bval = I_FALSE; + } break; case 54: -#line 601 "fe/idl.tao_yy" +#line 616 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ScopeDelimSeen); - } + tao_yyval.nlval = new UTL_NameList(tao_yyvsp[0].idlist, NULL); + } break; case 55: -#line 605 "fe/idl.tao_yy" +#line 620 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SN_IDSeen); - - tao_yyvsp[-3].idlist->nconc(new UTL_IdList(tao_yyvsp[0].idval, NULL)); - tao_yyval.idlist = tao_yyvsp[-3].idlist; - } + tao_yyval.nlval = NULL; + } break; case 56: -#line 614 "fe/idl.tao_yy" +#line 628 "fe/idl.tao_yy" { - tao_yyval.idval = new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); + AST_InterfaceFwd *f = NULL; + UTL_StrList *p = idl_global->pragmas(); + + idl_global->set_parse_state(IDL_GlobalData::PS_ForwardDeclSeen); + /* + * Create a node representing a forward declaration of an + * valuetype. Store it in the enclosing scope + */ + if (s != NULL) { + f = idl_global->gen()->create_valuetype_fwd(n, p); + /* if ($1)*/ + f->set_abstract_valuetype (); + (void) s->fe_add_interface_fwd(f); + } } break; case 57: -#line 621 "fe/idl.tao_yy" +#line 648 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); - AST_InterfaceFwd *f = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); + AST_InterfaceFwd *f = NULL; + UTL_StrList *p = idl_global->pragmas(); - idl_global->set_parse_state(IDL_GlobalData::PS_ForwardDeclSeen); - /* - * Create a node representing a forward declaration of an - * interface. Store it in the enclosing scope - */ - if (s != NULL) { - f = idl_global->gen()->create_interface_fwd(n, p); - (void) s->fe_add_interface_fwd(f); - } - } + idl_global->set_parse_state(IDL_GlobalData::PS_ForwardDeclSeen); + /* + * Create a node representing a forward declaration of an + * valuetype. Store it in the enclosing scope + */ + if (s != NULL) { + f = idl_global->gen()->create_valuetype_fwd(n, p); + (void) s->fe_add_interface_fwd(f); + } + } break; case 58: -#line 641 "fe/idl.tao_yy" +#line 669 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ConstSeen); + cerr << "error in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "Sorry, I (TAO_IDL) can't handle boxes yet\n"; } break; -case 59: -#line 645 "fe/idl.tao_yy" +case 64: +#line 689 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ConstTypeSeen); - } + /* is $0 to member_i */ + tao_yyval.vival = AST_Field::vis_PUBLIC; + } break; -case 60: -#line 649 "fe/idl.tao_yy" +case 66: +#line 695 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ConstIDSeen); + /* is $0 to member_i */ + tao_yyval.vival = AST_Field::vis_PRIVATE; + } +break; +case 70: +#line 709 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_TypeDeclSeen); } break; -case 61: -#line 653 "fe/idl.tao_yy" +case 71: +#line 713 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ConstAssignSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); } break; -case 62: -#line 657 "fe/idl.tao_yy" +case 72: +#line 717 "fe/idl.tao_yy" { - UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[-4].idval, NULL); - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Constant *c = NULL; - UTL_StrList *p = idl_global->pragmas(); - AST_Decl *v = NULL; - - ACE_UNUSED_ARG (v); - - idl_global->set_parse_state(IDL_GlobalData::PS_ConstExprSeen); - /* - * Create a node representing a constant declaration. Store - * it in the enclosing scope - */ - if (tao_yyvsp[0].exval != NULL && s != NULL) { - if (tao_yyvsp[0].exval->coerce(tao_yyvsp[-6].etval) == NULL) - idl_global->err()->coercion_error(tao_yyvsp[0].exval, tao_yyvsp[-6].etval); - else { - c = - idl_global->gen()->create_constant(tao_yyvsp[-6].etval, tao_yyvsp[0].exval, n, p); - (void) s->fe_add_constant(c); - } - } - } -break; -case 68: -#line 690 "fe/idl.tao_yy" -{ - tao_yyval.etval = AST_Expression::EV_string; - } -break; -case 69: -#line 694 "fe/idl.tao_yy" -{ - tao_yyval.etval = AST_Expression::EV_wstring; + idl_global->set_parse_state(IDL_GlobalData::PS_ConstDeclSeen); } break; -case 70: -#line 698 "fe/idl.tao_yy" +case 73: +#line 721 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Decl *d = NULL; - AST_PredefinedType *c = NULL; - AST_Typedef *t = NULL; - - /* - * If the constant's type is a scoped name, it must resolve - * to a scalar constant type - */ - if (s != NULL && (d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE)) != NULL) { - /* - * Look through typedefs - */ - while (d->node_type() == AST_Decl::NT_typedef) { - t = AST_Typedef::narrow_from_decl(d); - if (t == NULL) - break; - d = t->base_type(); - } - if (d == NULL) - tao_yyval.etval = AST_Expression::EV_any; - else if (d->node_type() == AST_Decl::NT_pre_defined) { - c = AST_PredefinedType::narrow_from_decl(d); - if (c != NULL) { - tao_yyval.etval = idl_global->PredefinedTypeToExprType(c->pt()); - } else { - tao_yyval.etval = AST_Expression::EV_any; - } - } else if (d->node_type () == AST_Decl::NT_string) { - tao_yyval.etval = AST_Expression::EV_string; - /* @ASG@ we will need a similar one for wstring after it - is implemented */ - } else - tao_yyval.etval = AST_Expression::EV_any; - } else - tao_yyval.etval = AST_Expression::EV_any; - } + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + } break; case 74: -#line 744 "fe/idl.tao_yy" +#line 725 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_or, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptDeclSeen); + } +break; +case 75: +#line 729 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + } break; case 76: -#line 752 "fe/idl.tao_yy" +#line 733 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_xor, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_AttrDeclSeen); + } +break; +case 77: +#line 737 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + } break; case 78: -#line 760 "fe/idl.tao_yy" +#line 741 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_OpDeclSeen); + } +break; +case 79: +#line 745 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_and, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + } break; case 80: -#line 768 "fe/idl.tao_yy" +#line 749 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_right,tao_yyvsp[-2].exval,tao_yyvsp[0].exval); - } + idl_global->err()->syntax_error(idl_global->parse_state()); + } break; case 81: -#line 772 "fe/idl.tao_yy" +#line 753 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + tao_yyerrok; + } +break; +case 82: +#line 761 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_left,tao_yyvsp[-2].exval,tao_yyvsp[0].exval); - } + tao_yyval.nlval = new UTL_NameList(tao_yyvsp[-1].idlist, tao_yyvsp[0].nlval); + } break; case 83: -#line 780 "fe/idl.tao_yy" +#line 769 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_add, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_SNListCommaSeen); + } break; case 84: +#line 773 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ScopedNameSeen); + + if (tao_yyvsp[-3].nlval == NULL) + tao_yyval.nlval = new UTL_NameList(tao_yyvsp[0].idlist, NULL); + else { + tao_yyvsp[-3].nlval->nconc(new UTL_NameList(tao_yyvsp[0].idlist, NULL)); + tao_yyval.nlval = tao_yyvsp[-3].nlval; + } + } +break; +case 85: #line 784 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_minus,tao_yyvsp[-2].exval,tao_yyvsp[0].exval); - } + tao_yyval.nlval = NULL; + } break; case 86: -#line 792 "fe/idl.tao_yy" +#line 791 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_mul, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_SN_IDSeen); + + tao_yyval.idlist = new UTL_IdList(tao_yyvsp[0].idval, NULL); + } break; case 87: -#line 796 "fe/idl.tao_yy" +#line 797 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_div, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ScopeDelimSeen); + } break; case 88: -#line 800 "fe/idl.tao_yy" +#line 801 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_mod, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); - } + idl_global->set_parse_state(IDL_GlobalData::PS_SN_IDSeen); + + tao_yyval.idlist = new UTL_IdList(new Identifier(tao_yyvsp[-2].strval, 1, 0, I_FALSE), + new UTL_IdList(tao_yyvsp[0].idval, NULL)); + } +break; +case 89: +#line 809 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ScopeDelimSeen); + } break; case 90: -#line 808 "fe/idl.tao_yy" +#line 813 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_u_plus, - tao_yyvsp[0].exval, - NULL); - } + idl_global->set_parse_state(IDL_GlobalData::PS_SN_IDSeen); + + tao_yyvsp[-3].idlist->nconc(new UTL_IdList(tao_yyvsp[0].idval, NULL)); + tao_yyval.idlist = tao_yyvsp[-3].idlist; + } break; case 91: -#line 814 "fe/idl.tao_yy" +#line 822 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_u_minus, - tao_yyvsp[0].exval, - NULL); - } + tao_yyval.idval = new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE); + } break; case 92: -#line 820 "fe/idl.tao_yy" +#line 829 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_bit_neg, - tao_yyvsp[0].exval, - NULL); - } + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); + AST_InterfaceFwd *f = NULL; + UTL_StrList *p = idl_global->pragmas(); + + idl_global->set_parse_state(IDL_GlobalData::PS_ForwardDeclSeen); + /* + * Create a node representing a forward declaration of an + * interface. Store it in the enclosing scope + */ + if (s != NULL) { + f = idl_global->gen()->create_interface_fwd(n, p); + (void) s->fe_add_interface_fwd(f); + } + } break; case 93: -#line 829 "fe/idl.tao_yy" +#line 849 "fe/idl.tao_yy" { - /* - * An expression which is a scoped name is not resolved now, - * but only when it is evaluated (such as when it is assigned - * as a constant value) - */ - tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].idlist); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ConstSeen); + } +break; +case 94: +#line 853 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ConstTypeSeen); + } break; case 95: -#line 839 "fe/idl.tao_yy" +#line 857 "fe/idl.tao_yy" { - tao_yyval.exval = tao_yyvsp[-1].exval; - } + idl_global->set_parse_state(IDL_GlobalData::PS_ConstIDSeen); + } break; case 96: -#line 846 "fe/idl.tao_yy" +#line 861 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].ival); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ConstAssignSeen); + } break; case 97: -#line 850 "fe/idl.tao_yy" +#line 865 "fe/idl.tao_yy" +{ + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[-4].idval, NULL); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Constant *c = NULL; + UTL_StrList *p = idl_global->pragmas(); + AST_Decl *v = NULL; + + ACE_UNUSED_ARG (v); + + idl_global->set_parse_state(IDL_GlobalData::PS_ConstExprSeen); + /* + * Create a node representing a constant declaration. Store + * it in the enclosing scope + */ + if (tao_yyvsp[0].exval != NULL && s != NULL) { + if (tao_yyvsp[0].exval->coerce(tao_yyvsp[-6].etval) == NULL) + idl_global->err()->coercion_error(tao_yyvsp[0].exval, tao_yyvsp[-6].etval); + else { + c = + idl_global->gen()->create_constant(tao_yyvsp[-6].etval, tao_yyvsp[0].exval, n, p); + (void) s->fe_add_constant(c); + } + } + } +break; +case 103: +#line 898 "fe/idl.tao_yy" +{ + tao_yyval.etval = AST_Expression::EV_string; + } +break; +case 104: +#line 902 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].sval); - } + tao_yyval.etval = AST_Expression::EV_wstring; + } break; -case 98: -#line 854 "fe/idl.tao_yy" +case 105: +#line 906 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].cval); - } + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Decl *d = NULL; + AST_PredefinedType *c = NULL; + AST_Typedef *t = NULL; + + /* + * If the constant's type is a scoped name, it must resolve + * to a scalar constant type + */ + if (s != NULL && (d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE)) != NULL) { + /* + * Look through typedefs + */ + while (d->node_type() == AST_Decl::NT_typedef) { + t = AST_Typedef::narrow_from_decl(d); + if (t == NULL) + break; + d = t->base_type(); + } + if (d == NULL) + tao_yyval.etval = AST_Expression::EV_any; + else if (d->node_type() == AST_Decl::NT_pre_defined) { + c = AST_PredefinedType::narrow_from_decl(d); + if (c != NULL) { + tao_yyval.etval = idl_global->PredefinedTypeToExprType(c->pt()); + } else { + tao_yyval.etval = AST_Expression::EV_any; + } + } else if (d->node_type () == AST_Decl::NT_string) { + tao_yyval.etval = AST_Expression::EV_string; + /* @ASG@ we will need a similar one for wstring after it + is implemented */ + } else + tao_yyval.etval = AST_Expression::EV_any; + } else + tao_yyval.etval = AST_Expression::EV_any; + } break; -case 99: -#line 858 "fe/idl.tao_yy" +case 109: +#line 952 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].dval); - } + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_or, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } break; -case 100: -#line 862 "fe/idl.tao_yy" +case 111: +#line 960 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr((idl_bool) I_TRUE, - AST_Expression::EV_bool); - } + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_xor, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } break; -case 101: -#line 867 "fe/idl.tao_yy" +case 113: +#line 968 "fe/idl.tao_yy" { - tao_yyval.exval = idl_global->gen()->create_expr((idl_bool) I_FALSE, - AST_Expression::EV_bool); - } + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_and, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } break; -case 102: -#line 875 "fe/idl.tao_yy" +case 115: +#line 976 "fe/idl.tao_yy" { - tao_yyvsp[0].exval->evaluate(AST_Expression::EK_const); - tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].exval, AST_Expression::EV_ulong); - } + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_right,tao_yyvsp[-2].exval,tao_yyvsp[0].exval); + } break; -case 103: -#line 883 "fe/idl.tao_yy" +case 116: +#line 980 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_TypedefSeen); - } + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_left,tao_yyvsp[-2].exval,tao_yyvsp[0].exval); + } break; -case 104: -#line 886 "fe/idl.tao_yy" +case 118: +#line 988 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_add, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } +break; +case 119: +#line 992 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_minus,tao_yyvsp[-2].exval,tao_yyvsp[0].exval); + } +break; +case 121: +#line 1000 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_mul, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } +break; +case 122: +#line 1004 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_div, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } +break; +case 123: +#line 1008 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_mod, tao_yyvsp[-2].exval, tao_yyvsp[0].exval); + } +break; +case 125: +#line 1016 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_u_plus, + tao_yyvsp[0].exval, + NULL); + } +break; +case 126: +#line 1022 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_u_minus, + tao_yyvsp[0].exval, + NULL); + } +break; +case 127: +#line 1028 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(AST_Expression::EC_bit_neg, + tao_yyvsp[0].exval, + NULL); + } +break; +case 128: +#line 1037 "fe/idl.tao_yy" +{ + /* + * An expression which is a scoped name is not resolved now, + * but only when it is evaluated (such as when it is assigned + * as a constant value) + */ + tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].idlist); + } +break; +case 130: +#line 1047 "fe/idl.tao_yy" +{ + tao_yyval.exval = tao_yyvsp[-1].exval; + } +break; +case 131: +#line 1054 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].ival); + } +break; +case 132: +#line 1058 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].sval); + } +break; +case 133: +#line 1062 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].cval); + } +break; +case 134: +#line 1066 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].dval); + } +break; +case 135: +#line 1070 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr((idl_bool) I_TRUE, + AST_Expression::EV_bool); + } +break; +case 136: +#line 1075 "fe/idl.tao_yy" +{ + tao_yyval.exval = idl_global->gen()->create_expr((idl_bool) I_FALSE, + AST_Expression::EV_bool); + } +break; +case 137: +#line 1083 "fe/idl.tao_yy" +{ + tao_yyvsp[0].exval->evaluate(AST_Expression::EK_const); + tao_yyval.exval = idl_global->gen()->create_expr(tao_yyvsp[0].exval, AST_Expression::EV_ulong); + } +break; +case 138: +#line 1091 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_TypedefSeen); + } +break; +case 139: +#line 1094 "fe/idl.tao_yy" {tao_yyval.ival = 0;} break; -case 105: -#line 887 "fe/idl.tao_yy" +case 140: +#line 1095 "fe/idl.tao_yy" { tao_yyval.ival = 0;} break; -case 106: -#line 888 "fe/idl.tao_yy" +case 141: +#line 1096 "fe/idl.tao_yy" { tao_yyval.ival = 0;} break; -case 107: -#line 889 "fe/idl.tao_yy" +case 142: +#line 1097 "fe/idl.tao_yy" { tao_yyval.ival = 0;} break; -case 108: -#line 891 "fe/idl.tao_yy" +case 143: +#line 1099 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Native *node = NULL; - AST_Decl *v = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Native *node = NULL; + AST_Decl *v = NULL; + UTL_StrList *p = idl_global->pragmas(); ACE_UNUSED_ARG (v); - idl_global->set_parse_state(IDL_GlobalData::PS_NativeSeen); - /* - * Create a node representing a Native and add it to its - * enclosing scope - */ - if (s != NULL) { - node = idl_global->gen()->create_native (tao_yyvsp[0].deval->name (), p); - /* - * Add it to its defining scope - */ - (void) s->fe_add_native (node); - } - } + idl_global->set_parse_state(IDL_GlobalData::PS_NativeSeen); + /* + * Create a node representing a Native and add it to its + * enclosing scope + */ + if (s != NULL) { + node = idl_global->gen()->create_native (tao_yyvsp[0].deval->name (), p); + /* + * Add it to its defining scope + */ + (void) s->fe_add_native (node); + } + } break; -case 109: -#line 916 "fe/idl.tao_yy" +case 144: +#line 1124 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_TypeSpecSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_TypeSpecSeen); } break; -case 110: -#line 920 "fe/idl.tao_yy" -{ - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_DecllistActiveIterator *l; - FE_Declarator *d = NULL; - AST_Typedef *t = NULL; - AST_Decl *v = NULL; - UTL_StrList *p = idl_global->pragmas(); +case 145: +#line 1128 "fe/idl.tao_yy" +{ + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_DecllistActiveIterator *l; + FE_Declarator *d = NULL; + AST_Typedef *t = NULL; + AST_Decl *v = NULL; + UTL_StrList *p = idl_global->pragmas(); ACE_UNUSED_ARG (v); - idl_global->set_parse_state(IDL_GlobalData::PS_DeclaratorsSeen); - /* - * Create a list of type renamings. Add them to the - * enclosing scope - */ - if (s != NULL && tao_yyvsp[-2].dcval != NULL && tao_yyvsp[0].dlval != NULL) { - l = new UTL_DecllistActiveIterator(tao_yyvsp[0].dlval); - for (;!(l->is_done()); l->next()) { - d = l->item(); - if (d == NULL) - continue; + idl_global->set_parse_state(IDL_GlobalData::PS_DeclaratorsSeen); + /* + * Create a list of type renamings. Add them to the + * enclosing scope + */ + if (s != NULL && tao_yyvsp[-2].dcval != NULL && tao_yyvsp[0].dlval != NULL) { + l = new UTL_DecllistActiveIterator(tao_yyvsp[0].dlval); + for (;!(l->is_done()); l->next()) { + d = l->item(); + if (d == NULL) + continue; AST_Type * tp = d->compose(tao_yyvsp[-2].dcval); if (tp == NULL) - continue; - t = idl_global->gen()->create_typedef(tp, d->name(), p); - (void) s->fe_add_typedef(t); - } - delete l; - } - } + continue; + t = idl_global->gen()->create_typedef(tp, d->name(), p); + (void) s->fe_add_typedef(t); + } + delete l; + } + } break; -case 113: -#line 959 "fe/idl.tao_yy" +case 148: +#line 1167 "fe/idl.tao_yy" { - tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); - } + tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); + } break; -case 115: -#line 964 "fe/idl.tao_yy" +case 150: +#line 1172 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Decl *d = NULL; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Decl *d = NULL; - if (s != NULL) - d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE); - if (d == NULL) - idl_global->err()->lookup_error(tao_yyvsp[0].idlist); - tao_yyval.dcval = d; - } + if (s != NULL) + d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE); + if (d == NULL) + idl_global->err()->lookup_error(tao_yyvsp[0].idlist); + tao_yyval.dcval = d; + } break; -case 128: -#line 999 "fe/idl.tao_yy" +case 163: +#line 1207 "fe/idl.tao_yy" { - tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[-1].deval, tao_yyvsp[0].dlval); - } + tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[-1].deval, tao_yyvsp[0].dlval); + } break; -case 129: -#line 1007 "fe/idl.tao_yy" +case 164: +#line 1215 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DeclsCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DeclsCommaSeen); } break; -case 130: -#line 1011 "fe/idl.tao_yy" +case 165: +#line 1219 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DeclsDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DeclsDeclSeen); - if (tao_yyvsp[-3].dlval == NULL) - tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[0].deval, NULL); - else { - tao_yyvsp[-3].dlval->nconc(new UTL_DeclList(tao_yyvsp[0].deval, NULL)); - tao_yyval.dlval = tao_yyvsp[-3].dlval; - } - } + if (tao_yyvsp[-3].dlval == NULL) + tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[0].deval, NULL); + else { + tao_yyvsp[-3].dlval->nconc(new UTL_DeclList(tao_yyvsp[0].deval, NULL)); + tao_yyval.dlval = tao_yyvsp[-3].dlval; + } + } break; -case 131: -#line 1022 "fe/idl.tao_yy" +case 166: +#line 1230 "fe/idl.tao_yy" { - tao_yyval.dlval = NULL; - } + tao_yyval.dlval = NULL; + } break; -case 134: -#line 1034 "fe/idl.tao_yy" +case 169: +#line 1242 "fe/idl.tao_yy" { - tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[-1].deval, tao_yyvsp[0].dlval); - } + tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[-1].deval, tao_yyvsp[0].dlval); + } break; -case 135: -#line 1042 "fe/idl.tao_yy" +case 170: +#line 1250 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DeclsCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DeclsCommaSeen); } break; -case 136: -#line 1046 "fe/idl.tao_yy" +case 171: +#line 1254 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DeclsDeclSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DeclsDeclSeen); - if (tao_yyvsp[-3].dlval == NULL) - tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[0].deval, NULL); - else { - tao_yyvsp[-3].dlval->nconc(new UTL_DeclList(tao_yyvsp[0].deval, NULL)); - tao_yyval.dlval = tao_yyvsp[-3].dlval; - } - } + if (tao_yyvsp[-3].dlval == NULL) + tao_yyval.dlval = new UTL_DeclList(tao_yyvsp[0].deval, NULL); + else { + tao_yyvsp[-3].dlval->nconc(new UTL_DeclList(tao_yyvsp[0].deval, NULL)); + tao_yyval.dlval = tao_yyvsp[-3].dlval; + } + } break; -case 137: -#line 1057 "fe/idl.tao_yy" +case 172: +#line 1265 "fe/idl.tao_yy" { - tao_yyval.dlval = NULL; - } + tao_yyval.dlval = NULL; + } break; -case 138: -#line 1064 "fe/idl.tao_yy" +case 173: +#line 1272 "fe/idl.tao_yy" { - tao_yyval.deval = new FE_Declarator(new UTL_ScopedName(tao_yyvsp[0].idval, NULL), - FE_Declarator::FD_simple, NULL); - } + tao_yyval.deval = new FE_Declarator(new UTL_ScopedName(tao_yyvsp[0].idval, NULL), + FE_Declarator::FD_simple, NULL); + } break; -case 139: -#line 1072 "fe/idl.tao_yy" +case 174: +#line 1280 "fe/idl.tao_yy" { - tao_yyval.deval = new FE_Declarator(new UTL_ScopedName(tao_yyvsp[0].dcval->local_name(), NULL), - FE_Declarator::FD_complex, - tao_yyvsp[0].dcval); - } + tao_yyval.deval = new FE_Declarator(new UTL_ScopedName(tao_yyvsp[0].dcval->local_name(), NULL), + FE_Declarator::FD_complex, + tao_yyvsp[0].dcval); + } break; -case 142: -#line 1086 "fe/idl.tao_yy" +case 177: +#line 1294 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_long; - } + tao_yyval.etval = AST_Expression::EV_long; + } break; -case 143: -#line 1090 "fe/idl.tao_yy" +case 178: +#line 1298 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_longlong; + tao_yyval.etval = AST_Expression::EV_longlong; } break; -case 144: -#line 1094 "fe/idl.tao_yy" +case 179: +#line 1302 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_short; - } + tao_yyval.etval = AST_Expression::EV_short; + } break; -case 145: -#line 1101 "fe/idl.tao_yy" +case 180: +#line 1309 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_ulong; - } + tao_yyval.etval = AST_Expression::EV_ulong; + } break; -case 146: -#line 1105 "fe/idl.tao_yy" +case 181: +#line 1313 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_ulonglong; + tao_yyval.etval = AST_Expression::EV_ulonglong; } break; -case 147: -#line 1109 "fe/idl.tao_yy" +case 182: +#line 1317 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_ushort; - } + tao_yyval.etval = AST_Expression::EV_ushort; + } break; -case 148: -#line 1116 "fe/idl.tao_yy" +case 183: +#line 1324 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_double; - } + tao_yyval.etval = AST_Expression::EV_double; + } break; -case 149: -#line 1120 "fe/idl.tao_yy" +case 184: +#line 1328 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_float; - } + tao_yyval.etval = AST_Expression::EV_float; + } break; -case 150: -#line 1124 "fe/idl.tao_yy" +case 185: +#line 1332 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_longdouble; + tao_yyval.etval = AST_Expression::EV_longdouble; } break; -case 151: -#line 1131 "fe/idl.tao_yy" +case 186: +#line 1339 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_char; - } + tao_yyval.etval = AST_Expression::EV_char; + } break; -case 152: -#line 1135 "fe/idl.tao_yy" +case 187: +#line 1343 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_wchar; + tao_yyval.etval = AST_Expression::EV_wchar; } break; -case 153: -#line 1142 "fe/idl.tao_yy" +case 188: +#line 1350 "fe/idl.tao_yy" { tao_yyval.etval = AST_Expression::EV_octet; - } + } break; -case 154: -#line 1149 "fe/idl.tao_yy" +case 189: +#line 1357 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_bool; + tao_yyval.etval = AST_Expression::EV_bool; } break; -case 155: -#line 1156 "fe/idl.tao_yy" +case 190: +#line 1364 "fe/idl.tao_yy" { - tao_yyval.etval = AST_Expression::EV_any; - } + tao_yyval.etval = AST_Expression::EV_any; + } break; -case 156: -#line 1163 "fe/idl.tao_yy" +case 191: +#line 1371 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StructSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StructSeen); } break; -case 157: -#line 1167 "fe/idl.tao_yy" +case 192: +#line 1375 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); - AST_Structure *d = NULL; - UTL_StrList *p = idl_global->pragmas(); - AST_Decl *v = NULL; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); + AST_Structure *d = NULL; + UTL_StrList *p = idl_global->pragmas(); + AST_Decl *v = NULL; ACE_UNUSED_ARG (v); - idl_global->set_parse_state(IDL_GlobalData::PS_StructIDSeen); - /* - * Create a node representing a struct declaration. Add it - * to the enclosing scope - */ - if (s != NULL) { - d = idl_global->gen()->create_structure(n, p); - (void) s->fe_add_structure(d); - } - /* - * Push the scope of the struct on the scopes stack - */ - idl_global->scopes()->push(d); - } + idl_global->set_parse_state(IDL_GlobalData::PS_StructIDSeen); + /* + * Create a node representing a struct declaration. Add it + * to the enclosing scope + */ + if (s != NULL) { + d = idl_global->gen()->create_structure(n, p); + (void) s->fe_add_structure(d); + } + /* + * Push the scope of the struct on the scopes stack + */ + idl_global->scopes()->push(d); + } break; -case 158: -#line 1191 "fe/idl.tao_yy" +case 193: +#line 1399 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StructSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StructSqSeen); } break; -case 159: -#line 1195 "fe/idl.tao_yy" +case 194: +#line 1403 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StructBodySeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StructBodySeen); } break; -case 160: -#line 1199 "fe/idl.tao_yy" +case 195: +#line 1407 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StructQsSeen); - /* - * Done with this struct. Pop its scope off the scopes stack - */ + idl_global->set_parse_state(IDL_GlobalData::PS_StructQsSeen); + /* + * Done with this struct. Pop its scope off the scopes stack + */ tao_yyval.dcval = - AST_Structure::narrow_from_scope( - idl_global->scopes()->top_non_null()); - UTL_StrList *p = tao_yyval.dcval->pragmas (); - if (p != 0) - p = (UTL_StrList*)p->copy (); - idl_global->set_pragmas (p); + AST_Structure::narrow_from_scope( + idl_global->scopes()->top_non_null()); + UTL_StrList *p = tao_yyval.dcval->pragmas (); + if (p != 0) + p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); idl_global->scopes()->pop(); - } + } break; -case 164: -#line 1224 "fe/idl.tao_yy" +case 199: +#line 1431 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_MemberTypeSeen); + /* is $0 to member_i */ + tao_yyval.vival = AST_Field::vis_NA; } break; -case 165: -#line 1228 "fe/idl.tao_yy" +case 201: +#line 1440 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_MemberDeclsSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_MemberTypeSeen); } break; -case 166: -#line 1232 "fe/idl.tao_yy" +case 202: +#line 1444 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_MemberDeclsSeen); + } +break; +case 203: +#line 1448 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_DecllistActiveIterator *l = NULL; - FE_Declarator *d = NULL; - AST_Field *f = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_DecllistActiveIterator *l = NULL; + FE_Declarator *d = NULL; + AST_Field *f = NULL; + UTL_StrList *p = idl_global->pragmas(); - idl_global->set_parse_state(IDL_GlobalData::PS_MemberDeclsCompleted); - /* - * Check for illegal recursive use of type - */ - if (tao_yyvsp[-4].dcval != NULL && AST_illegal_recursive_type(tao_yyvsp[-4].dcval)) - idl_global->err()->error1(UTL_Error::EIDL_RECURSIVE_TYPE, tao_yyvsp[-4].dcval); - /* - * Create a node representing a struct or exception member - * Add it to the enclosing scope - */ - else if (s != NULL && tao_yyvsp[-4].dcval != NULL && tao_yyvsp[-2].dlval != NULL) { - l = new UTL_DecllistActiveIterator(tao_yyvsp[-2].dlval); - for (;!(l->is_done()); l->next()) { - d = l->item(); - if (d == NULL) - continue; - AST_Type *tp = d->compose(tao_yyvsp[-4].dcval); - if (tp == NULL) - continue; - f = idl_global->gen()->create_field(tp, d->name(), p); - (void) s->fe_add_field(f); - } - delete l; - } - } -break; -case 167: -#line 1265 "fe/idl.tao_yy" + idl_global->set_parse_state(IDL_GlobalData::PS_MemberDeclsCompleted); + /* + * Check for illegal recursive use of type + */ + if (tao_yyvsp[-4].dcval != NULL && AST_illegal_recursive_type(tao_yyvsp[-4].dcval)) + idl_global->err()->error1(UTL_Error::EIDL_RECURSIVE_TYPE, tao_yyvsp[-4].dcval); + /* + * Create a node representing a struct or exception member + * Add it to the enclosing scope + */ + else if (s != NULL && tao_yyvsp[-4].dcval != NULL && tao_yyvsp[-2].dlval != NULL) { + l = new UTL_DecllistActiveIterator(tao_yyvsp[-2].dlval); + for (;!(l->is_done()); l->next()) { + d = l->item(); + if (d == NULL) + continue; + AST_Type *tp = d->compose(tao_yyvsp[-4].dcval); + if (tp == NULL) + continue; + /* $0 denotes Visibility, must be on yacc reduction stack */ + f = idl_global->gen()->create_field(tp, d->name(), p, tao_yyvsp[-5].vival); + (void) s->fe_add_field(f); + } + delete l; + } + } +break; +case 204: +#line 1482 "fe/idl.tao_yy" { - idl_global->err()->syntax_error(idl_global->parse_state()); - } + idl_global->err()->syntax_error(idl_global->parse_state()); + } break; -case 168: -#line 1269 "fe/idl.tao_yy" +case 205: +#line 1486 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); - tao_yyerrok; - } + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + tao_yyerrok; + } break; -case 169: -#line 1277 "fe/idl.tao_yy" +case 206: +#line 1494 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionSeen); } break; -case 170: -#line 1281 "fe/idl.tao_yy" +case 207: +#line 1498 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionIDSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionIDSeen); } break; -case 171: -#line 1285 "fe/idl.tao_yy" +case 208: +#line 1502 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SwitchSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_SwitchSeen); } break; -case 172: -#line 1289 "fe/idl.tao_yy" +case 209: +#line 1506 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SwitchOpenParSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_SwitchOpenParSeen); } break; -case 173: -#line 1293 "fe/idl.tao_yy" +case 210: +#line 1510 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SwitchTypeSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_SwitchTypeSeen); } break; -case 174: -#line 1297 "fe/idl.tao_yy" +case 211: +#line 1514 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[-8].idval, NULL); - AST_Union *u = NULL; - AST_Decl *v = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[-8].idval, NULL); + AST_Union *u = NULL; + AST_Decl *v = NULL; + UTL_StrList *p = idl_global->pragmas(); ACE_UNUSED_ARG (v); - idl_global->set_parse_state(IDL_GlobalData::PS_SwitchCloseParSeen); - /* - * Create a node representing a union. Add it to its enclosing - * scope - */ - if (tao_yyvsp[-2].dcval != NULL && s != NULL) { - AST_ConcreteType *tp = AST_ConcreteType::narrow_from_decl(tao_yyvsp[-2].dcval); + idl_global->set_parse_state(IDL_GlobalData::PS_SwitchCloseParSeen); + /* + * Create a node representing a union. Add it to its enclosing + * scope + */ + if (tao_yyvsp[-2].dcval != NULL && s != NULL) { + AST_ConcreteType *tp = AST_ConcreteType::narrow_from_decl(tao_yyvsp[-2].dcval); if (tp == NULL) { idl_global->err()->not_a_type(tao_yyvsp[-2].dcval); } else { - u = idl_global->gen()->create_union(tp, n, p); - (void) s->fe_add_union(u); - } - } - /* - * Push the scope of the union on the scopes stack - */ - idl_global->scopes()->push(u); - } + u = idl_global->gen()->create_union(tp, n, p); + (void) s->fe_add_union(u); + } + } + /* + * Push the scope of the union on the scopes stack + */ + idl_global->scopes()->push(u); + } break; -case 175: -#line 1326 "fe/idl.tao_yy" +case 212: +#line 1543 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionSqSeen); } break; -case 176: -#line 1330 "fe/idl.tao_yy" +case 213: +#line 1547 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionBodySeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionBodySeen); } break; -case 177: -#line 1334 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_UnionQsSeen); - /* - * Done with this union. Pop its scope from the scopes stack - */ - tao_yyval.dcval = - AST_Union::narrow_from_scope( - idl_global->scopes()->top_non_null()); - UTL_StrList *p = tao_yyval.dcval->pragmas (); - if (p != 0) - p = (UTL_StrList*)p->copy (); - idl_global->set_pragmas (p); - idl_global->scopes()->pop(); - } +case 214: +#line 1551 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_UnionQsSeen); + /* + * Done with this union. Pop its scope from the scopes stack + */ + tao_yyval.dcval = + AST_Union::narrow_from_scope( + idl_global->scopes()->top_non_null()); + UTL_StrList *p = tao_yyval.dcval->pragmas (); + if (p != 0) + p = (UTL_StrList*)p->copy (); + idl_global->set_pragmas (p); + idl_global->scopes()->pop(); + } break; -case 178: -#line 1352 "fe/idl.tao_yy" +case 215: +#line 1569 "fe/idl.tao_yy" { - tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); - } + tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); + } break; -case 179: -#line 1356 "fe/idl.tao_yy" +case 216: +#line 1573 "fe/idl.tao_yy" { - tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); - } + tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); + } break; -case 180: -#line 1360 "fe/idl.tao_yy" +case 217: +#line 1577 "fe/idl.tao_yy" { /* octets are not allowed*/ idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE); - } + } break; -case 181: -#line 1365 "fe/idl.tao_yy" +case 218: +#line 1582 "fe/idl.tao_yy" { - tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); - } + tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); + } break; -case 183: -#line 1370 "fe/idl.tao_yy" +case 220: +#line 1587 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Decl *d = NULL; - AST_PredefinedType *p = NULL; - AST_Typedef *t = NULL; - long found = I_FALSE; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Decl *d = NULL; + AST_PredefinedType *p = NULL; + AST_Typedef *t = NULL; + long found = I_FALSE; - /* - * The discriminator is a scoped name. Try to resolve to - * one of the scalar types or to an enum. Thread through - * typedef's to arrive at the base type at the end of the - * chain - */ - if (s != NULL && (d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE)) != NULL) { - while (!found) { - switch (d->node_type()) { - case AST_Decl::NT_enum: - tao_yyval.dcval = d; - found = I_TRUE; - break; - case AST_Decl::NT_pre_defined: - p = AST_PredefinedType::narrow_from_decl(d); - if (p != NULL) { - switch (p->pt()) { - case AST_PredefinedType::PT_long: - case AST_PredefinedType::PT_ulong: - case AST_PredefinedType::PT_longlong: - case AST_PredefinedType::PT_ulonglong: - case AST_PredefinedType::PT_short: - case AST_PredefinedType::PT_char: - case AST_PredefinedType::PT_wchar: - case AST_PredefinedType::PT_boolean: - tao_yyval.dcval = p; - found = I_TRUE; - break; - case AST_PredefinedType::PT_octet: + /* + * The discriminator is a scoped name. Try to resolve to + * one of the scalar types or to an enum. Thread through + * typedef's to arrive at the base type at the end of the + * chain + */ + if (s != NULL && (d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE)) != NULL) { + while (!found) { + switch (d->node_type()) { + case AST_Decl::NT_enum: + tao_yyval.dcval = d; + found = I_TRUE; + break; + case AST_Decl::NT_pre_defined: + p = AST_PredefinedType::narrow_from_decl(d); + if (p != NULL) { + switch (p->pt()) { + case AST_PredefinedType::PT_long: + case AST_PredefinedType::PT_ulong: + case AST_PredefinedType::PT_longlong: + case AST_PredefinedType::PT_ulonglong: + case AST_PredefinedType::PT_short: + case AST_PredefinedType::PT_char: + case AST_PredefinedType::PT_wchar: + case AST_PredefinedType::PT_boolean: + tao_yyval.dcval = p; + found = I_TRUE; + break; + case AST_PredefinedType::PT_octet: /* octets are not allowed*/ idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE); tao_yyval.dcval = NULL; - found = I_TRUE; - break; - default: - tao_yyval.dcval = NULL; - found = I_TRUE; - break; - } - } else + found = I_TRUE; + break; + default: + tao_yyval.dcval = NULL; + found = I_TRUE; + break; + } + } else { - tao_yyval.dcval = NULL; - found = I_TRUE; + tao_yyval.dcval = NULL; + found = I_TRUE; } - break; - case AST_Decl::NT_typedef: - t = AST_Typedef::narrow_from_decl(d); - if (t != NULL) d = t->base_type(); - break; - default: - tao_yyval.dcval = NULL; - found = I_TRUE; - break; - } - } - } else - tao_yyval.dcval = NULL; + break; + case AST_Decl::NT_typedef: + t = AST_Typedef::narrow_from_decl(d); + if (t != NULL) d = t->base_type(); + break; + default: + tao_yyval.dcval = NULL; + found = I_TRUE; + break; + } + } + } else + tao_yyval.dcval = NULL; - if (tao_yyval.dcval == NULL) - idl_global->err()->lookup_error(tao_yyvsp[0].idlist); - } + if (tao_yyval.dcval == NULL) + idl_global->err()->lookup_error(tao_yyvsp[0].idlist); + } break; -case 187: -#line 1449 "fe/idl.tao_yy" +case 224: +#line 1666 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionLabelSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionLabelSeen); } break; -case 188: -#line 1453 "fe/idl.tao_yy" +case 225: +#line 1670 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemSeen); } break; -case 189: -#line 1457 "fe/idl.tao_yy" +case 226: +#line 1674 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_LabellistActiveIterator *l = NULL; - AST_UnionLabel *d = NULL; - AST_UnionBranch *b = NULL; - AST_Field *f = tao_yyvsp[-2].ffval; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_LabellistActiveIterator *l = NULL; + AST_UnionLabel *d = NULL; + AST_UnionBranch *b = NULL; + AST_Field *f = tao_yyvsp[-2].ffval; - idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemCompleted); - /* - * Create several nodes representing branches of a union. - * Add them to the enclosing scope (the union scope) - */ - if (s != NULL && tao_yyvsp[-4].llval != NULL && tao_yyvsp[-2].ffval != NULL) { - l = new UTL_LabellistActiveIterator(tao_yyvsp[-4].llval); - for (;!(l->is_done()); l->next()) { - d = l->item(); - if (d == NULL) - continue; - b = idl_global->gen()->create_union_branch(d, - f->field_type(), - f->name(), - f->pragmas()); - (void) s->fe_add_union_branch(b); - } - delete l; - } - } + idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemCompleted); + /* + * Create several nodes representing branches of a union. + * Add them to the enclosing scope (the union scope) + */ + if (s != NULL && tao_yyvsp[-4].llval != NULL && tao_yyvsp[-2].ffval != NULL) { + l = new UTL_LabellistActiveIterator(tao_yyvsp[-4].llval); + for (;!(l->is_done()); l->next()) { + d = l->item(); + if (d == NULL) + continue; + b = idl_global->gen()->create_union_branch(d, + f->field_type(), + f->name(), + f->pragmas()); + (void) s->fe_add_union_branch(b); + } + delete l; + } + } break; -case 190: -#line 1485 "fe/idl.tao_yy" +case 227: +#line 1702 "fe/idl.tao_yy" { - idl_global->err()->syntax_error(idl_global->parse_state()); - } + idl_global->err()->syntax_error(idl_global->parse_state()); + } break; -case 191: -#line 1490 "fe/idl.tao_yy" +case 228: +#line 1707 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_NoState); - tao_yyerrok; - } + idl_global->set_parse_state(IDL_GlobalData::PS_NoState); + tao_yyerrok; + } break; -case 192: -#line 1498 "fe/idl.tao_yy" +case 229: +#line 1715 "fe/idl.tao_yy" { - tao_yyval.llval = new UTL_LabelList(tao_yyvsp[-1].ulval, tao_yyvsp[0].llval); - } + tao_yyval.llval = new UTL_LabelList(tao_yyvsp[-1].ulval, tao_yyvsp[0].llval); + } break; -case 193: -#line 1505 "fe/idl.tao_yy" +case 230: +#line 1722 "fe/idl.tao_yy" { - if (tao_yyvsp[-1].llval == NULL) - tao_yyval.llval = new UTL_LabelList(tao_yyvsp[0].ulval, NULL); - else { - tao_yyvsp[-1].llval->nconc(new UTL_LabelList(tao_yyvsp[0].ulval, NULL)); - tao_yyval.llval = tao_yyvsp[-1].llval; - } - } + if (tao_yyvsp[-1].llval == NULL) + tao_yyval.llval = new UTL_LabelList(tao_yyvsp[0].ulval, NULL); + else { + tao_yyvsp[-1].llval->nconc(new UTL_LabelList(tao_yyvsp[0].ulval, NULL)); + tao_yyval.llval = tao_yyvsp[-1].llval; + } + } break; -case 194: -#line 1514 "fe/idl.tao_yy" +case 231: +#line 1731 "fe/idl.tao_yy" { - tao_yyval.llval = NULL; - } + tao_yyval.llval = NULL; + } break; -case 195: -#line 1521 "fe/idl.tao_yy" +case 232: +#line 1738 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DefaultSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DefaultSeen); } break; -case 196: -#line 1525 "fe/idl.tao_yy" +case 233: +#line 1742 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_LabelColonSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_LabelColonSeen); - tao_yyval.ulval = idl_global->gen()-> - create_union_label(AST_UnionLabel::UL_default, - NULL); - } + tao_yyval.ulval = idl_global->gen()-> + create_union_label(AST_UnionLabel::UL_default, + NULL); + } break; -case 197: -#line 1533 "fe/idl.tao_yy" +case 234: +#line 1750 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_CaseSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_CaseSeen); } break; -case 198: -#line 1537 "fe/idl.tao_yy" +case 235: +#line 1754 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_LabelExprSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_LabelExprSeen); } break; -case 199: -#line 1541 "fe/idl.tao_yy" +case 236: +#line 1758 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_LabelColonSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_LabelColonSeen); - tao_yyval.ulval = idl_global->gen()->create_union_label(AST_UnionLabel::UL_label, - tao_yyvsp[-2].exval); - } + tao_yyval.ulval = idl_global->gen()->create_union_label(AST_UnionLabel::UL_label, + tao_yyvsp[-2].exval); + } break; -case 200: -#line 1551 "fe/idl.tao_yy" +case 237: +#line 1768 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemTypeSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemTypeSeen); } break; -case 201: -#line 1555 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemDeclSeen); - /* - * Check for illegal recursive use of type - */ - if (tao_yyvsp[-2].dcval != NULL && AST_illegal_recursive_type(tao_yyvsp[-2].dcval)) - idl_global->err()->error1(UTL_Error::EIDL_RECURSIVE_TYPE, tao_yyvsp[-2].dcval); - /* - * Create a field in a union branch - */ - else if (tao_yyvsp[-2].dcval == NULL || tao_yyvsp[0].deval == NULL) - tao_yyval.ffval = NULL; - else { - AST_Type *tp = tao_yyvsp[0].deval->compose(tao_yyvsp[-2].dcval); - if (tp == NULL) - tao_yyval.ffval = NULL; - else - tao_yyval.ffval = idl_global->gen()->create_field(tp, - tao_yyvsp[0].deval->name(), - idl_global->pragmas()); - } - } +case 238: +#line 1772 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_UnionElemDeclSeen); + /* + * Check for illegal recursive use of type + */ + if (tao_yyvsp[-2].dcval != NULL && AST_illegal_recursive_type(tao_yyvsp[-2].dcval)) + idl_global->err()->error1(UTL_Error::EIDL_RECURSIVE_TYPE, tao_yyvsp[-2].dcval); + /* + * Create a field in a union branch + */ + else if (tao_yyvsp[-2].dcval == NULL || tao_yyvsp[0].deval == NULL) + tao_yyval.ffval = NULL; + else { + AST_Type *tp = tao_yyvsp[0].deval->compose(tao_yyvsp[-2].dcval); + if (tp == NULL) + tao_yyval.ffval = NULL; + else + tao_yyval.ffval = idl_global->gen()->create_field(tp, + tao_yyvsp[0].deval->name(), + idl_global->pragmas()); + } + } break; -case 202: -#line 1581 "fe/idl.tao_yy" +case 239: +#line 1798 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_EnumSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_EnumSeen); } break; -case 203: -#line 1585 "fe/idl.tao_yy" +case 240: +#line 1802 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); - AST_Enum *e = NULL; - AST_Decl *v = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); + AST_Enum *e = NULL; + AST_Decl *v = NULL; + UTL_StrList *p = idl_global->pragmas(); ACE_UNUSED_ARG (v); - idl_global->set_parse_state(IDL_GlobalData::PS_EnumIDSeen); - /* - * Create a node representing an enum and add it to its - * enclosing scope - */ - if (s != NULL) { - e = idl_global->gen()->create_enum(n, p); - /* - * Add it to its defining scope - */ - (void) s->fe_add_enum(e); - } - /* - * Push the enum scope on the scopes stack - */ - idl_global->scopes()->push(e); - } + idl_global->set_parse_state(IDL_GlobalData::PS_EnumIDSeen); + /* + * Create a node representing an enum and add it to its + * enclosing scope + */ + if (s != NULL) { + e = idl_global->gen()->create_enum(n, p); + /* + * Add it to its defining scope + */ + (void) s->fe_add_enum(e); + } + /* + * Push the enum scope on the scopes stack + */ + idl_global->scopes()->push(e); + } break; -case 204: -#line 1612 "fe/idl.tao_yy" +case 241: +#line 1829 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_EnumSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_EnumSqSeen); } break; -case 205: -#line 1616 "fe/idl.tao_yy" +case 242: +#line 1833 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_EnumBodySeen); + idl_global->set_parse_state(IDL_GlobalData::PS_EnumBodySeen); } break; -case 206: -#line 1620 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_EnumQsSeen); - /* - * Done with this enum. Pop its scope from the scopes stack - */ - if (idl_global->scopes()->top() == NULL) - tao_yyval.dcval = NULL; - else { - tao_yyval.dcval = AST_Enum::narrow_from_scope(idl_global->scopes()->top_non_null()); - idl_global->scopes()->pop(); - } - } +case 243: +#line 1837 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_EnumQsSeen); + /* + * Done with this enum. Pop its scope from the scopes stack + */ + if (idl_global->scopes()->top() == NULL) + tao_yyval.dcval = NULL; + else { + tao_yyval.dcval = AST_Enum::narrow_from_scope(idl_global->scopes()->top_non_null()); + idl_global->scopes()->pop(); + } + } break; -case 208: -#line 1639 "fe/idl.tao_yy" +case 245: +#line 1856 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_EnumCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_EnumCommaSeen); } break; -case 211: -#line 1648 "fe/idl.tao_yy" -{ - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = - new UTL_ScopedName(new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE), NULL); - AST_EnumVal *e = NULL; - AST_Enum *c = NULL; - UTL_StrList *p = idl_global->pragmas(); +case 248: +#line 1865 "fe/idl.tao_yy" +{ + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = + new UTL_ScopedName(new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE), NULL); + AST_EnumVal *e = NULL; + AST_Enum *c = NULL; + UTL_StrList *p = idl_global->pragmas(); - /* - * Create a node representing one enumerator in an enum - * Add it to the enclosing scope (the enum scope) - */ - if (s != NULL && s->scope_node_type() == AST_Decl::NT_enum) { - c = AST_Enum::narrow_from_scope(s); - if (c != NULL) - e = idl_global->gen()->create_enum_val(c->next_enum_val(), n, p); - (void) s->fe_add_enum_val(e); - } - } + /* + * Create a node representing one enumerator in an enum + * Add it to the enclosing scope (the enum scope) + */ + if (s != NULL && s->scope_node_type() == AST_Decl::NT_enum) { + c = AST_Enum::narrow_from_scope(s); + if (c != NULL) + e = idl_global->gen()->create_enum_val(c->next_enum_val(), n, p); + (void) s->fe_add_enum_val(e); + } + } break; -case 212: -#line 1672 "fe/idl.tao_yy" +case 249: +#line 1889 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceCommaSeen); } break; -case 213: -#line 1676 "fe/idl.tao_yy" +case 250: +#line 1893 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceExprSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceExprSeen); } break; -case 214: -#line 1680 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceQsSeen); - /* - * Remove sequence marker from scopes stack - */ - if (idl_global->scopes()->top() == NULL) - idl_global->scopes()->pop(); - /* - * Create a node representing a sequence - */ - if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { - idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); - tao_yyval.dcval = NULL; - } else if (tao_yyvsp[-5].dcval == NULL) { - tao_yyval.dcval = NULL; - } else { - AST_Type *tp = AST_Type::narrow_from_decl(tao_yyvsp[-5].dcval); - if (tp == NULL) - tao_yyval.dcval = NULL; - else { - tao_yyval.dcval = idl_global->gen()->create_sequence(tao_yyvsp[-2].exval, tp); - /* - * Add this AST_Sequence to the types defined in the global scope - */ - (void) idl_global->root() - ->fe_add_sequence(AST_Sequence::narrow_from_decl(tao_yyval.dcval)); - } - } - } +case 251: +#line 1897 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceQsSeen); + /* + * Remove sequence marker from scopes stack + */ + if (idl_global->scopes()->top() == NULL) + idl_global->scopes()->pop(); + /* + * Create a node representing a sequence + */ + if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { + idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); + tao_yyval.dcval = NULL; + } else if (tao_yyvsp[-5].dcval == NULL) { + tao_yyval.dcval = NULL; + } else { + AST_Type *tp = AST_Type::narrow_from_decl(tao_yyvsp[-5].dcval); + if (tp == NULL) + tao_yyval.dcval = NULL; + else { + tao_yyval.dcval = idl_global->gen()->create_sequence(tao_yyvsp[-2].exval, tp); + /* + * Add this AST_Sequence to the types defined in the global scope + */ + (void) idl_global->root() + ->fe_add_sequence(AST_Sequence::narrow_from_decl(tao_yyval.dcval)); + } + } + } break; -case 215: -#line 1711 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceQsSeen); - /* - * Remove sequence marker from scopes stack - */ - if (idl_global->scopes()->top() == NULL) - idl_global->scopes()->pop(); - /* - * Create a node representing a sequence - */ - if (tao_yyvsp[-1].dcval == NULL) - tao_yyval.dcval = NULL; - else { - AST_Type *tp = AST_Type::narrow_from_decl(tao_yyvsp[-1].dcval); - if (tp == NULL) - tao_yyval.dcval = NULL; +case 252: +#line 1928 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceQsSeen); + /* + * Remove sequence marker from scopes stack + */ + if (idl_global->scopes()->top() == NULL) + idl_global->scopes()->pop(); + /* + * Create a node representing a sequence + */ + if (tao_yyvsp[-1].dcval == NULL) + tao_yyval.dcval = NULL; + else { + AST_Type *tp = AST_Type::narrow_from_decl(tao_yyvsp[-1].dcval); + if (tp == NULL) + tao_yyval.dcval = NULL; else { - tao_yyval.dcval = - idl_global->gen()->create_sequence( - idl_global->gen()->create_expr((unsigned long) 0), - tp); - /* - * Add this AST_Sequence to the types defined in the global scope - */ - (void) idl_global->root() - ->fe_add_sequence(AST_Sequence::narrow_from_decl(tao_yyval.dcval)); - } - } - } + tao_yyval.dcval = + idl_global->gen()->create_sequence( + idl_global->gen()->create_expr((unsigned long) 0), + tp); + /* + * Add this AST_Sequence to the types defined in the global scope + */ + (void) idl_global->root() + ->fe_add_sequence(AST_Sequence::narrow_from_decl(tao_yyval.dcval)); + } + } + } break; -case 216: -#line 1744 "fe/idl.tao_yy" +case 253: +#line 1961 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceSeen); - /* - * Push a sequence marker on scopes stack - */ - idl_global->scopes()->push(NULL); - } + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceSeen); + /* + * Push a sequence marker on scopes stack + */ + idl_global->scopes()->push(NULL); + } break; -case 217: -#line 1752 "fe/idl.tao_yy" +case 254: +#line 1969 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceSqSeen); } break; -case 218: -#line 1756 "fe/idl.tao_yy" +case 255: +#line 1973 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_SequenceTypeSeen); - tao_yyval.dcval = tao_yyvsp[0].dcval; + idl_global->set_parse_state(IDL_GlobalData::PS_SequenceTypeSeen); + tao_yyval.dcval = tao_yyvsp[0].dcval; } break; -case 219: -#line 1765 "fe/idl.tao_yy" +case 256: +#line 1982 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StringSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StringSqSeen); } break; -case 220: -#line 1769 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_StringExprSeen); - } -break; -case 221: -#line 1773 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_StringQsSeen); - /* - * Create a node representing a string - */ - if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { - idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); - tao_yyval.dcval = NULL; - } else { - tao_yyval.dcval = idl_global->gen()->create_string(tao_yyvsp[-2].exval); - /* - * Add this AST_String to the types defined in the global scope - */ - (void) idl_global->root() - ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); - } - } -break; -case 222: -#line 1791 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_StringCompleted); - /* - * Create a node representing a string - */ - tao_yyval.dcval = - idl_global->gen()->create_string( - idl_global->gen()->create_expr((unsigned long) 0)); - /* - * Add this AST_String to the types defined in the global scope - */ - (void) idl_global->root() - ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); - } -break; -case 223: -#line 1809 "fe/idl.tao_yy" +case 257: +#line 1986 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StringSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StringExprSeen); } break; -case 224: -#line 1817 "fe/idl.tao_yy" +case 258: +#line 1990 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_StringQsSeen); + /* + * Create a node representing a string + */ + if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { + idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); + tao_yyval.dcval = NULL; + } else { + tao_yyval.dcval = idl_global->gen()->create_string(tao_yyvsp[-2].exval); + /* + * Add this AST_String to the types defined in the global scope + */ + (void) idl_global->root() + ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); + } + } +break; +case 259: +#line 2008 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StringSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StringCompleted); + /* + * Create a node representing a string + */ + tao_yyval.dcval = + idl_global->gen()->create_string( + idl_global->gen()->create_expr((unsigned long) 0)); + /* + * Add this AST_String to the types defined in the global scope + */ + (void) idl_global->root() + ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); } break; -case 225: -#line 1821 "fe/idl.tao_yy" +case 260: +#line 2026 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StringExprSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StringSeen); } break; -case 226: -#line 1825 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_StringQsSeen); - /* - * Create a node representing a string - */ - if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { - idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); - tao_yyval.dcval = NULL; - } else { - tao_yyval.dcval = idl_global->gen()->create_wstring(tao_yyvsp[-2].exval); - /* - * Add this AST_String to the types defined in the global scope - */ - (void) idl_global->root() - ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); - } - } +case 261: +#line 2034 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_StringSqSeen); + } break; -case 227: -#line 1843 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_StringCompleted); - /* - * Create a node representing a string - */ - tao_yyval.dcval = - idl_global->gen()->create_wstring( - idl_global->gen()->create_expr((unsigned long) 0)); - /* - * Add this AST_String to the types defined in the global scope - */ - (void) idl_global->root() +case 262: +#line 2038 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_StringExprSeen); + } +break; +case 263: +#line 2042 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_StringQsSeen); + /* + * Create a node representing a string + */ + if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { + idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); + tao_yyval.dcval = NULL; + } else { + tao_yyval.dcval = idl_global->gen()->create_wstring(tao_yyvsp[-2].exval); + /* + * Add this AST_String to the types defined in the global scope + */ + (void) idl_global->root() + ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); + } + } +break; +case 264: +#line 2060 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_StringCompleted); + /* + * Create a node representing a string + */ + tao_yyval.dcval = + idl_global->gen()->create_wstring( + idl_global->gen()->create_expr((unsigned long) 0)); + /* + * Add this AST_String to the types defined in the global scope + */ + (void) idl_global->root() ->fe_add_string(AST_String::narrow_from_decl(tao_yyval.dcval)); - } + } break; -case 228: -#line 1861 "fe/idl.tao_yy" +case 265: +#line 2078 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_StringSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_StringSeen); } break; -case 229: -#line 1868 "fe/idl.tao_yy" +case 266: +#line 2085 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ArrayIDSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_ArrayIDSeen); } break; -case 230: -#line 1872 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_ArrayCompleted); - /* - * Create a node representing an array - */ - if (tao_yyvsp[0].elval != NULL) { - tao_yyval.dcval = idl_global->gen()->create_array(new UTL_ScopedName(tao_yyvsp[-2].idval, NULL), - tao_yyvsp[0].elval->length(), tao_yyvsp[0].elval); - } - } +case 267: +#line 2089 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ArrayCompleted); + /* + * Create a node representing an array + */ + if (tao_yyvsp[0].elval != NULL) { + tao_yyval.dcval = idl_global->gen()->create_array(new UTL_ScopedName(tao_yyvsp[-2].idval, NULL), + tao_yyvsp[0].elval->length(), tao_yyvsp[0].elval); + } + } break; -case 231: -#line 1886 "fe/idl.tao_yy" +case 268: +#line 2103 "fe/idl.tao_yy" { - tao_yyval.elval = new UTL_ExprList(tao_yyvsp[-1].exval, tao_yyvsp[0].elval); - } + tao_yyval.elval = new UTL_ExprList(tao_yyvsp[-1].exval, tao_yyvsp[0].elval); + } break; -case 232: -#line 1893 "fe/idl.tao_yy" +case 269: +#line 2110 "fe/idl.tao_yy" { - if (tao_yyvsp[-1].elval == NULL) - tao_yyval.elval = new UTL_ExprList(tao_yyvsp[0].exval, NULL); - else { - tao_yyvsp[-1].elval->nconc(new UTL_ExprList(tao_yyvsp[0].exval, NULL)); - tao_yyval.elval = tao_yyvsp[-1].elval; - } - } + if (tao_yyvsp[-1].elval == NULL) + tao_yyval.elval = new UTL_ExprList(tao_yyvsp[0].exval, NULL); + else { + tao_yyvsp[-1].elval->nconc(new UTL_ExprList(tao_yyvsp[0].exval, NULL)); + tao_yyval.elval = tao_yyvsp[-1].elval; + } + } break; -case 233: -#line 1902 "fe/idl.tao_yy" +case 270: +#line 2119 "fe/idl.tao_yy" { - tao_yyval.elval = NULL; - } + tao_yyval.elval = NULL; + } break; -case 234: -#line 1909 "fe/idl.tao_yy" +case 271: +#line 2126 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DimSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DimSqSeen); } break; -case 235: -#line 1913 "fe/idl.tao_yy" +case 272: +#line 2130 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_DimExprSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_DimExprSeen); } break; -case 236: -#line 1917 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_DimQsSeen); - /* - * Array dimensions are expressions which must be coerced to - * positive integers - */ - if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { - idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); - tao_yyval.exval = NULL; - } else - tao_yyval.exval = tao_yyvsp[-2].exval; - } +case 273: +#line 2134 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_DimQsSeen); + /* + * Array dimensions are expressions which must be coerced to + * positive integers + */ + if (tao_yyvsp[-2].exval == NULL || tao_yyvsp[-2].exval->coerce(AST_Expression::EV_ulong) == NULL) { + idl_global->err()->coercion_error(tao_yyvsp[-2].exval, AST_Expression::EV_ulong); + tao_yyval.exval = NULL; + } else + tao_yyval.exval = tao_yyvsp[-2].exval; + } break; -case 237: -#line 1934 "fe/idl.tao_yy" +case 274: +#line 2151 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_AttrSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_AttrSeen); } break; -case 238: -#line 1938 "fe/idl.tao_yy" +case 275: +#line 2155 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_AttrTypeSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_AttrTypeSeen); } break; -case 239: -#line 1942 "fe/idl.tao_yy" +case 276: +#line 2159 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_DecllistActiveIterator *l = NULL; - AST_Attribute *a = NULL; - FE_Declarator *d = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_DecllistActiveIterator *l = NULL; + AST_Attribute *a = NULL; + FE_Declarator *d = NULL; + UTL_StrList *p = idl_global->pragmas(); - idl_global->set_parse_state(IDL_GlobalData::PS_AttrCompleted); - /* - * Create nodes representing attributes and add them to the - * enclosing scope - */ - if (s != NULL && tao_yyvsp[-2].dcval != NULL && tao_yyvsp[0].dlval != NULL) { - l = new UTL_DecllistActiveIterator(tao_yyvsp[0].dlval); - for (;!(l->is_done()); l->next()) { - d = l->item(); - if (d == NULL) - continue; - AST_Type *tp = d->compose(tao_yyvsp[-2].dcval); - if (tp == NULL) - continue; - a = idl_global->gen()->create_attribute(tao_yyvsp[-5].bval, tp, d->name(), p); - /* - * Add one attribute to the enclosing scope - */ - (void) s->fe_add_attribute(a); - } - delete l; - } - } + idl_global->set_parse_state(IDL_GlobalData::PS_AttrCompleted); + /* + * Create nodes representing attributes and add them to the + * enclosing scope + */ + if (s != NULL && tao_yyvsp[-2].dcval != NULL && tao_yyvsp[0].dlval != NULL) { + l = new UTL_DecllistActiveIterator(tao_yyvsp[0].dlval); + for (;!(l->is_done()); l->next()) { + d = l->item(); + if (d == NULL) + continue; + AST_Type *tp = d->compose(tao_yyvsp[-2].dcval); + if (tp == NULL) + continue; + a = idl_global->gen()->create_attribute(tao_yyvsp[-5].bval, tp, d->name(), p); + /* + * Add one attribute to the enclosing scope + */ + (void) s->fe_add_attribute(a); + } + delete l; + } + } break; -case 240: -#line 1976 "fe/idl.tao_yy" +case 277: +#line 2193 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_AttrROSeen); - tao_yyval.bval = I_TRUE; - } + idl_global->set_parse_state(IDL_GlobalData::PS_AttrROSeen); + tao_yyval.bval = I_TRUE; + } break; -case 241: -#line 1981 "fe/idl.tao_yy" +case 278: +#line 2198 "fe/idl.tao_yy" { - tao_yyval.bval = I_FALSE; - } + tao_yyval.bval = I_FALSE; + } break; -case 242: -#line 1988 "fe/idl.tao_yy" +case 279: +#line 2205 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptSeen); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptSeen); + } break; -case 243: -#line 1992 "fe/idl.tao_yy" +case 280: +#line 2209 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); - AST_Exception *e = NULL; - UTL_StrList *p = idl_global->pragmas(); - AST_Decl *v = NULL; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = new UTL_ScopedName(tao_yyvsp[0].idval, NULL); + AST_Exception *e = NULL; + UTL_StrList *p = idl_global->pragmas(); + AST_Decl *v = NULL; ACE_UNUSED_ARG (v); - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptIDSeen); - /* - * Create a node representing an exception and add it to - * the enclosing scope - */ - if (s != NULL) { - e = idl_global->gen()->create_exception(n, p); - (void) s->fe_add_exception(e); - } - /* - * Push the exception scope on the scope stack - */ - idl_global->scopes()->push(e); - } -break; -case 244: -#line 2016 "fe/idl.tao_yy" -{ - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptIDSeen); + /* + * Create a node representing an exception and add it to + * the enclosing scope + */ + if (s != NULL) { + e = idl_global->gen()->create_exception(n, p); + (void) s->fe_add_exception(e); + } + /* + * Push the exception scope on the scope stack + */ + idl_global->scopes()->push(e); } break; -case 245: -#line 2020 "fe/idl.tao_yy" +case 281: +#line 2233 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptSqSeen); + } +break; +case 282: +#line 2237 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptBodySeen); + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptBodySeen); } break; -case 246: -#line 2024 "fe/idl.tao_yy" +case 283: +#line 2241 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_ExceptQsSeen); - /* - * Done with this exception. Pop its scope from the scope stack - */ - idl_global->scopes()->pop(); - } + idl_global->set_parse_state(IDL_GlobalData::PS_ExceptQsSeen); + /* + * Done with this exception. Pop its scope from the scope stack + */ + idl_global->scopes()->pop(); + } break; -case 247: -#line 2036 "fe/idl.tao_yy" +case 284: +#line 2253 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpTypeSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpTypeSeen); } break; -case 248: -#line 2040 "fe/idl.tao_yy" +case 285: +#line 2257 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - UTL_ScopedName *n = - new UTL_ScopedName(new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE), NULL); - AST_Operation *o = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + UTL_ScopedName *n = + new UTL_ScopedName(new Identifier(tao_yyvsp[0].strval, 1, 0, I_FALSE), NULL); + AST_Operation *o = NULL; + UTL_StrList *p = idl_global->pragmas(); - idl_global->set_parse_state(IDL_GlobalData::PS_OpIDSeen); - /* - * Create a node representing an operation on an interface - * and add it to its enclosing scope - */ - if (s != NULL && tao_yyvsp[-2].dcval != NULL) { - AST_Type *tp = AST_Type::narrow_from_decl(tao_yyvsp[-2].dcval); + idl_global->set_parse_state(IDL_GlobalData::PS_OpIDSeen); + /* + * Create a node representing an operation on an interface + * and add it to its enclosing scope + */ + if (s != NULL && tao_yyvsp[-2].dcval != NULL) { + AST_Type *tp = AST_Type::narrow_from_decl(tao_yyvsp[-2].dcval); if (tp == NULL) { idl_global->err()->not_a_type(tao_yyvsp[-2].dcval); } else if (tp->node_type() == AST_Decl::NT_except) { idl_global->err()->not_a_type(tao_yyvsp[-2].dcval); } else { - o = idl_global->gen()->create_operation(tp, tao_yyvsp[-3].ofval, n, p); - (void) s->fe_add_operation(o); - } - } - /* - * Push the operation scope onto the scopes stack - */ - idl_global->scopes()->push(o); - } + o = idl_global->gen()->create_operation(tp, tao_yyvsp[-3].ofval, n, p); + (void) s->fe_add_operation(o); + } + } + /* + * Push the operation scope onto the scopes stack + */ + idl_global->scopes()->push(o); + } break; -case 249: -#line 2069 "fe/idl.tao_yy" +case 286: +#line 2286 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpParsCompleted); + idl_global->set_parse_state(IDL_GlobalData::PS_OpParsCompleted); } break; -case 250: -#line 2073 "fe/idl.tao_yy" +case 287: +#line 2290 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseCompleted); + idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseCompleted); } break; -case 251: -#line 2077 "fe/idl.tao_yy" +case 288: +#line 2294 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Operation *o = NULL; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Operation *o = NULL; - idl_global->set_parse_state(IDL_GlobalData::PS_OpCompleted); - /* - * Add exceptions and context to the operation - */ - if (s != NULL && s->scope_node_type() == AST_Decl::NT_op) { - o = AST_Operation::narrow_from_scope(s); + idl_global->set_parse_state(IDL_GlobalData::PS_OpCompleted); + /* + * Add exceptions and context to the operation + */ + if (s != NULL && s->scope_node_type() == AST_Decl::NT_op) { + o = AST_Operation::narrow_from_scope(s); - if (tao_yyvsp[-2].nlval != NULL && o != NULL) - (void) o->fe_add_exceptions(tao_yyvsp[-2].nlval); - if (tao_yyvsp[0].slval != NULL) - (void) o->fe_add_context(tao_yyvsp[0].slval); - } - /* - * Done with this operation. Pop its scope from the scopes stack - */ - idl_global->scopes()->pop(); - } + if (tao_yyvsp[-2].nlval != NULL && o != NULL) + (void) o->fe_add_exceptions(tao_yyvsp[-2].nlval); + if (tao_yyvsp[0].slval != NULL) + (void) o->fe_add_context(tao_yyvsp[0].slval); + } + /* + * Done with this operation. Pop its scope from the scopes stack + */ + idl_global->scopes()->pop(); + } break; -case 252: -#line 2102 "fe/idl.tao_yy" +case 289: +#line 2319 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpAttrSeen); - tao_yyval.ofval = AST_Operation::OP_oneway; - } + idl_global->set_parse_state(IDL_GlobalData::PS_OpAttrSeen); + tao_yyval.ofval = AST_Operation::OP_oneway; + } break; -case 253: -#line 2107 "fe/idl.tao_yy" +case 290: +#line 2324 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpAttrSeen); - tao_yyval.ofval = AST_Operation::OP_idempotent; - } + idl_global->set_parse_state(IDL_GlobalData::PS_OpAttrSeen); + tao_yyval.ofval = AST_Operation::OP_idempotent; + } break; -case 254: -#line 2112 "fe/idl.tao_yy" +case 291: +#line 2329 "fe/idl.tao_yy" { - tao_yyval.ofval = AST_Operation::OP_noflags; - } + tao_yyval.ofval = AST_Operation::OP_noflags; + } break; -case 256: -#line 2120 "fe/idl.tao_yy" +case 293: +#line 2337 "fe/idl.tao_yy" { - tao_yyval.dcval = - idl_global->scopes()->bottom() - ->lookup_primitive_type(AST_Expression::EV_void); - } + tao_yyval.dcval = + idl_global->scopes()->bottom() + ->lookup_primitive_type(AST_Expression::EV_void); + } break; -case 257: -#line 2129 "fe/idl.tao_yy" +case 294: +#line 2346 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpSqSeen); + cerr << "error in " << idl_global->filename()->get_string() + << " line " << idl_global->lineno() << ":\n" ; + cerr << "Sorry, I (TAO_IDL) can't handle init yet\n"; } break; -case 258: -#line 2133 "fe/idl.tao_yy" +case 295: +#line 2356 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpQsSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpSqSeen); } break; -case 259: -#line 2137 "fe/idl.tao_yy" +case 296: +#line 2360 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpQsSeen); } break; -case 260: -#line 2142 "fe/idl.tao_yy" +case 297: +#line 2364 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpQsSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpSqSeen); } break; -case 262: -#line 2152 "fe/idl.tao_yy" +case 298: +#line 2369 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpParCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpQsSeen); } break; -case 265: -#line 2161 "fe/idl.tao_yy" +case 300: +#line 2379 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpParDirSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpParCommaSeen); } break; -case 266: -#line 2165 "fe/idl.tao_yy" +case 303: +#line 2388 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpParTypeSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpParDirSeen); } break; -case 267: -#line 2169 "fe/idl.tao_yy" +case 304: +#line 2392 "fe/idl.tao_yy" +{ + idl_global->set_parse_state(IDL_GlobalData::PS_OpParTypeSeen); + } +break; +case 305: +#line 2396 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Argument *a = NULL; - UTL_StrList *p = idl_global->pragmas(); + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Argument *a = NULL; + UTL_StrList *p = idl_global->pragmas(); - idl_global->set_parse_state(IDL_GlobalData::PS_OpParDeclSeen); - /* - * Create a node representing an argument to an operation - * Add it to the enclosing scope (the operation scope) - */ - if (tao_yyvsp[-2].dcval != NULL && tao_yyvsp[0].deval != NULL && s != NULL) { - AST_Type *tp = tao_yyvsp[0].deval->compose(tao_yyvsp[-2].dcval); - if (tp != NULL) { - a = idl_global->gen()->create_argument(tao_yyvsp[-4].dival, tp, tao_yyvsp[0].deval->name(), p); - (void) s->fe_add_argument(a); - } - } - } + idl_global->set_parse_state(IDL_GlobalData::PS_OpParDeclSeen); + /* + * Create a node representing an argument to an operation + * Add it to the enclosing scope (the operation scope) + */ + if (tao_yyvsp[-2].dcval != NULL && tao_yyvsp[0].deval != NULL && s != NULL) { + AST_Type *tp = tao_yyvsp[0].deval->compose(tao_yyvsp[-2].dcval); + if (tp != NULL) { + a = idl_global->gen()->create_argument(tao_yyvsp[-4].dival, tp, tao_yyvsp[0].deval->name(), p); + (void) s->fe_add_argument(a); + } + } + } break; -case 268: -#line 2191 "fe/idl.tao_yy" +case 306: +#line 2418 "fe/idl.tao_yy" { - tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); - } + tao_yyval.dcval = idl_global->scopes()->bottom()->lookup_primitive_type(tao_yyvsp[0].etval); + } break; -case 270: -#line 2196 "fe/idl.tao_yy" +case 308: +#line 2423 "fe/idl.tao_yy" { - UTL_Scope *s = idl_global->scopes()->top_non_null(); - AST_Decl *d = NULL; + UTL_Scope *s = idl_global->scopes()->top_non_null(); + AST_Decl *d = NULL; - if (s != NULL) - d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE); - if (d == NULL) - idl_global->err()->lookup_error(tao_yyvsp[0].idlist); - tao_yyval.dcval = d; - } + if (s != NULL) + d = s->lookup_by_name(tao_yyvsp[0].idlist, I_TRUE); + if (d == NULL) + idl_global->err()->lookup_error(tao_yyvsp[0].idlist); + tao_yyval.dcval = d; + } break; -case 271: -#line 2210 "fe/idl.tao_yy" +case 309: +#line 2437 "fe/idl.tao_yy" { - tao_yyval.dival = AST_Argument::dir_IN; - } + tao_yyval.dival = AST_Argument::dir_IN; + } break; -case 272: -#line 2214 "fe/idl.tao_yy" +case 310: +#line 2441 "fe/idl.tao_yy" { - tao_yyval.dival = AST_Argument::dir_OUT; - } + tao_yyval.dival = AST_Argument::dir_OUT; + } break; -case 273: -#line 2218 "fe/idl.tao_yy" +case 311: +#line 2445 "fe/idl.tao_yy" { - tao_yyval.dival = AST_Argument::dir_INOUT; - } + tao_yyval.dival = AST_Argument::dir_INOUT; + } break; -case 274: -#line 2225 "fe/idl.tao_yy" +case 312: +#line 2452 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseSeen); } break; -case 275: -#line 2229 "fe/idl.tao_yy" +case 313: +#line 2456 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseSqSeen); } break; -case 276: -#line 2234 "fe/idl.tao_yy" +case 314: +#line 2461 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseQsSeen); - tao_yyval.nlval = tao_yyvsp[-1].nlval; - } + idl_global->set_parse_state(IDL_GlobalData::PS_OpRaiseQsSeen); + tao_yyval.nlval = tao_yyvsp[-1].nlval; + } break; -case 277: -#line 2239 "fe/idl.tao_yy" +case 315: +#line 2466 "fe/idl.tao_yy" { - tao_yyval.nlval = NULL; - } + tao_yyval.nlval = NULL; + } break; -case 278: -#line 2246 "fe/idl.tao_yy" +case 316: +#line 2473 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpContextSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpContextSeen); } break; -case 279: -#line 2250 "fe/idl.tao_yy" +case 317: +#line 2477 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpContextSqSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpContextSqSeen); } break; -case 280: -#line 2255 "fe/idl.tao_yy" +case 318: +#line 2482 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpContextQsSeen); - tao_yyval.slval = tao_yyvsp[-1].slval; - } + idl_global->set_parse_state(IDL_GlobalData::PS_OpContextQsSeen); + tao_yyval.slval = tao_yyvsp[-1].slval; + } break; -case 281: -#line 2260 "fe/idl.tao_yy" +case 319: +#line 2487 "fe/idl.tao_yy" { - tao_yyval.slval = NULL; - } + tao_yyval.slval = NULL; + } break; -case 282: -#line 2267 "fe/idl.tao_yy" +case 320: +#line 2494 "fe/idl.tao_yy" { - tao_yyval.slval = new UTL_StrList(tao_yyvsp[-1].sval, tao_yyvsp[0].slval); - } + tao_yyval.slval = new UTL_StrList(tao_yyvsp[-1].sval, tao_yyvsp[0].slval); + } break; -case 283: -#line 2275 "fe/idl.tao_yy" +case 321: +#line 2502 "fe/idl.tao_yy" { - idl_global->set_parse_state(IDL_GlobalData::PS_OpContextCommaSeen); + idl_global->set_parse_state(IDL_GlobalData::PS_OpContextCommaSeen); } break; -case 284: -#line 2279 "fe/idl.tao_yy" +case 322: +#line 2506 "fe/idl.tao_yy" { - if (tao_yyvsp[-3].slval == NULL) - tao_yyval.slval = new UTL_StrList(tao_yyvsp[0].sval, NULL); - else { - tao_yyvsp[-3].slval->nconc(new UTL_StrList(tao_yyvsp[0].sval, NULL)); - tao_yyval.slval = tao_yyvsp[-3].slval; - } - } + if (tao_yyvsp[-3].slval == NULL) + tao_yyval.slval = new UTL_StrList(tao_yyvsp[0].sval, NULL); + else { + tao_yyvsp[-3].slval->nconc(new UTL_StrList(tao_yyvsp[0].sval, NULL)); + tao_yyval.slval = tao_yyvsp[-3].slval; + } + } break; -case 285: -#line 2288 "fe/idl.tao_yy" +case 323: +#line 2515 "fe/idl.tao_yy" { - tao_yyval.slval = NULL; - } + tao_yyval.slval = NULL; + } break; -#line 3303 "y.tab.cpp" +#line 3619 "y.tab.cpp" } tao_yyssp -= tao_yym; tao_yystate = *tao_yyssp; diff --git a/TAO/TAO_IDL/fe/y.tab.h b/TAO/TAO_IDL/fe/y.tab.h index f68f2acb310..9072bf04bde 100644 --- a/TAO/TAO_IDL/fe/y.tab.h +++ b/TAO/TAO_IDL/fe/y.tab.h @@ -35,39 +35,49 @@ #define IDL_RAISES 290 #define IDL_CONTEXT 291 #define IDL_NATIVE 292 -#define IDL_INTEGER_LITERAL 293 -#define IDL_STRING_LITERAL 294 -#define IDL_CHARACTER_LITERAL 295 -#define IDL_FLOATING_PT_LITERAL 296 -#define IDL_TRUETOK 297 -#define IDL_FALSETOK 298 -#define IDL_SCOPE_DELIMITOR 299 -#define IDL_LEFT_SHIFT 300 -#define IDL_RIGHT_SHIFT 301 +#define IDL_ABSTRACT 293 +#define IDL_CUSTOM 294 +#define IDL_INIT 295 +#define IDL_PRIVATE 296 +#define IDL_PUBLIC 297 +#define IDL_SUPPORTS 298 +#define IDL_TRUNCATABLE 299 +#define IDL_VALUETYPE 300 +#define IDL_INTEGER_LITERAL 301 +#define IDL_STRING_LITERAL 302 +#define IDL_CHARACTER_LITERAL 303 +#define IDL_FLOATING_PT_LITERAL 304 +#define IDL_TRUETOK 305 +#define IDL_FALSETOK 306 +#define IDL_SCOPE_DELIMITOR 307 +#define IDL_LEFT_SHIFT 308 +#define IDL_RIGHT_SHIFT 309 typedef union { - AST_Decl *dcval; /* Decl value */ - UTL_StrList *slval; /* String list */ - UTL_NameList *nlval; /* Name list */ - UTL_ExprList *elval; /* Expression list */ - UTL_LabelList *llval; /* Label list */ - UTL_DeclList *dlval; /* Declaration list */ - FE_InterfaceHeader *ihval; /* Interface header */ - AST_Expression *exval; /* Expression value */ - AST_UnionLabel *ulval; /* Union label */ - AST_Field *ffval; /* Field value */ - AST_Expression::ExprType etval; /* Expression type */ - AST_Argument::Direction dival; /* Argument direction */ - AST_Operation::Flags ofval; /* Operation flags */ - FE_Declarator *deval; /* Declarator value */ - idl_bool bval; /* Boolean value */ - long ival; /* Long value */ - double dval; /* Double value */ - float fval; /* Float value */ - char cval; /* Char value */ + AST_Decl *dcval; /* Decl value */ + UTL_StrList *slval; /* String list */ + UTL_NameList *nlval; /* Name list */ + UTL_ExprList *elval; /* Expression list */ + UTL_LabelList *llval; /* Label list */ + UTL_DeclList *dlval; /* Declaration list */ + FE_InterfaceHeader *ihval; /* Interface header */ + FE_obv_header *vhval; /* Valuetype header */ + AST_Expression *exval; /* Expression value */ + AST_UnionLabel *ulval; /* Union label */ + AST_Field *ffval; /* Field value */ + AST_Field::Visibility vival; /* N/A, pub or priv */ + AST_Expression::ExprType etval; /* Expression type */ + AST_Argument::Direction dival; /* Argument direction */ + AST_Operation::Flags ofval; /* Operation flags */ + FE_Declarator *deval; /* Declarator value */ + idl_bool bval; /* Boolean value */ + long ival; /* Long value */ + double dval; /* Double value */ + float fval; /* Float value */ + char cval; /* Char value */ - String *sval; /* String value */ - char *strval; /* char * value */ - Identifier *idval; /* Identifier */ - UTL_IdList *idlist; /* Identifier list */ + String *sval; /* String value */ + char *strval; /* char * value */ + Identifier *idval; /* Identifier */ + UTL_IdList *idlist; /* Identifier list */ } TAO_YYSTYPE; extern TAO_YYSTYPE tao_yylval; |