summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-08-21 16:19:45 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-08-21 16:19:45 +0000
commit40d417f618892af40bda0dcd82bd1f4c763e70d8 (patch)
treef2cf949cc3ea6f4c9ffd1d97017b62236cc544fd
parent5a0210b32a2f445651b2f5541a5c8dfaf4cd6d50 (diff)
downloadATCD-40d417f618892af40bda0dcd82bd1f4c763e70d8.tar.gz
ChangeLogTag: Fri Aug 21 13:51:19 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--modules/TAO/TAO_IDL/fe/idl.yy6914
-rw-r--r--modules/TAO/TAO_IDL/fe/y.tab.cpp10065
-rw-r--r--modules/TAO/TAO_IDL/fe/y.tab.h269
3 files changed, 0 insertions, 17248 deletions
diff --git a/modules/TAO/TAO_IDL/fe/idl.yy b/modules/TAO/TAO_IDL/fe/idl.yy
deleted file mode 100644
index c8ee72d9c59..00000000000
--- a/modules/TAO/TAO_IDL/fe/idl.yy
+++ /dev/null
@@ -1,6914 +0,0 @@
-/* $Id$ */
-
-/*
-
-COPYRIGHT
-
-Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
-States of America. All Rights Reserved.
-
-This product is protected by copyright and distributed under the following
-license restricting its use.
-
-The Interface Definition Language Compiler Front End (CFE) is made
-available for your use provided that you include this license and copyright
-notice on all media and documentation and the software program in whichlong
-this product is incorporated in whole or part. You may copy and extend
-functionality (but may not remove functionality) of the Interface
-Definition Language CFE without charge, but you are not authorized to
-license or distribute it to anyone else except as part of a product or
-program developed by you or with the express written consent of Sun
-Microsystems, Inc. ("Sun").
-
-The names of Sun Microsystems, Inc. and any of its subsidiaries or
-affiliates may not be used in advertising or publicity pertaining to
-distribution of Interface Definition Language CFE as permitted herein.
-
-This license is effective until terminated by Sun for failure to comply
-with this license. Upon termination, you shall destroy or return all code
-and documentation for the Interface Definition Language CFE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
-ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
-FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
-DEALING, USAGE OR TRADE PRACTICE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
-ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
-TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
-
-SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
-RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
-INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
-
-IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
-ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
-DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-Use, duplication, or disclosure by the government is subject to
-restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
-Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
-52.227-19.
-
-Sun, Sun Microsystems and the Sun logo are trademarks or registered
-trademarks of Sun Microsystems, Inc.
-
-SunSoft, Inc.
-2550 Garcia Avenue
-Mountain View, California 94043
-
-NOTE:
-
-SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
-trademarks or registered trademarks of Sun Microsystems, Inc.
-
- */
-
-/*
- * idl.yy - YACC grammar for IDL 3.x
- */
-
-/* Declarations */
-
-%{
-#include "ast_argument.h"
-#include "ast_array.h"
-#include "ast_attribute.h"
-#include "ast_field.h"
-#include "ast_expression.h"
-#include "ast_operation.h"
-#include "ast_generator.h"
-#include "ast_module.h"
-#include "ast_valuebox.h"
-#include "ast_valuetype.h"
-#include "ast_valuetype_fwd.h"
-#include "ast_eventtype.h"
-#include "ast_eventtype_fwd.h"
-#include "ast_component.h"
-#include "ast_component_fwd.h"
-#include "ast_home.h"
-#include "ast_template_interface.h"
-#include "ast_porttype.h"
-#include "ast_connector.h"
-#include "ast_instantiated_connector.h"
-#include "ast_uses.h"
-#include "ast_constant.h"
-#include "ast_union.h"
-#include "ast_union_fwd.h"
-#include "ast_structure_fwd.h"
-#include "ast_extern.h"
-#include "ast_enum.h"
-#include "ast_root.h"
-#include "ast_sequence.h"
-#include "ast_string.h"
-#include "ast_factory.h"
-#include "ast_exception.h"
-#include "fe_declarator.h"
-#include "fe_interface_header.h"
-#include "fe_template_interface_header.h"
-#include "fe_instantiated_interface_header.h"
-#include "fe_obv_header.h"
-#include "fe_event_header.h"
-#include "fe_component_header.h"
-#include "fe_home_header.h"
-#include "fe_utils.h"
-#include "utl_identifier.h"
-#include "utl_err.h"
-#include "utl_string.h"
-#include "utl_strlist.h"
-#include "utl_namelist.h"
-#include "utl_exprlist.h"
-#include "utl_labellist.h"
-#include "utl_decllist.h"
-#include "global_extern.h"
-#include "nr_extern.h"
-
-#if (defined(apollo) || defined(hpux)) && defined(__cplusplus)
-extern "C" int yywrap();
-#endif // (defined(apollo) || defined(hpux)) && defined(__cplusplus)
-
-
-void yyerror (const char *);
-int yylex (void);
-extern "C" int yywrap (void);
-extern char yytext[];
-extern int yyleng;
-AST_Decl *tao_enum_constant_decl = 0;
-#define YYDEBUG_LEXER_TEXT (yytext[yyleng] = '\0', yytext)
-// Force the pretty debugging code to compile.
-#define YYDEBUG 1
-%}
-
-/*
- * Declare the type of values in the grammar
- */
-
-%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 */
- FE_Template_InterfaceHeader *thval; /* Template interface hdr */
- FE_OBVHeader *vhval; /* Valuetype header */
- FE_EventHeader *ehval; /* Event header */
- FE_ComponentHeader *chval; /* Component header */
- FE_HomeHeader *hhval; /* Home 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 */
- ACE_CDR::Boolean bval; /* Boolean value */
- ACE_CDR::Long ival; /* Long value */
- ACE_CDR::ULong uival; /* Unsigned long value */
- ACE_CDR::Double dval; /* Double value */
- ACE_CDR::Float fval; /* Float value */
- ACE_CDR::Char cval; /* Char value */
- ACE_CDR::WChar wcval; /* WChar value */
- UTL_String *sval; /* String value */
- char *wsval; /* WString value */
- char *strval; /* char * value */
- Identifier *idval; /* Identifier */
- UTL_IdList *idlist; /* Identifier list */
- AST_Decl::NodeType ntval; /* Node type value */
- FE_Utils::T_Param_Info *pival; /* Template interface param */
- FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */
- FE_Utils::T_Ref_Info *trval; /* Template interface info */
- FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */
- FE_Utils::T_Inst_Info *tival; /* Template instantiation */
- FE_Utils::T_Port_Info *ptval; /* Porttype reference */
-}
-
-/*
- * Token types: These are returned by the lexer
- */
-
-%token <strval> IDENTIFIER
-
-%token IDL_CONST
-%token IDL_MODULE
-%token IDL_INTERFACE
-%token IDL_TYPEDEF
-%token IDL_LONG
-%token IDL_SHORT
-%token IDL_UNSIGNED
-%token IDL_DOUBLE
-%token IDL_FLOAT
-%token IDL_CHAR
-%token IDL_WCHAR
-%token IDL_OCTET
-%token IDL_BOOLEAN
-%token IDL_FIXED
-%token IDL_ANY
-%token IDL_OBJECT
-%token IDL_STRUCT
-%token IDL_UNION
-%token IDL_SWITCH
-%token IDL_ENUM
-%token IDL_SEQUENCE
-%token IDL_STRING
-%token IDL_WSTRING
-%token IDL_EXCEPTION
-%token IDL_CASE
-%token IDL_DEFAULT
-%token IDL_READONLY
-%token IDL_ATTRIBUTE
-%token IDL_ONEWAY
-%token IDL_IDEMPOTENT
-%token IDL_VOID
-%token IDL_IN
-%token IDL_OUT
-%token IDL_INOUT
-%token IDL_RAISES
-%token IDL_CONTEXT
-%token IDL_NATIVE
-%token IDL_LOCAL
- /* OBV tokens */
-%token IDL_ABSTRACT
-%token IDL_CUSTOM
-%token IDL_FACTORY
-%token IDL_PRIVATE
-%token IDL_PUBLIC
-%token IDL_SUPPORTS
-%token IDL_TRUNCATABLE
-%token IDL_VALUETYPE
- /* Component tokens */
-%token IDL_COMPONENT
-%token IDL_CONSUMES
-%token IDL_EMITS
-%token IDL_EVENTTYPE
-%token IDL_FINDER
-%token IDL_GETRAISES
-%token IDL_HOME
-%token IDL_IMPORT
-%token IDL_MULTIPLE
-%token IDL_PRIMARYKEY
-%token IDL_PROVIDES
-%token IDL_PUBLISHES
-%token IDL_SETRAISES
-%token IDL_TYPEID
-%token IDL_TYPEPREFIX
-%token IDL_USES
-%token IDL_MANAGES
- /* Extended ports tokens */
-%token IDL_TYPENAME
-%token IDL_PRIMITIVE
-%token IDL_PORT
-%token IDL_MIRRORPORT
-%token IDL_PORTTYPE
-%token IDL_CONNECTOR
-%token IDL_CONCAT
-
-%token <ival> IDL_INTEGER_LITERAL
-%token <uival> IDL_UINTEGER_LITERAL
-%token <sval> IDL_STRING_LITERAL
-%token <cval> IDL_CHARACTER_LITERAL
-%token <dval> IDL_FLOATING_PT_LITERAL
-%token IDL_TRUETOK
-%token IDL_FALSETOK
-
-%token <strval> IDL_SCOPE_DELIMITOR
-%token IDL_LEFT_SHIFT
-%token IDL_RIGHT_SHIFT
-%token <wcval> IDL_WCHAR_LITERAL
-%token <wsval> IDL_WSTRING_LITERAL
-
-/*
- * These are production names:
- */
-
-%type <dcval> type_spec simple_type_spec constructed_type_spec
-%type <dcval> template_type_spec sequence_type_spec string_type_spec
-%type <dcval> struct_type enum_type switch_type_spec union_type
-%type <dcval> array_declarator op_type_spec seq_head wstring_type_spec
-%type <dcval> param_type_spec connector_inst_spec
-
-%type <idlist> scoped_name interface_type component_inheritance_spec
-%type <idlist> home_inheritance_spec primary_key_spec
-
-%type <slval> opt_context at_least_one_string_literal
-%type <slval> string_literals template_param_refs
-%type <slval> at_least_one_template_param_ref
-
-%type <nlval> at_least_one_scoped_name scoped_names inheritance_spec
-%type <nlval> opt_raises opt_getraises opt_setraises supports_spec
-
-%type <elval> at_least_one_array_dim array_dims
-
-%type <llval> at_least_one_case_label case_labels
-
-%type <dlval> at_least_one_declarator declarators
-%type <dlval> at_least_one_simple_declarator simple_declarators
-
-%type <ihval> interface_header
-
-%type <vhval> value_header
-
-%type <chval> component_header
-
-%type <hhval> home_header
-
-%type <ehval> event_rest_of_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
-
-%type <ulval> case_label
-
-%type <ffval> element_spec
-
-%type <etval> const_type integer_type char_type boolean_type
-%type <etval> floating_pt_type fixed_type any_type signed_int
-%type <etval> unsigned_int base_type_spec octet_type object_type
-
-%type <dival> direction
-
-%type <ofval> opt_op_attribute
-
-%type <deval> declarator simple_declarator complex_declarator
-
-%type <bval> opt_truncatable opt_multiple uses_opt_multiple
-
-%type <idval> interface_decl value_decl union_decl struct_decl id
-%type <idval> event_header event_plain_header event_custom_header
-%type <idval> event_abs_header
-
-%type <ival> type_dcl
-
-%type <ntval> type_classifier
-
-%type <pival> template_param
-
-%type <plval> template_params at_least_one_template_param
-%type <plval> opt_template_params
-
-%type <sval> template_param_ref
-
-%type <trval> template_ref
-
-%type <rlval> template_refs at_least_one_template_ref
-%type <rlval> template_inheritance_spec
-
-%type <thval> template_interface_header
-
-%type <tival> template_inst
-
-%type <ptval> template_ref_decl
-%%
-
-/*
- * Production starts here.
- */
-start : definitions ;
-
-definitions
- : definitions definition
- | /* EMPTY */
- ;
-
-definition
- : type_dcl
- {
-// definition : type_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | typeid_dcl
- {
-// | typeid_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | typeprefix_dcl
- {
-// | typeprefix_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | const_dcl
- {
-// | const_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | exception
- {
-// | exception
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | interface_def
- {
-// | interface_def
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | template_interface_def
- {
-// | template_interface_def
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | module
- {
-// | module
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | value_def
- {
-// | value_def
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | component
- {
-// | component
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | home_decl
- {
-// | home_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | event
- {
-// | event
- idl_global->set_parse_state (IDL_GlobalData::PS_EventDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | porttype_decl
- {
-// | porttype_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | connector_decl
- {
-// | connector_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | error
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- yyerrok;
- }
- ;
-
-module : IDL_MODULE
- {
-// module : IDL_MODULE
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSeen);
- }
- IDENTIFIER
- {
-// IDENTIFIER
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
- UTL_ScopedName n (&id,
- 0);
- AST_Module *m = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleIDSeen);
- /*
- * Make a new module and add it to the enclosing scope
- */
- if (s != 0)
- {
- m = idl_global->gen ()->create_module (s,
- &n);
- (void) s->fe_add_module (m);
- }
- /*
- * Push it on the stack
- */
- idl_global->scopes ().push (m);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
- }
- definitions
- {
-// definitions
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleQsSeen);
- /*
- * Finished with this module - pop it from the scope stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-interface_def
- : interface
- | interface_forward
- ;
-
-interface :
- interface_header
- {
-// interface : interface_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Interface *i = 0;
-
- /*
- * Make a new interface node and add it to its enclosing scope.
- */
- if (s != 0 && $1 != 0)
- {
- i =
- idl_global->gen ()->create_interface (
- $1->name (),
- $1->inherits (),
- $1->n_inherits (),
- $1->inherits_flat (),
- $1->n_inherits_flat (),
- $1->is_local (),
- $1->is_abstract ()
- );
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the interface to its definition scope.
- */
- (void) s->fe_add_interface (i);
-
- // This FE_InterfaceHeader class isn't destroyed with the AST.
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (i);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
- }
- exports
- {
-// 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
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-interface_decl:
- IDL_INTERFACE
- {
-// interface_decl : IDL_INTERFACE
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceIDSeen);
- $$ = $3;
- }
- ;
-
-interface_header :
- interface_decl inheritance_spec
- {
-// interface_header : interface_decl inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
-
- if ($2 != 0 && $2->truncatable ())
- {
- idl_global->err ()->syntax_error (
- IDL_GlobalData::PS_InheritColonSeen
- );
- }
-
- /*
- * 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
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ($1, 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_InterfaceHeader (n,
- $2,
- false,
- false,
- true),
- 1);
-
- if (0 != $2)
- {
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- }
- |
- IDL_LOCAL interface_decl inheritance_spec
- {
-// | IDL_LOCAL interface_decl inheritance_spec
- 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
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ($2, 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_InterfaceHeader (n,
- $3,
- true,
- false,
- true),
- 1);
-
- if (0 != $3)
- {
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- }
- |
- IDL_ABSTRACT interface_decl inheritance_spec
- {
-// | IDL_ABSTRACT interface_decl inheritance_spec
- 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
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ($2, 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_InterfaceHeader (n,
- $3,
- false,
- true,
- true),
- 1);
-
- if (0 != $3)
- {
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- }
- ;
-
-inheritance_spec
- : ':' opt_truncatable
- {
-// inheritance_spec : ':' opt_truncatable
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
- }
- at_least_one_scoped_name
- {
-// at_least_one_scoped_name
- $4->truncatable ($2);
- $$ = $4;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-value_def
- : valuetype
- | value_abs_decl
- | value_forward_decl
- | value_box_decl
- ;
-
-valuetype
- : IDL_CUSTOM value_concrete_decl
- {
-// valuetype : IDL_CUSTOM value_concrete_decl
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" custom yet\n")));
- }
- | value_concrete_decl
- ;
-
-value_concrete_decl :
- value_header
- {
-// value_concrete_decl : value_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_ValueType *v = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && $1 != 0)
- {
- v =
- idl_global->gen ()->create_valuetype (
- $1->name (),
- $1->inherits (),
- $1->n_inherits (),
- $1->inherits_concrete (),
- $1->inherits_flat (),
- $1->n_inherits_flat (),
- $1->supports (),
- $1->n_supports (),
- $1->supports_concrete (),
- false,
- $1->truncatable (),
- false
- );
- i = AST_Interface::narrow_from_decl (v);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the valuetype to its definition scope
- */
- v = AST_ValueType::narrow_from_decl (i);
- (void) s->fe_add_valuetype (v);
-
- // FE_OBVHeader is not automatically destroyed in the AST
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
-
- /*
- * Push it on the scope stack
- */
- idl_global->scopes ().push (v);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
- }
- value_elements
- {
-// value_elements
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
-
- AST_ValueType *vt =
- AST_ValueType::narrow_from_scope (
- idl_global->scopes ().top_non_null ()
- );
-
- if (vt != 0 && vt->will_have_factory ())
- {
- idl_global->valuefactory_seen_ = true;
- }
-
- /*
- * Done with this value type - pop it off the scopes stack
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-value_abs_decl :
- IDL_ABSTRACT
- value_header
- {
-// value_abs_decl : IDL_ABSTRACT value_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_ValueType *v = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && $2 != 0)
- {
- v =
- idl_global->gen ()->create_valuetype (
- $2->name (),
- $2->inherits (),
- $2->n_inherits (),
- $2->inherits_concrete (),
- $2->inherits_flat (),
- $2->n_inherits_flat (),
- $2->supports (),
- $2->n_supports (),
- $2->supports_concrete (),
- true,
- false,
- false
- );
- i = AST_Interface::narrow_from_decl (v);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the valuetype to its definition scope
- */
- v = AST_ValueType::narrow_from_decl (i);
- (void) s->fe_add_valuetype (v);
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (v);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
- }
- exports
- {
-// exports
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
-
- /*
- * Done with this valuetype - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-value_header :
- value_decl
- inheritance_spec
- {
-// value_header : value_decl inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- supports_spec
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
-
- UTL_ScopedName *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName ($1, 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_OBVHeader (sn,
- $2,
- $4,
- $2 ? $2->truncatable () : false),
- 1);
-
- if (0 != $4)
- {
- $4->destroy ();
- delete $4;
- $4 = 0;
- }
-
- if (0 != $2)
- {
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- }
- ;
-
-value_decl
- : IDL_VALUETYPE
- {
-// value_decl : IDL_VALUETYPE
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeIDSeen);
- $$ = $3;
- }
- ;
-
-opt_truncatable :
- IDL_TRUNCATABLE
- {
-// opt_truncatable : IDL_TRUNCATABLE
- $$ = true;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = false;
- }
- ;
-
-supports_spec :
- IDL_SUPPORTS
- at_least_one_scoped_name
- {
-// supports_spec : IDL_SUPPORTS at_least_one_scoped_name
- $$ = $2;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-value_forward_decl :
- IDL_ABSTRACT
- value_decl
- {
-// value_forward_decl : IDL_ABSTRACT value_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_ValueTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * valuetype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_valuetype_fwd (&n,
- true);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- |
- value_decl
- {
-// | value_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
- AST_ValueTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * valuetype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_valuetype_fwd (&n,
- false);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- ;
-
-value_box_decl
- : value_decl type_spec /* in this order %!?*/
- {
-// value_box_decl : value_decl type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueBoxDeclSeen);
-
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
-
- if (s != 0 && $2 != 0)
- {
- /*
- * Get the type_spec associated with the valuebox
- */
- AST_Type *tp = 0;
- AST_Typedef *td
- = AST_Typedef::narrow_from_decl ($2);
-
- if (td == 0)
- {
- tp = AST_Type::narrow_from_decl ($2);
- }
- else
- {
- tp = td->primitive_base_type ();
- }
-
- if (tp == 0)
- {
- // The <type_spec> given is a valid type
- idl_global->err ()->not_a_type ($2);
- }
- else
- {
- AST_Decl::NodeType nt = tp->node_type ();
-
- if (nt == AST_Decl::NT_valuetype
- || nt == AST_Decl::NT_eventtype)
- {
- // valuetype is not allowed as <type_spec>
- // for boxed value
- idl_global->err ()->error0 (
- UTL_Error::EIDL_ILLEGAL_BOXED_TYPE
- );
- }
- else
- {
- /*
- * Add the valuebox to its definition scope
- */
- AST_ValueBox *vb =
- idl_global->gen ()->create_valuebox (&n,
- tp);
- (void) s->fe_add_valuebox (vb);
- }
- }
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- ;
-
-value_elements
- : value_elements value_element
- | /* EMPTY */
- ;
-
-value_element
- : state_member
- | export
- | init_decl
- ';'
- ;
-
-state_member
- : IDL_PUBLIC member_i
- {
-// state_member : IDL_PUBLIC
- /* is $0 to member_i */
- $<vival>$ = AST_Field::vis_PUBLIC;
- }
- | IDL_PRIVATE member_i
- {
-// IDL_PRIVATE
- /* is $0 to member_i */
- $<vival>$ = AST_Field::vis_PRIVATE;
- }
- ;
-
-exports
- : exports export
- | /* EMPTY */
- ;
-
-export
- : type_dcl
- {
-// export : type_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | typeid_dcl
- {
-// | typeid_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | typeprefix_dcl
- {
-// | typeprefix_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | const_dcl
- {
-// | const_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state(IDL_GlobalData::PS_NoState);
- }
- | exception
- {
-// | exception
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | attribute
- {
-// | attribute
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | operation
- {
-// | operation
- idl_global->set_parse_state (IDL_GlobalData::PS_OpDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | error
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- yyerrok;
- }
- ;
-
-at_least_one_scoped_name :
- scoped_name scoped_names
- {
-// at_least_one_scoped_name : scoped_name scoped_names
- ACE_NEW_RETURN ($$,
- UTL_NameList ($1,
- $2),
- 1);
- }
- ;
-
-scoped_names
- : scoped_names
- ','
- {
-// scoped_names : scoped_names ','
- idl_global->set_parse_state (IDL_GlobalData::PS_SNListCommaSeen);
- }
- scoped_name
- {
-// scoped_name
- idl_global->set_parse_state (IDL_GlobalData::PS_ScopedNameSeen);
-
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($$,
- UTL_NameList ($4,
- 0),
- 1);
- }
- else
- {
- UTL_NameList *nl = 0;
- ACE_NEW_RETURN (nl,
- UTL_NameList ($4,
- 0),
- 1);
- $1->nconc (nl);
- $$ = $1;
- }
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-scoped_name
- : id
- {
-// scoped_name : id
- idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
-
- ACE_NEW_RETURN ($$,
- UTL_IdList ($1,
- 0),
- 1);
- }
- | IDL_SCOPE_DELIMITOR
- {
-// | IDL_SCOPE_DELIMITOR
- idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
-
- Identifier *id = 0;
- ACE_NEW_RETURN (id,
- Identifier ($1),
- 1);
- ACE::strdelete ($1);
- $1 = 0;
- UTL_IdList *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_IdList ($3,
- 0),
- 1);
- ACE_NEW_RETURN ($$,
- UTL_IdList (id,
- sn),
- 1);
- }
- | scoped_name
- IDL_SCOPE_DELIMITOR
- {
-// | scoped_name IDL_SCOPE_DELIMITOR
- idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
-
- // This cleans up all the non-global "::"s in scoped names.
- // If there is a global one, it gets put into the UTL_IdList,
- // so we clean it up in the case above.
- ACE::strdelete ($2);
- $2 = 0;
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
-
- UTL_IdList *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_IdList ($4,
- 0),
- 1);
- $1->nconc (sn);
- $$ = $1;
- }
- ;
-
-id : IDENTIFIER
- {
-// id: IDENTIFIER
- ACE_NEW_RETURN ($$,
- Identifier ($1),
- 1);
- ACE::strdelete ($1);
- $1 = 0;
- }
- ;
-
-interface_forward :
- interface_decl
- {
-// interface_forward : interface_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
-
- if (ACE_OS::strcmp ($1->get_string (),
- "TypeCode") == 0
- && !idl_global->in_main_file ())
- {
- AST_PredefinedType *pdt =
- idl_global->gen ()->create_predefined_type (
- AST_PredefinedType::PT_pseudo,
- &n
- );
- (void) s->add_predefined_type (pdt);
- s->add_to_scope (pdt);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
-
- break;
- }
-
- AST_InterfaceFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * interface. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_interface_fwd (&n,
- 0,
- 0);
- (void) s->fe_add_interface_fwd (f);
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- |
- IDL_LOCAL interface_decl
- {
-// | IDL_LOCAL interface_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_InterfaceFwd *f = 0;
- idl_global->set_parse_state (
- IDL_GlobalData::PS_InterfaceForwardSeen
- );
-
- /*
- * Create a node representing a forward declaration of an
- * interface. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_interface_fwd (&n,
- 1,
- 0);
- (void) s->fe_add_interface_fwd (f);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- |
- IDL_ABSTRACT interface_decl
- {
-// | IDL_ABSTRACT interface_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_InterfaceFwd *f = 0;
- idl_global->set_parse_state (
- IDL_GlobalData::PS_InterfaceForwardSeen
- );
-
- /*
- * Create a node representing a forward declaration of an
- * interface. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_interface_fwd (&n,
- 0,
- 1);
- (void) s->fe_add_interface_fwd (f);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- ;
-
-const_dcl :
- IDL_CONST
- {
-// const_dcl : IDL_CONST
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstSeen);
- }
- const_type
- {
-// const_type
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstTypeSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstIDSeen);
- }
- '='
- {
-// '='
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstAssignSeen);
- }
- expression
- {
-// expression
- UTL_ScopedName n ($5,
- 0);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Constant *c = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstExprSeen);
-
- /*
- * Create a node representing a constant declaration. Store
- * it in the enclosing scope.
- */
- if ($9 != 0 && s != 0)
- {
- AST_Expression::AST_ExprValue *result =
- $9->check_and_coerce ($3,
- tao_enum_constant_decl);
- tao_enum_constant_decl = 0;
-
- if (result == 0)
- {
- idl_global->err ()->coercion_error ($9,
- $3);
- $9->destroy ();
- delete $9;
- $9 = 0;
- }
- else
- {
- c =
- idl_global->gen ()->create_constant (
- $3,
- $9,
- &n
- );
- (void) s->fe_add_constant (c);
- delete result;
- result = 0;
- }
-
- $5->destroy ();
- delete $5;
- $5 = 0;
- }
- }
- ;
-
-const_type
- : integer_type
- | char_type
- | octet_type
- | boolean_type
- | floating_pt_type
- | fixed_type
- | string_type_spec
- {
-// const_type
-// : integer_type
-// | char_type
-// | octet_type
-// | boolean_type
-// | floating_pt_type
-// | fixed_type
-// | string_type_spec
- $$ = AST_Expression::EV_string;
- }
- | wstring_type_spec
- {
-// | wstring_type_spec
- $$ = AST_Expression::EV_wstring;
- }
- | scoped_name
- {
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_PredefinedType *c = 0;
- AST_Typedef *t = 0;
-
- /*
- * If the constant's type is a scoped name, it must resolve
- * to a scalar constant type
- */
- AST_Decl *d =
- s->lookup_by_name ($1,
- true);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
-
- if (s != 0 && d != 0)
- {
- tao_enum_constant_decl = d;
-
- /*
- * Look through typedefs.
- */
- while (d->node_type () == AST_Decl::NT_typedef)
- {
- t = AST_Typedef::narrow_from_decl (d);
-
- if (t == 0)
- {
- break;
- }
-
- d = t->base_type ();
- }
-
- if (d == 0)
- {
- $$ = AST_Expression::EV_enum;
- }
- else if (d->node_type () == AST_Decl::NT_pre_defined)
- {
- c = AST_PredefinedType::narrow_from_decl (d);
-
- if (c != 0)
- {
- $$ = idl_global->PredefinedTypeToExprType (c->pt ());
- }
- else
- {
- $$ = AST_Expression::EV_enum;
- }
- }
- else if (d->node_type () == AST_Decl::NT_string)
- {
- $$ = AST_Expression::EV_string;
- }
- else if (d->node_type () == AST_Decl::NT_wstring)
- {
- $$ = AST_Expression::EV_wstring;
- }
- else
- {
- $$ = AST_Expression::EV_enum;
- }
- }
- else
- {
- $$ = AST_Expression::EV_enum;
- }
- }
- ;
-
-expression : const_expr ;
-
-const_expr : or_expr ;
-
-or_expr : xor_expr
- | or_expr '|' xor_expr
- {
-// or_expr : xor_expr
-// | or_expr '|' xor_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_or,
- $1,
- $3
- );
- }
- ;
-
-xor_expr
- : and_expr
- | xor_expr '^' and_expr
- {
-// xor_expr : and_expr
-// | xor_expr '^' and_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_xor,
- $1,
- $3
- );
- }
- ;
-
-and_expr
- : shift_expr
- | and_expr '&' shift_expr
- {
-// and_expr : shift_expr | and_expr '&' shift_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_and,
- $1,
- $3
- );
- }
- ;
-
-shift_expr
- : add_expr
- | shift_expr IDL_LEFT_SHIFT add_expr
- {
-// shift_expr : add_expr | shift_expr IDL_LEFT_SHIFT add_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_left,
- $1,
- $3
- );
- }
- | shift_expr IDL_RIGHT_SHIFT add_expr
- {
-// | shift_expr IDL_RIGHT_SHIFT add_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_right,
- $1,
- $3
- );
- }
- ;
-
-add_expr
- : mult_expr
- | add_expr '+' mult_expr
- {
-// add_expr : mult_expr | add_expr '+' mult_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_add,
- $1,
- $3
- );
- }
- | add_expr '-' mult_expr
- {
-// | add_expr '-' mult_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_minus,
- $1,
- $3
- );
- }
- ;
-
-mult_expr
- : unary_expr
- | mult_expr '*' unary_expr
- {
-// mult_expr : unary_expr | mult_expr '*' unary_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_mul,
- $1,
- $3
- );
- }
- | mult_expr '/' unary_expr
- {
-// | mult_expr '/' unary_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_div,
- $1,
- $3
- );
- }
- | mult_expr '%' unary_expr
- {
-// | mult_expr '%' unary_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_mod,
- $1,
- $3
- );
- }
- ;
-
-unary_expr
- : primary_expr
- | '+' primary_expr
- {
-// unary_expr : primary_expr | '+' primary_expr
- $$ =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_u_plus,
- $2,
- 0
- );
- }
- | '-' primary_expr
- {
-// | '-' primary_expr
- $$ =
- idl_global->gen()->create_expr (
- AST_Expression::EC_u_minus,
- $2,
- 0
- );
- }
- | '~' primary_expr
- {
-// | '~' primary_expr
- $$ =
- idl_global->gen()->create_expr (
- AST_Expression::EC_bit_neg,
- $2,
- 0
- );
- }
- ;
-
-primary_expr
- : scoped_name
- {
-// primary_expr : scoped_name
- /*
- * 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).
- */
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($1,
- true);
-
- /*
- * If the scoped name is an IDL constant, it may be used in an
- * array dim, a string bound, or a sequence bound. If so, it
- * must be unsigned and > 0. We assign the constant's value
- * and type to the expression created here so we can check
- * them later.
- */
- if (d != 0 && d->node_type () == AST_Decl::NT_const)
- {
- AST_Constant *c = AST_Constant::narrow_from_decl (d);
- $$ =
- idl_global->gen ()->create_expr (c->constant_value (),
- c->et ());
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- else
- {
- $$ = idl_global->gen ()->create_expr ($1);
- }
- }
- | literal
- | '(' const_expr ')'
- {
-// | literal
-// | '(' const_expr ')'
- $$ = $2;
- }
- ;
-
-literal
- : IDL_INTEGER_LITERAL
- {
-// literal : IDL_INTEGER_LITERAL
- $$ = idl_global->gen ()->create_expr ($1);
- }
- | IDL_UINTEGER_LITERAL
- {
-// | IDL_UINTEGER_LITERAL
- $$ =
- idl_global->gen ()->create_expr ($1,
- AST_Expression::EV_ulonglong);
- }
- | IDL_STRING_LITERAL
- {
-// | IDL_STRING_LITERAL
- $$ = idl_global->gen ()->create_expr ($1);
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- | IDL_WSTRING_LITERAL
- {
-// | IDL_WSTRING_LITERAL
- $$ = idl_global->gen ()->create_expr ($1);
- }
- | IDL_CHARACTER_LITERAL
- {
-// | IDL_CHARACTER_LITERAL
- $$ = idl_global->gen ()->create_expr ($1);
- }
- | IDL_WCHAR_LITERAL
- {
-// | IDL_WCHAR_LITERAL
- ACE_OutputCDR::from_wchar wc ($1);
- $$ = idl_global->gen ()->create_expr (wc);
- }
- | IDL_FLOATING_PT_LITERAL
- {
-// | IDL_FLOATING_PT_LITERAL
- $$ = idl_global->gen ()->create_expr ($1);
- }
- | IDL_TRUETOK
- {
-// | IDL_TRUETOK
- $$ = idl_global->gen ()->create_expr (true);
- }
- | IDL_FALSETOK
- {
-// | IDL_FALSETOK
- $$ = idl_global->gen ()->create_expr (false);
- }
- ;
-
-positive_int_expr :
- const_expr
- {
-// positive_int_expr : const_expr
- int good_expression = 1;
- $1->evaluate (AST_Expression::EK_positive_int);
- AST_Expression::AST_ExprValue *ev = $1->ev ();
-
- /*
- * If const_expr is an enum value (AST_EnumVal inherits from
- * AST_Constant), the AST_ExprValue will probably not be set,
- * but there's no need to check anyway
- */
- if (ev != 0)
- {
- switch (ev->et)
- {
- case AST_Expression::EV_ushort:
- if (ev->u.usval == 0)
- {
- good_expression = 0;
- }
-
- break;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval == 0)
- {
- good_expression = 0;
- }
-
- break;
-#if !defined (ACE_LACKS_LONGLONG_T)
- case AST_Expression::EV_ulonglong:
- if (ev->u.ullval == 0)
- {
- good_expression = 0;
- }
-
- break;
-#endif
- case AST_Expression::EV_octet:
- if (ev->u.oval == 0)
- {
- good_expression = 0;
- }
-
- break;
- case AST_Expression::EV_bool:
- if (ev->u.bval == 0)
- {
- good_expression = 0;
- }
-
- break;
- default:
- good_expression = 0;
- break;
- }
- }
-
- if (good_expression)
- {
- $$ = $1;
- }
- else
- {
- idl_global->err ()->syntax_error (idl_global->parse_state ());
- }
- }
- ;
-
-type_dcl
- : IDL_TYPEDEF
- {
-// type_dcl : IDL_TYPEDEF
- idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
- }
- type_declarator
- {
-// type_declarator
- $$ = 0;
- }
- | struct_type
- {
-// | struct_type
- $$ = 0;
- }
- | union_type
- {
-// | union_type
- $$ = 0;
- }
- | enum_type
- {
-// | enum_type
- $$ = 0;
- }
- | IDL_NATIVE simple_declarator
- {
-// | IDL_NATIVE simple_declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Native *node = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_NativeSeen);
-
- /*
- * Create a node representing a Native and add it to its
- * enclosing scope
- */
- if (s != 0)
- {
- node =
- idl_global->gen ()->create_native (
- $2->name ()
- );
- /*
- * Add it to its defining scope
- */
- (void) s->fe_add_native (node);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- | constructed_forward_type_spec
- {
-// | constructed_forward_type_spec
- $$ = 0;
- }
- ;
-
-type_declarator :
- type_spec
- {
-// type_declarator : type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeSpecSeen);
- }
- at_least_one_declarator
- {
-// at_least_one_declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- FE_Declarator *d = 0;
- AST_Typedef *t = 0;
- unsigned long index = 0UL;
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclaratorsSeen);
-
- /*
- * Create a list of type renamings. Add them to the
- * enclosing scope
- */
- if (s != 0 && $1 != 0 && $3 != 0)
- {
- for (UTL_DecllistActiveIterator l ($3);
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type * tp = d->compose ($1);
-
- if (tp == 0)
- {
- continue;
- }
-
- if (AST_Decl::NT_except == tp->node_type ())
- {
- idl_global->err ()->not_a_type (tp);
- continue;
- }
-
- t = idl_global->gen ()->create_typedef (tp,
- d->name (),
- s->is_local (),
- s->is_abstract ());
-
- // If the base type is a sequence or array, the typedef
- // constructor sets owns_base_type_ to true. But if
- // there is a comma-separated list of such typedefs,
- // the base type can be destroyed only once. In all
- // other cases, the line below has no effect.
- if (index++ > 0)
- {
- t->owns_base_type (false);
- }
-
- (void) s->fe_add_typedef (t);
- }
-
- // This FE_Declarator class isn't destroyed with the AST.
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- }
- ;
-
-type_spec
- : simple_type_spec
- | constructed_type_spec
- ;
-
-simple_type_spec
- : base_type_spec
- {
-// simple_type_spec : base_type_spec
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- $1
- );
- }
- | template_type_spec
- | scoped_name
- {
-// | template_type_spec
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = 0;
-
- if (s != 0)
- {
- d = s->lookup_by_name ($1,
- true);
- }
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($1);
- }
- else
- {
- d->last_referenced_as ($1);
- }
-
-
- $$ = d;
- }
- ;
-
-base_type_spec
- : integer_type
- | floating_pt_type
- | char_type
- | boolean_type
- | octet_type
- | fixed_type
- | any_type
- | object_type
- ;
-
-template_type_spec
- : sequence_type_spec
- | string_type_spec
- | wstring_type_spec
- | connector_inst_spec
- ;
-
-constructed_type_spec
- : struct_type
- | union_type
- | enum_type
- ;
-
-constructed_forward_type_spec
- : struct_forward_type
- | union_forward_type
- ;
-
-at_least_one_declarator :
- declarator declarators
- {
-// at_least_one_declarator : declarator declarators
- ACE_NEW_RETURN ($$,
- UTL_DeclList ($1,
- $2),
- 1);
- }
- ;
-
-declarators
- : declarators
- ','
- {
-// declarators : declarators ','
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
- }
- declarator
- {
-// declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
-
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($$,
- UTL_DeclList ($4,
- 0),
- 1);
- }
- else
- {
- UTL_DeclList *dl = 0;
- ACE_NEW_RETURN (dl,
- UTL_DeclList ($4,
- 0),
- 1);
- $1->nconc (dl);
- $$ = $1;
- }
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-declarator
- : simple_declarator
- | complex_declarator
- ;
-
-at_least_one_simple_declarator :
- simple_declarator simple_declarators
- {
-// at_least_one_simple_declarator : simple_declarator simple_declarators
- ACE_NEW_RETURN ($$,
- UTL_DeclList ($1,
- $2),
- 1);
- }
- ;
-
-simple_declarators
- : simple_declarators
- ','
- {
-// simple_declarators : simple_declarators ','
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
- }
- simple_declarator
- {
-// simple_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
-
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($$,
- UTL_DeclList ($4,
- 0),
- 1);
- }
- else
- {
- UTL_DeclList *dl = 0;
- ACE_NEW_RETURN (dl,
- UTL_DeclList ($4,
- 0),
- 1);
- $1->nconc (dl);
- $$ = $1;
- }
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-simple_declarator :
- id
- {
-// simple_declarator : id
- UTL_ScopedName *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName ($1,
- 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_Declarator (sn,
- FE_Declarator::FD_simple,
- 0),
- 1);
- }
- ;
-
-complex_declarator :
- array_declarator
- {
-// complex_declarator : array_declarator
- UTL_ScopedName *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName (
- $1->local_name ()->copy (),
- 0
- ),
- 1);
- ACE_NEW_RETURN ($$,
- FE_Declarator (sn,
- FE_Declarator::FD_complex,
- $1),
- 1);
- }
- ;
-
-integer_type
- : signed_int
- | unsigned_int
- ;
-
-signed_int
- : IDL_LONG
- {
-// signed_int : IDL_LONG
- $$ = AST_Expression::EV_long;
- }
- | IDL_LONG IDL_LONG
- {
-// | IDL_LONG IDL_LONG
- $$ = AST_Expression::EV_longlong;
- }
- | IDL_SHORT
- {
-// | IDL_SHORT
- $$ = AST_Expression::EV_short;
- }
- ;
-
-unsigned_int
- : IDL_UNSIGNED IDL_LONG
- {
-// unsigned_int : IDL_UNSIGNED IDL_LONG
- $$ = AST_Expression::EV_ulong;
- }
- | IDL_UNSIGNED IDL_LONG IDL_LONG
- {
-// | IDL_UNSIGNED IDL_LONG IDL_LONG
- $$ = AST_Expression::EV_ulonglong;
- }
- | IDL_UNSIGNED IDL_SHORT
- {
-// | IDL_UNSIGNED IDL_SHORT
- $$ = AST_Expression::EV_ushort;
- }
- ;
-
-floating_pt_type
- : IDL_DOUBLE
- {
-// floating_pt_type : IDL_DOUBLE
- $$ = AST_Expression::EV_double;
- }
- | IDL_FLOAT
- {
-// | IDL_FLOAT
- $$ = AST_Expression::EV_float;
- }
- | IDL_LONG IDL_DOUBLE
- {
-// | IDL_LONG IDL_DOUBLE
- $$ = AST_Expression::EV_longdouble;
- }
- ;
-
-fixed_type
- : IDL_FIXED
- {
-// fixed_type : IDL_FIXED
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" fixed types yet\n")));
- }
- ;
-
-char_type
- : IDL_CHAR
- {
-// char_type : IDL_CHAR
- $$ = AST_Expression::EV_char;
- }
- | IDL_WCHAR
- {
-// | IDL_WCHAR
- $$ = AST_Expression::EV_wchar;
- }
- ;
-
-octet_type
- : IDL_OCTET
- {
-// octet_type : IDL_OCTET
- $$ = AST_Expression::EV_octet;
- }
- ;
-
-boolean_type
- : IDL_BOOLEAN
- {
-// boolean_type : IDL_BOOLEAN
- $$ = AST_Expression::EV_bool;
- }
- ;
-
-any_type
- : IDL_ANY
- {
-// any_type : IDL_ANY
- $$ = AST_Expression::EV_any;
- }
- ;
-
-object_type
- : IDL_OBJECT
- {
-// object_type : IDL_OBJECT
- $$ = AST_Expression::EV_object;
- }
- ;
-
-struct_decl :
- IDL_STRUCT
- {
-// struct_decl : IDL_STRUCT
- idl_global->set_parse_state (IDL_GlobalData::PS_StructSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_StructIDSeen);
- $$ = $3;
- }
- ;
-
-
-struct_type
- : struct_decl
- {
-// struct_type : struct_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
- AST_Structure *d = 0;
-
- /*
- * Create a node representing a struct declaration. Add it
- * to the enclosing scope
- */
- if (s != 0)
- {
- d =
- idl_global->gen ()->create_structure (
- &n,
- s->is_local (),
- s->is_abstract ()
- );
- AST_Structure::fwd_redefinition_helper (d,
- s);
- (void) s->fe_add_structure (d);
- }
-
- /*
- * Push the scope of the struct on the scopes stack.
- */
- idl_global->scopes ().push (d);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_StructSqSeen);
- }
- at_least_one_member
- {
-// at_least_one_member
- idl_global->set_parse_state (IDL_GlobalData::PS_StructBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_StructQsSeen);
-
- /*
- * Done with this struct. Pop its scope off the scopes stack.
- */
- $$ = AST_Structure::narrow_from_scope (
- idl_global->scopes ().top_non_null ()
- );
- idl_global->scopes ().pop ();
- }
- ;
-
-at_least_one_member : member members ;
-
-members
- : members member
- | /* EMPTY */
- ;
-
-member :
- {
-// member :
- /* is $0 to member_i */
- $<vival>$ = AST_Field::vis_NA;
- }
- member_i
- ;
-
-member_i :
- type_spec
- {
-// member_i : type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_MemberTypeSeen);
- }
- at_least_one_declarator
- {
-// at_least_one_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsSeen);
- }
- ';'
- {
-// ';'
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- FE_Declarator *d = 0;
- AST_Field *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsCompleted);
-
- /*
- * Check for illegal recursive use of type.
- */
- if ($1 != 0
- && AST_illegal_recursive_type ($1))
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
- $1);
- }
- /*
- * Create a node representing a struct or exception member
- * Add it to the enclosing scope.
- */
- else if (s != 0
- && $1 != 0
- && $3 != 0)
- {
- for (UTL_DecllistActiveIterator l ($3);
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type *tp = d->compose ($1);
-
- if (tp == 0)
- {
- continue;
- }
-
- /* $0 denotes Visibility, must be on yacc reduction stack. */
- f =
- idl_global->gen ()->create_field (
- tp,
- d->name (),
- $<vival>0
- );
- (void) s->fe_add_field (f);
- }
- }
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- | error
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state ());
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- yyerrok;
- }
- ;
-
-union_decl :
- IDL_UNION
- {
-// union_decl : IDL_UNION
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionIDSeen);
- $$ = $3;
- }
- ;
-
-union_type
- : union_decl IDL_SWITCH
- {
-// union_type : union_decl IDL_SWITCH
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchSeen);
- }
- '('
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchOpenParSeen);
- }
- switch_type_spec
- {
-// switch_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchTypeSeen);
- }
- ')'
- {
-// ')'
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
- AST_Union *u = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchCloseParSeen);
-
- /*
- * Create a node representing a union. Add it to its enclosing
- * scope.
- */
- if ($6 != 0
- && s != 0)
- {
- AST_ConcreteType *tp =
- AST_ConcreteType::narrow_from_decl ($6);
-
- if (tp == 0)
- {
- idl_global->err ()->not_a_type ($6);
- }
- else
- {
- u = idl_global->gen ()->create_union (tp,
- &n,
- s->is_local (),
- s->is_abstract ());
- }
-
- AST_Structure *st = AST_Structure::narrow_from_decl (u);
- AST_Structure::fwd_redefinition_helper (st,
- s);
- u = AST_Union::narrow_from_decl (st);
- (void) s->fe_add_union (u);
- }
-
- /*
- * Push the scope of the union on the scopes stack
- */
- idl_global->scopes ().push (u);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionSqSeen);
- }
- at_least_one_case_branch
- {
-// at_least_one_case_branch
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionQsSeen);
-
- /*
- * Done with this union. Pop its scope from the scopes stack.
- */
- $$ = AST_Union::narrow_from_scope (
- idl_global->scopes ().top_non_null ()
- );
-
- if ($$ != 0)
- {
- idl_global->scopes ().pop ();
- }
- }
- ;
-
-switch_type_spec :
- integer_type
- {
-// switch_type_spec : integer_type
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- $1
- );
- }
- | char_type
- {
-// | char_type
- /* wchars are not allowed. */
- if ($1 == AST_Expression::EV_wchar)
- {
- idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
- }
-
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- $1
- );
- }
- | octet_type
- {
-// | octet_type
- /* octets are not allowed. */
- idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- $1
- );
- }
- | boolean_type
- {
-// | boolean_type
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- $1
- );
- }
- | enum_type
- | scoped_name
- {
-// | enum_type
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = 0;
- AST_PredefinedType *p = 0;
- AST_Typedef *t = 0;
- bool found = 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.
- */
- d = s->lookup_by_name ($1,
- true);
-
- if (s != 0 && d != 0)
- {
- while (!found)
- {
- switch (d->node_type ())
- {
- case AST_Decl::NT_enum:
- $$ = d;
- found = true;
- break;
- case AST_Decl::NT_pre_defined:
- p = AST_PredefinedType::narrow_from_decl (d);
-
- if (p != 0)
- {
- 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_ushort:
- case AST_PredefinedType::PT_char:
- case AST_PredefinedType::PT_boolean:
- $$ = p;
- found = true;
- break;
- case AST_PredefinedType::PT_wchar:
- case AST_PredefinedType::PT_octet:
- /* octets and wchars are not allowed */
- idl_global->err ()->error0 (
- UTL_Error::EIDL_DISC_TYPE
- );
- $$ = 0;
- found = true;
- break;
- default:
- $$ = 0;
- found = true;
- break;
- }
- }
- else
- {
- $$ = 0;
- found = true;
- }
-
- break;
- case AST_Decl::NT_typedef:
- t = AST_Typedef::narrow_from_decl (d);
-
- if (t != 0)
- {
- d = t->base_type ();
- }
-
- break;
- default:
- $$ = 0;
- found = true;
- break;
- }
- }
- }
- else
- {
- $$ = 0;
- }
-
- if ($$ == 0)
- {
- idl_global->err ()->lookup_error ($1);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
-
- /* If we don't return here, we'll crash later.*/
- return 1;
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- ;
-
-at_least_one_case_branch : case_branch case_branches ;
-
-case_branches
- : case_branches case_branch
- | /* empty */
- ;
-
-case_branch :
- at_least_one_case_label
- {
-// case_branch : at_least_one_case_label
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionLabelSeen);
- }
- element_spec
- {
-// element_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemSeen);
- }
- ';'
- {
-// ';'
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_UnionBranch *b = 0;
- AST_Field *f = $3;
- 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 != 0
- && $1 != 0
- && $3 != 0)
- {
- b =
- idl_global->gen ()->create_union_branch (
- $1,
- f->field_type (),
- f->name ()
- );
- (void) s->fe_add_union_branch (b);
-
- // f has passed its field type to the union branch,
- // but the rest still needs to be cleaned up.
- f->AST_Decl::destroy ();
- delete f;
- f = 0;
- }
- }
- | error
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- yyerrok;
- }
- ;
-
-at_least_one_case_label :
- case_label case_labels
- {
-// at_least_one_case_label : case_label case_labels
- ACE_NEW_RETURN ($$,
- UTL_LabelList ($1,
- $2),
- 1);
- }
- ;
-
-case_labels
- : case_labels case_label
- {
-// case_labels : case_labels case_label
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($$,
- UTL_LabelList ($2,
- 0),
- 1);
- }
- else
- {
- UTL_LabelList *ll = 0;
- ACE_NEW_RETURN (ll,
- UTL_LabelList ($2,
- 0),
- 1);
- $1->nconc (ll);
- $$ = $1;
- }
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-case_label
- : IDL_DEFAULT
- {
-// case_label : IDL_DEFAULT
- idl_global->set_parse_state (IDL_GlobalData::PS_DefaultSeen);
- }
- ':'
- {
-// ':'
- idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
-
- $$ = idl_global->gen ()->create_union_label (
- AST_UnionLabel::UL_default,
- 0
- );
- }
- | IDL_CASE
- {
-// | IDL_CASE
- idl_global->set_parse_state (IDL_GlobalData::PS_CaseSeen);
- }
- const_expr
- {
- idl_global->set_parse_state (IDL_GlobalData::PS_LabelExprSeen);
- }
- ':'
- {
-// const_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
-
- $$ = idl_global->gen()->create_union_label (
- AST_UnionLabel::UL_label,
- $3
- );
- }
- ;
-
-element_spec :
- type_spec
- {
-// element_spec : type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemTypeSeen);
- }
- declarator
- {
-// declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemDeclSeen);
-
- /*
- * Check for illegal recursive use of type
- */
- if ($1 != 0
- && AST_illegal_recursive_type ($1))
- {
- idl_global->err()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
- $1);
-
- $$ = 0;
- }
- /*
- * Create a field in a union branch
- */
- else if ($1 == 0
- || $3 == 0)
- {
- $$ = 0;
- }
- else
- {
- AST_Type *tp = $3->compose ($1);
-
- if (tp == 0)
- {
- $$ = 0;
- }
- else
- {
- $$ = idl_global->gen ()->create_field (
- tp,
- $3->name ()
- );
- }
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- }
- ;
-
-struct_forward_type
- : struct_decl
- {
-// struct_forward_type : struct_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
- AST_StructureFwd *d = 0;
-
- /*
- * Create a node representing a forward declaration of a struct.
- */
- if (s != 0)
- {
- d = idl_global->gen ()->create_structure_fwd (&n);
- (void) s->fe_add_structure_fwd (d);
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- ;
-
-union_forward_type
- : union_decl
- {
-// union_forward_type : union_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
- AST_UnionFwd *u = 0;
-
- /*
- * Create a node representing a forward declaration of a union.
- */
- if (s != 0)
- {
- u = idl_global->gen ()->create_union_fwd (&n);
- (void) s->fe_add_union_fwd (u);
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- ;
-
-enum_type :
- IDL_ENUM
- {
-// enum_type : IDL_ENUM
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumSeen);
- }
- id
- {
-// id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($3,
- 0);
- AST_Enum *e = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumIDSeen);
-
- /*
- * Create a node representing an enum and add it to its
- * enclosing scope.
- */
- if (s != 0)
- {
- e = idl_global->gen ()->create_enum (&n,
- s->is_local (),
- s->is_abstract ());
- /*
- * 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);
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumSqSeen);
- }
- at_least_one_enumerator
- {
-// at_least_one_enumerator
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumBodySeen);
- }
- '}'
- {
-// '}'
- 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 () == 0)
- {
- $$ = 0;
- }
- else
- {
- $$ = AST_Enum::narrow_from_scope (
- idl_global->scopes ().top_non_null ()
- );
- idl_global->scopes ().pop ();
- }
- }
- ;
-
-at_least_one_enumerator : enumerator enumerators ;
-
-enumerators
- : enumerators
- ','
- {
-// enumerators : enumerators ','
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumCommaSeen);
- }
- enumerator
- | /* EMPTY */
- ;
-
-enumerator :
- IDENTIFIER
- {
-// enumerator : IDENTIFIER
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- Identifier id ($1);
- ACE::strdelete ($1);
- $1 = 0;
- UTL_ScopedName n (&id,
- 0);
- AST_EnumVal *e = 0;
- AST_Enum *c = 0;
-
- /*
- * Create a node representing one enumerator in an enum
- * Add it to the enclosing scope (the enum scope)
- */
- if (s != 0
- && s->scope_node_type () == AST_Decl::NT_enum)
- {
- c = AST_Enum::narrow_from_scope (s);
-
- if (c != 0)
- {
- e = idl_global->gen ()->create_enum_val (
- c->next_enum_val (),
- &n
- );
- }
-
- (void) s->fe_add_enum_val (e);
- }
- }
- ;
-
-sequence_type_spec
- : seq_head
- ','
- {
-// sequence_type_spec : seq_head ','
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceCommaSeen);
- }
- positive_int_expr
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceExprSeen);
- }
- '>'
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
-
- /*
- * Remove sequence marker from scopes stack.
- */
- if (idl_global->scopes ().top() == 0)
- {
- idl_global->scopes ().pop ();
- }
-
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- /*
- * Create a node representing a sequence
- */
- AST_Expression::AST_ExprValue *ev = 0;
-
- if ($4 != 0)
- {
- ev = $4->coerce (AST_Expression::EV_ulong);
- }
-
- if (0 == $4 || 0 == ev)
- {
- idl_global->err ()->coercion_error ($4,
- AST_Expression::EV_ulong);
- $$ = 0;
- }
- else if (0 == $1)
- {
- $$ = 0;
- }
- else
- {
- AST_Type *tp = AST_Type::narrow_from_decl ($1);
-
- if (0 == tp)
- {
- ; // Error will be caught in FE_Declarator.
- }
- else
- {
- Identifier id ("sequence");
- UTL_ScopedName sn (&id,
- 0);
-
- $$ =
- idl_global->gen ()->create_sequence (
- $4,
- tp,
- &sn,
- s->is_local (),
- s->is_abstract ()
- );
- }
- }
-
- delete ev;
- ev = 0;
- }
- | seq_head
- '>'
- {
-// | seq_head '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
-
- /*
- * Remove sequence marker from scopes stack.
- */
- if (idl_global->scopes ().top () == 0)
- {
- idl_global->scopes ().pop ();
- }
-
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- /*
- * Create a node representing a sequence.
- */
- if ($1 == 0)
- {
- $$ = 0;
- }
- else
- {
- AST_Type *tp = AST_Type::narrow_from_decl ($1);
-
- if (tp == 0)
- {
- ; // Error will be caught in FE_Declarator.
- }
- else
- {
- Identifier id ("sequence");
- UTL_ScopedName sn (&id, 0);
- ACE_CDR::ULong bound = 0UL;
-
- $$ =
- idl_global->gen ()->create_sequence (
- idl_global->gen ()->create_expr (
- bound,
- AST_Expression::EV_ulong
- ),
- tp,
- &sn,
- s->is_local (),
- s->is_abstract ()
- );
- }
- }
- }
- ;
-
-seq_head :
- IDL_SEQUENCE
- {
-// seq_head : IDL_SEQUENCE
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSeen);
-
- /*
- * Push a sequence marker on scopes stack.
- */
- idl_global->scopes ().push (0);
- }
- '<'
- {
-// '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSqSeen);
- }
- simple_type_spec
- {
-// simple_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceTypeSeen);
- $$ = $5;
- }
- ;
-
-string_type_spec
- : string_head
- '<'
- {
-// string_type_spec : string_head '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
- }
- positive_int_expr
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
- }
- '>'
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
-
- /*
- * Create a node representing a string.
- */
- AST_Expression::AST_ExprValue *ev = 0;
-
- if ($4 != 0)
- {
- ev = $4->coerce (AST_Expression::EV_ulong);
- }
-
- if (0 == $4 || 0 == ev)
- {
- idl_global->err ()->coercion_error ($4,
- AST_Expression::EV_ulong);
- $$ = 0;
- }
- else
- {
- $$ = idl_global->gen ()->create_string ($4);
- /*
- * Add this AST_String to the types defined in the global scope.
- */
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl (
- $$
- )
- );
- }
-
- delete ev;
- ev = 0;
- }
- | string_head
- {
-// | string_head
- idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
- /*
- * Create a node representing a string.
- */
- ACE_CDR::ULong bound = 0UL;
-
- $$ =
- idl_global->gen ()->create_string (
- idl_global->gen ()->create_expr (bound,
- AST_Expression::EV_ulong)
- );
- /*
- * Add this AST_String to the types defined in the global scope.
- */
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl (
- $$
- )
- );
- }
- ;
-
-string_head :
- IDL_STRING
- {
-// string_head : IDL_STRING
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
- }
- ;
-
-wstring_type_spec
- : wstring_head
- '<'
- {
-// wstring_type_spec : wstring_head '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
- }
- positive_int_expr
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
- }
- '>'
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
-
- /*
- * Create a node representing a string.
- */
- if ($4 == 0
- || $4->coerce (AST_Expression::EV_ulong) == 0)
- {
- idl_global->err ()->coercion_error ($4,
- AST_Expression::EV_ulong);
- $$ = 0;
- }
- else
- {
- $$ = idl_global->gen ()->create_wstring ($4);
- /*
- * Add this AST_String to the types defined in the global scope.
- */
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl ($$)
- );
- }
- }
- | wstring_head
- {
-// | wstring_head
- idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
-
- /*
- * Create a node representing a wstring.
- */
- ACE_CDR::ULong bound = 0UL;
-
- $$ =
- idl_global->gen ()->create_wstring (
- idl_global->gen ()->create_expr (bound,
- AST_Expression::EV_ulong)
- );
- /*
- * Add this AST_String to the types defined in the global scope.
- */
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl ($$)
- );
- }
- ;
-
-wstring_head :
- IDL_WSTRING
- {
-// wstring_head : IDL_WSTRING
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
- }
- ;
-
-array_declarator :
- id
- {
-// array_declarator : id
- idl_global->set_parse_state (IDL_GlobalData::PS_ArrayIDSeen);
- }
- at_least_one_array_dim
- {
-// at_least_one_array_dim
- idl_global->set_parse_state (IDL_GlobalData::PS_ArrayCompleted);
-
- /*
- * Create a node representing an array.
- */
- if ($3 != 0)
- {
- UTL_ScopedName sn ($1,
- 0);
- $$ =
- idl_global->gen ()->create_array (
- &sn,
- $3->length (),
- $3,
- 0,
- 0
- );
-
- $3->destroy ();
- delete $3;
- $3 = 0;
-
- sn.destroy ();
- }
- }
- ;
-
-at_least_one_array_dim :
- array_dim array_dims
- {
-// at_least_one_array_dim : array_dim array_dims
- ACE_NEW_RETURN ($$,
- UTL_ExprList ($1,
- $2),
- 1);
- }
- ;
-
-array_dims
- : array_dims array_dim
- {
-// array_dims : array_dims array_dim
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($$,
- UTL_ExprList ($2,
- 0),
- 1);
- }
- else
- {
- UTL_ExprList *el = 0;
- ACE_NEW_RETURN (el,
- UTL_ExprList ($2,
- 0),
- 1);
- $1->nconc (el);
- $$ = $1;
- }
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-array_dim :
- '['
- {
-// array_dim : '['
- idl_global->set_parse_state (IDL_GlobalData::PS_DimSqSeen);
- }
- positive_int_expr
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_DimExprSeen);
- }
- ']'
- {
-// ']'
- idl_global->set_parse_state (IDL_GlobalData::PS_DimQsSeen);
-
- /*
- * Array dimensions are expressions which must be coerced to
- * positive integers.
- */
- AST_Expression::AST_ExprValue *ev = 0;
-
- if ($3 != 0)
- {
- ev = $3->coerce (AST_Expression::EV_ulong);
- }
-
- if (0 == $3 || 0 == ev)
- {
- idl_global->err ()->coercion_error ($3,
- AST_Expression::EV_ulong);
- $$ = 0;
- }
- else
- {
- $$ = $3;
- }
-
- delete ev;
- ev = 0;
- }
- ;
-
-attribute
- : attribute_readonly
- | attribute_readwrite
- ;
-
-attribute_readonly :
- IDL_READONLY
- {
-// attribute_readonly : IDL_READONLY
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrROSeen);
- }
- IDL_ATTRIBUTE
- {
-// IDL_ATTRIBUTE
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
- }
- param_type_spec
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
- }
- at_least_one_simple_declarator
- {
-// at_least_one_simple_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
- }
- opt_raises
- {
-// opt_raises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Attribute *a = 0;
- FE_Declarator *d = 0;
-
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- /*
- * Create nodes representing attributes and add them to the
- * enclosing scope.
- */
- if (s != 0
- && $5 != 0
- && $7 != 0)
- {
- for (UTL_DecllistActiveIterator l ($7);
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type *tp = d->compose ($5);
-
- if (tp == 0)
- {
- continue;
- }
-
- a =
- idl_global->gen ()->create_attribute (
- true,
- tp,
- d->name (),
- s->is_local (),
- s->is_abstract ()
- );
-
- if ($9 != 0)
- {
- (void) a->fe_add_get_exceptions ($9);
-
- $9->destroy ();
- delete $9;
- $9 = 0;
- }
-
- (void) s->fe_add_attribute (a);
- }
- }
-
- $7->destroy ();
- delete $7;
- $7 = 0;
- }
- ;
-
-attribute_readwrite :
- IDL_ATTRIBUTE
- {
-// attribute_readonly : IDL_ATTRIBUTE
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
- }
- param_type_spec
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
- }
- at_least_one_simple_declarator
- {
-// at_least_one_simple_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
- }
- opt_getraises
- {
-// opt_getraises
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseCompleted);
- }
- opt_setraises
- {
-// opt_setraises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Attribute *a = 0;
- FE_Declarator *d = 0;
-
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseCompleted);
-
- /*
- * Create nodes representing attributes and add them to the
- * enclosing scope.
- */
- if (s != 0
- && $3 != 0
- && $5 != 0)
- {
- for (UTL_DecllistActiveIterator l ($5);
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type *tp = d->compose ($3);
-
- if (tp == 0)
- {
- continue;
- }
-
- a =
- idl_global->gen ()->create_attribute (
- false,
- tp,
- d->name (),
- s->is_local (),
- s->is_abstract ()
- );
-
- if ($7 != 0)
- {
- (void) a->fe_add_get_exceptions ($7);
-
- $7->destroy ();
- delete $7;
- $7 = 0;
- }
-
- if ($9 != 0)
- {
- (void) a->fe_add_set_exceptions ($9);
-
- $9->destroy ();
- delete $9;
- $9 = 0;
- }
-
- (void) s->fe_add_attribute (a);
- }
- }
-
- $5->destroy ();
- delete $5;
- $5 = 0;
- }
- ;
-
-exception :
- IDL_EXCEPTION
- {
-// exception : IDL_EXCEPTION
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSeen);
- }
- id
- {
-// id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($3,
- 0);
- AST_Exception *e = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptIDSeen);
-
- /*
- * Create a node representing an exception and add it to
- * the enclosing scope.
- */
- if (s != 0)
- {
- e = idl_global->gen ()->create_exception (&n,
- s->is_local (),
- s->is_abstract ());
- (void) s->fe_add_exception (e);
- }
-
- /*
- * Push the exception scope on the scope stack.
- */
- idl_global->scopes ().push (e);
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSqSeen);
- }
- members
- {
-// members
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptQsSeen);
- /*
- * Done with this exception. Pop its scope from the scope stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-operation :
- opt_op_attribute
- op_type_spec
- {
-// operation : opt_op_attribute op_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
- }
- IDENTIFIER
- {
-// IDENTIFIER
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- Identifier id ($4);
- ACE::strdelete ($4);
- $4 = 0;
-
- UTL_ScopedName n (&id,
- 0);
- AST_Operation *o = 0;
- 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 != 0 && $2 != 0)
- {
- AST_Type *tp =
- AST_Type::narrow_from_decl ($2);
-
- if (tp == 0)
- {
- idl_global->err ()->not_a_type ($2);
- }
- else if (tp->node_type () == AST_Decl::NT_except)
- {
- idl_global->err ()->not_a_type ($2);
- }
- else
- {
- AST_Decl *d = ScopeAsDecl (s);
- AST_Decl::NodeType nt = d->node_type ();
- bool local =
- s->is_local ()
- || nt == AST_Decl::NT_valuetype
- || nt == AST_Decl::NT_eventtype;
- o =
- idl_global->gen ()->create_operation (tp,
- $1,
- &n,
- local,
- s->is_abstract ());
- (void) s->fe_add_operation (o);
- }
- }
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (o);
- }
- parameter_list
- {
-// parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- opt_raises
- {
-// opt_raises
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
- }
- opt_context
- {
-// opt_context
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpCompleted);
-
- /*
- * Add exceptions and context to the operation.
- */
- if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
- {
- o = AST_Operation::narrow_from_scope (s);
-
- if ($8 != 0 && o != 0)
- {
- (void) o->fe_add_exceptions ($8);
- }
-
- if ($10 != 0)
- {
- (void) o->fe_add_context ($10);
- }
- }
-
- /*
- * Done with this operation. Pop its scope from the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-opt_op_attribute
- : IDL_ONEWAY
- {
-// opt_op_attribute : IDL_ONEWAY
- idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
- $$ = AST_Operation::OP_oneway;
- }
- | IDL_IDEMPOTENT
- {
-// | IDL_IDEMPOTENT
- idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
- $$ = AST_Operation::OP_idempotent;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = AST_Operation::OP_noflags;
- }
- ;
-
-op_type_spec
- : param_type_spec
- | IDL_VOID
- {
-// op_type_spec : param_type_spec | IDL_VOID
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- AST_Expression::EV_void
- );
- }
- ;
-
-init_decl
- : IDL_FACTORY
- {
-// init_decl : IDL_FACTORY
- //@@ PS_FactorySeen?
- idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
- }
- IDENTIFIER
- {
-// IDENTIFIER
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- if (s->is_abstract ())
- {
- //@@ Fire error
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("error in %s line %d:\n")
- ACE_TEXT ("Abstract valuetype can't have a ")
- ACE_TEXT ("factory construct.\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
-
- idl_global->set_err_count (idl_global->err_count () + 1);
- }
-
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName n (&id,
- 0);
- AST_Factory *factory = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
-
- /*
- * Create a node representing an factory construct
- * and add it to its enclosing scope
- */
- if (s != 0)
- {
- factory = idl_global->gen ()->create_factory (&n);
- (void) s->fe_add_factory (factory);
- }
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (factory);
- }
- init_parameter_list
- {
-// init_parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- opt_raises
- {
-// opt_raises
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- if ($7 != 0)
- {
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Factory *f = AST_Factory::narrow_from_scope (s);
- (void) f->fe_add_exceptions ($7);
- }
-
- idl_global->scopes ().pop ();
- }
- ;
-
-init_parameter_list
- : '('
- {
-// init_parameter_list : '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- ')'
- {
-// ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- | '('
- {
-// | '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- at_least_one_in_parameter
- ')'
- {
-// at_least_one_in_parameter ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- ;
-
-at_least_one_in_parameter : in_parameter in_parameters ;
-
-in_parameters
- : in_parameters
- ','
- {
-// in_parameters : in_parameters ','
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
- }
- in_parameter
- | /* EMPTY */
- ;
-
-in_parameter :
- IDL_IN
- {
-// in_parameter : IDL_IN
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
- }
- param_type_spec
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
- }
- declarator
- {
-// declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Argument *a = 0;
- 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 ($3 != 0
- && $5 != 0 &&
- s != 0)
- {
- AST_Type *tp = $5->compose ($3);
-
- if (tp != 0)
- {
- a = idl_global->gen ()->create_argument (
- AST_Argument::dir_IN,
- tp,
- $5->name ()
- );
-
- (void) s->fe_add_argument (a);
- }
- }
-
- $5->destroy ();
- delete $5;
- $5 = 0;
- }
- ;
-
-parameter_list
- : '('
- {
-// parameter_list : '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- ')'
- {
-// ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- | '('
- {
-// | '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- at_least_one_parameter
- ')'
- {
-// at_least_one_parameter ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- ;
-
-at_least_one_parameter : parameter parameters ;
-
-parameters
- : parameters
- ','
- {
-// parameters : parameters ','
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
- }
- parameter
- | /* EMPTY */
- ;
-
-parameter :
- direction
- {
-// parameter : direction
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
- }
- param_type_spec
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
- }
- declarator
- {
-// declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Argument *a = 0;
- 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 ($3 != 0
- && $5 != 0
- && s != 0)
- {
- AST_Type *tp = $5->compose ($3);
-
- if (tp != 0)
- {
- if (!s->is_local () && tp->is_local ())
- {
- idl_global->err ()->local_remote_mismatch (tp, s);
- }
- else
- {
- a =
- idl_global->gen ()->create_argument (
- $1,
- tp,
- $5->name ()
- );
- (void) s->fe_add_argument (a);
- }
- }
- }
-
- $5->destroy ();
- delete $5;
- $5 = 0;
- }
- ;
-
-param_type_spec
- : base_type_spec
- {
-// param_type_spec : base_type_spec
- $$ =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- $1
- );
- }
- | string_type_spec
- | wstring_type_spec
- | scoped_name
- {
-// | string_type_spec
-// | wstring_type_spec
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = 0;
-
- if (s != 0)
- {
- d = s->lookup_by_name ($1,
- true);
- }
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($1);
- }
- else
- {
- d->last_referenced_as ($1);
- AST_Decl::NodeType nt = d->node_type ();
- AST_Type *t = AST_Type::narrow_from_decl (d);
- AST_Typedef *td = 0;
- bool can_be_undefined = false;
-
- if (nt == AST_Decl::NT_struct_fwd
- || nt == AST_Decl::NT_union_fwd
- || nt == AST_Decl::NT_struct
- || nt == AST_Decl::NT_union
- || nt == AST_Decl::NT_typedef)
- {
- // This code block ensures that a sequence of
- // as-yet-undefined struct or union isn't used
- // as a return type or argument.
- if (nt == AST_Decl::NT_typedef)
- {
- td = AST_Typedef::narrow_from_decl (d);
- AST_Type *pbt = td->primitive_base_type ();
-
- if (pbt->node_type () == AST_Decl::NT_sequence)
- {
- t = pbt;
- AST_Sequence *seq_type =
- AST_Sequence::narrow_from_decl (pbt);
- AST_Type *elem_type =
- seq_type->base_type ();
- AST_Decl::NodeType elem_nt =
- elem_type->node_type ();
-
- if (elem_nt == AST_Decl::NT_typedef)
- {
- AST_Typedef *elem_td =
- AST_Typedef::narrow_from_decl (elem_type);
- elem_type = elem_td->primitive_base_type ();
- elem_nt = elem_type->node_type ();
- }
-
- if (elem_nt == AST_Decl::NT_interface
- || elem_nt == AST_Decl::NT_interface_fwd
- || elem_nt == AST_Decl::NT_valuetype
- || elem_nt == AST_Decl::NT_valuetype_fwd
- || elem_nt == AST_Decl::NT_component
- || elem_nt == AST_Decl::NT_component_fwd)
- {
- can_be_undefined = true;
- }
- }
- }
-
- if (! t->is_defined () && ! can_be_undefined)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_ILLEGAL_ADD,
- (nt == AST_Decl::NT_typedef ? td : t));
-
- /* If we don't return here, we'll crash later.*/
- return 1;
- }
- }
- }
-
-
- $$ = d;
- }
- ;
-
-direction
- : IDL_IN
- {
-// direction : IDL_IN
- $$ = AST_Argument::dir_IN;
- }
- | IDL_OUT
- {
-// | IDL_OUT
- $$ = AST_Argument::dir_OUT;
- }
- | IDL_INOUT
- {
-// | IDL_INOUT
- $$ = AST_Argument::dir_INOUT;
- }
- ;
-
-opt_raises
- : IDL_RAISES
- {
-// opt_raises : IDL_RAISES
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSeen);
- }
- '('
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSqSeen);
- }
- at_least_one_scoped_name
- ')'
- {
-// at_least_one_scoped_name ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseQsSeen);
- $$ = $5;
- }
- | /* EMPTY */
- {
- $$ = 0;
-/* | EMPTY */
- }
- ;
-
-opt_getraises
- : IDL_GETRAISES
- {
-// opt_getraises : IDL_GETRAISES
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSeen);
- }
- '('
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSqSeen);
- }
- at_least_one_scoped_name
- ')'
- {
-// at_least_one_scoped_name ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseQsSeen);
- $$ = $5;
- }
- | /* EMPTY */
- {
- $$ = 0;
-/* | EMPTY */
- }
- ;
-
-opt_setraises
- : IDL_SETRAISES
- {
-// opt_setraises : IDL_SETRAISES
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSeen);
- }
- '('
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSqSeen);
- }
- at_least_one_scoped_name
- ')'
- {
-// at_least_one_scoped_name ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseQsSeen);
- $$ = $5;
- }
- | /* EMPTY */
- {
- $$ = 0;
-/* | EMPTY */
- }
- ;
-
-opt_context
- : IDL_CONTEXT
- {
-// opt_context : IDL_CONTEXT
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSeen);
- }
- '('
- {
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSqSeen);
-// '('
- }
- at_least_one_string_literal
- ')'
- {
-// at_least_one_string_literal ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextQsSeen);
- $$ = $5;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-at_least_one_string_literal :
- IDL_STRING_LITERAL string_literals
- {
-// at_least_one_string_literal : IDL_STRING_LITERAL string_literals
- ACE_NEW_RETURN ($$,
- UTL_StrList ($1,
- $2),
- 1);
- }
- ;
-
-string_literals
- : string_literals
- ','
- {
-// string_literals : string_literals ','
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextCommaSeen);
- }
- IDL_STRING_LITERAL
- {
-// IDL_STRING_LITERAL
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($$,
- UTL_StrList ($4,
- 0),
- 1);
- }
- else
- {
- UTL_StrList *sl = 0;
- ACE_NEW_RETURN (sl,
- UTL_StrList ($4,
- 0),
- 1);
- $1->nconc (sl);
- $$ = $1;
- }
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-typeid_dcl
- : IDL_TYPEID scoped_name IDL_STRING_LITERAL
- {
-// typeid_dcl : IDL_TYPEID scoped_name IDL_STRING_LITERAL
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2);
- }
- else
- {
- d->set_id_with_typeid (
- $3->get_string ()
- );
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-typeprefix_dcl
- : IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
- {
-// typeprefix_dcl : IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = ScopeAsDecl (s);
-
- // If we are in a module, we want to avoid a lookup unless the
- // typeprefix is to be applied to some other scope, since we
- // might get a previous opening of the module, and the prefix
- // of this opening would never get checked or set.
- if (d->name ()->compare ($2) != 0)
- {
- d = s->lookup_by_name ($2,
- true);
- }
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2);
- }
- else
- {
- d->set_prefix_with_typeprefix (
- $3->get_string ()
- );
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-component
- : component_decl
- | component_forward_decl
- ;
-
-component_forward_decl :
- IDL_COMPONENT
- id
- {
-// component_forward_decl : IDL_COMPONENT id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_ComponentFwd *f = 0;
- idl_global->set_parse_state (
- IDL_GlobalData::PS_ComponentForwardSeen
- );
-
- /*
- * Create a node representing a forward declaration of a
- * component. Store it in the enclosing scope.
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_component_fwd (&n);
- (void) s->fe_add_component_fwd (f);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- ;
-
-component_decl :
- component_header
- {
-// component_decl : component_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Component *c = 0;
-
- /*
- * Make a new component node and add it to the enclosing scope.
- */
- if (s != 0 && $1 != 0)
- {
- c =
- idl_global->gen ()->create_component (
- $1->name (),
- $1->base_component (),
- $1->supports (),
- $1->n_supports (),
- $1->supports_flat (),
- $1->n_supports_flat ()
- );
- AST_Interface *i = AST_Interface::narrow_from_decl (c);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the component to its definition scope.
- */
- c = AST_Component::narrow_from_decl (i);
- (void) s->fe_add_component (c);
-
- // This FE_ComponentHeader class isn't destroyed with the AST.
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (c);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentSqSeen);
- }
- component_exports
- {
-// component_exports
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentQsSeen);
-
- /*
- * Done with this component - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-component_header :
- IDL_COMPONENT
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentIDSeen);
- }
- component_inheritance_spec
- {
-// component_inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- supports_spec
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
-
- /*
- * Create an AST representation of the information in the header
- * part of a component.
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ($2, 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_ComponentHeader (n,
- $4,
- $6,
- false),
- 1);
-
- if (0 != $6)
- {
- $6->destroy ();
- delete $6;
- $6 = 0;
- }
-
- if (0 != $4)
- {
- $4->destroy ();
- delete $4;
- $4 = 0;
- }
- }
- ;
-
-component_inheritance_spec
- : ':'
- {
-// component_inheritance_spec : ':'
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
- }
- scoped_name
- {
-// scoped_name
- $$ = $3;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-component_exports
- : component_exports component_export
- | /* EMPTY */
- ;
-
-component_export
- : provides_decl
- {
-// component_export : provides_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | uses_decl
- {
-// | uses_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | emits_decl
- {
-// | emits_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_EmitsDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | publishes_decl
- {
-// | publishes_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_PublishesDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | consumes_decl
- {
-// | consumes_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConsumesDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | attribute
- {
-// | attribute
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | extended_port_decl
- {
-// | extended_port_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- ;
-
-provides_decl : IDL_PROVIDES interface_type id
- {
-// provides_decl : IDL_PROVIDES interface_type id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
-
- AST_Decl *d = s->lookup_by_name ($2,
- true);
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_interface)
- {
- // Nothing else but CORBA::Object can have
- // this identifier.
- int comp_result =
- ACE_OS::strcmp (d->local_name ()->get_string (),
- "Object");
-
- // Simple provides port must use IDL interface
- // or CORBA::Object.
- if (comp_result != 0)
- {
- idl_global->err ()->interface_expected (d);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- AST_Type *port_interface_type =
- AST_Type::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ($3);
-
- UTL_ScopedName sn ($3,
- 0);
-
- AST_Provides *p =
- idl_global->gen ()->create_provides (&sn,
- port_interface_type);
-
- (void) s->fe_add_provides (p);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-interface_type
- : scoped_name
- {
-// interface_type : scoped_name
- // Lookups and checking are done where the 'interface_type'
- // token is used, in 'provides_decl' and 'uses_decl'.
- $$ = $1;
- }
- | IDL_OBJECT
- {
-// | IDL_OBJECT
- Identifier *corba_id = 0;
- ACE_NEW_RETURN (corba_id,
- Identifier ("Object"),
- 1);
- UTL_IdList *conc_name = 0;
- ACE_NEW_RETURN (conc_name,
- UTL_IdList (corba_id,
- 0),
- 1);
- ACE_NEW_RETURN (corba_id,
- Identifier ("CORBA"),
- 1);
- UTL_IdList *corba_name = 0;
- ACE_NEW_RETURN (corba_name,
- UTL_IdList (corba_id,
- conc_name),
- 1);
- $$ = corba_name;
- }
- ;
-
-uses_decl : uses_opt_multiple interface_type id
- {
-// uses_decl : uses_opt_multiple interface_type id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
-
- AST_Decl *d = s->lookup_by_name ($2,
- true);
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_interface)
- {
- // Nothing else but CORBA::Object can have
- // this identifier.
- int comp_result =
- ACE_OS::strcmp (d->local_name ()->get_string (),
- "Object");
-
- // Simple provides port must use IDL interface
- // or CORBA::Object.
- if (comp_result != 0)
- {
- idl_global->err ()->interface_expected (d);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- AST_Type *port_interface_type =
- AST_Type::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ($3);
-
- UTL_ScopedName sn ($3,
- 0);
-
- AST_Uses *u =
- idl_global->gen ()->create_uses (&sn,
- port_interface_type,
- $1);
-
- (void) s->fe_add_uses (u);
-
- AST_Component *c =
- AST_Component::narrow_from_scope (s);
-
- if (c != 0
- && u->is_multiple ()
- && !idl_global->using_ifr_backend ()
- && !idl_global->ignore_idl3 ())
- {
- // These datatypes must be created in the
- // front end so they can be looked up
- // when compiling the generated executor IDL.
- idl_global->create_uses_multiple_stuff (c, u);
- }
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-uses_opt_multiple
- : IDL_USES opt_multiple
- {
-// uses_opt_multiple : IDL_USES opt_multiple
- // We use this extra rule here to use in both uses_decl and
- // extended_uses_decl, so the LALR(1) parser can avoid conflicts.
- $$ = $2;
- }
- ;
-
-opt_multiple
- : IDL_MULTIPLE
- {
-// opt_multiple : IDL_MULTIPLE
- $$ = true;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = false;
- }
- ;
-
-emits_decl : IDL_EMITS scoped_name id
- {
-// emits_decl : IDL_EMITS scoped_name id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
- AST_Decl *d = s->lookup_by_name ($2,
- true);
-
- if (0 == d)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_eventtype)
- {
- idl_global->err ()->eventtype_expected (d);
- so_far_so_good = false;
- }
-
- if (so_far_so_good)
- {
- AST_EventType *event_type =
- AST_EventType::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ($3);
-
- UTL_ScopedName sn ($3,
- 0);
-
- AST_Emits *e =
- idl_global->gen ()->create_emits (&sn,
- event_type);
-
- (void) s->fe_add_emits (e);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-publishes_decl : IDL_PUBLISHES scoped_name id
- {
-// publishes_decl : IDL_PUBLISHES scoped_name id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
- AST_Decl *d = s->lookup_by_name ($2,
- true);
-
- if (0 == d)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_eventtype)
- {
- idl_global->err ()->eventtype_expected (d);
- so_far_so_good = false;
- }
-
- if (so_far_so_good)
- {
- AST_EventType *event_type =
- AST_EventType::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ($3);
-
- UTL_ScopedName sn ($3,
- 0);
-
- AST_Publishes *p =
- idl_global->gen ()->create_publishes (&sn,
- event_type);
-
- (void) s->fe_add_publishes (p);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-consumes_decl : IDL_CONSUMES scoped_name id
- {
-// consumes_decl : IDL_CONSUMES scoped_name id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
- AST_Decl *d = s->lookup_by_name ($2,
- true);
-
- if (0 == d)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_eventtype)
- {
- idl_global->err ()->eventtype_expected (d);
- so_far_so_good = false;
- }
-
- if (so_far_so_good)
- {
- AST_EventType *event_type =
- AST_EventType::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ($3);
-
- UTL_ScopedName sn ($3,
- 0);
-
- AST_Consumes *c =
- idl_global->gen ()->create_consumes (&sn,
- event_type);
-
- (void) s->fe_add_consumes (c);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-home_decl :
- home_header
- {
-// home_decl : home_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Home *h = 0;
-
- /*
- * Make a new home node and add it to the enclosing scope.
- */
- if (s != 0 && $1 != 0)
- {
- h =
- idl_global->gen ()->create_home (
- $1->name (),
- $1->base_home (),
- $1->managed_component (),
- $1->primary_key (),
- $1->supports (),
- $1->n_supports (),
- $1->supports_flat (),
- $1->n_supports_flat ()
- );
- /*
- * Add the home to its definition scope.
- */
- (void) s->fe_add_home (h);
-
- // This FE_HomeHeader class isn't destroyed with the AST.
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (h);
- }
- home_body
- {
-// home_body
- /*
- * Done with this component - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-home_header :
- IDL_HOME
- {
-// home_header : IDL_HOME
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeSeen);
- }
- id
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeIDSeen);
- }
- home_inheritance_spec
- {
-// home_inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- supports_spec
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
- }
- IDL_MANAGES
- {
-// IDL_MANAGES
- idl_global->set_parse_state (IDL_GlobalData::PS_ManagesSeen);
- }
- scoped_name
- {
-// scoped_name
- idl_global->set_parse_state (IDL_GlobalData::PS_ManagesIDSeen);
- }
- primary_key_spec
- {
-// primary_key_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_PrimaryKeySpecSeen);
-
- /*
- * Create an AST representation of the information in the header
- * part of a component home.
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ($3, 0),
- 1);
- ACE_NEW_RETURN ($$,
- FE_HomeHeader (n,
- $5,
- $7,
- $11,
- $13),
- 1);
-
- $11->destroy ();
- delete $11;
- $11 = 0;
-
- if (0 != $5)
- {
- $5->destroy ();
- delete $5;
- $5 = 0;
- }
-
- if (0 != $13)
- {
- $13->destroy ();
- delete $13;
- $13 = 0;
- }
-
- if (0 != $7)
- {
- $7->destroy ();
- delete $7;
- $7 = 0;
- }
- }
- ;
-
-home_inheritance_spec
- : ':'
- {
-// home_inheritance_spec ':'
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
- }
- scoped_name
- {
-// scoped_name
- $$ = $3;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-primary_key_spec
- : IDL_PRIMARYKEY
- scoped_name
- {
-// primary_key_spec : IDL_PRIMARYKEY scoped_name
- $$ = $2;
- }
- | /* EMPTY */
- {
-/* | EMPTY */
- $$ = 0;
- }
- ;
-
-home_body :
- '{'
- {
-// home_body : '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeSqSeen);
- }
- home_exports
- {
-// home_exports
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeQsSeen);
- }
- ;
-
-home_exports
- : home_exports home_export
- | /* EMPTY */
- ;
-
-home_export
- : export
- | factory_decl
- {
-// home_export : factory_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_FactoryDeclSeen);
- }
- ';'
- {
-// | ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | finder_decl
- {
-// | finder_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_FinderDeclSeen);
- }
- ';'
- {
-// | ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- ;
-
-factory_decl :
- IDL_FACTORY
- id
- {
-// factory_decl : IDL_FACTORY id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
-
- /*
- * Create a node representing a factory operation
- * and add it to the enclosing scope.
- */
- if (s != 0)
- {
- AST_Home *home = AST_Home::narrow_from_scope (s);
- o =
- idl_global->gen ()->create_operation (
- home->managed_component (),
- AST_Operation::OP_noflags,
- &n,
- false,
- false
- );
- home->factories ().enqueue_tail (o);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (o);
- }
- init_parameter_list
- {
-// init_parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- opt_raises
- {
-// opt_raises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- /*
- * Add exceptions and context to the operation.
- */
- if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
- {
- o = AST_Operation::narrow_from_scope (s);
-
- if ($6 != 0 && o != 0)
- {
- (void) o->fe_add_exceptions ($6);
- }
- }
-
- /*
- * Done with this operation. Pop its scope from the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-finder_decl :
- IDL_FINDER
- id
- {
-// finder_decl : IDL_FINDER id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
-
- /*
- * Create a node representing a finder operation
- * and add it to the enclosing scope.
- */
- if (s != 0)
- {
- AST_Home *home = AST_Home::narrow_from_scope (s);
- o =
- idl_global->gen ()->create_operation (
- home->managed_component (),
- AST_Operation::OP_noflags,
- &n,
- false,
- false
- );
- home->finders ().enqueue_tail (o);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (o);
- }
- init_parameter_list
- {
-// init_parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- opt_raises
- {
-// opt_raises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- /*
- * Add exceptions and context to the operation.
- */
- if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
- {
- o = AST_Operation::narrow_from_scope (s);
-
- if ($6 != 0 && o != 0)
- {
- (void) o->fe_add_exceptions ($6);
- }
- }
-
- /*
- * Done with this operation. Pop its scope from the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-event
- : event_decl
- | event_abs_decl
- | event_forward_decl
- ;
-
-event_forward_decl
- : event_abs_forward_decl
- | event_concrete_forward_decl
- ;
-
-event_concrete_forward_decl :
- IDL_EVENTTYPE
- id
- {
-// event_concrete_forward_decl : IDL_EVENTTYPE id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($2,
- 0);
- AST_EventTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * eventtype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_eventtype_fwd (&n,
- false);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- ;
-
-event_abs_forward_decl :
- IDL_ABSTRACT
- IDL_EVENTTYPE
- id
- {
-// event_abs_forward_decl : IDL_ABSTRACT IDL_EVENTTYPE id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($3,
- 0);
- AST_EventTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * eventtype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_eventtype_fwd (&n,
- true);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
- ;
-
-event_abs_decl :
- event_abs_header
- event_rest_of_header
- {
-// event_abs_decl : event_abs_header event_rest_of_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_EventType *e = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && $1 != 0)
- {
- UTL_ScopedName sn ($1,
- 0);
- e =
- idl_global->gen ()->create_eventtype (
- &sn,
- $2->inherits (),
- $2->n_inherits (),
- $2->inherits_concrete (),
- $2->inherits_flat (),
- $2->n_inherits_flat (),
- $2->supports (),
- $2->n_supports (),
- $2->supports_concrete (),
- true,
- false,
- false
- );
- i = AST_Interface::narrow_from_decl (e);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the eventetype to its definition scope
- */
- e = AST_EventType::narrow_from_decl (i);
- (void) s->fe_add_eventtype (e);
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (e);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
- }
- exports
- {
-// exports
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
-
- /*
- * Done with this eventtype - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-event_abs_header :
- IDL_ABSTRACT
- IDL_EVENTTYPE
- id
- {
-// event_abs_header : IDL_ABSTRACT IDL_EVENTTYPE id
- $$ = $3;
- }
- ;
-
-event_custom_header :
- IDL_CUSTOM
- IDL_EVENTTYPE
- id
- {
-// event_custom_header : IDL_CUSTOM IDL_EVENTTYPE id
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
-
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" custom yet\n")));
- $$ = 0;
- }
- ;
-
-event_plain_header :
- IDL_EVENTTYPE
- id
- {
-// event_plain_header : IDL_EVENTTYPE id
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
-
- $$ = $2;
- }
- ;
-
-event_rest_of_header :
- inheritance_spec
- {
-// event_rest_of_header : inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- supports_spec
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
-
- ACE_NEW_RETURN ($$,
- FE_EventHeader (
- 0,
- $1,
- $3,
- $1
- ? $1->truncatable ()
- : false
- ),
- 1);
-
- if (0 != $3)
- {
- $3->destroy ();
- delete $3;
- $3 = 0;
- }
-
- if (0 != $1)
- {
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- }
- ;
-
-event_decl :
- event_header
- event_rest_of_header
- {
-// event_decl : event_header event_rest_of_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_EventType *e = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && $1 != 0)
- {
- // We create the scoped name here instead of with the
- // FE_EventHeader because there is a token for it only here.
- UTL_ScopedName sn ($1,
- 0);
- e =
- idl_global->gen ()->create_eventtype (
- &sn,
- $2->inherits (),
- $2->n_inherits (),
- $2->inherits_concrete (),
- $2->inherits_flat (),
- $2->n_inherits_flat (),
- $2->supports (),
- $2->n_supports (),
- $2->supports_concrete (),
- false,
- $2->truncatable (),
- false
- );
- i = AST_Interface::narrow_from_decl (e);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the eventetype to its definition scope
- */
- e = AST_EventType::narrow_from_decl (i);
- (void) s->fe_add_eventtype (e);
-
- // FE_EventHeader is not automatically destroyed in the AST
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- sn.destroy ();
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (e);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
- }
- value_elements
- {
-// value_elements
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
-
- /*
- * Done with this eventtype - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-event_header
- : event_custom_header
- {
-// event_header : event_custom_header
- $$ = $1;
- }
- | event_plain_header
- {
-// event_header : event_plain_header
- $$ = $1;
- }
- ;
-
-type_classifier
- : IDL_TYPENAME
- {
-// type_classifier : IDL_TYPENAME
- $<ntval>$ = AST_Decl::NT_type;
- }
- | IDL_STRUCT
- {
-// IDL_STRUCT
- $<ntval>$ = AST_Decl::NT_struct;
- }
- | IDL_EVENTTYPE
- {
-// IDL_EVENTTYPE
- $<ntval>$ = AST_Decl::NT_eventtype;
- }
- | IDL_PRIMITIVE
- {
-// IDL_PRIMITIVE
- $<ntval>$ = AST_Decl::NT_pre_defined;
- }
- | IDL_FIXED
- {
-// IDL_FIXED
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("error in %C line %d:\n")
- ACE_TEXT ("Fixed types not supported ")
- ACE_TEXT ("in TAO.\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
-
- // Caught and handled later.
- $<ntval>$ = AST_Decl::NT_fixed;
- }
- | IDL_SEQUENCE
- {
-// IDL_SEQUENCE
- $<ntval>$ = AST_Decl::NT_sequence;
- }
- | IDL_INTERFACE
- {
-// IDL_INTERFACE
- $<ntval>$ = AST_Decl::NT_interface;
- }
- | IDL_VALUETYPE
- {
-// IDL_VALUETYPE
- $<ntval>$ = AST_Decl::NT_valuetype;
- }
- ;
-
-template_interface_def
- : template_interface_header
- {
-// template_interface_def : template_interface_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- AST_Template_Interface *i =
- idl_global->gen ()->create_template_interface (
- $1->name (),
- $1->inherits (),
- $1->n_inherits (),
- $1->inherits_flat (),
- $1->n_inherits_flat (),
- $1->param_info ());
-
- (void) s->fe_add_interface (i);
-
- $1->destroy ();
- delete $1;
- $1 = 0;
-
- idl_global->scopes ().push (i);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
- }
- exports
- {
-// exports - TODO: change to include concatenated identifiers
- 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
- */
- idl_global->scopes ().pop ();
- }
- ;
-
-template_interface_header
- : interface_decl at_least_one_template_param template_inheritance_spec
- {
-// template_interface_header : interface_decl at_least_one_template_param template_inheritance_spec
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ($1, 0),
- 1);
-
- ACE_NEW_RETURN ($$,
- FE_Template_InterfaceHeader (n,
- $2,
- $3),
- 1);
- }
- ;
-
-at_least_one_template_param
- : '<'
- {
-// at_least_one_template_param : '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_TmplInterfaceSqSeen);
- }
- template_param template_params
- {
-// template_param template_params
- if ($4 == 0)
- {
- ACE_NEW_RETURN ($4,
- FE_Utils::T_PARAMLIST_INFO,
- 1);
- }
-
- $4->enqueue_head (*$3);
- delete $3;
- $3 = 0;
- }
- '>'
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_TmplInterfaceQsSeen);
- $<plval>$ = $4;
- }
- ;
-
-template_params
- : template_params ','
- {
-// template_params : template_params ','
- // Maybe add a new parse state to set here.
- }
- template_param
- {
-// template_param
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($1,
- FE_Utils::T_PARAMLIST_INFO,
- 1);
- }
-
- $1->enqueue_tail (*$4);
- delete $4;
- $4 = 0;
-
- $$ = $1;
- }
- | /* EMPTY */
- {
-// /* EMPTY */
- $<plval>$ = 0;
- }
- ;
-
-template_param
- : type_classifier IDENTIFIER
- {
-// template_param : type_classifier IDENTIFIER
-
- ACE_NEW_RETURN ($$,
- FE_Utils::T_Param_Info,
- 1);
-
- $<pival>$->type_ = $1;
- $<pival>$->name_ = $2;
- }
- ;
-
-template_inheritance_spec
- : ':' at_least_one_template_ref
- {
-// template_inheritance_spec : ':' at_least_one_template_ref
- $<rlval>$ = $2;
- }
- | /* EMPTY */
- {
-// /* EMPTY */
- $<rlval>$ = 0;
- }
- ;
-
-at_least_one_template_ref
- : template_ref template_refs
- {
-// at_least_one_template_ref : template_ref template_refs
- if ($2 == 0)
- {
- ACE_NEW_RETURN ($2,
- FE_Utils::T_REFLIST_INFO,
- 1);
- }
-
- $2->enqueue_head (*$1);
- delete $1;
- $1 = 0;
-
- $<rlval>$ = $2;
- }
- ;
-
-template_refs
- : template_refs ',' template_ref
- {
-// template_refs : template_refs ',' template_ref
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($1,
- FE_Utils::T_REFLIST_INFO,
- 1);
-
- $1->enqueue_tail (*$3);
- delete $3;
- $3 = 0;
-
- $<rlval>$ = $1;
- }
- }
- | /* EMPTY */
- {
-// /* EMPTY */
- $<rlval>$ = 0;
- }
- ;
-
-template_ref
- : scoped_name '<' at_least_one_template_param_ref '>'
- {
-// template_ref : scoped_name '<' at_least_one_template_param_ref '>'
- ACE_NEW_RETURN ($$,
- FE_Utils::T_Ref_Info ($1, $3),
- 1);
- }
- ;
-
-at_least_one_template_param_ref
- : template_param_ref template_param_refs
- {
-// at_least_one_template_param_ref : template_param_ref template_param_refs
- ACE_NEW_RETURN ($$,
- UTL_StrList ($1,
- $2),
- 1);
- }
- ;
-
-template_param_refs
- : template_param_refs ',' template_param_ref
- {
-// template_param_refs : template_param_refs ',' template_param_ref
- if ($1 == 0)
- {
- ACE_NEW_RETURN ($1,
- UTL_StrList ($3,
- 0),
- 1);
- }
- else
- {
- UTL_StrList *l = 0;
- ACE_NEW_RETURN (l,
- UTL_StrList ($3,
- 0),
- 1);
-
- $1->nconc (l);
- }
-
- $<slval>$ = $1;
- }
- | /* EMPTY */
- {
-// /* EMPTY */
- $<slval>$ = 0;
- }
- ;
-
-template_param_ref
- : IDENTIFIER
- {
-// template_param_ref : IDENTIFIER
- ACE_NEW_RETURN ($$,
- UTL_String ($1),
- 1);
- }
- ;
-
-porttype_decl
- : IDL_PORTTYPE
- {
-// porttype_decl : IDL_PORTTYPE
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSeen);
- }
- IDENTIFIER
- {
-// IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeIDSeen);
- }
- opt_template_params
- {
-// opt_template_params
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_PortType *p =
- idl_global->gen ()->create_porttype (&sn,
- $5);
-
- (void) s->fe_add_porttype (p);
-
- // Push it on the scopes stack.
- idl_global->scopes ().push (p);
- }
- '{'
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSqSeen);
- }
- at_least_one_port_export
- {
-// at_least_one_port_export
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeBodySeen);
- }
- '}'
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeQsSeen);
-
- // Done with this port type - pop it off the scopes stack.
- idl_global->scopes ().pop ();
- }
- ;
-
-opt_template_params
- : at_least_one_template_param
- {
-// opt_template_params : at_least_one_template_param
- $$ = $1;
- }
- | /* EMPTY */
- {
-// | /* EMPTY */
- $$ = 0;
- }
- ;
-
-at_least_one_port_export
- : port_export port_exports
- {
-// at_least_one_port_export : port_export port_exports
- }
- ;
-
-port_exports
- : port_exports port_export
- {
-// port_exports : port_exports port_export
- }
- | /* EMPTY */
- {
-// | /* EMPTY */
- }
- ;
-
-port_export
- : extended_provides_decl
- {
-// port_export : extended_provides_decl
- }
- ';'
- {
-// ';'
- }
- | extended_uses_decl
- {
-// | extended_uses_decl
- }
- ';'
- {
-// ';'
- }
- ;
-
-extended_provides_decl
- : provides_decl
- {
-// extended_provides_decl : provides_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
- }
- | IDL_PROVIDES template_ref IDENTIFIER
- {
-// | IDL_PROVIDES template_ref IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtProvidesDeclSeen);
- bool so_far_so_good = true;
- AST_Template_Interface *i = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2->name_,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2->name_);
- so_far_so_good = false;
- }
- else
- {
- i = AST_Template_Interface::narrow_from_decl (d);
-
- if (i == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_TMPL_IFACE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else if (! i->match_param_names ($2->params_))
- {
- idl_global->err ()->mismatched_template_param ($2->name_);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ($3);
- UTL_ScopedName sn (&id, 0);
-
- AST_Provides *p =
- idl_global->gen ()->create_provides (&sn, i);
-
- (void) s->fe_add_provides (p);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- ACE::strdelete ($3);
- $3 = 0;
- }
- ;
-
-extended_uses_decl
- : uses_decl
- {
-// extended_uses_decl : uses_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
- }
- | uses_opt_multiple template_ref IDENTIFIER
- {
-// | uses_opt_multiple template_ref IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtUsesDeclSeen);
- bool so_far_so_good = true;
- AST_Template_Interface *i = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2->name_,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2->name_);
- so_far_so_good = false;
- }
- else
- {
- i = AST_Template_Interface::narrow_from_decl (d);
-
- if (i == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_TMPL_IFACE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else if (! i->match_param_names ($2->params_))
- {
- idl_global->err ()->mismatched_template_param ($2->name_);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ($3);
- UTL_ScopedName sn (&id, 0);
-
- AST_Uses *u =
- idl_global->gen ()->create_uses (&sn, i, $1);
-
- (void) s->fe_add_uses (u);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
-
- ACE::strdelete ($3);
- $3 = 0;
- }
- ;
-
-extended_port_decl
- : template_port_decl
- | non_template_port_decl
- ;
-
-template_port_decl
- : IDL_PORT template_inst IDENTIFIER
- {
-// extended_port_decl : IDL_PORT template_inst IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2->name_, true);
- AST_PortType *pt = 0;
- AST_PortType::T_ARGLIST *args = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2->name_);
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- args =
- pt->match_arg_names ($2->args_);
-
- if (args == 0)
- {
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Extended_Port *ep =
- idl_global->gen ()->create_extended_port (&sn,
- pt,
- args);
-
- (void) s->fe_add_extended_port (ep);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- | IDL_MIRRORPORT template_inst IDENTIFIER
- {
-// | IDL_MIRRORPORT template_inst IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2->name_, true);
- AST_PortType *pt = 0;
- AST_PortType::T_ARGLIST *args = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2->name_);
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- args =
- pt->match_arg_names ($2->args_);
-
- if (args == 0)
- {
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Mirror_Port *mp =
- idl_global->gen ()->create_mirror_port (&sn,
- pt,
- args);
-
- (void) s->fe_add_mirror_port (mp);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- ;
-
-non_template_port_decl
- : IDL_PORT scoped_name IDENTIFIER
- {
-// non_template_port_decl : IDL_PORT scoped_name IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2, true);
- AST_PortType *pt = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- FE_Utils::T_PARAMLIST_INFO *p_list =
- pt->template_params ();
-
- if (p_list != 0 && p_list->size () != 0)
- {
- idl_global->err ()->error0 (
- UTL_Error::EIDL_T_ARG_LENGTH);
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Extended_Port *ep =
- idl_global->gen ()->create_extended_port (
- &sn,
- pt,
- 0);
-
- (void) s->fe_add_extended_port (ep);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- | IDL_MIRRORPORT scoped_name IDENTIFIER
- {
-// | IDL_MIRRORPORT scoped_name IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($2, true);
- AST_PortType *pt = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($2);
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- FE_Utils::T_PARAMLIST_INFO *p_list =
- pt->template_params ();
-
- if (p_list != 0 && p_list->size () != 0)
- {
- idl_global->err ()->error0 (
- UTL_Error::EIDL_T_ARG_LENGTH);
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Mirror_Port *mp =
- idl_global->gen ()->create_mirror_port (
- &sn,
- pt,
- 0);
-
- (void) s->fe_add_mirror_port (mp);
- }
-
- $2->destroy ();
- delete $2;
- $2 = 0;
- }
- ;
-
-template_inst
- : scoped_name '<' at_least_one_scoped_name '>'
- {
-// template_inst : scoped_name '<' at_least_one_scoped_name '>'
- ACE_NEW_RETURN ($<tival>$,
- FE_Utils::T_Inst_Info ($1,
- $3),
- 1);
- }
- ;
-
-connector_decl
- : connector_header connector_body
- ;
-
-connector_header
- : IDL_CONNECTOR
- {
-// connector_header : IDL_CONNECTOR
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSeen);
- }
- IDENTIFIER
- {
-// IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorIDSeen);
- }
- opt_template_params
- {
-// opt_template_params
- }
- component_inheritance_spec
- {
-// component_inheritance_spec
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Connector *parent = 0;
- bool so_far_so_good = true;
-
- Identifier id ($3);
- ACE::strdelete ($3);
- $3 = 0;
-
- UTL_ScopedName sn (&id, 0);
-
- if ($7 != 0)
- {
- AST_Decl *d = s->lookup_by_name ($7, true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($7);
- so_far_so_good = false;
- }
-
- parent =
- AST_Connector::narrow_from_decl (d);
-
- if (parent == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_CONNECTOR_EXPECTED,
- d);
-
- so_far_so_good = false;
- }
-
- $7->destroy ();
- delete $7;
- $7 = 0;
- }
-
- if (so_far_so_good)
- {
- AST_Connector *c =
- idl_global->gen ()->create_connector (&sn,
- parent,
- $5);
-
- (void) s->fe_add_connector (c);
-
- // Push it on the scopes stack.
- idl_global->scopes ().push (c);
- }
- }
- ;
-
-connector_body
- : '{'
- {
-// connector_body " '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSqSeen);
- }
- at_least_one_connector_export
- {
-// at_least_one_connector_export
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorBodySeen);
- }
- '}'
- {
-// '}
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorQsSeen);
-
- // Done with this connector - pop it off the scope stack.
- idl_global->scopes ().pop ();
- }
- ;
-
-at_least_one_connector_export
- : connector_export connector_exports
- ;
-
-connector_exports
- : connector_exports connector_export
- | /* EMPTY */
- ;
-
-connector_export
- : provides_decl
- {
-// connector_export : provides_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | uses_decl
- {
-// | uses_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | attribute
- {
-// | attribute
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | non_template_port_decl
- {
-// | non_template_port_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- | template_extended_port_decl
- {
-// | template_extended_port_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- }
- ';'
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
-/*
-If this is also legal, there will be conflicts to be resolved
- | extended_port_decl ';'
-*/
- ;
-
-template_extended_port_decl
- : IDL_PORT template_ref_decl
- {
-// template_extended_port_decl : IDL_PORT template_ref_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- if ($2 != 0)
- {
- Identifier id ($2->name_.c_str ());
- UTL_ScopedName sn (&id, 0);
-
- AST_Tmpl_Port *pt =
- idl_global->gen ()->create_tmpl_port (
- &sn,
- $2->type_);
-
- (void) s->fe_add_tmpl_port (pt);
-
- delete $2;
- $2 = 0;
- }
- }
- | IDL_MIRRORPORT template_ref_decl
- {
-// | IDL_MIRRORPORT template_ref_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- if ($2 != 0)
- {
- Identifier id ($2->name_.c_str ());
- UTL_ScopedName sn (&id, 0);
-
- AST_Tmpl_Mirror_Port *pt =
- idl_global->gen ()->create_tmpl_mirror_port (
- &sn,
- $2->type_);
-
- (void) s->fe_add_tmpl_mirror_port (pt);
-
- delete $2;
- $2 = 0;
- }
- }
- ;
-
-template_ref_decl
- : template_ref IDENTIFIER
- {
-// template_ref_decl : template_ref IDENTIFIER
- $$ = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ($1->name_,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($1->name_);
- }
- else
- {
- AST_PortType *pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- }
- else
- {
- ACE_NEW_RETURN ($$,
- FE_Utils::T_Port_Info ($2,
- pt),
- 1);
- }
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
-
- ACE::strdelete ($2);
- $2 = 0;
- }
- ;
-
-connector_inst_spec
- : template_inst
- {
-// connector_inst_spec : template_inst
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- $$ = 0;
-
- AST_Decl *d =
- s->lookup_by_name ($1->name_, true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ($1->name_);
- }
- else
- {
- AST_Connector *c = AST_Connector::narrow_from_decl (d);
-
- if (c == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_CONNECTOR_EXPECTED,
- d);
- }
- else
- {
- AST_Template_Common::T_ARGLIST *args =
- c->match_arg_names ($1->args_);
-
- if (args != 0)
- {
- Identifier id ("connector");
- UTL_ScopedName sn (&id, 0);
-
- $$ =
- idl_global->gen ()->create_instantiated_connector (
- &sn,
- c,
- args);
- }
- }
- }
-
- $1->destroy ();
- delete $1;
- $1 = 0;
- }
- ;
-
-%%
-/* programs */
-
-/*
- * ???
- */
-int
-yywrap (void)
-{
- return 1;
-}
-
-/*
- * Report an error situation discovered in a production
- */
-void
-yyerror (const char *msg)
-{
- ACE_ERROR ((LM_ERROR,
- "%s\n",
- msg));
-}
diff --git a/modules/TAO/TAO_IDL/fe/y.tab.cpp b/modules/TAO/TAO_IDL/fe/y.tab.cpp
deleted file mode 100644
index adfa6fbcec9..00000000000
--- a/modules/TAO/TAO_IDL/fe/y.tab.cpp
+++ /dev/null
@@ -1,10065 +0,0 @@
-// $Id$
-/* A Bison parser, made by GNU Bison 2.3. */
-
-/* Skeleton implementation for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
- simplifying the original so-called "semantic" parser. */
-
-/* All symbols defined below should begin with tao_yy or TAO_YY, to avoid
- infringing on user name space. This should be done even for local
- variables, as they might otherwise be expanded by user macros.
- There are some unavoidable exceptions within include files to
- define necessary library symbols; they are noted "INFRINGES ON
- USER NAME SPACE" below. */
-
-/* Identify Bison output. */
-#define TAO_YYBISON 1
-
-/* Bison version. */
-#define TAO_YYBISON_VERSION "2.3"
-
-/* Skeleton name. */
-#define TAO_YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers. */
-#define TAO_YYPURE 0
-
-/* Using locations. */
-#define TAO_YYLSP_NEEDED 0
-
-
-
-/* Tokens. */
-#ifndef TAO_YYTOKENTYPE
-# define TAO_YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum tao_yytokentype {
- IDENTIFIER = 258,
- IDL_CONST = 259,
- IDL_MODULE = 260,
- IDL_INTERFACE = 261,
- IDL_TYPEDEF = 262,
- IDL_LONG = 263,
- IDL_SHORT = 264,
- IDL_UNSIGNED = 265,
- IDL_DOUBLE = 266,
- IDL_FLOAT = 267,
- IDL_CHAR = 268,
- IDL_WCHAR = 269,
- IDL_OCTET = 270,
- IDL_BOOLEAN = 271,
- IDL_FIXED = 272,
- IDL_ANY = 273,
- IDL_OBJECT = 274,
- IDL_STRUCT = 275,
- IDL_UNION = 276,
- IDL_SWITCH = 277,
- IDL_ENUM = 278,
- IDL_SEQUENCE = 279,
- IDL_STRING = 280,
- IDL_WSTRING = 281,
- IDL_EXCEPTION = 282,
- IDL_CASE = 283,
- IDL_DEFAULT = 284,
- IDL_READONLY = 285,
- IDL_ATTRIBUTE = 286,
- IDL_ONEWAY = 287,
- IDL_IDEMPOTENT = 288,
- IDL_VOID = 289,
- IDL_IN = 290,
- IDL_OUT = 291,
- IDL_INOUT = 292,
- IDL_RAISES = 293,
- IDL_CONTEXT = 294,
- IDL_NATIVE = 295,
- IDL_LOCAL = 296,
- IDL_ABSTRACT = 297,
- IDL_CUSTOM = 298,
- IDL_FACTORY = 299,
- IDL_PRIVATE = 300,
- IDL_PUBLIC = 301,
- IDL_SUPPORTS = 302,
- IDL_TRUNCATABLE = 303,
- IDL_VALUETYPE = 304,
- IDL_COMPONENT = 305,
- IDL_CONSUMES = 306,
- IDL_EMITS = 307,
- IDL_EVENTTYPE = 308,
- IDL_FINDER = 309,
- IDL_GETRAISES = 310,
- IDL_HOME = 311,
- IDL_IMPORT = 312,
- IDL_MULTIPLE = 313,
- IDL_PRIMARYKEY = 314,
- IDL_PROVIDES = 315,
- IDL_PUBLISHES = 316,
- IDL_SETRAISES = 317,
- IDL_TYPEID = 318,
- IDL_TYPEPREFIX = 319,
- IDL_USES = 320,
- IDL_MANAGES = 321,
- IDL_TYPENAME = 322,
- IDL_PRIMITIVE = 323,
- IDL_PORT = 324,
- IDL_MIRRORPORT = 325,
- IDL_PORTTYPE = 326,
- IDL_CONNECTOR = 327,
- IDL_CONCAT = 328,
- IDL_INTEGER_LITERAL = 329,
- IDL_UINTEGER_LITERAL = 330,
- IDL_STRING_LITERAL = 331,
- IDL_CHARACTER_LITERAL = 332,
- IDL_FLOATING_PT_LITERAL = 333,
- IDL_TRUETOK = 334,
- IDL_FALSETOK = 335,
- IDL_SCOPE_DELIMITOR = 336,
- IDL_LEFT_SHIFT = 337,
- IDL_RIGHT_SHIFT = 338,
- IDL_WCHAR_LITERAL = 339,
- IDL_WSTRING_LITERAL = 340
- };
-#endif
-/* Tokens. */
-#define IDENTIFIER 258
-#define IDL_CONST 259
-#define IDL_MODULE 260
-#define IDL_INTERFACE 261
-#define IDL_TYPEDEF 262
-#define IDL_LONG 263
-#define IDL_SHORT 264
-#define IDL_UNSIGNED 265
-#define IDL_DOUBLE 266
-#define IDL_FLOAT 267
-#define IDL_CHAR 268
-#define IDL_WCHAR 269
-#define IDL_OCTET 270
-#define IDL_BOOLEAN 271
-#define IDL_FIXED 272
-#define IDL_ANY 273
-#define IDL_OBJECT 274
-#define IDL_STRUCT 275
-#define IDL_UNION 276
-#define IDL_SWITCH 277
-#define IDL_ENUM 278
-#define IDL_SEQUENCE 279
-#define IDL_STRING 280
-#define IDL_WSTRING 281
-#define IDL_EXCEPTION 282
-#define IDL_CASE 283
-#define IDL_DEFAULT 284
-#define IDL_READONLY 285
-#define IDL_ATTRIBUTE 286
-#define IDL_ONEWAY 287
-#define IDL_IDEMPOTENT 288
-#define IDL_VOID 289
-#define IDL_IN 290
-#define IDL_OUT 291
-#define IDL_INOUT 292
-#define IDL_RAISES 293
-#define IDL_CONTEXT 294
-#define IDL_NATIVE 295
-#define IDL_LOCAL 296
-#define IDL_ABSTRACT 297
-#define IDL_CUSTOM 298
-#define IDL_FACTORY 299
-#define IDL_PRIVATE 300
-#define IDL_PUBLIC 301
-#define IDL_SUPPORTS 302
-#define IDL_TRUNCATABLE 303
-#define IDL_VALUETYPE 304
-#define IDL_COMPONENT 305
-#define IDL_CONSUMES 306
-#define IDL_EMITS 307
-#define IDL_EVENTTYPE 308
-#define IDL_FINDER 309
-#define IDL_GETRAISES 310
-#define IDL_HOME 311
-#define IDL_IMPORT 312
-#define IDL_MULTIPLE 313
-#define IDL_PRIMARYKEY 314
-#define IDL_PROVIDES 315
-#define IDL_PUBLISHES 316
-#define IDL_SETRAISES 317
-#define IDL_TYPEID 318
-#define IDL_TYPEPREFIX 319
-#define IDL_USES 320
-#define IDL_MANAGES 321
-#define IDL_TYPENAME 322
-#define IDL_PRIMITIVE 323
-#define IDL_PORT 324
-#define IDL_MIRRORPORT 325
-#define IDL_PORTTYPE 326
-#define IDL_CONNECTOR 327
-#define IDL_CONCAT 328
-#define IDL_INTEGER_LITERAL 329
-#define IDL_UINTEGER_LITERAL 330
-#define IDL_STRING_LITERAL 331
-#define IDL_CHARACTER_LITERAL 332
-#define IDL_FLOATING_PT_LITERAL 333
-#define IDL_TRUETOK 334
-#define IDL_FALSETOK 335
-#define IDL_SCOPE_DELIMITOR 336
-#define IDL_LEFT_SHIFT 337
-#define IDL_RIGHT_SHIFT 338
-#define IDL_WCHAR_LITERAL 339
-#define IDL_WSTRING_LITERAL 340
-
-
-
-
-/* Copy the first part of user declarations. */
-
-
-#include "ast_argument.h"
-#include "ast_array.h"
-#include "ast_attribute.h"
-#include "ast_field.h"
-#include "ast_expression.h"
-#include "ast_operation.h"
-#include "ast_generator.h"
-#include "ast_module.h"
-#include "ast_valuebox.h"
-#include "ast_valuetype.h"
-#include "ast_valuetype_fwd.h"
-#include "ast_eventtype.h"
-#include "ast_eventtype_fwd.h"
-#include "ast_component.h"
-#include "ast_component_fwd.h"
-#include "ast_home.h"
-#include "ast_template_interface.h"
-#include "ast_porttype.h"
-#include "ast_connector.h"
-#include "ast_instantiated_connector.h"
-#include "ast_uses.h"
-#include "ast_constant.h"
-#include "ast_union.h"
-#include "ast_union_fwd.h"
-#include "ast_structure_fwd.h"
-#include "ast_extern.h"
-#include "ast_enum.h"
-#include "ast_root.h"
-#include "ast_sequence.h"
-#include "ast_string.h"
-#include "ast_factory.h"
-#include "ast_exception.h"
-#include "fe_declarator.h"
-#include "fe_interface_header.h"
-#include "fe_template_interface_header.h"
-#include "fe_instantiated_interface_header.h"
-#include "fe_obv_header.h"
-#include "fe_event_header.h"
-#include "fe_component_header.h"
-#include "fe_home_header.h"
-#include "fe_utils.h"
-#include "utl_identifier.h"
-#include "utl_err.h"
-#include "utl_string.h"
-#include "utl_strlist.h"
-#include "utl_namelist.h"
-#include "utl_exprlist.h"
-#include "utl_labellist.h"
-#include "utl_decllist.h"
-#include "global_extern.h"
-#include "nr_extern.h"
-
-#if (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);
-extern "C" int tao_yywrap (void);
-extern char tao_yytext[];
-extern int tao_yyleng;
-AST_Decl *tao_enum_constant_decl = 0;
-#define TAO_YYDEBUG_LEXER_TEXT (tao_yytext[tao_yyleng] = '\0', tao_yytext)
-// Force the pretty debugging code to compile.
-#define TAO_YYDEBUG 1
-
-
-/* Enabling traces. */
-#ifndef TAO_YYDEBUG
-# define TAO_YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages. */
-#ifdef TAO_YYERROR_VERBOSE
-# undef TAO_YYERROR_VERBOSE
-# define TAO_YYERROR_VERBOSE 1
-#else
-# define TAO_YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table. */
-#ifndef TAO_YYTOKEN_TABLE
-# define TAO_YYTOKEN_TABLE 0
-#endif
-
-#if ! defined TAO_YYSTYPE && ! defined TAO_YYSTYPE_IS_DECLARED
-typedef union TAO_YYSTYPE
-
-{
- 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_Template_InterfaceHeader *thval; /* Template interface hdr */
- FE_OBVHeader *vhval; /* Valuetype header */
- FE_EventHeader *ehval; /* Event header */
- FE_ComponentHeader *chval; /* Component header */
- FE_HomeHeader *hhval; /* Home 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 */
- ACE_CDR::Boolean bval; /* Boolean value */
- ACE_CDR::Long ival; /* Long value */
- ACE_CDR::ULong uival; /* Unsigned long value */
- ACE_CDR::Double dval; /* Double value */
- ACE_CDR::Float fval; /* Float value */
- ACE_CDR::Char cval; /* Char value */
- ACE_CDR::WChar wcval; /* WChar value */
- UTL_String *sval; /* String value */
- char *wsval; /* WString value */
- char *strval; /* char * value */
- Identifier *idval; /* Identifier */
- UTL_IdList *idlist; /* Identifier list */
- AST_Decl::NodeType ntval; /* Node type value */
- FE_Utils::T_Param_Info *pival; /* Template interface param */
- FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */
- FE_Utils::T_Ref_Info *trval; /* Template interface info */
- FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */
- FE_Utils::T_Inst_Info *tival; /* Template instantiation */
- FE_Utils::T_Port_Info *ptval; /* Porttype reference */
-}
-/* Line 187 of yacc.c. */
-
- TAO_YYSTYPE;
-# define tao_yystype TAO_YYSTYPE /* obsolescent; will be withdrawn */
-# define TAO_YYSTYPE_IS_DECLARED 1
-# define TAO_YYSTYPE_IS_TRIVIAL 1
-#endif
-
-
-
-/* Copy the second part of user declarations. */
-
-
-/* Line 216 of yacc.c. */
-
-
-#ifdef short
-# undef short
-#endif
-
-#ifdef TAO_YYTYPE_UINT8
-typedef TAO_YYTYPE_UINT8 tao_yytype_uint8;
-#else
-typedef unsigned char tao_yytype_uint8;
-#endif
-
-#ifdef TAO_YYTYPE_INT8
-typedef TAO_YYTYPE_INT8 tao_yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-typedef signed char tao_yytype_int8;
-#else
-typedef short int tao_yytype_int8;
-#endif
-
-#ifdef TAO_YYTYPE_UINT16
-typedef TAO_YYTYPE_UINT16 tao_yytype_uint16;
-#else
-typedef unsigned short int tao_yytype_uint16;
-#endif
-
-#ifdef TAO_YYTYPE_INT16
-typedef TAO_YYTYPE_INT16 tao_yytype_int16;
-#else
-typedef short int tao_yytype_int16;
-#endif
-
-#ifndef TAO_YYSIZE_T
-# ifdef __SIZE_TYPE__
-# define TAO_YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-# define TAO_YYSIZE_T size_t
-# elif ! defined TAO_YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-# define TAO_YYSIZE_T size_t
-# else
-# define TAO_YYSIZE_T unsigned int
-# endif
-#endif
-
-#define TAO_YYSIZE_MAXIMUM ((TAO_YYSIZE_T) -1)
-
-#ifndef TAO_YY_
-# if TAO_YYENABLE_NLS
-# if ENABLE_NLS
-# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-# define TAO_YY_(msgid) dgettext ("bison-runtime", msgid)
-# endif
-# endif
-# ifndef TAO_YY_
-# define TAO_YY_(msgid) msgid
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E. */
-#if ! defined lint || defined __GNUC__
-# define TAO_YYUSE(e) ((void) (e))
-#else
-# define TAO_YYUSE(e) /* empty */
-#endif
-
-/* Identity function, used to suppress warnings about constant conditions. */
-#ifndef lint
-# define TAO_YYID(n) (n)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static int
-TAO_YYID (int i)
-#else
-static int
-TAO_YYID (i)
- int i;
-#endif
-{
- return i;
-}
-#endif
-
-#if ! defined tao_yyoverflow || TAO_YYERROR_VERBOSE
-
-/* The parser invokes alloca or malloc; define the necessary symbols. */
-
-# ifdef TAO_YYSTACK_USE_ALLOCA
-# if TAO_YYSTACK_USE_ALLOCA
-# ifdef __GNUC__
-# define TAO_YYSTACK_ALLOC __builtin_alloca
-# elif defined __BUILTIN_VA_ARG_INCR
-# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-# elif defined _AIX
-# define TAO_YYSTACK_ALLOC __alloca
-# elif defined _MSC_VER
-# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-# define alloca _alloca
-# else
-# define TAO_YYSTACK_ALLOC alloca
-# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
-# endif
-# endif
-# endif
-# endif
-# endif
-
-# ifdef TAO_YYSTACK_ALLOC
- /* Pacify GCC's `empty if-body' warning. */
-# define TAO_YYSTACK_FREE(Ptr) do { /* empty */; } while (TAO_YYID (0))
-# ifndef TAO_YYSTACK_ALLOC_MAXIMUM
- /* The OS might guarantee only one guard page at the bottom of the stack,
- and a page size can be as small as 4096 bytes. So we cannot safely
- invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
- to allow for a few compiler-allocated temporary stack slots. */
-# define TAO_YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-# endif
-# else
-# define TAO_YYSTACK_ALLOC TAO_YYMALLOC
-# define TAO_YYSTACK_FREE TAO_YYFREE
-# ifndef TAO_YYSTACK_ALLOC_MAXIMUM
-# define TAO_YYSTACK_ALLOC_MAXIMUM TAO_YYSIZE_MAXIMUM
-# endif
-# if (defined __cplusplus && ! defined _STDLIB_H \
- && ! ((defined TAO_YYMALLOC || defined malloc) \
- && (defined TAO_YYFREE || defined free)))
-# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-# ifndef _STDLIB_H
-# define _STDLIB_H 1
-# endif
-# endif
-# ifndef TAO_YYMALLOC
-# define TAO_YYMALLOC malloc
-# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-void *malloc (TAO_YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# ifndef TAO_YYFREE
-# define TAO_YYFREE free
-# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-# endif
-# endif
-# endif
-#endif /* ! defined tao_yyoverflow || TAO_YYERROR_VERBOSE */
-
-
-#if (! defined tao_yyoverflow \
- && (! defined __cplusplus \
- || (defined TAO_YYSTYPE_IS_TRIVIAL && TAO_YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member. */
-union tao_yyalloc
-{
- tao_yytype_int16 tao_yyss;
- TAO_YYSTYPE tao_yyvs;
- };
-
-/* The size of the maximum gap between one aligned stack and the next. */
-# define TAO_YYSTACK_GAP_MAXIMUM (sizeof (union tao_yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
- N elements. */
-# define TAO_YYSTACK_BYTES(N) \
- ((N) * (sizeof (tao_yytype_int16) + sizeof (TAO_YYSTYPE)) \
- + TAO_YYSTACK_GAP_MAXIMUM)
-
-/* Copy COUNT objects from FROM to TO. The source and destination do
- not overlap. */
-# ifndef TAO_YYCOPY
-# if defined __GNUC__ && 1 < __GNUC__
-# define TAO_YYCOPY(To, From, Count) \
- __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
-# else
-# define TAO_YYCOPY(To, From, Count) \
- do \
- { \
- TAO_YYSIZE_T tao_yyi; \
- for (tao_yyi = 0; tao_yyi < (Count); tao_yyi++) \
- (To)[tao_yyi] = (From)[tao_yyi]; \
- } \
- while (TAO_YYID (0))
-# endif
-# endif
-
-/* Relocate STACK from its old location to the new one. The
- local variables TAO_YYSIZE and TAO_YYSTACKSIZE give the old and new number of
- elements in the stack, and TAO_YYPTR gives the new location of the
- stack. Advance TAO_YYPTR to a properly aligned location for the next
- stack. */
-# define TAO_YYSTACK_RELOCATE(Stack) \
- do \
- { \
- TAO_YYSIZE_T tao_yynewbytes; \
- TAO_YYCOPY (&tao_yyptr->Stack, Stack, tao_yysize); \
- Stack = &tao_yyptr->Stack; \
- tao_yynewbytes = tao_yystacksize * sizeof (*Stack) + TAO_YYSTACK_GAP_MAXIMUM; \
- tao_yyptr += tao_yynewbytes / sizeof (*tao_yyptr); \
- } \
- while (TAO_YYID (0))
-
-#endif
-
-/* TAO_YYFINAL -- State number of the termination state. */
-#define TAO_YYFINAL 3
-/* TAO_YYLAST -- Last index in TAO_YYTABLE. */
-#define TAO_YYLAST 1227
-
-/* TAO_YYNTOKENS -- Number of terminals. */
-#define TAO_YYNTOKENS 107
-/* TAO_YYNNTS -- Number of nonterminals. */
-#define TAO_YYNNTS 381
-/* TAO_YYNRULES -- Number of rules. */
-#define TAO_YYNRULES 566
-/* TAO_YYNRULES -- Number of states. */
-#define TAO_YYNSTATES 816
-
-/* TAO_YYTRANSLATE(TAO_YYLEX) -- Bison symbol number corresponding to TAO_YYLEX. */
-#define TAO_YYUNDEFTOK 2
-#define TAO_YYMAXUTOK 340
-
-#define TAO_YYTRANSLATE(TAO_YYX) \
- ((unsigned int) (TAO_YYX) <= TAO_YYMAXUTOK ? tao_yytranslate[TAO_YYX] : TAO_YYUNDEFTOK)
-
-/* TAO_YYTRANSLATE[TAO_YYLEX] -- Bison symbol number corresponding to TAO_YYLEX. */
-static const tao_yytype_uint8 tao_yytranslate[] =
-{
- 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 99, 94, 2,
- 101, 102, 97, 95, 90, 96, 2, 98, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 89, 86,
- 104, 91, 103, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 105, 2, 106, 93, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 87, 92, 88, 100, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85
-};
-
-#if TAO_YYDEBUG
-/* TAO_YYPRHS[TAO_YYN] -- Index of the first RHS symbol of rule number TAO_YYN in
- TAO_YYRHS. */
-static const tao_yytype_uint16 tao_yyprhs[] =
-{
- 0, 0, 3, 5, 8, 9, 10, 14, 15, 19,
- 20, 24, 25, 29, 30, 34, 35, 39, 40, 44,
- 45, 49, 50, 54, 55, 59, 60, 64, 65, 69,
- 70, 74, 75, 79, 80, 84, 85, 86, 87, 88,
- 98, 100, 102, 103, 104, 105, 113, 114, 118, 121,
- 125, 129, 130, 135, 136, 138, 140, 142, 144, 147,
- 149, 150, 151, 152, 160, 161, 162, 163, 172, 173,
- 178, 179, 183, 185, 186, 189, 190, 193, 195, 198,
- 201, 202, 204, 206, 209, 212, 215, 218, 219, 220,
- 224, 225, 229, 230, 234, 235, 239, 240, 244, 245,
- 249, 250, 254, 255, 259, 262, 263, 268, 269, 271,
- 272, 276, 277, 282, 284, 286, 289, 292, 293, 294,
- 295, 296, 306, 308, 310, 312, 314, 316, 318, 320,
- 322, 324, 326, 328, 330, 334, 336, 340, 342, 346,
- 348, 352, 356, 358, 362, 366, 368, 372, 376, 380,
- 382, 385, 388, 391, 393, 395, 399, 401, 403, 405,
- 407, 409, 411, 413, 415, 417, 419, 420, 424, 426,
- 428, 430, 433, 435, 436, 440, 442, 444, 446, 448,
- 450, 452, 454, 456, 458, 460, 462, 464, 466, 468,
- 470, 472, 474, 476, 478, 480, 482, 484, 487, 488,
- 493, 494, 496, 498, 501, 502, 507, 508, 510, 512,
- 514, 516, 518, 521, 523, 526, 530, 533, 535, 537,
- 540, 542, 544, 546, 548, 550, 552, 554, 555, 559,
- 560, 561, 562, 570, 573, 576, 577, 578, 581, 582,
- 583, 589, 590, 594, 595, 599, 600, 601, 602, 603,
- 604, 605, 620, 622, 624, 626, 628, 630, 632, 635,
- 638, 639, 640, 641, 647, 648, 652, 655, 658, 659,
- 660, 664, 665, 666, 672, 673, 677, 679, 681, 682,
- 683, 684, 685, 695, 698, 699, 704, 705, 707, 708,
- 709, 716, 719, 720, 721, 727, 728, 729, 736, 738,
- 740, 741, 742, 749, 751, 753, 754, 758, 761, 764,
- 765, 766, 767, 773, 775, 777, 778, 779, 780, 781,
- 791, 792, 793, 794, 795, 805, 806, 807, 808, 809,
- 819, 820, 821, 822, 823, 834, 836, 838, 839, 841,
- 843, 844, 845, 846, 854, 855, 859, 860, 865, 868,
- 869, 874, 875, 876, 877, 883, 884, 888, 889, 894,
- 897, 898, 903, 904, 905, 906, 912, 914, 916, 918,
- 920, 922, 924, 926, 927, 928, 935, 936, 937, 938,
- 945, 946, 947, 948, 955, 956, 957, 958, 965, 966,
- 969, 970, 975, 976, 980, 984, 986, 988, 991, 992,
- 993, 994, 1002, 1003, 1004, 1011, 1012, 1016, 1017, 1020,
- 1021, 1022, 1026, 1027, 1031, 1032, 1036, 1037, 1041, 1042,
- 1046, 1047, 1051, 1052, 1056, 1060, 1062, 1064, 1068, 1071,
- 1073, 1074, 1078, 1082, 1086, 1087, 1091, 1092, 1093, 1094,
- 1095, 1096, 1097, 1111, 1112, 1116, 1117, 1120, 1121, 1122,
- 1123, 1129, 1132, 1133, 1135, 1136, 1140, 1141, 1145, 1146,
- 1147, 1154, 1155, 1156, 1163, 1165, 1167, 1169, 1171, 1173,
- 1176, 1180, 1181, 1182, 1183, 1192, 1196, 1200, 1203, 1204,
- 1208, 1209, 1210, 1211, 1220, 1222, 1224, 1226, 1228, 1230,
- 1232, 1234, 1236, 1238, 1240, 1241, 1242, 1243, 1251, 1255,
- 1256, 1257, 1264, 1265, 1270, 1271, 1274, 1277, 1278, 1281,
- 1285, 1286, 1291, 1294, 1298, 1299, 1301, 1302, 1303, 1304,
- 1305, 1306, 1318, 1320, 1321, 1324, 1327, 1328, 1329, 1333,
- 1334, 1338, 1340, 1344, 1346, 1350, 1352, 1354, 1358, 1362,
- 1366, 1370, 1375, 1378, 1379, 1380, 1381, 1389, 1390, 1391,
- 1397, 1400, 1403, 1404, 1405, 1409, 1410, 1414, 1415, 1419,
- 1420, 1424, 1425, 1429, 1432, 1435, 1438
-};
-
-/* TAO_YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const tao_yytype_int16 tao_yyrhs[] =
-{
- 108, 0, -1, 109, -1, 109, 110, -1, -1, -1,
- 198, 111, 86, -1, -1, 359, 112, 86, -1, -1,
- 360, 113, 86, -1, -1, 180, 114, 86, -1, -1,
- 308, 115, 86, -1, -1, 131, 116, 86, -1, -1,
- 433, 117, 86, -1, -1, 126, 118, 86, -1, -1,
- 141, 119, 86, -1, -1, 361, 120, 86, -1, -1,
- 389, 121, 86, -1, -1, 414, 122, 86, -1, -1,
- 451, 123, 86, -1, -1, 469, 124, 86, -1, -1,
- 1, 125, 86, -1, -1, -1, -1, -1, 5, 127,
- 3, 128, 87, 129, 109, 130, 88, -1, 132, -1,
- 179, -1, -1, -1, -1, 138, 133, 87, 134, 162,
- 135, 88, -1, -1, 6, 137, 178, -1, 136, 139,
- -1, 41, 136, 139, -1, 42, 136, 139, -1, -1,
- 89, 155, 140, 172, -1, -1, 142, -1, 147, -1,
- 157, -1, 158, -1, 43, 143, -1, 143, -1, -1,
- -1, -1, 151, 144, 87, 145, 159, 146, 88, -1,
- -1, -1, -1, 42, 151, 148, 87, 149, 162, 150,
- 88, -1, -1, 153, 139, 152, 156, -1, -1, 49,
- 154, 178, -1, 48, -1, -1, 47, 172, -1, -1,
- 42, 153, -1, 153, -1, 153, 202, -1, 159, 160,
- -1, -1, 161, -1, 163, -1, 320, 86, -1, 46,
- 237, -1, 45, 237, -1, 162, 163, -1, -1, -1,
- 198, 164, 86, -1, -1, 359, 165, 86, -1, -1,
- 360, 166, 86, -1, -1, 180, 167, 86, -1, -1,
- 308, 168, 86, -1, -1, 297, 169, 86, -1, -1,
- 313, 170, 86, -1, -1, 1, 171, 86, -1, 175,
- 173, -1, -1, 173, 90, 174, 175, -1, -1, 178,
- -1, -1, 81, 176, 178, -1, -1, 175, 81, 177,
- 178, -1, 3, -1, 136, -1, 41, 136, -1, 42,
- 136, -1, -1, -1, -1, -1, 4, 181, 185, 182,
- 178, 183, 91, 184, 186, -1, 217, -1, 222, -1,
- 223, -1, 224, -1, 220, -1, 221, -1, 282, -1,
- 286, -1, 175, -1, 187, -1, 188, -1, 189, -1,
- 188, 92, 189, -1, 190, -1, 189, 93, 190, -1,
- 191, -1, 190, 94, 191, -1, 192, -1, 191, 82,
- 192, -1, 191, 83, 192, -1, 193, -1, 192, 95,
- 193, -1, 192, 96, 193, -1, 194, -1, 193, 97,
- 194, -1, 193, 98, 194, -1, 193, 99, 194, -1,
- 195, -1, 95, 195, -1, 96, 195, -1, 100, 195,
- -1, 175, -1, 196, -1, 101, 187, 102, -1, 74,
- -1, 75, -1, 76, -1, 85, -1, 77, -1, 84,
- -1, 78, -1, 79, -1, 80, -1, 187, -1, -1,
- 7, 199, 200, -1, 229, -1, 243, -1, 267, -1,
- 40, 215, -1, 207, -1, -1, 202, 201, 208, -1,
- 203, -1, 206, -1, 204, -1, 205, -1, 175, -1,
- 217, -1, 220, -1, 222, -1, 224, -1, 223, -1,
- 221, -1, 225, -1, 226, -1, 276, -1, 282, -1,
- 286, -1, 487, -1, 229, -1, 243, -1, 267, -1,
- 265, -1, 266, -1, 211, 209, -1, -1, 209, 90,
- 210, 211, -1, -1, 215, -1, 216, -1, 215, 213,
- -1, -1, 213, 90, 214, 215, -1, -1, 178, -1,
- 290, -1, 218, -1, 219, -1, 8, -1, 8, 8,
- -1, 9, -1, 10, 8, -1, 10, 8, 8, -1,
- 10, 9, -1, 11, -1, 12, -1, 8, 11, -1,
- 17, -1, 13, -1, 14, -1, 15, -1, 16, -1,
- 18, -1, 19, -1, -1, 20, 228, 178, -1, -1,
- -1, -1, 227, 230, 87, 231, 233, 232, 88, -1,
- 235, 234, -1, 234, 235, -1, -1, -1, 236, 237,
- -1, -1, -1, 202, 238, 208, 239, 86, -1, -1,
- 1, 240, 86, -1, -1, 21, 242, 178, -1, -1,
- -1, -1, -1, -1, -1, 241, 22, 244, 101, 245,
- 250, 246, 102, 247, 87, 248, 251, 249, 88, -1,
- 217, -1, 222, -1, 223, -1, 224, -1, 267, -1,
- 175, -1, 253, 252, -1, 252, 253, -1, -1, -1,
- -1, 257, 254, 263, 255, 86, -1, -1, 1, 256,
- 86, -1, 259, 258, -1, 258, 259, -1, -1, -1,
- 29, 260, 89, -1, -1, -1, 28, 261, 187, 262,
- 89, -1, -1, 202, 264, 211, -1, 227, -1, 241,
- -1, -1, -1, -1, -1, 23, 268, 178, 269, 87,
- 270, 272, 271, 88, -1, 275, 273, -1, -1, 273,
- 90, 274, 275, -1, -1, 3, -1, -1, -1, 279,
- 90, 277, 197, 278, 103, -1, 279, 103, -1, -1,
- -1, 24, 280, 104, 281, 203, -1, -1, -1, 285,
- 104, 283, 197, 284, 103, -1, 285, -1, 25, -1,
- -1, -1, 289, 104, 287, 197, 288, 103, -1, 289,
- -1, 26, -1, -1, 178, 291, 292, -1, 294, 293,
- -1, 293, 294, -1, -1, -1, -1, 105, 295, 197,
- 296, 106, -1, 298, -1, 303, -1, -1, -1, -1,
- -1, 30, 299, 31, 300, 342, 301, 212, 302, 344,
- -1, -1, -1, -1, -1, 31, 304, 342, 305, 212,
- 306, 347, 307, 350, -1, -1, -1, -1, -1, 27,
- 309, 178, 310, 87, 311, 234, 312, 88, -1, -1,
- -1, -1, -1, 318, 319, 314, 3, 315, 333, 316,
- 344, 317, 353, -1, 32, -1, 33, -1, -1, 342,
- -1, 34, -1, -1, -1, -1, 44, 321, 3, 322,
- 324, 323, 344, -1, -1, 101, 325, 102, -1, -1,
- 101, 326, 327, 102, -1, 330, 328, -1, -1, 328,
- 90, 329, 330, -1, -1, -1, -1, 35, 331, 342,
- 332, 211, -1, -1, 101, 334, 102, -1, -1, 101,
- 335, 336, 102, -1, 339, 337, -1, -1, 337, 90,
- 338, 339, -1, -1, -1, -1, 343, 340, 342, 341,
- 211, -1, 204, -1, 282, -1, 286, -1, 175, -1,
- 35, -1, 36, -1, 37, -1, -1, -1, 38, 345,
- 101, 346, 172, 102, -1, -1, -1, -1, 55, 348,
- 101, 349, 172, 102, -1, -1, -1, -1, 62, 351,
- 101, 352, 172, 102, -1, -1, -1, -1, 39, 354,
- 101, 355, 356, 102, -1, -1, 76, 357, -1, -1,
- 357, 90, 358, 76, -1, -1, 63, 175, 76, -1,
- 64, 175, 76, -1, 363, -1, 362, -1, 50, 178,
- -1, -1, -1, -1, 367, 364, 87, 365, 372, 366,
- 88, -1, -1, -1, 50, 178, 368, 370, 369, 156,
- -1, -1, 89, 371, 175, -1, -1, 372, 373, -1,
- -1, -1, 381, 374, 86, -1, -1, 383, 375, 86,
- -1, -1, 386, 376, 86, -1, -1, 387, 377, 86,
- -1, -1, 388, 378, 86, -1, -1, 297, 379, 86,
- -1, -1, 465, 380, 86, -1, 60, 382, 178, -1,
- 175, -1, 19, -1, 384, 382, 178, -1, 65, 385,
- -1, 58, -1, -1, 52, 175, 178, -1, 61, 175,
- 178, -1, 51, 175, 178, -1, -1, 391, 390, 401,
- -1, -1, -1, -1, -1, -1, -1, 56, 392, 178,
- 393, 398, 394, 156, 395, 66, 396, 175, 397, 400,
- -1, -1, 89, 399, 175, -1, -1, 59, 175, -1,
- -1, -1, -1, 87, 402, 404, 403, 88, -1, 404,
- 405, -1, -1, 163, -1, -1, 408, 406, 86, -1,
- -1, 411, 407, 86, -1, -1, -1, 44, 178, 409,
- 324, 410, 344, -1, -1, -1, 54, 178, 412, 324,
- 413, 344, -1, 427, -1, 418, -1, 415, -1, 417,
- -1, 416, -1, 53, 178, -1, 42, 53, 178, -1,
- -1, -1, -1, 422, 425, 419, 87, 420, 162, 421,
- 88, -1, 42, 53, 178, -1, 43, 53, 178, -1,
- 53, 178, -1, -1, 139, 426, 156, -1, -1, -1,
- -1, 431, 425, 428, 87, 429, 159, 430, 88, -1,
- 423, -1, 424, -1, 67, -1, 20, -1, 53, -1,
- 68, -1, 17, -1, 24, -1, 6, -1, 49, -1,
- -1, -1, -1, 437, 434, 87, 435, 162, 436, 88,
- -1, 136, 438, 444, -1, -1, -1, 104, 439, 443,
- 441, 440, 103, -1, -1, 441, 90, 442, 443, -1,
- -1, 432, 3, -1, 89, 445, -1, -1, 447, 446,
- -1, 446, 90, 447, -1, -1, 175, 104, 448, 103,
- -1, 450, 449, -1, 449, 90, 450, -1, -1, 3,
- -1, -1, -1, -1, -1, -1, 71, 452, 3, 453,
- 457, 454, 87, 455, 458, 456, 88, -1, 438, -1,
- -1, 460, 459, -1, 459, 460, -1, -1, -1, 463,
- 461, 86, -1, -1, 464, 462, 86, -1, 381, -1,
- 60, 447, 3, -1, 383, -1, 384, 447, 3, -1,
- 466, -1, 467, -1, 69, 468, 3, -1, 70, 468,
- 3, -1, 69, 175, 3, -1, 70, 175, 3, -1,
- 175, 104, 172, 103, -1, 470, 474, -1, -1, -1,
- -1, 72, 471, 3, 472, 457, 473, 370, -1, -1,
- -1, 87, 475, 477, 476, 88, -1, 479, 478, -1,
- 478, 479, -1, -1, -1, 381, 480, 86, -1, -1,
- 383, 481, 86, -1, -1, 297, 482, 86, -1, -1,
- 467, 483, 86, -1, -1, 485, 484, 86, -1, 69,
- 486, -1, 70, 486, -1, 447, 3, -1, 468, -1
-};
-
-/* TAO_YYRLINE[TAO_YYN] -- source line where rule number TAO_YYN was defined. */
-static const tao_yytype_uint16 tao_yyrline[] =
-{
- 0, 369, 369, 372, 373, 378, 377, 388, 387, 398,
- 397, 408, 407, 418, 417, 428, 427, 438, 437, 448,
- 447, 458, 457, 468, 467, 478, 477, 488, 487, 498,
- 497, 508, 507, 518, 517, 531, 536, 562, 567, 530,
- 583, 584, 589, 628, 633, 588, 651, 650, 664, 702,
- 733, 767, 766, 778, 785, 786, 787, 788, 792, 803,
- 808, 852, 857, 807, 886, 925, 930, 884, 949, 947,
- 987, 986, 1000, 1006, 1013, 1020, 1027, 1053, 1080, 1145,
- 1146, 1150, 1151, 1152, 1157, 1163, 1172, 1173, 1178, 1177,
- 1188, 1187, 1198, 1197, 1208, 1207, 1218, 1217, 1228, 1227,
- 1238, 1237, 1248, 1247, 1261, 1274, 1272, 1302, 1309, 1320,
- 1319, 1347, 1345, 1372, 1384, 1430, 1458, 1489, 1494, 1499,
- 1504, 1488, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1575,
- 1580, 1655, 1657, 1659, 1660, 1674, 1675, 1689, 1690, 1703,
- 1704, 1714, 1727, 1728, 1738, 1751, 1752, 1762, 1772, 1785,
- 1786, 1796, 1806, 1819, 1854, 1855, 1864, 1869, 1876, 1884,
- 1889, 1894, 1900, 1905, 1910, 1918, 1990, 1989, 1999, 2004,
- 2009, 2014, 2041, 2050, 2049, 2120, 2121, 2125, 2133, 2134,
- 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2173, 2174,
- 2175, 2176, 2180, 2181, 2182, 2186, 2187, 2191, 2204, 2202,
- 2232, 2239, 2240, 2244, 2257, 2255, 2285, 2292, 2309, 2328,
- 2329, 2333, 2338, 2343, 2351, 2356, 2361, 2369, 2374, 2379,
- 2387, 2401, 2406, 2414, 2422, 2430, 2438, 2447, 2446, 2462,
- 2496, 2501, 2461, 2520, 2523, 2524, 2528, 2528, 2538, 2543,
- 2537, 2606, 2605, 2620, 2619, 2634, 2639, 2644, 2649, 2696,
- 2701, 2633, 2725, 2733, 2747, 2757, 2765, 2766, 2874, 2877,
- 2878, 2883, 2888, 2882, 2924, 2923, 2937, 2948, 2970, 2978,
- 2977, 2993, 2998, 2992, 3015, 3014, 3067, 3091, 3116, 3121,
- 3154, 3159, 3115, 3185, 3190, 3188, 3195, 3199, 3236, 3241,
- 3234, 3308, 3363, 3373, 3362, 3388, 3393, 3386, 3434, 3460,
- 3470, 3475, 3468, 3505, 3530, 3539, 3538, 3574, 3585, 3607,
- 3615, 3620, 3614, 3657, 3658, 3663, 3668, 3673, 3678, 3662,
- 3747, 3752, 3757, 3762, 3746, 3840, 3845, 3875, 3880, 3839,
- 3898, 3903, 3956, 3961, 3896, 3998, 4004, 4011, 4018, 4019,
- 4031, 4037, 4079, 4030, 4101, 4100, 4111, 4110, 4123, 4128,
- 4126, 4133, 4138, 4143, 4137, 4184, 4183, 4194, 4193, 4206,
- 4211, 4209, 4216, 4221, 4226, 4220, 4273, 4281, 4282, 4283,
- 4371, 4376, 4381, 4390, 4395, 4389, 4407, 4415, 4420, 4414,
- 4432, 4440, 4445, 4439, 4457, 4465, 4470, 4464, 4482, 4489,
- 4502, 4500, 4528, 4535, 4564, 4602, 4603, 4607, 4637, 4677,
- 4682, 4636, 4701, 4706, 4699, 4748, 4747, 4758, 4765, 4766,
- 4771, 4770, 4781, 4780, 4791, 4790, 4801, 4800, 4811, 4810,
- 4821, 4820, 4831, 4830, 4842, 4901, 4908, 4932, 5006, 5016,
- 5022, 5028, 5075, 5122, 5171, 5170, 5220, 5225, 5230, 5235,
- 5240, 5245, 5219, 5299, 5298, 5309, 5316, 5323, 5331, 5336,
- 5330, 5348, 5349, 5353, 5355, 5354, 5365, 5364, 5379, 5415,
- 5377, 5449, 5485, 5447, 5517, 5518, 5519, 5523, 5524, 5528,
- 5556, 5587, 5632, 5637, 5585, 5654, 5664, 5683, 5695, 5694,
- 5734, 5784, 5789, 5732, 5806, 5811, 5819, 5824, 5829, 5834,
- 5839, 5852, 5857, 5862, 5871, 5893, 5898, 5870, 5915, 5933,
- 5938, 5932, 5961, 5960, 5982, 5989, 6003, 6009, 6016, 6035,
- 6052, 6059, 6069, 6080, 6104, 6111, 6122, 6127, 6132, 6153,
- 6158, 6121, 6173, 6179, 6186, 6193, 6198, 6205, 6204, 6213,
- 6212, 6223, 6228, 6282, 6287, 6341, 6342, 6346, 6404, 6465,
- 6525, 6588, 6599, 6604, 6609, 6614, 6603, 6674, 6679, 6673,
- 6694, 6698, 6699, 6704, 6703, 6714, 6713, 6724, 6723, 6734,
- 6733, 6744, 6743, 6760, 6781, 6805, 6845
-};
-#endif
-
-#if TAO_YYDEBUG || TAO_YYERROR_VERBOSE || TAO_YYTOKEN_TABLE
-/* TAO_YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at TAO_YYNTOKENS, nonterminals. */
-static const char *const tao_yytname[] =
-{
- "$end", "error", "$undefined", "IDENTIFIER", "IDL_CONST", "IDL_MODULE",
- "IDL_INTERFACE", "IDL_TYPEDEF", "IDL_LONG", "IDL_SHORT", "IDL_UNSIGNED",
- "IDL_DOUBLE", "IDL_FLOAT", "IDL_CHAR", "IDL_WCHAR", "IDL_OCTET",
- "IDL_BOOLEAN", "IDL_FIXED", "IDL_ANY", "IDL_OBJECT", "IDL_STRUCT",
- "IDL_UNION", "IDL_SWITCH", "IDL_ENUM", "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_LOCAL", "IDL_ABSTRACT", "IDL_CUSTOM",
- "IDL_FACTORY", "IDL_PRIVATE", "IDL_PUBLIC", "IDL_SUPPORTS",
- "IDL_TRUNCATABLE", "IDL_VALUETYPE", "IDL_COMPONENT", "IDL_CONSUMES",
- "IDL_EMITS", "IDL_EVENTTYPE", "IDL_FINDER", "IDL_GETRAISES", "IDL_HOME",
- "IDL_IMPORT", "IDL_MULTIPLE", "IDL_PRIMARYKEY", "IDL_PROVIDES",
- "IDL_PUBLISHES", "IDL_SETRAISES", "IDL_TYPEID", "IDL_TYPEPREFIX",
- "IDL_USES", "IDL_MANAGES", "IDL_TYPENAME", "IDL_PRIMITIVE", "IDL_PORT",
- "IDL_MIRRORPORT", "IDL_PORTTYPE", "IDL_CONNECTOR", "IDL_CONCAT",
- "IDL_INTEGER_LITERAL", "IDL_UINTEGER_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_WCHAR_LITERAL", "IDL_WSTRING_LITERAL", "';'",
- "'{'", "'}'", "':'", "','", "'='", "'|'", "'^'", "'&'", "'+'", "'-'",
- "'*'", "'/'", "'%'", "'~'", "'('", "')'", "'>'", "'<'", "'['", "']'",
- "$accept", "start", "definitions", "definition", "@1", "@2", "@3", "@4",
- "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
- "module", "@16", "@17", "@18", "@19", "interface_def", "interface",
- "@20", "@21", "@22", "interface_decl", "@23", "interface_header",
- "inheritance_spec", "@24", "value_def", "valuetype",
- "value_concrete_decl", "@25", "@26", "@27", "value_abs_decl", "@28",
- "@29", "@30", "value_header", "@31", "value_decl", "@32",
- "opt_truncatable", "supports_spec", "value_forward_decl",
- "value_box_decl", "value_elements", "value_element", "state_member",
- "exports", "export", "@33", "@34", "@35", "@36", "@37", "@38", "@39",
- "@40", "at_least_one_scoped_name", "scoped_names", "@41", "scoped_name",
- "@42", "@43", "id", "interface_forward", "const_dcl", "@44", "@45",
- "@46", "@47", "const_type", "expression", "const_expr", "or_expr",
- "xor_expr", "and_expr", "shift_expr", "add_expr", "mult_expr",
- "unary_expr", "primary_expr", "literal", "positive_int_expr", "type_dcl",
- "@48", "type_declarator", "@49", "type_spec", "simple_type_spec",
- "base_type_spec", "template_type_spec", "constructed_type_spec",
- "constructed_forward_type_spec", "at_least_one_declarator",
- "declarators", "@50", "declarator", "at_least_one_simple_declarator",
- "simple_declarators", "@51", "simple_declarator", "complex_declarator",
- "integer_type", "signed_int", "unsigned_int", "floating_pt_type",
- "fixed_type", "char_type", "octet_type", "boolean_type", "any_type",
- "object_type", "struct_decl", "@52", "struct_type", "@53", "@54", "@55",
- "at_least_one_member", "members", "member", "@56", "member_i", "@57",
- "@58", "@59", "union_decl", "@60", "union_type", "@61", "@62", "@63",
- "@64", "@65", "@66", "switch_type_spec", "at_least_one_case_branch",
- "case_branches", "case_branch", "@67", "@68", "@69",
- "at_least_one_case_label", "case_labels", "case_label", "@70", "@71",
- "@72", "element_spec", "@73", "struct_forward_type",
- "union_forward_type", "enum_type", "@74", "@75", "@76", "@77",
- "at_least_one_enumerator", "enumerators", "@78", "enumerator",
- "sequence_type_spec", "@79", "@80", "seq_head", "@81", "@82",
- "string_type_spec", "@83", "@84", "string_head", "wstring_type_spec",
- "@85", "@86", "wstring_head", "array_declarator", "@87",
- "at_least_one_array_dim", "array_dims", "array_dim", "@88", "@89",
- "attribute", "attribute_readonly", "@90", "@91", "@92", "@93",
- "attribute_readwrite", "@94", "@95", "@96", "@97", "exception", "@98",
- "@99", "@100", "@101", "operation", "@102", "@103", "@104", "@105",
- "opt_op_attribute", "op_type_spec", "init_decl", "@106", "@107", "@108",
- "init_parameter_list", "@109", "@110", "at_least_one_in_parameter",
- "in_parameters", "@111", "in_parameter", "@112", "@113",
- "parameter_list", "@114", "@115", "at_least_one_parameter", "parameters",
- "@116", "parameter", "@117", "@118", "param_type_spec", "direction",
- "opt_raises", "@119", "@120", "opt_getraises", "@121", "@122",
- "opt_setraises", "@123", "@124", "opt_context", "@125", "@126",
- "at_least_one_string_literal", "string_literals", "@127", "typeid_dcl",
- "typeprefix_dcl", "component", "component_forward_decl",
- "component_decl", "@128", "@129", "@130", "component_header", "@131",
- "@132", "component_inheritance_spec", "@133", "component_exports",
- "component_export", "@134", "@135", "@136", "@137", "@138", "@139",
- "@140", "provides_decl", "interface_type", "uses_decl",
- "uses_opt_multiple", "opt_multiple", "emits_decl", "publishes_decl",
- "consumes_decl", "home_decl", "@141", "home_header", "@142", "@143",
- "@144", "@145", "@146", "@147", "home_inheritance_spec", "@148",
- "primary_key_spec", "home_body", "@149", "@150", "home_exports",
- "home_export", "@151", "@152", "factory_decl", "@153", "@154",
- "finder_decl", "@155", "@156", "event", "event_forward_decl",
- "event_concrete_forward_decl", "event_abs_forward_decl",
- "event_abs_decl", "@157", "@158", "@159", "event_abs_header",
- "event_custom_header", "event_plain_header", "event_rest_of_header",
- "@160", "event_decl", "@161", "@162", "@163", "event_header",
- "type_classifier", "template_interface_def", "@164", "@165", "@166",
- "template_interface_header", "at_least_one_template_param", "@167",
- "@168", "template_params", "@169", "template_param",
- "template_inheritance_spec", "at_least_one_template_ref",
- "template_refs", "template_ref", "at_least_one_template_param_ref",
- "template_param_refs", "template_param_ref", "porttype_decl", "@170",
- "@171", "@172", "@173", "@174", "opt_template_params",
- "at_least_one_port_export", "port_exports", "port_export", "@175",
- "@176", "extended_provides_decl", "extended_uses_decl",
- "extended_port_decl", "template_port_decl", "non_template_port_decl",
- "template_inst", "connector_decl", "connector_header", "@177", "@178",
- "@179", "connector_body", "@180", "@181",
- "at_least_one_connector_export", "connector_exports", "connector_export",
- "@182", "@183", "@184", "@185", "@186", "template_extended_port_decl",
- "template_ref_decl", "connector_inst_spec", 0
-};
-#endif
-
-# ifdef TAO_YYPRINT
-/* TAO_YYTOKNUM[TAO_YYLEX-NUM] -- Internal token number corresponding to
- token TAO_YYLEX-NUM. */
-static const tao_yytype_uint16 tao_yytoknum[] =
-{
- 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 59, 123, 125, 58,
- 44, 61, 124, 94, 38, 43, 45, 42, 47, 37,
- 126, 40, 41, 62, 60, 91, 93
-};
-# endif
-
-/* TAO_YYR1[TAO_YYN] -- Symbol number of symbol that rule TAO_YYN derives. */
-static const tao_yytype_uint16 tao_yyr1[] =
-{
- 0, 107, 108, 109, 109, 111, 110, 112, 110, 113,
- 110, 114, 110, 115, 110, 116, 110, 117, 110, 118,
- 110, 119, 110, 120, 110, 121, 110, 122, 110, 123,
- 110, 124, 110, 125, 110, 127, 128, 129, 130, 126,
- 131, 131, 133, 134, 135, 132, 137, 136, 138, 138,
- 138, 140, 139, 139, 141, 141, 141, 141, 142, 142,
- 144, 145, 146, 143, 148, 149, 150, 147, 152, 151,
- 154, 153, 155, 155, 156, 156, 157, 157, 158, 159,
- 159, 160, 160, 160, 161, 161, 162, 162, 164, 163,
- 165, 163, 166, 163, 167, 163, 168, 163, 169, 163,
- 170, 163, 171, 163, 172, 174, 173, 173, 175, 176,
- 175, 177, 175, 178, 179, 179, 179, 181, 182, 183,
- 184, 180, 185, 185, 185, 185, 185, 185, 185, 185,
- 185, 186, 187, 188, 188, 189, 189, 190, 190, 191,
- 191, 191, 192, 192, 192, 193, 193, 193, 193, 194,
- 194, 194, 194, 195, 195, 195, 196, 196, 196, 196,
- 196, 196, 196, 196, 196, 197, 199, 198, 198, 198,
- 198, 198, 198, 201, 200, 202, 202, 203, 203, 203,
- 204, 204, 204, 204, 204, 204, 204, 204, 205, 205,
- 205, 205, 206, 206, 206, 207, 207, 208, 210, 209,
- 209, 211, 211, 212, 214, 213, 213, 215, 216, 217,
- 217, 218, 218, 218, 219, 219, 219, 220, 220, 220,
- 221, 222, 222, 223, 224, 225, 226, 228, 227, 230,
- 231, 232, 229, 233, 234, 234, 236, 235, 238, 239,
- 237, 240, 237, 242, 241, 244, 245, 246, 247, 248,
- 249, 243, 250, 250, 250, 250, 250, 250, 251, 252,
- 252, 254, 255, 253, 256, 253, 257, 258, 258, 260,
- 259, 261, 262, 259, 264, 263, 265, 266, 268, 269,
- 270, 271, 267, 272, 274, 273, 273, 275, 277, 278,
- 276, 276, 280, 281, 279, 283, 284, 282, 282, 285,
- 287, 288, 286, 286, 289, 291, 290, 292, 293, 293,
- 295, 296, 294, 297, 297, 299, 300, 301, 302, 298,
- 304, 305, 306, 307, 303, 309, 310, 311, 312, 308,
- 314, 315, 316, 317, 313, 318, 318, 318, 319, 319,
- 321, 322, 323, 320, 325, 324, 326, 324, 327, 329,
- 328, 328, 331, 332, 330, 334, 333, 335, 333, 336,
- 338, 337, 337, 340, 341, 339, 342, 342, 342, 342,
- 343, 343, 343, 345, 346, 344, 344, 348, 349, 347,
- 347, 351, 352, 350, 350, 354, 355, 353, 353, 356,
- 358, 357, 357, 359, 360, 361, 361, 362, 364, 365,
- 366, 363, 368, 369, 367, 371, 370, 370, 372, 372,
- 374, 373, 375, 373, 376, 373, 377, 373, 378, 373,
- 379, 373, 380, 373, 381, 382, 382, 383, 384, 385,
- 385, 386, 387, 388, 390, 389, 392, 393, 394, 395,
- 396, 397, 391, 399, 398, 398, 400, 400, 402, 403,
- 401, 404, 404, 405, 406, 405, 407, 405, 409, 410,
- 408, 412, 413, 411, 414, 414, 414, 415, 415, 416,
- 417, 419, 420, 421, 418, 422, 423, 424, 426, 425,
- 428, 429, 430, 427, 431, 431, 432, 432, 432, 432,
- 432, 432, 432, 432, 434, 435, 436, 433, 437, 439,
- 440, 438, 442, 441, 441, 443, 444, 444, 445, 446,
- 446, 447, 448, 449, 449, 450, 452, 453, 454, 455,
- 456, 451, 457, 457, 458, 459, 459, 461, 460, 462,
- 460, 463, 463, 464, 464, 465, 465, 466, 466, 467,
- 467, 468, 469, 471, 472, 473, 470, 475, 476, 474,
- 477, 478, 478, 480, 479, 481, 479, 482, 479, 483,
- 479, 484, 479, 485, 485, 486, 487
-};
-
-/* TAO_YYR2[TAO_YYN] -- Number of symbols composing right hand side of rule TAO_YYN. */
-static const tao_yytype_uint8 tao_yyr2[] =
-{
- 0, 2, 1, 2, 0, 0, 3, 0, 3, 0,
- 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 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, 3,
- 3, 0, 4, 0, 1, 1, 1, 1, 2, 1,
- 0, 0, 0, 7, 0, 0, 0, 8, 0, 4,
- 0, 3, 1, 0, 2, 0, 2, 1, 2, 2,
- 0, 1, 1, 2, 2, 2, 2, 0, 0, 3,
- 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
- 0, 3, 0, 3, 2, 0, 4, 0, 1, 0,
- 3, 0, 4, 1, 1, 2, 2, 0, 0, 0,
- 0, 9, 1, 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, 1, 1, 1, 0, 3, 1, 1,
- 1, 2, 1, 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, 1, 1, 0, 3, 0,
- 0, 0, 7, 2, 2, 0, 0, 2, 0, 0,
- 5, 0, 3, 0, 3, 0, 0, 0, 0, 0,
- 0, 14, 1, 1, 1, 1, 1, 1, 2, 2,
- 0, 0, 0, 5, 0, 3, 2, 2, 0, 0,
- 3, 0, 0, 5, 0, 3, 1, 1, 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, 1, 1, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 9, 0, 0, 0, 0, 9,
- 0, 0, 0, 0, 10, 1, 1, 0, 1, 1,
- 0, 0, 0, 7, 0, 3, 0, 4, 2, 0,
- 4, 0, 0, 0, 5, 0, 3, 0, 4, 2,
- 0, 4, 0, 0, 0, 5, 1, 1, 1, 1,
- 1, 1, 1, 0, 0, 6, 0, 0, 0, 6,
- 0, 0, 0, 6, 0, 0, 0, 6, 0, 2,
- 0, 4, 0, 3, 3, 1, 1, 2, 0, 0,
- 0, 7, 0, 0, 6, 0, 3, 0, 2, 0,
- 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
- 0, 3, 0, 3, 3, 1, 1, 3, 2, 1,
- 0, 3, 3, 3, 0, 3, 0, 0, 0, 0,
- 0, 0, 13, 0, 3, 0, 2, 0, 0, 0,
- 5, 2, 0, 1, 0, 3, 0, 3, 0, 0,
- 6, 0, 0, 6, 1, 1, 1, 1, 1, 2,
- 3, 0, 0, 0, 8, 3, 3, 2, 0, 3,
- 0, 0, 0, 8, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 0, 0, 0, 7, 3, 0,
- 0, 6, 0, 4, 0, 2, 2, 0, 2, 3,
- 0, 4, 2, 3, 0, 1, 0, 0, 0, 0,
- 0, 11, 1, 0, 2, 2, 0, 0, 3, 0,
- 3, 1, 3, 1, 3, 1, 1, 3, 3, 3,
- 3, 4, 2, 0, 0, 0, 7, 0, 0, 5,
- 2, 2, 0, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 2, 2, 2, 1
-};
-
-/* TAO_YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
- STATE-NUM when TAO_YYTABLE doesn't specify something else to do. Zero
- means the default is an error. */
-static const tao_yytype_uint16 tao_yydefact[] =
-{
- 4, 0, 0, 1, 33, 117, 35, 46, 166, 227,
- 243, 278, 325, 0, 0, 0, 0, 70, 0, 0,
- 436, 0, 0, 516, 543, 3, 19, 15, 40, 53,
- 42, 21, 54, 59, 55, 60, 53, 56, 57, 41,
- 11, 5, 172, 229, 168, 277, 169, 195, 196, 170,
- 13, 7, 9, 23, 396, 395, 398, 25, 434, 27,
- 466, 468, 467, 465, 53, 484, 485, 464, 53, 17,
- 494, 29, 31, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 113, 207, 171, 53, 0, 53, 64,
- 53, 0, 58, 53, 0, 402, 477, 0, 109, 0,
- 108, 0, 0, 0, 0, 0, 73, 499, 48, 507,
- 0, 0, 0, 211, 213, 0, 217, 218, 221, 222,
- 223, 224, 220, 225, 226, 292, 299, 304, 68, 179,
- 78, 175, 177, 178, 176, 180, 209, 210, 181, 185,
- 182, 184, 183, 186, 187, 229, 192, 0, 193, 194,
- 188, 0, 189, 298, 190, 303, 566, 191, 0, 0,
- 0, 245, 0, 0, 0, 0, 0, 0, 0, 0,
- 478, 471, 480, 0, 0, 0, 0, 547, 542, 34,
- 130, 118, 122, 126, 127, 123, 124, 125, 128, 129,
- 36, 47, 167, 173, 228, 244, 279, 326, 49, 475,
- 50, 0, 476, 71, 407, 437, 0, 393, 111, 394,
- 517, 544, 20, 16, 72, 51, 0, 0, 498, 43,
- 22, 61, 212, 219, 214, 216, 0, 75, 0, 288,
- 291, 295, 300, 12, 6, 230, 0, 14, 8, 10,
- 24, 399, 26, 448, 435, 28, 75, 0, 0, 18,
- 495, 30, 32, 0, 0, 0, 0, 0, 0, 65,
- 405, 403, 445, 110, 0, 523, 523, 0, 492, 490,
- 487, 491, 493, 488, 486, 489, 0, 504, 0, 506,
- 510, 87, 80, 215, 293, 0, 69, 0, 107, 0,
- 0, 0, 236, 246, 409, 452, 479, 472, 481, 87,
- 315, 320, 0, 430, 0, 0, 557, 313, 314, 553,
- 555, 0, 559, 548, 552, 561, 119, 37, 207, 174,
- 200, 201, 202, 208, 280, 327, 87, 0, 75, 443,
- 438, 112, 522, 518, 545, 52, 505, 500, 0, 508,
- 0, 0, 0, 74, 541, 104, 156, 157, 158, 160,
- 162, 163, 164, 161, 159, 0, 0, 0, 0, 153,
- 165, 132, 133, 135, 137, 139, 142, 145, 149, 154,
- 289, 296, 301, 231, 235, 0, 0, 400, 0, 87,
- 80, 0, 0, 0, 426, 425, 0, 429, 428, 0,
- 0, 563, 0, 564, 0, 0, 0, 0, 0, 0,
- 550, 0, 0, 4, 0, 197, 0, 235, 0, 406,
- 404, 0, 75, 0, 407, 502, 0, 515, 0, 514,
- 0, 102, 335, 336, 0, 86, 94, 88, 98, 96,
- 100, 0, 90, 92, 340, 0, 0, 0, 79, 81,
- 82, 0, 294, 105, 150, 151, 152, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 236, 241, 238, 237, 211, 257, 252, 253,
- 254, 255, 247, 256, 0, 0, 0, 0, 0, 420,
- 0, 408, 410, 412, 414, 416, 418, 422, 535, 536,
- 0, 0, 453, 0, 451, 454, 456, 0, 0, 0,
- 316, 369, 366, 367, 368, 321, 424, 539, 565, 540,
- 558, 554, 556, 427, 560, 549, 551, 562, 120, 0,
- 310, 306, 309, 198, 287, 281, 286, 236, 0, 444,
- 439, 519, 546, 0, 501, 511, 512, 509, 0, 45,
- 0, 0, 0, 0, 0, 339, 330, 338, 0, 0,
- 0, 85, 84, 63, 83, 0, 155, 134, 136, 138,
- 140, 141, 143, 144, 146, 147, 148, 290, 297, 302,
- 232, 234, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 401, 0, 0, 0, 0, 0, 0,
- 458, 461, 450, 0, 0, 0, 0, 497, 0, 0,
- 0, 0, 0, 307, 0, 0, 283, 0, 67, 0,
- 0, 503, 0, 103, 95, 89, 99, 97, 101, 0,
- 91, 93, 341, 106, 242, 239, 248, 433, 431, 432,
- 537, 538, 421, 411, 413, 415, 417, 419, 423, 0,
- 0, 455, 457, 474, 483, 317, 322, 206, 121, 131,
- 39, 311, 308, 199, 282, 284, 329, 440, 0, 531,
- 533, 0, 520, 526, 527, 529, 513, 331, 0, 0,
- 0, 344, 459, 462, 0, 380, 203, 0, 0, 0,
- 425, 0, 0, 0, 524, 0, 0, 0, 342, 240,
- 249, 0, 0, 376, 376, 318, 377, 323, 204, 312,
- 285, 441, 532, 534, 521, 525, 528, 530, 357, 332,
- 376, 0, 345, 352, 0, 351, 373, 460, 463, 376,
- 0, 384, 0, 447, 0, 0, 376, 343, 264, 271,
- 269, 250, 260, 261, 268, 0, 347, 348, 0, 319,
- 378, 381, 324, 205, 0, 442, 356, 370, 371, 372,
- 0, 362, 363, 333, 0, 0, 0, 0, 0, 0,
- 266, 353, 349, 374, 0, 0, 446, 358, 359, 0,
- 388, 265, 272, 270, 251, 259, 274, 262, 267, 0,
- 0, 0, 0, 382, 360, 364, 385, 334, 0, 0,
- 0, 354, 350, 0, 379, 0, 0, 0, 0, 273,
- 275, 263, 375, 0, 361, 365, 386, 383, 0, 392,
- 0, 389, 387, 390, 0, 391
-};
-
-/* TAO_YYDEFGOTO[NTERM-NUM]. */
-static const tao_yytype_int16 tao_yydefgoto[] =
-{
- -1, 1, 2, 25, 159, 163, 164, 158, 162, 105,
- 173, 104, 111, 165, 167, 169, 175, 176, 74, 26,
- 76, 255, 403, 601, 27, 28, 110, 281, 424, 29,
- 77, 30, 128, 267, 31, 32, 33, 112, 282, 437,
- 34, 201, 326, 528, 35, 227, 36, 94, 215, 286,
- 37, 38, 341, 438, 439, 340, 425, 541, 548, 549,
- 540, 543, 542, 544, 538, 287, 345, 555, 359, 206,
- 264, 100, 39, 426, 75, 254, 402, 600, 181, 648,
- 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
- 370, 427, 78, 192, 256, 464, 131, 132, 133, 134,
- 42, 319, 405, 604, 320, 646, 676, 722, 321, 322,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 43, 79, 44, 160, 292, 461, 373, 462, 571, 375,
- 465, 573, 669, 572, 45, 80, 46, 236, 376, 574,
- 670, 711, 757, 472, 731, 758, 732, 759, 790, 754,
- 733, 760, 734, 756, 755, 788, 777, 789, 47, 48,
- 49, 81, 257, 406, 605, 525, 606, 678, 526, 150,
- 289, 458, 151, 226, 342, 152, 290, 459, 153, 154,
- 291, 460, 155, 323, 404, 521, 603, 522, 602, 677,
- 428, 307, 382, 598, 674, 719, 308, 383, 599, 675,
- 721, 429, 82, 258, 407, 607, 430, 619, 687, 726,
- 770, 431, 546, 441, 550, 668, 710, 672, 691, 692,
- 714, 737, 780, 715, 735, 779, 709, 724, 725, 750,
- 768, 796, 751, 769, 797, 505, 752, 717, 738, 781,
- 697, 720, 764, 742, 765, 795, 787, 798, 808, 810,
- 811, 814, 432, 433, 53, 54, 55, 166, 294, 480,
- 56, 204, 328, 261, 327, 377, 481, 584, 585, 586,
- 587, 588, 582, 589, 309, 386, 310, 311, 388, 484,
- 485, 486, 57, 168, 58, 97, 262, 412, 609, 679,
- 723, 330, 411, 745, 244, 295, 493, 378, 494, 593,
- 594, 495, 639, 693, 496, 640, 694, 59, 60, 61,
- 62, 63, 247, 379, 595, 64, 65, 66, 171, 246,
- 67, 248, 380, 596, 68, 276, 69, 174, 299, 499,
- 70, 332, 216, 416, 337, 533, 277, 218, 279, 339,
- 390, 418, 536, 419, 71, 102, 265, 413, 610, 683,
- 333, 662, 684, 663, 685, 686, 664, 665, 487, 488,
- 312, 156, 72, 73, 103, 266, 414, 178, 253, 399,
- 313, 400, 314, 395, 396, 394, 398, 401, 315, 391,
- 157
-};
-
-/* TAO_YYPACT[STATE-NUM] -- Index in TAO_YYTABLE of the portion describing
- STATE-NUM. */
-#define TAO_YYPACT_NINF -593
-static const tao_yytype_int16 tao_yypact[] =
-{
- -593, 47, 1155, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, 60, 59, 34, 145, -593, 60, 60,
- -593, 41, 41, -593, -593, -593, -593, -593, -593, 7,
- -593, -593, -593, -593, -593, -593, 89, -593, -593, -593,
- -593, -593, -593, 3, -593, 73, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, 27, -593, -593, -593, 27, -593,
- -593, -593, -593, 87, 37, 264, 130, 60, 1128, 60,
- 60, 60, 60, -593, -593, -593, 68, 60, 126, -593,
- 127, 60, -593, 27, 60, 69, 97, 60, -593, -4,
- -593, 9, 202, 204, 125, 138, 169, -593, -593, 151,
- 140, 156, 161, 46, -593, 168, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -31,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, 73, -593, -593,
- -593, 98, -593, 157, -593, 179, -593, -593, 200, 227,
- 201, -593, 228, 229, 231, 234, 236, 235, 238, 240,
- -593, -593, -593, 242, 243, 245, 249, -593, -593, -593,
- 256, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, 253,
- -593, 254, -593, -593, 251, -593, 60, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, 132, 41, -593, -593,
- -593, -593, -593, -593, 308, -593, 250, 297, 41, -593,
- -593, -593, -593, -593, -593, -593, 246, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, 297, 262, 265, -593,
- -593, -593, -593, 149, 60, 271, 60, 272, 273, -593,
- -593, -593, 275, -593, 60, 258, 258, 41, -593, -593,
- -593, -593, -593, -593, -593, -593, 365, -593, -10, -593,
- -593, -593, -593, -593, -593, 41, -593, 266, 256, 50,
- 50, 50, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, 67, 312, 41, 41, -593, -593, -593, -593,
- -593, 67, -593, -593, -593, -593, -593, -593, 269, -593,
- -593, -593, -593, -593, -593, -593, -593, 41, 297, -593,
- -593, -593, -593, -593, -593, -593, -593, 286, 374, 288,
- 860, 599, 284, -593, -593, 289, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, 88, 88, 88, 50, 256,
- -593, 290, 294, 298, 109, 134, 124, -593, -593, -593,
- -593, -593, -593, -593, -593, 426, 223, 320, 485, -593,
- -593, 895, 352, 681, -593, 256, 60, -593, -593, 36,
- 385, -593, 38, -593, 307, 309, 310, 60, 311, 306,
- 149, 313, 314, -593, 293, 322, 398, -593, 977, 256,
- -593, 41, 297, 317, 251, -593, 316, -593, 319, -593,
- 41, -593, -593, -593, 335, -593, -593, -593, -593, -593,
- -593, 639, -593, -593, -593, 426, 426, 336, -593, -593,
- -593, 324, -593, -593, -593, -593, -593, 323, 50, 50,
- 50, 50, 50, 50, 50, 50, 50, 50, 325, 327,
- 328, 338, 344, -593, -593, -593, 425, 256, -593, -593,
- -593, -593, -593, -593, 41, 41, 41, 41, 41, -593,
- 360, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- 60, 60, -593, 371, -593, -593, -593, 1012, 778, 372,
- -593, 256, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, 1062,
- -593, -593, -593, -593, -593, -593, -593, 373, 376, 256,
- -593, -593, -593, 132, -593, -593, 363, -593, 379, -593,
- 381, 382, 383, 384, 386, -593, -593, -593, 387, 388,
- 459, -593, -593, -593, -593, 41, -593, 294, 298, 109,
- 134, 134, 124, 124, -593, -593, -593, -593, -593, -593,
- -593, -593, 389, 60, 369, 56, 56, 56, 39, 473,
- 40, 476, 394, -593, 395, 396, 397, 399, 401, 404,
- -593, -593, -593, 405, 427, 432, 433, -593, 681, 60,
- 50, 434, 50, 293, 60, 435, 424, 436, -593, 418,
- 93, -593, 374, -593, -593, -593, -593, -593, -593, 524,
- -593, -593, -593, 256, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, 430,
- 430, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, 67, -593,
- -593, 67, -593, -593, -593, -593, -593, -593, 430, 442,
- 454, 507, -593, -593, 60, 488, 455, 438, 398, 41,
- -10, 543, 544, 462, 93, 465, 466, 452, -593, -593,
- -593, 453, 519, 518, 518, -593, -593, -593, -593, -593,
- -593, 256, -593, -593, -593, -593, -593, -593, 456, -593,
- 518, 131, -593, -593, 457, -593, -593, -593, -593, 518,
- 460, 495, 60, 506, 467, 217, 518, -593, -593, -593,
- -593, -593, -593, -593, -593, 681, -593, 477, 469, -593,
- -593, -593, -593, -593, 41, -593, -593, -593, -593, -593,
- 470, -593, -593, -593, 482, 50, 486, 483, 51, 1128,
- 206, -593, -593, -593, 41, 475, 256, -593, 484, 681,
- 538, -593, -593, -593, -593, -593, -593, -593, -593, 60,
- 519, 41, 478, -593, -593, -593, -593, -593, 490, 60,
- 496, -593, -593, 479, -593, 41, 217, 60, 487, -593,
- -593, -593, -593, 481, -593, -593, -593, -593, 508, -593,
- 491, 497, -593, -593, 509, -593
-};
-
-/* TAO_YYPGOTO[NTERM-NUM]. */
-static const tao_yytype_int16 tao_yypgoto[] =
-{
- -593, -593, 186, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, 230,
- -593, -593, 118, -593, -593, -593, 574, -593, -593, -593,
- -593, -593, -593, -593, 577, -593, 248, -593, -593, -210,
- -593, -593, 215, -593, -593, -238, -303, -593, -593, -593,
- -593, -593, -593, -593, -593, -255, -593, -593, -20, -593,
- -593, -13, -593, 11, -593, -593, -593, -593, -593, -593,
- -334, -593, 148, 150, 147, -183, -148, -200, -97, -593,
- -264, 13, -593, -593, -593, -32, 259, -349, -593, -593,
- -593, 25, -593, -593, -569, -70, -593, -593, -5, -593,
- -47, -593, -593, 530, 546, -44, -43, -42, -593, -593,
- -29, -593, -27, -593, -593, -593, -593, 216, 342, -593,
- -165, -593, -593, -593, -22, -593, -18, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -131, -593, -593, -593,
- -593, -593, -132, -593, -593, -593, -593, -593, -593, -593,
- -33, -593, -593, -593, -593, -593, -593, -593, -41, -593,
- -593, -593, -593, -593, -593, -65, -593, -593, -593, -64,
- -593, -593, -593, -593, -593, -593, -593, 32, -593, -593,
- -216, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, 17, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -592, -593, -593,
- -593, -593, -593, -144, -593, -593, -593, -593, -593, -593,
- -593, -593, -156, -593, -593, -408, -593, -523, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, 18, 19, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, 232, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -360, -286, -348, -548, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, 592, -593,
- -593, -593, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, 637, -593, -593, -593, -593, 135, -593, -593, -593,
- -195, -593, -593, 55, -593, -593, -593, -593, -593, -593,
- 406, -593, -593, -9, -593, -593, -593, -593, -593, -593,
- 299, -166, -593, -593, -593, -593, -593, -593, -593, -593,
- -593, -593, 274, -593, -593, -593, -593, -593, -593, 377,
- -593
-};
-
-/* TAO_YYTABLE[TAO_YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If zero, do what TAO_YYDEFACT says.
- If TAO_YYTABLE_NINF, syntax error. */
-#define TAO_YYTABLE_NINF -497
-static const tao_yytype_int16 tao_yytable[] =
-{
- 84, 99, 101, 149, 130, 95, 96, 145, 85, 146,
- 188, 189, 335, 40, 147, 41, 129, 482, 148, 50,
- 51, 52, 280, 547, 447, 397, 371, 372, 182, 483,
- 343, 185, 186, 187, 502, 653, 296, 306, 440, 507,
- 7, 509, 507, 509, 83, 149, 193, 3, 673, 145,
- 208, 146, 728, 83, 222, 180, 147, 223, 129, 83,
- 148, 381, 661, 83, 191, 7, 194, 195, 196, 197,
- 83, 208, 207, 228, 199, 492, 688, 208, 202, 729,
- 730, 203, 502, 17, 205, 209, 384, 87, 408, -276,
- 208, 83, 83, -114, 338, 161, 106, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 9,
- 10, 107, 11, 125, 126, 127, 106, 208, 410, 208,
- 208, 208, 98, 179, 346, 347, 348, 349, 350, 351,
- 352, 98, 728, 190, 353, 354, 661, 208, 268, -258,
- 338, 497, 338, 228, 228, 355, 356, 108, 98, 269,
- 357, 358, 270, 658, -115, -397, 271, 106, 303, 729,
- 730, 479, 346, 347, 348, 349, 350, 351, 352, 98,
- 98, 718, 353, 354, 177, -77, 224, 225, 106, 300,
- 301, 272, 170, -469, 306, 273, 170, 727, 229, 358,
- 645, 451, 452, 263, 17, 440, 739, 278, 91, 274,
- 275, 230, 530, 753, 198, 210, 200, 211, 288, 302,
- 791, 212, -116, -76, 303, 106, 106, 214, 304, 305,
- 800, 455, 456, 457, 213, 537, 83, 219, 805, 453,
- 454, 466, 114, 115, 729, 730, 118, 119, 120, 121,
- 217, 316, 220, 318, 86, 88, 11, 288, 221, 502,
- 659, 331, 747, 748, 749, 564, 565, 566, 444, 445,
- 446, 231, 660, 90, 93, 288, 649, 83, 560, 561,
- 551, 552, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 385, 232, 389, 392, 233, 83, 235, 126,
- 127, 385, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 98, 562, 563, 409, 125, 126,
- 127, 579, 581, 234, 237, 238, 283, 239, 503, 504,
- 240, 242, 129, 241, 659, 243, 245, 761, 249, 468,
- 250, 251, 469, 470, 471, 252, 660, 208, 651, -470,
- 260, 259, 149, 473, 285, 98, 145, 293, 146, 297,
- 300, 301, 298, 147, 284, 129, 467, 148, 317, 324,
- 325, 785, 107, 501, 329, 98, 503, 504, 336, 344,
- 387, 474, 475, 506, -305, 397, 415, 417, 420, 443,
- 302, 476, 448, 500, 513, 303, 502, 449, 508, 477,
- 478, 529, 450, 510, 515, 511, 512, 514, 520, 517,
- 278, 524, 149, 149, 531, 518, 145, 145, 146, 146,
- 554, 501, 523, 147, 147, 129, 129, 148, 148, 534,
- 502, 772, 535, 539, 553, 556, 570, 463, 567, 83,
- 568, 569, -233, 222, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 9, 10, 583, 11,
- 125, 126, 127, 612, 575, 576, 577, 578, 580, 592,
- 597, -328, 622, 681, 608, 613, 682, 614, 615, 616,
- 617, 626, 618, 620, 621, 624, 630, 590, 591, 631,
- 632, 633, 634, 635, 657, 636, 421, 637, -337, 5,
- 638, 641, 8, -337, -337, -337, -337, -337, -337, -337,
- -337, -337, -337, -337, -337, 9, 10, 98, 11, 782,
- -337, -337, 12, 642, 655, 300, 301, 422, 423, -337,
- 643, 644, 650, 654, 656, 13, 793, 667, 689, 490,
- 40, 671, 41, 503, 504, 623, 50, 51, 52, 491,
- 803, 690, -346, 696, 699, 698, 702, 703, 21, 22,
- 704, 706, 707, 708, 713, 712, 716, 741, -355, 736,
- 318, 740, 627, 628, 629, 744, -337, 762, 771, 746,
- 763, 774, 767, -449, 784, 773, 783, 786, 501, 799,
- 794, 802, 801, 807, 809, 815, 84, 813, 806, 519,
- 92, 318, 89, 812, 647, 498, 557, 559, 625, 558,
- 421, 442, -337, 5, 695, 183, 8, -337, -337, -337,
- -337, -337, -337, -337, -337, -337, -337, -337, -337, 9,
- 10, 184, 11, 527, -337, -337, 12, 775, 778, 300,
- 301, 422, 423, -337, 374, 652, 792, 700, 680, 13,
- 804, 680, 83, 434, 435, 436, 532, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 701,
- 172, 84, 21, 22, 126, 127, 109, 666, 611, 647,
- 503, 504, 334, 545, 516, 705, 489, 0, 0, 0,
- -337, 0, 393, 0, 83, 0, 0, -62, 0, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 0, 0, 0, 503, 504, 126, 127, 0, 84,
- 0, 0, 0, 0, 0, 501, 0, 743, 0, 0,
- 98, 0, 0, 0, 766, 0, 149, 776, 0, 0,
- 145, 0, 146, 0, 0, 0, 0, 147, 0, 129,
- 0, 148, 0, 0, 288, 0, 0, 0, 0, 501,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 288, 98, 0, 0, 0, 318, 0, 0, 0,
- 0, 0, 0, 0, 0, 288, 318, 0, 0, 421,
- 0, -337, 5, 0, 318, 8, -337, -337, -337, -337,
- -337, -337, -337, -337, -337, -337, -337, -337, 9, 10,
- 0, 11, 0, -337, -337, 12, 0, 0, 300, 301,
- 422, 423, -337, 0, 0, 0, 0, 0, 13, 0,
- 0, 0, 434, 435, 436, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 21, 22, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -337,
- 0, 421, 0, -337, 5, 0, -482, 8, -337, -337,
- -337, -337, -337, -337, -337, -337, -337, -337, -337, -337,
- 9, 10, 0, 11, 0, -337, -337, 12, 0, 0,
- 300, 301, 422, 423, -337, 0, 421, 0, -337, 5,
- 13, 0, 8, -337, -337, -337, -337, -337, -337, -337,
- -337, -337, -337, -337, -337, 9, 10, 0, 11, 0,
- -337, -337, 12, 21, 22, 300, 301, 422, 423, -337,
- 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
- 0, -337, 0, 0, 0, 0, 0, 0, -44, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 21, 22,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -337, 0, 421, 0,
- -337, 5, 0, -496, 8, -337, -337, -337, -337, -337,
- -337, -337, -337, -337, -337, -337, -337, 9, 10, 0,
- 11, 0, -337, -337, 12, 0, 0, 300, 301, 422,
- 423, -337, 0, 421, 0, -337, 5, 13, 0, 8,
- -337, -337, -337, -337, -337, -337, -337, -337, -337, -337,
- -337, -337, 9, 10, 0, 11, 0, -337, -337, 12,
- 21, 22, 300, 301, 422, 423, -337, 0, 0, 0,
- 0, 0, 13, 0, 0, 0, 0, 0, -337, 0,
- 0, 0, 0, 4, 0, -66, 5, 6, 7, 8,
- 0, 0, 0, 0, 0, 21, 22, 0, 0, 0,
- 0, 0, 9, 10, 0, 11, 0, 0, 0, 12,
- 0, 0, 0, -337, 0, 0, 0, 0, 0, 0,
- -473, 0, 13, 14, 15, 16, 0, 0, 0, 0,
- 0, 17, 18, 0, 0, 19, 0, 0, 20, 0,
- 0, 0, 0, 0, 0, 21, 22, 0, 0, 0,
- 0, 83, 0, 23, 24, 0, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 9, 10,
- -38, 11, 125, 126, 127, -2, 4, 0, 0, 5,
- 6, 7, 8, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 9, 10, 0, 11, 0,
- 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 13, 14, 15, 16, 0,
- 0, 0, 0, 0, 17, 18, 0, 0, 19, 98,
- 0, 20, 0, 0, 0, 0, 0, 0, 21, 22,
- 0, 0, 0, 0, 0, 0, 23, 24
-};
-
-static const tao_yytype_int16 tao_yycheck[] =
-{
- 13, 21, 22, 36, 36, 18, 19, 36, 13, 36,
- 75, 75, 267, 2, 36, 2, 36, 377, 36, 2,
- 2, 2, 217, 431, 358, 311, 290, 291, 75, 377,
- 285, 75, 75, 75, 383, 604, 246, 253, 341, 3,
- 6, 3, 3, 3, 3, 78, 78, 0, 640, 78,
- 81, 78, 1, 3, 8, 75, 78, 11, 78, 3,
- 78, 299, 610, 3, 77, 6, 79, 80, 81, 82,
- 3, 81, 76, 104, 87, 378, 668, 81, 91, 28,
- 29, 94, 431, 49, 97, 76, 19, 53, 326, 86,
- 81, 3, 3, 86, 104, 22, 89, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 104, 23, 24, 25, 26, 89, 81, 328, 81,
- 81, 81, 81, 86, 74, 75, 76, 77, 78, 79,
- 80, 81, 1, 3, 84, 85, 684, 81, 6, 88,
- 104, 379, 104, 104, 104, 95, 96, 29, 81, 17,
- 100, 101, 20, 60, 86, 86, 24, 89, 65, 28,
- 29, 377, 74, 75, 76, 77, 78, 79, 80, 81,
- 81, 694, 84, 85, 87, 86, 8, 9, 89, 30,
- 31, 49, 64, 86, 400, 53, 68, 710, 90, 101,
- 598, 82, 83, 206, 49, 498, 719, 217, 53, 67,
- 68, 103, 412, 726, 86, 3, 88, 3, 228, 60,
- 779, 86, 86, 86, 65, 89, 89, 48, 69, 70,
- 789, 97, 98, 99, 86, 420, 3, 87, 797, 95,
- 96, 8, 9, 10, 28, 29, 13, 14, 15, 16,
- 89, 254, 86, 256, 14, 15, 23, 267, 87, 598,
- 610, 264, 35, 36, 37, 455, 456, 457, 355, 356,
- 357, 104, 610, 15, 16, 285, 600, 3, 451, 452,
- 435, 436, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 302, 104, 304, 305, 86, 3, 87, 25,
- 26, 311, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 81, 453, 454, 327, 24, 25,
- 26, 477, 478, 86, 86, 86, 8, 86, 383, 383,
- 86, 86, 342, 87, 684, 87, 86, 735, 86, 376,
- 87, 86, 376, 376, 376, 86, 684, 81, 602, 86,
- 89, 87, 375, 376, 47, 81, 375, 101, 375, 87,
- 30, 31, 87, 375, 104, 375, 376, 375, 87, 87,
- 87, 769, 104, 383, 89, 81, 431, 431, 3, 103,
- 58, 51, 52, 386, 105, 661, 90, 3, 90, 90,
- 60, 61, 92, 31, 397, 65, 735, 93, 3, 69,
- 70, 411, 94, 86, 88, 86, 86, 86, 105, 86,
- 420, 3, 435, 436, 87, 91, 435, 436, 435, 436,
- 86, 431, 90, 435, 436, 435, 436, 435, 436, 103,
- 769, 755, 103, 88, 88, 102, 88, 1, 103, 3,
- 103, 103, 88, 8, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 88, 23,
- 24, 25, 26, 90, 474, 475, 476, 477, 478, 88,
- 88, 88, 3, 658, 88, 86, 661, 86, 86, 86,
- 86, 102, 86, 86, 86, 86, 3, 490, 491, 3,
- 86, 86, 86, 86, 66, 86, 1, 86, 3, 4,
- 86, 86, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 81, 23, 764,
- 25, 26, 27, 86, 90, 30, 31, 32, 33, 34,
- 88, 88, 88, 88, 88, 40, 781, 3, 86, 44,
- 519, 101, 519, 598, 598, 555, 519, 519, 519, 54,
- 795, 87, 35, 55, 106, 90, 3, 3, 63, 64,
- 88, 86, 86, 101, 35, 102, 38, 62, 102, 102,
- 573, 101, 575, 576, 577, 59, 81, 90, 86, 102,
- 101, 88, 102, 88, 90, 89, 101, 39, 598, 89,
- 102, 102, 86, 102, 76, 76, 599, 90, 101, 403,
- 16, 604, 15, 102, 599, 380, 448, 450, 573, 449,
- 1, 342, 3, 4, 674, 75, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 75, 23, 407, 25, 26, 27, 758, 760, 30,
- 31, 32, 33, 34, 292, 603, 780, 678, 658, 40,
- 796, 661, 3, 44, 45, 46, 414, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 679,
- 68, 674, 63, 64, 25, 26, 29, 612, 533, 674,
- 735, 735, 266, 34, 400, 684, 377, -1, -1, -1,
- 81, -1, 305, -1, 3, -1, -1, 88, -1, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, -1, -1, -1, 769, 769, 25, 26, -1, 722,
- -1, -1, -1, -1, -1, 735, -1, 722, -1, -1,
- 81, -1, -1, -1, 744, -1, 759, 759, -1, -1,
- 759, -1, 759, -1, -1, -1, -1, 759, -1, 759,
- -1, 759, -1, -1, 764, -1, -1, -1, -1, 769,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 781, 81, -1, -1, -1, 779, -1, -1, -1,
- -1, -1, -1, -1, -1, 795, 789, -1, -1, 1,
- -1, 3, 4, -1, 797, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- -1, 23, -1, 25, 26, 27, -1, -1, 30, 31,
- 32, 33, 34, -1, -1, -1, -1, -1, 40, -1,
- -1, -1, 44, 45, 46, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 63, 64, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 81,
- -1, 1, -1, 3, 4, -1, 88, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, -1, 23, -1, 25, 26, 27, -1, -1,
- 30, 31, 32, 33, 34, -1, 1, -1, 3, 4,
- 40, -1, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, -1, 23, -1,
- 25, 26, 27, 63, 64, 30, 31, 32, 33, 34,
- -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
- -1, 81, -1, -1, -1, -1, -1, -1, 88, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 63, 64,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 81, -1, 1, -1,
- 3, 4, -1, 88, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, -1,
- 23, -1, 25, 26, 27, -1, -1, 30, 31, 32,
- 33, 34, -1, 1, -1, 3, 4, 40, -1, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, -1, 23, -1, 25, 26, 27,
- 63, 64, 30, 31, 32, 33, 34, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, 81, -1,
- -1, -1, -1, 1, -1, 88, 4, 5, 6, 7,
- -1, -1, -1, -1, -1, 63, 64, -1, -1, -1,
- -1, -1, 20, 21, -1, 23, -1, -1, -1, 27,
- -1, -1, -1, 81, -1, -1, -1, -1, -1, -1,
- 88, -1, 40, 41, 42, 43, -1, -1, -1, -1,
- -1, 49, 50, -1, -1, 53, -1, -1, 56, -1,
- -1, -1, -1, -1, -1, 63, 64, -1, -1, -1,
- -1, 3, -1, 71, 72, -1, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 88, 23, 24, 25, 26, 0, 1, -1, -1, 4,
- 5, 6, 7, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 20, 21, -1, 23, -1,
- -1, -1, 27, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 40, 41, 42, 43, -1,
- -1, -1, -1, -1, 49, 50, -1, -1, 53, 81,
- -1, 56, -1, -1, -1, -1, -1, -1, 63, 64,
- -1, -1, -1, -1, -1, -1, 71, 72
-};
-
-/* TAO_YYSTOS[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
-static const tao_yytype_uint16 tao_yystos[] =
-{
- 0, 108, 109, 0, 1, 4, 5, 6, 7, 20,
- 21, 23, 27, 40, 41, 42, 43, 49, 50, 53,
- 56, 63, 64, 71, 72, 110, 126, 131, 132, 136,
- 138, 141, 142, 143, 147, 151, 153, 157, 158, 179,
- 180, 198, 207, 227, 229, 241, 243, 265, 266, 267,
- 308, 359, 360, 361, 362, 363, 367, 389, 391, 414,
- 415, 416, 417, 418, 422, 423, 424, 427, 431, 433,
- 437, 451, 469, 470, 125, 181, 127, 137, 199, 228,
- 242, 268, 309, 3, 178, 215, 136, 53, 136, 151,
- 153, 53, 143, 153, 154, 178, 178, 392, 81, 175,
- 178, 175, 452, 471, 118, 116, 89, 104, 139, 438,
- 133, 119, 144, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 24, 25, 26, 139, 175,
- 202, 203, 204, 205, 206, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 229, 241, 243, 267,
- 276, 279, 282, 285, 286, 289, 468, 487, 114, 111,
- 230, 22, 115, 112, 113, 120, 364, 121, 390, 122,
- 139, 425, 425, 117, 434, 123, 124, 87, 474, 86,
- 175, 185, 217, 220, 221, 222, 223, 224, 282, 286,
- 3, 178, 200, 202, 178, 178, 178, 178, 139, 178,
- 139, 148, 178, 178, 368, 178, 176, 76, 81, 76,
- 3, 3, 86, 86, 48, 155, 439, 89, 444, 87,
- 86, 87, 8, 11, 8, 9, 280, 152, 104, 90,
- 103, 104, 104, 86, 86, 87, 244, 86, 86, 86,
- 86, 87, 86, 87, 401, 86, 426, 419, 428, 86,
- 87, 86, 86, 475, 182, 128, 201, 269, 310, 87,
- 89, 370, 393, 178, 177, 453, 472, 140, 6, 17,
- 20, 24, 49, 53, 67, 68, 432, 443, 175, 445,
- 447, 134, 145, 8, 104, 47, 156, 172, 175, 277,
- 283, 287, 231, 101, 365, 402, 156, 87, 87, 435,
- 30, 31, 60, 65, 69, 70, 297, 298, 303, 381,
- 383, 384, 467, 477, 479, 485, 178, 87, 178, 208,
- 211, 215, 216, 290, 87, 87, 149, 371, 369, 89,
- 398, 178, 438, 457, 457, 172, 3, 441, 104, 446,
- 162, 159, 281, 172, 103, 173, 74, 75, 76, 77,
- 78, 79, 80, 84, 85, 95, 96, 100, 101, 175,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 197, 197, 233, 235, 236, 245, 372, 404, 420,
- 429, 162, 299, 304, 19, 175, 382, 58, 385, 175,
- 447, 486, 175, 486, 482, 480, 481, 382, 483, 476,
- 478, 484, 183, 129, 291, 209, 270, 311, 162, 175,
- 156, 399, 394, 454, 473, 90, 440, 3, 448, 450,
- 90, 1, 32, 33, 135, 163, 180, 198, 297, 308,
- 313, 318, 359, 360, 44, 45, 46, 146, 160, 161,
- 163, 320, 203, 90, 195, 195, 195, 187, 92, 93,
- 94, 82, 83, 95, 96, 97, 98, 99, 278, 284,
- 288, 232, 234, 1, 202, 237, 8, 175, 217, 222,
- 223, 224, 250, 267, 51, 52, 61, 69, 70, 297,
- 366, 373, 381, 383, 386, 387, 388, 465, 466, 467,
- 44, 54, 163, 403, 405, 408, 411, 162, 159, 436,
- 31, 175, 204, 282, 286, 342, 178, 3, 3, 3,
- 86, 86, 86, 178, 86, 88, 479, 86, 91, 109,
- 105, 292, 294, 90, 3, 272, 275, 234, 150, 175,
- 156, 87, 370, 442, 103, 103, 449, 447, 171, 88,
- 167, 164, 169, 168, 170, 34, 319, 342, 165, 166,
- 321, 237, 237, 88, 86, 174, 102, 189, 190, 191,
- 192, 192, 193, 193, 194, 194, 194, 103, 103, 103,
- 88, 235, 240, 238, 246, 175, 175, 175, 175, 468,
- 175, 468, 379, 88, 374, 375, 376, 377, 378, 380,
- 178, 178, 88, 406, 407, 421, 430, 88, 300, 305,
- 184, 130, 295, 293, 210, 271, 273, 312, 88, 395,
- 455, 443, 90, 86, 86, 86, 86, 86, 86, 314,
- 86, 86, 3, 175, 86, 208, 102, 178, 178, 178,
- 3, 3, 86, 86, 86, 86, 86, 86, 86, 409,
- 412, 86, 86, 88, 88, 342, 212, 215, 186, 187,
- 88, 197, 294, 211, 88, 90, 88, 66, 60, 381,
- 383, 384, 458, 460, 463, 464, 450, 3, 322, 239,
- 247, 101, 324, 324, 301, 306, 213, 296, 274, 396,
- 175, 447, 447, 456, 459, 461, 462, 315, 324, 86,
- 87, 325, 326, 410, 413, 212, 55, 347, 90, 106,
- 275, 175, 3, 3, 88, 460, 86, 86, 101, 333,
- 323, 248, 102, 35, 327, 330, 38, 344, 344, 302,
- 348, 307, 214, 397, 334, 335, 316, 344, 1, 28,
- 29, 251, 253, 257, 259, 331, 102, 328, 345, 344,
- 101, 62, 350, 215, 59, 400, 102, 35, 36, 37,
- 336, 339, 343, 344, 256, 261, 260, 249, 252, 254,
- 258, 342, 90, 101, 349, 351, 175, 102, 337, 340,
- 317, 86, 187, 89, 88, 253, 202, 263, 259, 332,
- 329, 346, 172, 101, 90, 342, 39, 353, 262, 264,
- 255, 211, 330, 172, 102, 352, 338, 341, 354, 89,
- 211, 86, 102, 172, 339, 211, 101, 102, 355, 76,
- 356, 357, 102, 90, 358, 76
-};
-
-#define tao_yyerrok (tao_yyerrstatus = 0)
-#define tao_yyclearin (tao_yychar = TAO_YYEMPTY)
-#define TAO_YYEMPTY (-2)
-#define TAO_YYEOF 0
-
-#define TAO_YYACCEPT goto tao_yyacceptlab
-#define TAO_YYABORT goto tao_yyabortlab
-#define TAO_YYERROR goto tao_yyerrorlab
-
-
-/* Like TAO_YYERROR except do call tao_yyerror. This remains here temporarily
- to ease the transition to the new meaning of TAO_YYERROR, for GCC.
- Once GCC version 2 has supplanted version 1, this can go. */
-
-#define TAO_YYFAIL goto tao_yyerrlab
-
-#define TAO_YYRECOVERING() (!!tao_yyerrstatus)
-
-#define TAO_YYBACKUP(Token, Value) \
-do \
- if (tao_yychar == TAO_YYEMPTY && tao_yylen == 1) \
- { \
- tao_yychar = (Token); \
- tao_yylval = (Value); \
- tao_yytoken = TAO_YYTRANSLATE (tao_yychar); \
- TAO_YYPOPSTACK (1); \
- goto tao_yybackup; \
- } \
- else \
- { \
- tao_yyerror (TAO_YY_("syntax error: cannot back up")); \
- TAO_YYERROR; \
- } \
-while (TAO_YYID (0))
-
-
-#define TAO_YYTERROR 1
-#define TAO_YYERRCODE 256
-
-
-/* TAO_YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
- If N is 0, then set CURRENT to the empty location which ends
- the previous symbol: RHS[0] (always defined). */
-
-#define TAO_YYRHSLOC(Rhs, K) ((Rhs)[K])
-#ifndef TAO_YYLLOC_DEFAULT
-# define TAO_YYLLOC_DEFAULT(Current, Rhs, N) \
- do \
- if (TAO_YYID (N)) \
- { \
- (Current).first_line = TAO_YYRHSLOC (Rhs, 1).first_line; \
- (Current).first_column = TAO_YYRHSLOC (Rhs, 1).first_column; \
- (Current).last_line = TAO_YYRHSLOC (Rhs, N).last_line; \
- (Current).last_column = TAO_YYRHSLOC (Rhs, N).last_column; \
- } \
- else \
- { \
- (Current).first_line = (Current).last_line = \
- TAO_YYRHSLOC (Rhs, 0).last_line; \
- (Current).first_column = (Current).last_column = \
- TAO_YYRHSLOC (Rhs, 0).last_column; \
- } \
- while (TAO_YYID (0))
-#endif
-
-
-/* TAO_YY_LOCATION_PRINT -- Print the location on the stream.
- This macro was not mandated originally: define only if we know
- we won't break user code: when these are the locations we know. */
-
-#ifndef TAO_YY_LOCATION_PRINT
-# if TAO_YYLTYPE_IS_TRIVIAL
-# define TAO_YY_LOCATION_PRINT(File, Loc) \
- fprintf (File, "%d.%d-%d.%d", \
- (Loc).first_line, (Loc).first_column, \
- (Loc).last_line, (Loc).last_column)
-# else
-# define TAO_YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif
-
-
-/* TAO_YYLEX -- calling `tao_yylex' with the right arguments. */
-
-#ifdef TAO_YYLEX_PARAM
-# define TAO_YYLEX tao_yylex (TAO_YYLEX_PARAM)
-#else
-# define TAO_YYLEX tao_yylex ()
-#endif
-
-/* Enable debugging if requested. */
-#if TAO_YYDEBUG
-
-# ifndef TAO_YYFPRINTF
-# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-# define TAO_YYFPRINTF fprintf
-# endif
-
-# define TAO_YYDPRINTF(Args) \
-do { \
- if (tao_yydebug) \
- TAO_YYFPRINTF Args; \
-} while (TAO_YYID (0))
-
-# define TAO_YY_SYMBOL_PRINT(Title, Type, Value, Location) \
-do { \
- if (tao_yydebug) \
- { \
- TAO_YYFPRINTF (stderr, "%s ", Title); \
- tao_yy_symbol_print (stderr, \
- Type, Value); \
- TAO_YYFPRINTF (stderr, "\n"); \
- } \
-} while (TAO_YYID (0))
-
-
-/*--------------------------------.
-| Print this symbol on TAO_YYOUTPUT. |
-`--------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-tao_yy_symbol_value_print (FILE *tao_yyoutput, int tao_yytype, TAO_YYSTYPE const * const tao_yyvaluep)
-#else
-static void
-tao_yy_symbol_value_print (tao_yyoutput, tao_yytype, tao_yyvaluep)
- FILE *tao_yyoutput;
- int tao_yytype;
- TAO_YYSTYPE const * const tao_yyvaluep;
-#endif
-{
- if (!tao_yyvaluep)
- return;
-# ifdef TAO_YYPRINT
- if (tao_yytype < TAO_YYNTOKENS)
- TAO_YYPRINT (tao_yyoutput, tao_yytoknum[tao_yytype], *tao_yyvaluep);
-# else
- TAO_YYUSE (tao_yytype);
- TAO_YYUSE (tao_yyoutput);
-# endif
-}
-
-
-/*--------------------------------.
-| Print this symbol on TAO_YYOUTPUT. |
-`--------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-tao_yy_symbol_print (FILE *tao_yyoutput, int tao_yytype, TAO_YYSTYPE const * const tao_yyvaluep)
-#else
-static void
-tao_yy_symbol_print (tao_yyoutput, tao_yytype, tao_yyvaluep)
- FILE *tao_yyoutput;
- int tao_yytype;
- TAO_YYSTYPE const * const tao_yyvaluep;
-#endif
-{
- if (tao_yytype < TAO_YYNTOKENS)
- TAO_YYFPRINTF (tao_yyoutput, "token %s (", tao_yytname[tao_yytype]);
- else
- TAO_YYFPRINTF (tao_yyoutput, "nterm %s (", tao_yytname[tao_yytype]);
-
- tao_yy_symbol_value_print (tao_yyoutput, tao_yytype, tao_yyvaluep);
- TAO_YYFPRINTF (tao_yyoutput, ")");
-}
-
-/*------------------------------------------------------------------.
-| tao_yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included). |
-`------------------------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-tao_yy_stack_print (tao_yytype_int16 *bottom, tao_yytype_int16 *top)
-#else
-static void
-tao_yy_stack_print (bottom, top)
- tao_yytype_int16 *bottom;
- tao_yytype_int16 *top;
-#endif
-{
- TAO_YYFPRINTF (stderr, "Stack now");
- for (; bottom <= top; ++bottom)
- TAO_YYFPRINTF (stderr, " %d", *bottom);
- TAO_YYFPRINTF (stderr, "\n");
-}
-
-# define TAO_YY_STACK_PRINT(Bottom, Top) \
-do { \
- if (tao_yydebug) \
- tao_yy_stack_print ((Bottom), (Top)); \
-} while (TAO_YYID (0))
-
-
-/*------------------------------------------------.
-| Report that the TAO_YYRULE is going to be reduced. |
-`------------------------------------------------*/
-
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-tao_yy_reduce_print (TAO_YYSTYPE *tao_yyvsp, int tao_yyrule)
-#else
-static void
-tao_yy_reduce_print (tao_yyvsp, tao_yyrule)
- TAO_YYSTYPE *tao_yyvsp;
- int tao_yyrule;
-#endif
-{
- int tao_yynrhs = tao_yyr2[tao_yyrule];
- int tao_yyi;
- unsigned long int tao_yylno = tao_yyrline[tao_yyrule];
- TAO_YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
- tao_yyrule - 1, tao_yylno);
- /* The symbols being reduced. */
- for (tao_yyi = 0; tao_yyi < tao_yynrhs; tao_yyi++)
- {
- fprintf (stderr, " $%d = ", tao_yyi + 1);
- tao_yy_symbol_print (stderr, tao_yyrhs[tao_yyprhs[tao_yyrule] + tao_yyi],
- &(tao_yyvsp[(tao_yyi + 1) - (tao_yynrhs)])
- );
- fprintf (stderr, "\n");
- }
-}
-
-# define TAO_YY_REDUCE_PRINT(Rule) \
-do { \
- if (tao_yydebug) \
- tao_yy_reduce_print (tao_yyvsp, Rule); \
-} while (TAO_YYID (0))
-
-/* Nonzero means print parse trace. It is left uninitialized so that
- multiple parsers can coexist. */
-int tao_yydebug;
-#else /* !TAO_YYDEBUG */
-# define TAO_YYDPRINTF(Args)
-# define TAO_YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define TAO_YY_STACK_PRINT(Bottom, Top)
-# define TAO_YY_REDUCE_PRINT(Rule)
-#endif /* !TAO_YYDEBUG */
-
-
-/* TAO_YYINITDEPTH -- initial size of the parser's stacks. */
-#ifndef TAO_YYINITDEPTH
-# define TAO_YYINITDEPTH 200
-#endif
-
-/* TAO_YYMAXDEPTH -- maximum size the stacks can grow to (effective only
- if the built-in stack extension method is used).
-
- Do not make this value too large; the results are undefined if
- TAO_YYSTACK_ALLOC_MAXIMUM < TAO_YYSTACK_BYTES (TAO_YYMAXDEPTH)
- evaluated with infinite-precision integer arithmetic. */
-
-#ifndef TAO_YYMAXDEPTH
-# define TAO_YYMAXDEPTH 10000
-#endif
-
-
-
-#if TAO_YYERROR_VERBOSE
-
-# ifndef tao_yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define tao_yystrlen strlen
-# else
-/* Return the length of TAO_YYSTR. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static TAO_YYSIZE_T
-tao_yystrlen (const char *tao_yystr)
-#else
-static TAO_YYSIZE_T
-tao_yystrlen (tao_yystr)
- const char *tao_yystr;
-#endif
-{
- TAO_YYSIZE_T tao_yylen;
- for (tao_yylen = 0; tao_yystr[tao_yylen]; tao_yylen++)
- continue;
- return tao_yylen;
-}
-# endif
-# endif
-
-# ifndef tao_yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define tao_yystpcpy stpcpy
-# else
-/* Copy TAO_YYSRC to TAO_YYDEST, returning the address of the terminating '\0' in
- TAO_YYDEST. */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static char *
-tao_yystpcpy (char *tao_yydest, const char *tao_yysrc)
-#else
-static char *
-tao_yystpcpy (tao_yydest, tao_yysrc)
- char *tao_yydest;
- const char *tao_yysrc;
-#endif
-{
- char *tao_yyd = tao_yydest;
- const char *tao_yys = tao_yysrc;
-
- while ((*tao_yyd++ = *tao_yys++) != '\0')
- continue;
-
- return tao_yyd - 1;
-}
-# endif
-# endif
-
-# ifndef tao_yytnamerr
-/* Copy to TAO_YYRES the contents of TAO_YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for tao_yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). TAO_YYSTR is taken from tao_yytname. If TAO_YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static TAO_YYSIZE_T
-tao_yytnamerr (char *tao_yyres, const char *tao_yystr)
-{
- if (*tao_yystr == '"')
- {
- TAO_YYSIZE_T tao_yyn = 0;
- char const *tao_yyp = tao_yystr;
-
- for (;;)
- switch (*++tao_yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++tao_yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (tao_yyres)
- tao_yyres[tao_yyn] = *tao_yyp;
- tao_yyn++;
- break;
-
- case '"':
- if (tao_yyres)
- tao_yyres[tao_yyn] = '\0';
- return tao_yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! tao_yyres)
- return tao_yystrlen (tao_yystr);
-
- return tao_yystpcpy (tao_yyres, tao_yystr) - tao_yyres;
-}
-# endif
-
-/* Copy into TAO_YYRESULT an error message about the unexpected token
- TAO_YYCHAR while in state TAO_YYSTATE. Return the number of bytes copied,
- including the terminating null byte. If TAO_YYRESULT is null, do not
- copy anything; just return the number of bytes that would be
- copied. As a special case, return 0 if an ordinary "syntax error"
- message will do. Return TAO_YYSIZE_MAXIMUM if overflow occurs during
- size calculation. */
-static TAO_YYSIZE_T
-tao_yysyntax_error (char *tao_yyresult, int tao_yystate, int tao_yychar)
-{
- int tao_yyn = tao_yypact[tao_yystate];
-
- if (! (TAO_YYPACT_NINF < tao_yyn && tao_yyn <= TAO_YYLAST))
- return 0;
- else
- {
- int tao_yytype = TAO_YYTRANSLATE (tao_yychar);
- TAO_YYSIZE_T tao_yysize0 = tao_yytnamerr (0, tao_yytname[tao_yytype]);
- TAO_YYSIZE_T tao_yysize = tao_yysize0;
- TAO_YYSIZE_T tao_yysize1;
- int tao_yysize_overflow = 0;
- enum { TAO_YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- char const *tao_yyarg[TAO_YYERROR_VERBOSE_ARGS_MAXIMUM];
- int tao_yyx;
-
-# if 0
- /* This is so xgettext sees the translatable formats that are
- constructed on the fly. */
- TAO_YY_("syntax error, unexpected %s");
- TAO_YY_("syntax error, unexpected %s, expecting %s");
- TAO_YY_("syntax error, unexpected %s, expecting %s or %s");
- TAO_YY_("syntax error, unexpected %s, expecting %s or %s or %s");
- TAO_YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
-# endif
- char *tao_yyfmt;
- char const *tao_yyf;
- static char const tao_yyunexpected[] = "syntax error, unexpected %s";
- static char const tao_yyexpecting[] = ", expecting %s";
- static char const tao_yyor[] = " or %s";
- char tao_yyformat[sizeof tao_yyunexpected
- + sizeof tao_yyexpecting - 1
- + ((TAO_YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
- * (sizeof tao_yyor - 1))];
- char const *tao_yyprefix = tao_yyexpecting;
-
- /* Start TAO_YYX at -TAO_YYN if negative to avoid negative indexes in
- TAO_YYCHECK. */
- int tao_yyxbegin = tao_yyn < 0 ? -tao_yyn : 0;
-
- /* Stay within bounds of both tao_yycheck and tao_yytname. */
- int tao_yychecklim = TAO_YYLAST - tao_yyn + 1;
- int tao_yyxend = tao_yychecklim < TAO_YYNTOKENS ? tao_yychecklim : TAO_YYNTOKENS;
- int tao_yycount = 1;
-
- tao_yyarg[0] = tao_yytname[tao_yytype];
- tao_yyfmt = tao_yystpcpy (tao_yyformat, tao_yyunexpected);
-
- for (tao_yyx = tao_yyxbegin; tao_yyx < tao_yyxend; ++tao_yyx)
- if (tao_yycheck[tao_yyx + tao_yyn] == tao_yyx && tao_yyx != TAO_YYTERROR)
- {
- if (tao_yycount == TAO_YYERROR_VERBOSE_ARGS_MAXIMUM)
- {
- tao_yycount = 1;
- tao_yysize = tao_yysize0;
- tao_yyformat[sizeof tao_yyunexpected - 1] = '\0';
- break;
- }
- tao_yyarg[tao_yycount++] = tao_yytname[tao_yyx];
- tao_yysize1 = tao_yysize + tao_yytnamerr (0, tao_yytname[tao_yyx]);
- tao_yysize_overflow |= (tao_yysize1 < tao_yysize);
- tao_yysize = tao_yysize1;
- tao_yyfmt = tao_yystpcpy (tao_yyfmt, tao_yyprefix);
- tao_yyprefix = tao_yyor;
- }
-
- tao_yyf = TAO_YY_(tao_yyformat);
- tao_yysize1 = tao_yysize + tao_yystrlen (tao_yyf);
- tao_yysize_overflow |= (tao_yysize1 < tao_yysize);
- tao_yysize = tao_yysize1;
-
- if (tao_yysize_overflow)
- return TAO_YYSIZE_MAXIMUM;
-
- if (tao_yyresult)
- {
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- char *tao_yyp = tao_yyresult;
- int tao_yyi = 0;
- while ((*tao_yyp = *tao_yyf) != '\0')
- {
- if (*tao_yyp == '%' && tao_yyf[1] == 's' && tao_yyi < tao_yycount)
- {
- tao_yyp += tao_yytnamerr (tao_yyp, tao_yyarg[tao_yyi++]);
- tao_yyf += 2;
- }
- else
- {
- tao_yyp++;
- tao_yyf++;
- }
- }
- }
- return tao_yysize;
- }
-}
-#endif /* TAO_YYERROR_VERBOSE */
-
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol. |
-`-----------------------------------------------*/
-
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-static void
-tao_yydestruct (const char *tao_yymsg, int tao_yytype, TAO_YYSTYPE *tao_yyvaluep)
-#else
-static void
-tao_yydestruct (tao_yymsg, tao_yytype, tao_yyvaluep)
- const char *tao_yymsg;
- int tao_yytype;
- TAO_YYSTYPE *tao_yyvaluep;
-#endif
-{
- TAO_YYUSE (tao_yyvaluep);
-
- if (!tao_yymsg)
- tao_yymsg = "Deleting";
- TAO_YY_SYMBOL_PRINT (tao_yymsg, tao_yytype, tao_yyvaluep, tao_yylocationp);
-}
-
-
-/* Prevent warnings from -Wmissing-prototypes. */
-
-#ifdef TAO_YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int tao_yyparse (void *TAO_YYPARSE_PARAM);
-#else
-int tao_yyparse ();
-#endif
-#else /* ! TAO_YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
-int tao_yyparse (void);
-#else
-int tao_yyparse ();
-#endif
-#endif /* ! TAO_YYPARSE_PARAM */
-
-
-
-/* The look-ahead symbol. */
-int tao_yychar;
-
-/* The semantic value of the look-ahead symbol. */
-TAO_YYSTYPE tao_yylval;
-
-/* Number of syntax errors so far. */
-int tao_yynerrs;
-
-
-
-/*----------.
-| tao_yyparse. |
-`----------*/
-
-#ifdef TAO_YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-tao_yyparse (void *TAO_YYPARSE_PARAM)
-#else
-int
-tao_yyparse (TAO_YYPARSE_PARAM)
- void *TAO_YYPARSE_PARAM;
-#endif
-#else /* ! TAO_YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
- || defined __cplusplus || defined _MSC_VER)
-int
-tao_yyparse (void)
-#else
-int
-tao_yyparse ()
-
-#endif
-#endif
-{
-
- int tao_yystate;
- int tao_yyn;
- int tao_yyresult;
- /* Number of tokens to shift before error messages enabled. */
- int tao_yyerrstatus;
- /* Look-ahead token as an internal (translated) token number. */
- int tao_yytoken = 0;
-#if TAO_YYERROR_VERBOSE
- /* Buffer for error messages, and its allocated size. */
- char tao_yymsgbuf[128];
- char *tao_yymsg = tao_yymsgbuf;
- TAO_YYSIZE_T tao_yymsg_alloc = sizeof tao_yymsgbuf;
-#endif
-
- /* Three stacks and their tools:
- `tao_yyss': related to states,
- `tao_yyvs': related to semantic values,
- `tao_yyls': related to locations.
-
- Refer to the stacks thru separate pointers, to allow tao_yyoverflow
- to reallocate them elsewhere. */
-
- /* The state stack. */
- tao_yytype_int16 tao_yyssa[TAO_YYINITDEPTH];
- tao_yytype_int16 *tao_yyss = tao_yyssa;
- tao_yytype_int16 *tao_yyssp;
-
- /* The semantic value stack. */
- TAO_YYSTYPE tao_yyvsa[TAO_YYINITDEPTH];
- TAO_YYSTYPE *tao_yyvs = tao_yyvsa;
- TAO_YYSTYPE *tao_yyvsp;
-
-
-
-#define TAO_YYPOPSTACK(N) (tao_yyvsp -= (N), tao_yyssp -= (N))
-
- TAO_YYSIZE_T tao_yystacksize = TAO_YYINITDEPTH;
-
- /* The variables used to return semantic value and location from the
- action routines. */
- TAO_YYSTYPE tao_yyval;
-
-
- /* The number of symbols on the RHS of the reduced rule.
- Keep to zero when no symbol should be popped. */
- int tao_yylen = 0;
-
- TAO_YYDPRINTF ((stderr, "Starting parse\n"));
-
- tao_yystate = 0;
- tao_yyerrstatus = 0;
- tao_yynerrs = 0;
- tao_yychar = TAO_YYEMPTY; /* Cause a token to be read. */
-
- /* Initialize stack pointers.
- Waste one element of value and location stack
- so that they stay on the same level as the state stack.
- The wasted elements are never initialized. */
-
- tao_yyssp = tao_yyss;
- tao_yyvsp = tao_yyvs;
-
- goto tao_yysetstate;
-
-/*------------------------------------------------------------.
-| tao_yynewstate -- Push a new state, which is found in tao_yystate. |
-`------------------------------------------------------------*/
- tao_yynewstate:
- /* In all cases, when you get here, the value and location stacks
- have just been pushed. So pushing a state here evens the stacks. */
- tao_yyssp++;
-
- tao_yysetstate:
- *tao_yyssp = tao_yystate;
-
- if (tao_yyss + tao_yystacksize - 1 <= tao_yyssp)
- {
- /* Get the current used size of the three stacks, in elements. */
- TAO_YYSIZE_T tao_yysize = tao_yyssp - tao_yyss + 1;
-
-#ifdef tao_yyoverflow
- {
- /* Give user a chance to reallocate the stack. Use copies of
- these so that the &'s don't force the real ones into
- memory. */
- TAO_YYSTYPE *tao_yyvs1 = tao_yyvs;
- tao_yytype_int16 *tao_yyss1 = tao_yyss;
-
-
- /* Each stack pointer address is followed by the size of the
- data in use in that stack, in bytes. This used to be a
- conditional around just the two extra args, but that might
- be undefined if tao_yyoverflow is a macro. */
- tao_yyoverflow (TAO_YY_("memory exhausted"),
- &tao_yyss1, tao_yysize * sizeof (*tao_yyssp),
- &tao_yyvs1, tao_yysize * sizeof (*tao_yyvsp),
-
- &tao_yystacksize);
-
- tao_yyss = tao_yyss1;
- tao_yyvs = tao_yyvs1;
- }
-#else /* no tao_yyoverflow */
-# ifndef TAO_YYSTACK_RELOCATE
- goto tao_yyexhaustedlab;
-# else
- /* Extend the stack our own way. */
- if (TAO_YYMAXDEPTH <= tao_yystacksize)
- goto tao_yyexhaustedlab;
- tao_yystacksize *= 2;
- if (TAO_YYMAXDEPTH < tao_yystacksize)
- tao_yystacksize = TAO_YYMAXDEPTH;
-
- {
- tao_yytype_int16 *tao_yyss1 = tao_yyss;
- union tao_yyalloc *tao_yyptr =
- (union tao_yyalloc *) TAO_YYSTACK_ALLOC (TAO_YYSTACK_BYTES (tao_yystacksize));
- if (! tao_yyptr)
- goto tao_yyexhaustedlab;
- TAO_YYSTACK_RELOCATE (tao_yyss);
- TAO_YYSTACK_RELOCATE (tao_yyvs);
-
-# undef TAO_YYSTACK_RELOCATE
- if (tao_yyss1 != tao_yyssa)
- TAO_YYSTACK_FREE (tao_yyss1);
- }
-# endif
-#endif /* no tao_yyoverflow */
-
- tao_yyssp = tao_yyss + tao_yysize - 1;
- tao_yyvsp = tao_yyvs + tao_yysize - 1;
-
-
- TAO_YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) tao_yystacksize));
-
- if (tao_yyss + tao_yystacksize - 1 <= tao_yyssp)
- TAO_YYABORT;
- }
-
- TAO_YYDPRINTF ((stderr, "Entering state %d\n", tao_yystate));
-
- goto tao_yybackup;
-
-/*-----------.
-| tao_yybackup. |
-`-----------*/
-tao_yybackup:
-
- /* Do appropriate processing given the current state. Read a
- look-ahead token if we need one and don't already have one. */
-
- /* First try to decide what to do without reference to look-ahead token. */
- tao_yyn = tao_yypact[tao_yystate];
- if (tao_yyn == TAO_YYPACT_NINF)
- goto tao_yydefault;
-
- /* Not known => get a look-ahead token if don't already have one. */
-
- /* TAO_YYCHAR is either TAO_YYEMPTY or TAO_YYEOF or a valid look-ahead symbol. */
- if (tao_yychar == TAO_YYEMPTY)
- {
- TAO_YYDPRINTF ((stderr, "Reading a token: "));
- tao_yychar = TAO_YYLEX;
- }
-
- if (tao_yychar <= TAO_YYEOF)
- {
- tao_yychar = tao_yytoken = TAO_YYEOF;
- TAO_YYDPRINTF ((stderr, "Now at end of input.\n"));
- }
- else
- {
- tao_yytoken = TAO_YYTRANSLATE (tao_yychar);
- TAO_YY_SYMBOL_PRINT ("Next token is", tao_yytoken, &tao_yylval, &tao_yylloc);
- }
-
- /* If the proper action on seeing token TAO_YYTOKEN is to reduce or to
- detect an error, take that action. */
- tao_yyn += tao_yytoken;
- if (tao_yyn < 0 || TAO_YYLAST < tao_yyn || tao_yycheck[tao_yyn] != tao_yytoken)
- goto tao_yydefault;
- tao_yyn = tao_yytable[tao_yyn];
- if (tao_yyn <= 0)
- {
- if (tao_yyn == 0 || tao_yyn == TAO_YYTABLE_NINF)
- goto tao_yyerrlab;
- tao_yyn = -tao_yyn;
- goto tao_yyreduce;
- }
-
- if (tao_yyn == TAO_YYFINAL)
- TAO_YYACCEPT;
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (tao_yyerrstatus)
- tao_yyerrstatus--;
-
- /* Shift the look-ahead token. */
- TAO_YY_SYMBOL_PRINT ("Shifting", tao_yytoken, &tao_yylval, &tao_yylloc);
-
- /* Discard the shifted token unless it is eof. */
- if (tao_yychar != TAO_YYEOF)
- tao_yychar = TAO_YYEMPTY;
-
- tao_yystate = tao_yyn;
- *++tao_yyvsp = tao_yylval;
-
- goto tao_yynewstate;
-
-
-/*-----------------------------------------------------------.
-| tao_yydefault -- do the default action for the current state. |
-`-----------------------------------------------------------*/
-tao_yydefault:
- tao_yyn = tao_yydefact[tao_yystate];
- if (tao_yyn == 0)
- goto tao_yyerrlab;
- goto tao_yyreduce;
-
-
-/*-----------------------------.
-| tao_yyreduce -- Do a reduction. |
-`-----------------------------*/
-tao_yyreduce:
- /* tao_yyn is the number of a rule to reduce with. */
- tao_yylen = tao_yyr2[tao_yyn];
-
- /* If TAO_YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'.
-
- Otherwise, the following line sets TAO_YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. Assigning to TAO_YYVAL
- unconditionally makes the parser a bit smaller, and it avoids a
- GCC warning that TAO_YYVAL may be used uninitialized. */
- tao_yyval = tao_yyvsp[1-tao_yylen];
-
-
- TAO_YY_REDUCE_PRINT (tao_yyn);
- switch (tao_yyn)
- {
- case 5:
-
- {
-// definition : type_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
- }
- break;
-
- case 6:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 7:
-
- {
-// | typeid_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
- }
- break;
-
- case 8:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 9:
-
- {
-// | typeprefix_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
- }
- break;
-
- case 10:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 11:
-
- {
-// | const_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
- }
- break;
-
- case 12:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 13:
-
- {
-// | exception
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
- }
- break;
-
- case 14:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 15:
-
- {
-// | interface_def
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
- }
- break;
-
- case 16:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 17:
-
- {
-// | template_interface_def
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
- }
- break;
-
- case 18:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 19:
-
- {
-// | module
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleDeclSeen);
- }
- break;
-
- case 20:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 21:
-
- {
-// | value_def
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeDeclSeen);
- }
- break;
-
- case 22:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 23:
-
- {
-// | component
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentDeclSeen);
- }
- break;
-
- case 24:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 25:
-
- {
-// | home_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeDeclSeen);
- }
- break;
-
- case 26:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 27:
-
- {
-// | event
- idl_global->set_parse_state (IDL_GlobalData::PS_EventDeclSeen);
- }
- break;
-
- case 28:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 29:
-
- {
-// | porttype_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeDeclSeen);
- }
- break;
-
- case 30:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 31:
-
- {
-// | connector_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorDeclSeen);
- }
- break;
-
- case 32:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 33:
-
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
- }
- break;
-
- case 34:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- tao_yyerrok;
- }
- break;
-
- case 35:
-
- {
-// module : IDL_MODULE
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSeen);
- }
- break;
-
- case 36:
-
- {
-// IDENTIFIER
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
- UTL_ScopedName n (&id,
- 0);
- AST_Module *m = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleIDSeen);
- /*
- * Make a new module and add it to the enclosing scope
- */
- if (s != 0)
- {
- m = idl_global->gen ()->create_module (s,
- &n);
- (void) s->fe_add_module (m);
- }
- /*
- * Push it on the stack
- */
- idl_global->scopes ().push (m);
- }
- break;
-
- case 37:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
- }
- break;
-
- case 38:
-
- {
-// definitions
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleBodySeen);
- }
- break;
-
- case 39:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleQsSeen);
- /*
- * Finished with this module - pop it from the scope stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 42:
-
- {
-// interface : interface_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Interface *i = 0;
-
- /*
- * Make a new interface node and add it to its enclosing scope.
- */
- if (s != 0 && (tao_yyvsp[(1) - (1)].ihval) != 0)
- {
- i =
- idl_global->gen ()->create_interface (
- (tao_yyvsp[(1) - (1)].ihval)->name (),
- (tao_yyvsp[(1) - (1)].ihval)->inherits (),
- (tao_yyvsp[(1) - (1)].ihval)->n_inherits (),
- (tao_yyvsp[(1) - (1)].ihval)->inherits_flat (),
- (tao_yyvsp[(1) - (1)].ihval)->n_inherits_flat (),
- (tao_yyvsp[(1) - (1)].ihval)->is_local (),
- (tao_yyvsp[(1) - (1)].ihval)->is_abstract ()
- );
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the interface to its definition scope.
- */
- (void) s->fe_add_interface (i);
-
- // This FE_InterfaceHeader class isn't destroyed with the AST.
- (tao_yyvsp[(1) - (1)].ihval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].ihval);
- (tao_yyvsp[(1) - (1)].ihval) = 0;
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (i);
- }
- break;
-
- case 43:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
- }
- break;
-
- case 44:
-
- {
-// exports
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceBodySeen);
- }
- break;
-
- case 45:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceQsSeen);
-
- /*
- * Done with this interface - pop it off the scopes stack
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 46:
-
- {
-// interface_decl : IDL_INTERFACE
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSeen);
- }
- break;
-
- case 47:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceIDSeen);
- (tao_yyval.idval) = (tao_yyvsp[(3) - (3)].idval);
- }
- break;
-
- case 48:
-
- {
-// interface_header : interface_decl inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
-
- if ((tao_yyvsp[(2) - (2)].nlval) != 0 && (tao_yyvsp[(2) - (2)].nlval)->truncatable ())
- {
- idl_global->err ()->syntax_error (
- IDL_GlobalData::PS_InheritColonSeen
- );
- }
-
- /*
- * 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
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ((tao_yyvsp[(1) - (2)].idval), 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.ihval),
- FE_InterfaceHeader (n,
- (tao_yyvsp[(2) - (2)].nlval),
- false,
- false,
- true),
- 1);
-
- if (0 != (tao_yyvsp[(2) - (2)].nlval))
- {
- (tao_yyvsp[(2) - (2)].nlval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].nlval);
- (tao_yyvsp[(2) - (2)].nlval) = 0;
- }
- }
- break;
-
- case 49:
-
- {
-// | IDL_LOCAL interface_decl inheritance_spec
- 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
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ((tao_yyvsp[(2) - (3)].idval), 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.ihval),
- FE_InterfaceHeader (n,
- (tao_yyvsp[(3) - (3)].nlval),
- true,
- false,
- true),
- 1);
-
- if (0 != (tao_yyvsp[(3) - (3)].nlval))
- {
- (tao_yyvsp[(3) - (3)].nlval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].nlval);
- (tao_yyvsp[(3) - (3)].nlval) = 0;
- }
- }
- break;
-
- case 50:
-
- {
-// | IDL_ABSTRACT interface_decl inheritance_spec
- 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
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ((tao_yyvsp[(2) - (3)].idval), 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.ihval),
- FE_InterfaceHeader (n,
- (tao_yyvsp[(3) - (3)].nlval),
- false,
- true,
- true),
- 1);
-
- if (0 != (tao_yyvsp[(3) - (3)].nlval))
- {
- (tao_yyvsp[(3) - (3)].nlval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].nlval);
- (tao_yyvsp[(3) - (3)].nlval) = 0;
- }
- }
- break;
-
- case 51:
-
- {
-// inheritance_spec : ':' opt_truncatable
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
- }
- break;
-
- case 52:
-
- {
-// at_least_one_scoped_name
- (tao_yyvsp[(4) - (4)].nlval)->truncatable ((tao_yyvsp[(2) - (4)].bval));
- (tao_yyval.nlval) = (tao_yyvsp[(4) - (4)].nlval);
- }
- break;
-
- case 53:
-
- {
-/* | EMPTY */
- (tao_yyval.nlval) = 0;
- }
- break;
-
- case 58:
-
- {
-// valuetype : IDL_CUSTOM value_concrete_decl
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" custom yet\n")));
- }
- break;
-
- case 60:
-
- {
-// value_concrete_decl : value_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_ValueType *v = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && (tao_yyvsp[(1) - (1)].vhval) != 0)
- {
- v =
- idl_global->gen ()->create_valuetype (
- (tao_yyvsp[(1) - (1)].vhval)->name (),
- (tao_yyvsp[(1) - (1)].vhval)->inherits (),
- (tao_yyvsp[(1) - (1)].vhval)->n_inherits (),
- (tao_yyvsp[(1) - (1)].vhval)->inherits_concrete (),
- (tao_yyvsp[(1) - (1)].vhval)->inherits_flat (),
- (tao_yyvsp[(1) - (1)].vhval)->n_inherits_flat (),
- (tao_yyvsp[(1) - (1)].vhval)->supports (),
- (tao_yyvsp[(1) - (1)].vhval)->n_supports (),
- (tao_yyvsp[(1) - (1)].vhval)->supports_concrete (),
- false,
- (tao_yyvsp[(1) - (1)].vhval)->truncatable (),
- false
- );
- i = AST_Interface::narrow_from_decl (v);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the valuetype to its definition scope
- */
- v = AST_ValueType::narrow_from_decl (i);
- (void) s->fe_add_valuetype (v);
-
- // FE_OBVHeader is not automatically destroyed in the AST
- (tao_yyvsp[(1) - (1)].vhval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].vhval);
- (tao_yyvsp[(1) - (1)].vhval) = 0;
- }
-
- /*
- * Push it on the scope stack
- */
- idl_global->scopes ().push (v);
- }
- break;
-
- case 61:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
- }
- break;
-
- case 62:
-
- {
-// value_elements
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
- }
- break;
-
- case 63:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
-
- AST_ValueType *vt =
- AST_ValueType::narrow_from_scope (
- idl_global->scopes ().top_non_null ()
- );
-
- if (vt != 0 && vt->will_have_factory ())
- {
- idl_global->valuefactory_seen_ = true;
- }
-
- /*
- * Done with this value type - pop it off the scopes stack
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 64:
-
- {
-// value_abs_decl : IDL_ABSTRACT value_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_ValueType *v = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && (tao_yyvsp[(2) - (2)].vhval) != 0)
- {
- v =
- idl_global->gen ()->create_valuetype (
- (tao_yyvsp[(2) - (2)].vhval)->name (),
- (tao_yyvsp[(2) - (2)].vhval)->inherits (),
- (tao_yyvsp[(2) - (2)].vhval)->n_inherits (),
- (tao_yyvsp[(2) - (2)].vhval)->inherits_concrete (),
- (tao_yyvsp[(2) - (2)].vhval)->inherits_flat (),
- (tao_yyvsp[(2) - (2)].vhval)->n_inherits_flat (),
- (tao_yyvsp[(2) - (2)].vhval)->supports (),
- (tao_yyvsp[(2) - (2)].vhval)->n_supports (),
- (tao_yyvsp[(2) - (2)].vhval)->supports_concrete (),
- true,
- false,
- false
- );
- i = AST_Interface::narrow_from_decl (v);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the valuetype to its definition scope
- */
- v = AST_ValueType::narrow_from_decl (i);
- (void) s->fe_add_valuetype (v);
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (v);
- }
- break;
-
- case 65:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
- }
- break;
-
- case 66:
-
- {
-// exports
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
- }
- break;
-
- case 67:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
-
- /*
- * Done with this valuetype - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 68:
-
- {
-// value_header : value_decl inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- break;
-
- case 69:
-
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
-
- UTL_ScopedName *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName ((tao_yyvsp[(1) - (4)].idval), 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.vhval),
- FE_OBVHeader (sn,
- (tao_yyvsp[(2) - (4)].nlval),
- (tao_yyvsp[(4) - (4)].nlval),
- (tao_yyvsp[(2) - (4)].nlval) ? (tao_yyvsp[(2) - (4)].nlval)->truncatable () : false),
- 1);
-
- if (0 != (tao_yyvsp[(4) - (4)].nlval))
- {
- (tao_yyvsp[(4) - (4)].nlval)->destroy ();
- delete (tao_yyvsp[(4) - (4)].nlval);
- (tao_yyvsp[(4) - (4)].nlval) = 0;
- }
-
- if (0 != (tao_yyvsp[(2) - (4)].nlval))
- {
- (tao_yyvsp[(2) - (4)].nlval)->destroy ();
- delete (tao_yyvsp[(2) - (4)].nlval);
- (tao_yyvsp[(2) - (4)].nlval) = 0;
- }
- }
- break;
-
- case 70:
-
- {
-// value_decl : IDL_VALUETYPE
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSeen);
- }
- break;
-
- case 71:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeIDSeen);
- (tao_yyval.idval) = (tao_yyvsp[(3) - (3)].idval);
- }
- break;
-
- case 72:
-
- {
-// opt_truncatable : IDL_TRUNCATABLE
- (tao_yyval.bval) = true;
- }
- break;
-
- case 73:
-
- {
-/* | EMPTY */
- (tao_yyval.bval) = false;
- }
- break;
-
- case 74:
-
- {
-// supports_spec : IDL_SUPPORTS at_least_one_scoped_name
- (tao_yyval.nlval) = (tao_yyvsp[(2) - (2)].nlval);
- }
- break;
-
- case 75:
-
- {
-/* | EMPTY */
- (tao_yyval.nlval) = 0;
- }
- break;
-
- case 76:
-
- {
-// value_forward_decl : IDL_ABSTRACT value_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_ValueTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * valuetype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_valuetype_fwd (&n,
- true);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
- }
- break;
-
- case 77:
-
- {
-// | value_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (1)].idval),
- 0);
- AST_ValueTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * valuetype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_valuetype_fwd (&n,
- false);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- (tao_yyvsp[(1) - (1)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idval);
- (tao_yyvsp[(1) - (1)].idval) = 0;
- }
- break;
-
- case 78:
-
- {
-// value_box_decl : value_decl type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueBoxDeclSeen);
-
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (2)].idval),
- 0);
-
- if (s != 0 && (tao_yyvsp[(2) - (2)].dcval) != 0)
- {
- /*
- * Get the type_spec associated with the valuebox
- */
- AST_Type *tp = 0;
- AST_Typedef *td
- = AST_Typedef::narrow_from_decl ((tao_yyvsp[(2) - (2)].dcval));
-
- if (td == 0)
- {
- tp = AST_Type::narrow_from_decl ((tao_yyvsp[(2) - (2)].dcval));
- }
- else
- {
- tp = td->primitive_base_type ();
- }
-
- if (tp == 0)
- {
- // The <type_spec> given is a valid type
- idl_global->err ()->not_a_type ((tao_yyvsp[(2) - (2)].dcval));
- }
- else
- {
- AST_Decl::NodeType nt = tp->node_type ();
-
- if (nt == AST_Decl::NT_valuetype
- || nt == AST_Decl::NT_eventtype)
- {
- // valuetype is not allowed as <type_spec>
- // for boxed value
- idl_global->err ()->error0 (
- UTL_Error::EIDL_ILLEGAL_BOXED_TYPE
- );
- }
- else
- {
- /*
- * Add the valuebox to its definition scope
- */
- AST_ValueBox *vb =
- idl_global->gen ()->create_valuebox (&n,
- tp);
- (void) s->fe_add_valuebox (vb);
- }
- }
- }
-
- (tao_yyvsp[(1) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (2)].idval);
- (tao_yyvsp[(1) - (2)].idval) = 0;
- }
- break;
-
- case 84:
-
- {
-// state_member : IDL_PUBLIC
- /* is $0 to member_i */
- (tao_yyval.vival) = AST_Field::vis_PUBLIC;
- }
- break;
-
- case 85:
-
- {
-// IDL_PRIVATE
- /* is $0 to member_i */
- (tao_yyval.vival) = AST_Field::vis_PRIVATE;
- }
- break;
-
- case 88:
-
- {
-// export : type_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
- }
- break;
-
- case 89:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 90:
-
- {
-// | typeid_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
- }
- break;
-
- case 91:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 92:
-
- {
-// | typeprefix_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
- }
- break;
-
- case 93:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 94:
-
- {
-// | const_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
- }
- break;
-
- case 95:
-
- {
-// ';'
- idl_global->set_parse_state(IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 96:
-
- {
-// | exception
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
- }
- break;
-
- case 97:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 98:
-
- {
-// | attribute
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
- }
- break;
-
- case 99:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 100:
-
- {
-// | operation
- idl_global->set_parse_state (IDL_GlobalData::PS_OpDeclSeen);
- }
- break;
-
- case 101:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 102:
-
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
- }
- break;
-
- case 103:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- tao_yyerrok;
- }
- break;
-
- case 104:
-
- {
-// at_least_one_scoped_name : scoped_name scoped_names
- ACE_NEW_RETURN ((tao_yyval.nlval),
- UTL_NameList ((tao_yyvsp[(1) - (2)].idlist),
- (tao_yyvsp[(2) - (2)].nlval)),
- 1);
- }
- break;
-
- case 105:
-
- {
-// scoped_names : scoped_names ','
- idl_global->set_parse_state (IDL_GlobalData::PS_SNListCommaSeen);
- }
- break;
-
- case 106:
-
- {
-// scoped_name
- idl_global->set_parse_state (IDL_GlobalData::PS_ScopedNameSeen);
-
- if ((tao_yyvsp[(1) - (4)].nlval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyval.nlval),
- UTL_NameList ((tao_yyvsp[(4) - (4)].idlist),
- 0),
- 1);
- }
- else
- {
- UTL_NameList *nl = 0;
- ACE_NEW_RETURN (nl,
- UTL_NameList ((tao_yyvsp[(4) - (4)].idlist),
- 0),
- 1);
- (tao_yyvsp[(1) - (4)].nlval)->nconc (nl);
- (tao_yyval.nlval) = (tao_yyvsp[(1) - (4)].nlval);
- }
- }
- break;
-
- case 107:
-
- {
-/* | EMPTY */
- (tao_yyval.nlval) = 0;
- }
- break;
-
- case 108:
-
- {
-// scoped_name : id
- idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
-
- ACE_NEW_RETURN ((tao_yyval.idlist),
- UTL_IdList ((tao_yyvsp[(1) - (1)].idval),
- 0),
- 1);
- }
- break;
-
- case 109:
-
- {
-// | IDL_SCOPE_DELIMITOR
- idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
- }
- break;
-
- case 110:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
-
- Identifier *id = 0;
- ACE_NEW_RETURN (id,
- Identifier ((tao_yyvsp[(1) - (3)].strval)),
- 1);
- ACE::strdelete ((tao_yyvsp[(1) - (3)].strval));
- (tao_yyvsp[(1) - (3)].strval) = 0;
- UTL_IdList *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_IdList ((tao_yyvsp[(3) - (3)].idval),
- 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.idlist),
- UTL_IdList (id,
- sn),
- 1);
- }
- break;
-
- case 111:
-
- {
-// | scoped_name IDL_SCOPE_DELIMITOR
- idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
-
- // This cleans up all the non-global "::"s in scoped names.
- // If there is a global one, it gets put into the UTL_IdList,
- // so we clean it up in the case above.
- ACE::strdelete ((tao_yyvsp[(2) - (2)].strval));
- (tao_yyvsp[(2) - (2)].strval) = 0;
- }
- break;
-
- case 112:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
-
- UTL_IdList *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_IdList ((tao_yyvsp[(4) - (4)].idval),
- 0),
- 1);
- (tao_yyvsp[(1) - (4)].idlist)->nconc (sn);
- (tao_yyval.idlist) = (tao_yyvsp[(1) - (4)].idlist);
- }
- break;
-
- case 113:
-
- {
-// id: IDENTIFIER
- ACE_NEW_RETURN ((tao_yyval.idval),
- Identifier ((tao_yyvsp[(1) - (1)].strval)),
- 1);
- ACE::strdelete ((tao_yyvsp[(1) - (1)].strval));
- (tao_yyvsp[(1) - (1)].strval) = 0;
- }
- break;
-
- case 114:
-
- {
-// interface_forward : interface_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (1)].idval),
- 0);
-
- if (ACE_OS::strcmp ((tao_yyvsp[(1) - (1)].idval)->get_string (),
- "TypeCode") == 0
- && !idl_global->in_main_file ())
- {
- AST_PredefinedType *pdt =
- idl_global->gen ()->create_predefined_type (
- AST_PredefinedType::PT_pseudo,
- &n
- );
- (void) s->add_predefined_type (pdt);
- s->add_to_scope (pdt);
-
- (tao_yyvsp[(1) - (1)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idval);
- (tao_yyvsp[(1) - (1)].idval) = 0;
-
- break;
- }
-
- AST_InterfaceFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * interface. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_interface_fwd (&n,
- 0,
- 0);
- (void) s->fe_add_interface_fwd (f);
- }
-
- (tao_yyvsp[(1) - (1)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idval);
- (tao_yyvsp[(1) - (1)].idval) = 0;
- }
- break;
-
- case 115:
-
- {
-// | IDL_LOCAL interface_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_InterfaceFwd *f = 0;
- idl_global->set_parse_state (
- IDL_GlobalData::PS_InterfaceForwardSeen
- );
-
- /*
- * Create a node representing a forward declaration of an
- * interface. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_interface_fwd (&n,
- 1,
- 0);
- (void) s->fe_add_interface_fwd (f);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
- }
- break;
-
- case 116:
-
- {
-// | IDL_ABSTRACT interface_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_InterfaceFwd *f = 0;
- idl_global->set_parse_state (
- IDL_GlobalData::PS_InterfaceForwardSeen
- );
-
- /*
- * Create a node representing a forward declaration of an
- * interface. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_interface_fwd (&n,
- 0,
- 1);
- (void) s->fe_add_interface_fwd (f);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
- }
- break;
-
- case 117:
-
- {
-// const_dcl : IDL_CONST
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstSeen);
- }
- break;
-
- case 118:
-
- {
-// const_type
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstTypeSeen);
- }
- break;
-
- case 119:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstIDSeen);
- }
- break;
-
- case 120:
-
- {
-// '='
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstAssignSeen);
- }
- break;
-
- case 121:
-
- {
-// expression
- UTL_ScopedName n ((tao_yyvsp[(5) - (9)].idval),
- 0);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Constant *c = 0;
- 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[(9) - (9)].exval) != 0 && s != 0)
- {
- AST_Expression::AST_ExprValue *result =
- (tao_yyvsp[(9) - (9)].exval)->check_and_coerce ((tao_yyvsp[(3) - (9)].etval),
- tao_enum_constant_decl);
- tao_enum_constant_decl = 0;
-
- if (result == 0)
- {
- idl_global->err ()->coercion_error ((tao_yyvsp[(9) - (9)].exval),
- (tao_yyvsp[(3) - (9)].etval));
- (tao_yyvsp[(9) - (9)].exval)->destroy ();
- delete (tao_yyvsp[(9) - (9)].exval);
- (tao_yyvsp[(9) - (9)].exval) = 0;
- }
- else
- {
- c =
- idl_global->gen ()->create_constant (
- (tao_yyvsp[(3) - (9)].etval),
- (tao_yyvsp[(9) - (9)].exval),
- &n
- );
- (void) s->fe_add_constant (c);
- delete result;
- result = 0;
- }
-
- (tao_yyvsp[(5) - (9)].idval)->destroy ();
- delete (tao_yyvsp[(5) - (9)].idval);
- (tao_yyvsp[(5) - (9)].idval) = 0;
- }
- }
- break;
-
- case 128:
-
- {
-// const_type
-// : integer_type
-// | char_type
-// | octet_type
-// | boolean_type
-// | floating_pt_type
-// | fixed_type
-// | string_type_spec
- (tao_yyval.etval) = AST_Expression::EV_string;
- }
- break;
-
- case 129:
-
- {
-// | wstring_type_spec
- (tao_yyval.etval) = AST_Expression::EV_wstring;
- }
- break;
-
- case 130:
-
- {
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_PredefinedType *c = 0;
- AST_Typedef *t = 0;
-
- /*
- * If the constant's type is a scoped name, it must resolve
- * to a scalar constant type
- */
- AST_Decl *d =
- s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
- true);
-
- (tao_yyvsp[(1) - (1)].idlist)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idlist);
- (tao_yyvsp[(1) - (1)].idlist) = 0;
-
- if (s != 0 && d != 0)
- {
- tao_enum_constant_decl = d;
-
- /*
- * Look through typedefs.
- */
- while (d->node_type () == AST_Decl::NT_typedef)
- {
- t = AST_Typedef::narrow_from_decl (d);
-
- if (t == 0)
- {
- break;
- }
-
- d = t->base_type ();
- }
-
- if (d == 0)
- {
- (tao_yyval.etval) = AST_Expression::EV_enum;
- }
- else if (d->node_type () == AST_Decl::NT_pre_defined)
- {
- c = AST_PredefinedType::narrow_from_decl (d);
-
- if (c != 0)
- {
- (tao_yyval.etval) = idl_global->PredefinedTypeToExprType (c->pt ());
- }
- else
- {
- (tao_yyval.etval) = AST_Expression::EV_enum;
- }
- }
- else if (d->node_type () == AST_Decl::NT_string)
- {
- (tao_yyval.etval) = AST_Expression::EV_string;
- }
- else if (d->node_type () == AST_Decl::NT_wstring)
- {
- (tao_yyval.etval) = AST_Expression::EV_wstring;
- }
- else
- {
- (tao_yyval.etval) = AST_Expression::EV_enum;
- }
- }
- else
- {
- (tao_yyval.etval) = AST_Expression::EV_enum;
- }
- }
- break;
-
- case 134:
-
- {
-// or_expr : xor_expr
-// | or_expr '|' xor_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_or,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 136:
-
- {
-// xor_expr : and_expr
-// | xor_expr '^' and_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_xor,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 138:
-
- {
-// and_expr : shift_expr | and_expr '&' shift_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_and,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 140:
-
- {
-// shift_expr : add_expr | shift_expr IDL_LEFT_SHIFT add_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_left,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 141:
-
- {
-// | shift_expr IDL_RIGHT_SHIFT add_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_right,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 143:
-
- {
-// add_expr : mult_expr | add_expr '+' mult_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_add,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 144:
-
- {
-// | add_expr '-' mult_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_minus,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 146:
-
- {
-// mult_expr : unary_expr | mult_expr '*' unary_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_mul,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 147:
-
- {
-// | mult_expr '/' unary_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_div,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 148:
-
- {
-// | mult_expr '%' unary_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_mod,
- (tao_yyvsp[(1) - (3)].exval),
- (tao_yyvsp[(3) - (3)].exval)
- );
- }
- break;
-
- case 150:
-
- {
-// unary_expr : primary_expr | '+' primary_expr
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (
- AST_Expression::EC_u_plus,
- (tao_yyvsp[(2) - (2)].exval),
- 0
- );
- }
- break;
-
- case 151:
-
- {
-// | '-' primary_expr
- (tao_yyval.exval) =
- idl_global->gen()->create_expr (
- AST_Expression::EC_u_minus,
- (tao_yyvsp[(2) - (2)].exval),
- 0
- );
- }
- break;
-
- case 152:
-
- {
-// | '~' primary_expr
- (tao_yyval.exval) =
- idl_global->gen()->create_expr (
- AST_Expression::EC_bit_neg,
- (tao_yyvsp[(2) - (2)].exval),
- 0
- );
- }
- break;
-
- case 153:
-
- {
-// primary_expr : scoped_name
- /*
- * 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).
- */
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
- true);
-
- /*
- * If the scoped name is an IDL constant, it may be used in an
- * array dim, a string bound, or a sequence bound. If so, it
- * must be unsigned and > 0. We assign the constant's value
- * and type to the expression created here so we can check
- * them later.
- */
- if (d != 0 && d->node_type () == AST_Decl::NT_const)
- {
- AST_Constant *c = AST_Constant::narrow_from_decl (d);
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr (c->constant_value (),
- c->et ());
-
- (tao_yyvsp[(1) - (1)].idlist)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idlist);
- (tao_yyvsp[(1) - (1)].idlist) = 0;
- }
- else
- {
- (tao_yyval.exval) = idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].idlist));
- }
- }
- break;
-
- case 155:
-
- {
-// | literal
-// | '(' const_expr ')'
- (tao_yyval.exval) = (tao_yyvsp[(2) - (3)].exval);
- }
- break;
-
- case 156:
-
- {
-// literal : IDL_INTEGER_LITERAL
- (tao_yyval.exval) = idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].ival));
- }
- break;
-
- case 157:
-
- {
-// | IDL_UINTEGER_LITERAL
- (tao_yyval.exval) =
- idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].uival),
- AST_Expression::EV_ulonglong);
- }
- break;
-
- case 158:
-
- {
-// | IDL_STRING_LITERAL
- (tao_yyval.exval) = idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].sval));
- (tao_yyvsp[(1) - (1)].sval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].sval);
- (tao_yyvsp[(1) - (1)].sval) = 0;
- }
- break;
-
- case 159:
-
- {
-// | IDL_WSTRING_LITERAL
- (tao_yyval.exval) = idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].wsval));
- }
- break;
-
- case 160:
-
- {
-// | IDL_CHARACTER_LITERAL
- (tao_yyval.exval) = idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].cval));
- }
- break;
-
- case 161:
-
- {
-// | IDL_WCHAR_LITERAL
- ACE_OutputCDR::from_wchar wc ((tao_yyvsp[(1) - (1)].wcval));
- (tao_yyval.exval) = idl_global->gen ()->create_expr (wc);
- }
- break;
-
- case 162:
-
- {
-// | IDL_FLOATING_PT_LITERAL
- (tao_yyval.exval) = idl_global->gen ()->create_expr ((tao_yyvsp[(1) - (1)].dval));
- }
- break;
-
- case 163:
-
- {
-// | IDL_TRUETOK
- (tao_yyval.exval) = idl_global->gen ()->create_expr (true);
- }
- break;
-
- case 164:
-
- {
-// | IDL_FALSETOK
- (tao_yyval.exval) = idl_global->gen ()->create_expr (false);
- }
- break;
-
- case 165:
-
- {
-// positive_int_expr : const_expr
- int good_expression = 1;
- (tao_yyvsp[(1) - (1)].exval)->evaluate (AST_Expression::EK_positive_int);
- AST_Expression::AST_ExprValue *ev = (tao_yyvsp[(1) - (1)].exval)->ev ();
-
- /*
- * If const_expr is an enum value (AST_EnumVal inherits from
- * AST_Constant), the AST_ExprValue will probably not be set,
- * but there's no need to check anyway
- */
- if (ev != 0)
- {
- switch (ev->et)
- {
- case AST_Expression::EV_ushort:
- if (ev->u.usval == 0)
- {
- good_expression = 0;
- }
-
- break;
- case AST_Expression::EV_ulong:
- if (ev->u.ulval == 0)
- {
- good_expression = 0;
- }
-
- break;
-#if !defined (ACE_LACKS_LONGLONG_T)
- case AST_Expression::EV_ulonglong:
- if (ev->u.ullval == 0)
- {
- good_expression = 0;
- }
-
- break;
-#endif
- case AST_Expression::EV_octet:
- if (ev->u.oval == 0)
- {
- good_expression = 0;
- }
-
- break;
- case AST_Expression::EV_bool:
- if (ev->u.bval == 0)
- {
- good_expression = 0;
- }
-
- break;
- default:
- good_expression = 0;
- break;
- }
- }
-
- if (good_expression)
- {
- (tao_yyval.exval) = (tao_yyvsp[(1) - (1)].exval);
- }
- else
- {
- idl_global->err ()->syntax_error (idl_global->parse_state ());
- }
- }
- break;
-
- case 166:
-
- {
-// type_dcl : IDL_TYPEDEF
- idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
- }
- break;
-
- case 167:
-
- {
-// type_declarator
- (tao_yyval.ival) = 0;
- }
- break;
-
- case 168:
-
- {
-// | struct_type
- (tao_yyval.ival) = 0;
- }
- break;
-
- case 169:
-
- {
-// | union_type
- (tao_yyval.ival) = 0;
- }
- break;
-
- case 170:
-
- {
-// | enum_type
- (tao_yyval.ival) = 0;
- }
- break;
-
- case 171:
-
- {
-// | IDL_NATIVE simple_declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Native *node = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_NativeSeen);
-
- /*
- * Create a node representing a Native and add it to its
- * enclosing scope
- */
- if (s != 0)
- {
- node =
- idl_global->gen ()->create_native (
- (tao_yyvsp[(2) - (2)].deval)->name ()
- );
- /*
- * Add it to its defining scope
- */
- (void) s->fe_add_native (node);
- }
-
- (tao_yyvsp[(2) - (2)].deval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].deval);
- (tao_yyvsp[(2) - (2)].deval) = 0;
- }
- break;
-
- case 172:
-
- {
-// | constructed_forward_type_spec
- (tao_yyval.ival) = 0;
- }
- break;
-
- case 173:
-
- {
-// type_declarator : type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeSpecSeen);
- }
- break;
-
- case 174:
-
- {
-// at_least_one_declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- FE_Declarator *d = 0;
- AST_Typedef *t = 0;
- unsigned long index = 0UL;
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclaratorsSeen);
-
- /*
- * Create a list of type renamings. Add them to the
- * enclosing scope
- */
- if (s != 0 && (tao_yyvsp[(1) - (3)].dcval) != 0 && (tao_yyvsp[(3) - (3)].dlval) != 0)
- {
- for (UTL_DecllistActiveIterator l ((tao_yyvsp[(3) - (3)].dlval));
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type * tp = d->compose ((tao_yyvsp[(1) - (3)].dcval));
-
- if (tp == 0)
- {
- continue;
- }
-
- if (AST_Decl::NT_except == tp->node_type ())
- {
- idl_global->err ()->not_a_type (tp);
- continue;
- }
-
- t = idl_global->gen ()->create_typedef (tp,
- d->name (),
- s->is_local (),
- s->is_abstract ());
-
- // If the base type is a sequence or array, the typedef
- // constructor sets owns_base_type_ to true. But if
- // there is a comma-separated list of such typedefs,
- // the base type can be destroyed only once. In all
- // other cases, the line below has no effect.
- if (index++ > 0)
- {
- t->owns_base_type (false);
- }
-
- (void) s->fe_add_typedef (t);
- }
-
- // This FE_Declarator class isn't destroyed with the AST.
- (tao_yyvsp[(3) - (3)].dlval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].dlval);
- (tao_yyvsp[(3) - (3)].dlval) = 0;
- }
- }
- break;
-
- case 177:
-
- {
-// simple_type_spec : base_type_spec
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- (tao_yyvsp[(1) - (1)].etval)
- );
- }
- break;
-
- case 179:
-
- {
-// | template_type_spec
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = 0;
-
- if (s != 0)
- {
- d = s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
- true);
- }
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (1)].idlist));
- }
- else
- {
- d->last_referenced_as ((tao_yyvsp[(1) - (1)].idlist));
- }
-
-
- (tao_yyval.dcval) = d;
- }
- break;
-
- case 197:
-
- {
-// at_least_one_declarator : declarator declarators
- ACE_NEW_RETURN ((tao_yyval.dlval),
- UTL_DeclList ((tao_yyvsp[(1) - (2)].deval),
- (tao_yyvsp[(2) - (2)].dlval)),
- 1);
- }
- break;
-
- case 198:
-
- {
-// declarators : declarators ','
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
- }
- break;
-
- case 199:
-
- {
-// declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
-
- if ((tao_yyvsp[(1) - (4)].dlval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyval.dlval),
- UTL_DeclList ((tao_yyvsp[(4) - (4)].deval),
- 0),
- 1);
- }
- else
- {
- UTL_DeclList *dl = 0;
- ACE_NEW_RETURN (dl,
- UTL_DeclList ((tao_yyvsp[(4) - (4)].deval),
- 0),
- 1);
- (tao_yyvsp[(1) - (4)].dlval)->nconc (dl);
- (tao_yyval.dlval) = (tao_yyvsp[(1) - (4)].dlval);
- }
- }
- break;
-
- case 200:
-
- {
-/* | EMPTY */
- (tao_yyval.dlval) = 0;
- }
- break;
-
- case 203:
-
- {
-// at_least_one_simple_declarator : simple_declarator simple_declarators
- ACE_NEW_RETURN ((tao_yyval.dlval),
- UTL_DeclList ((tao_yyvsp[(1) - (2)].deval),
- (tao_yyvsp[(2) - (2)].dlval)),
- 1);
- }
- break;
-
- case 204:
-
- {
-// simple_declarators : simple_declarators ','
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
- }
- break;
-
- case 205:
-
- {
-// simple_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
-
- if ((tao_yyvsp[(1) - (4)].dlval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyval.dlval),
- UTL_DeclList ((tao_yyvsp[(4) - (4)].deval),
- 0),
- 1);
- }
- else
- {
- UTL_DeclList *dl = 0;
- ACE_NEW_RETURN (dl,
- UTL_DeclList ((tao_yyvsp[(4) - (4)].deval),
- 0),
- 1);
- (tao_yyvsp[(1) - (4)].dlval)->nconc (dl);
- (tao_yyval.dlval) = (tao_yyvsp[(1) - (4)].dlval);
- }
- }
- break;
-
- case 206:
-
- {
-/* | EMPTY */
- (tao_yyval.dlval) = 0;
- }
- break;
-
- case 207:
-
- {
-// simple_declarator : id
- UTL_ScopedName *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName ((tao_yyvsp[(1) - (1)].idval),
- 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.deval),
- FE_Declarator (sn,
- FE_Declarator::FD_simple,
- 0),
- 1);
- }
- break;
-
- case 208:
-
- {
-// complex_declarator : array_declarator
- UTL_ScopedName *sn = 0;
- ACE_NEW_RETURN (sn,
- UTL_ScopedName (
- (tao_yyvsp[(1) - (1)].dcval)->local_name ()->copy (),
- 0
- ),
- 1);
- ACE_NEW_RETURN ((tao_yyval.deval),
- FE_Declarator (sn,
- FE_Declarator::FD_complex,
- (tao_yyvsp[(1) - (1)].dcval)),
- 1);
- }
- break;
-
- case 211:
-
- {
-// signed_int : IDL_LONG
- (tao_yyval.etval) = AST_Expression::EV_long;
- }
- break;
-
- case 212:
-
- {
-// | IDL_LONG IDL_LONG
- (tao_yyval.etval) = AST_Expression::EV_longlong;
- }
- break;
-
- case 213:
-
- {
-// | IDL_SHORT
- (tao_yyval.etval) = AST_Expression::EV_short;
- }
- break;
-
- case 214:
-
- {
-// unsigned_int : IDL_UNSIGNED IDL_LONG
- (tao_yyval.etval) = AST_Expression::EV_ulong;
- }
- break;
-
- case 215:
-
- {
-// | IDL_UNSIGNED IDL_LONG IDL_LONG
- (tao_yyval.etval) = AST_Expression::EV_ulonglong;
- }
- break;
-
- case 216:
-
- {
-// | IDL_UNSIGNED IDL_SHORT
- (tao_yyval.etval) = AST_Expression::EV_ushort;
- }
- break;
-
- case 217:
-
- {
-// floating_pt_type : IDL_DOUBLE
- (tao_yyval.etval) = AST_Expression::EV_double;
- }
- break;
-
- case 218:
-
- {
-// | IDL_FLOAT
- (tao_yyval.etval) = AST_Expression::EV_float;
- }
- break;
-
- case 219:
-
- {
-// | IDL_LONG IDL_DOUBLE
- (tao_yyval.etval) = AST_Expression::EV_longdouble;
- }
- break;
-
- case 220:
-
- {
-// fixed_type : IDL_FIXED
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" fixed types yet\n")));
- }
- break;
-
- case 221:
-
- {
-// char_type : IDL_CHAR
- (tao_yyval.etval) = AST_Expression::EV_char;
- }
- break;
-
- case 222:
-
- {
-// | IDL_WCHAR
- (tao_yyval.etval) = AST_Expression::EV_wchar;
- }
- break;
-
- case 223:
-
- {
-// octet_type : IDL_OCTET
- (tao_yyval.etval) = AST_Expression::EV_octet;
- }
- break;
-
- case 224:
-
- {
-// boolean_type : IDL_BOOLEAN
- (tao_yyval.etval) = AST_Expression::EV_bool;
- }
- break;
-
- case 225:
-
- {
-// any_type : IDL_ANY
- (tao_yyval.etval) = AST_Expression::EV_any;
- }
- break;
-
- case 226:
-
- {
-// object_type : IDL_OBJECT
- (tao_yyval.etval) = AST_Expression::EV_object;
- }
- break;
-
- case 227:
-
- {
-// struct_decl : IDL_STRUCT
- idl_global->set_parse_state (IDL_GlobalData::PS_StructSeen);
- }
- break;
-
- case 228:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_StructIDSeen);
- (tao_yyval.idval) = (tao_yyvsp[(3) - (3)].idval);
- }
- break;
-
- case 229:
-
- {
-// struct_type : struct_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (1)].idval),
- 0);
- AST_Structure *d = 0;
-
- /*
- * Create a node representing a struct declaration. Add it
- * to the enclosing scope
- */
- if (s != 0)
- {
- d =
- idl_global->gen ()->create_structure (
- &n,
- s->is_local (),
- s->is_abstract ()
- );
- AST_Structure::fwd_redefinition_helper (d,
- s);
- (void) s->fe_add_structure (d);
- }
-
- /*
- * Push the scope of the struct on the scopes stack.
- */
- idl_global->scopes ().push (d);
-
- (tao_yyvsp[(1) - (1)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idval);
- (tao_yyvsp[(1) - (1)].idval) = 0;
- }
- break;
-
- case 230:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_StructSqSeen);
- }
- break;
-
- case 231:
-
- {
-// at_least_one_member
- idl_global->set_parse_state (IDL_GlobalData::PS_StructBodySeen);
- }
- break;
-
- case 232:
-
- {
-// '}'
- 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 ()
- );
- idl_global->scopes ().pop ();
- }
- break;
-
- case 236:
-
- {
-// member :
- /* is $0 to member_i */
- (tao_yyval.vival) = AST_Field::vis_NA;
- }
- break;
-
- case 238:
-
- {
-// member_i : type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_MemberTypeSeen);
- }
- break;
-
- case 239:
-
- {
-// at_least_one_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsSeen);
- }
- break;
-
- case 240:
-
- {
-// ';'
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- FE_Declarator *d = 0;
- AST_Field *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsCompleted);
-
- /*
- * Check for illegal recursive use of type.
- */
- if ((tao_yyvsp[(1) - (5)].dcval) != 0
- && AST_illegal_recursive_type ((tao_yyvsp[(1) - (5)].dcval)))
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
- (tao_yyvsp[(1) - (5)].dcval));
- }
- /*
- * Create a node representing a struct or exception member
- * Add it to the enclosing scope.
- */
- else if (s != 0
- && (tao_yyvsp[(1) - (5)].dcval) != 0
- && (tao_yyvsp[(3) - (5)].dlval) != 0)
- {
- for (UTL_DecllistActiveIterator l ((tao_yyvsp[(3) - (5)].dlval));
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type *tp = d->compose ((tao_yyvsp[(1) - (5)].dcval));
-
- if (tp == 0)
- {
- continue;
- }
-
- /* $0 denotes Visibility, must be on yacc reduction stack. */
- f =
- idl_global->gen ()->create_field (
- tp,
- d->name (),
- (tao_yyvsp[(0) - (5)].vival)
- );
- (void) s->fe_add_field (f);
- }
- }
-
- (tao_yyvsp[(3) - (5)].dlval)->destroy ();
- delete (tao_yyvsp[(3) - (5)].dlval);
- (tao_yyvsp[(3) - (5)].dlval) = 0;
- }
- break;
-
- case 241:
-
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state ());
- }
- break;
-
- case 242:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- tao_yyerrok;
- }
- break;
-
- case 243:
-
- {
-// union_decl : IDL_UNION
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionSeen);
- }
- break;
-
- case 244:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionIDSeen);
- (tao_yyval.idval) = (tao_yyvsp[(3) - (3)].idval);
- }
- break;
-
- case 245:
-
- {
-// union_type : union_decl IDL_SWITCH
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchSeen);
- }
- break;
-
- case 246:
-
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchOpenParSeen);
- }
- break;
-
- case 247:
-
- {
-// switch_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchTypeSeen);
- }
- break;
-
- case 248:
-
- {
-// ')'
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (8)].idval),
- 0);
- AST_Union *u = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_SwitchCloseParSeen);
-
- /*
- * Create a node representing a union. Add it to its enclosing
- * scope.
- */
- if ((tao_yyvsp[(6) - (8)].dcval) != 0
- && s != 0)
- {
- AST_ConcreteType *tp =
- AST_ConcreteType::narrow_from_decl ((tao_yyvsp[(6) - (8)].dcval));
-
- if (tp == 0)
- {
- idl_global->err ()->not_a_type ((tao_yyvsp[(6) - (8)].dcval));
- }
- else
- {
- u = idl_global->gen ()->create_union (tp,
- &n,
- s->is_local (),
- s->is_abstract ());
- }
-
- AST_Structure *st = AST_Structure::narrow_from_decl (u);
- AST_Structure::fwd_redefinition_helper (st,
- s);
- u = AST_Union::narrow_from_decl (st);
- (void) s->fe_add_union (u);
- }
-
- /*
- * Push the scope of the union on the scopes stack
- */
- idl_global->scopes ().push (u);
-
- (tao_yyvsp[(1) - (8)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (8)].idval);
- (tao_yyvsp[(1) - (8)].idval) = 0;
- }
- break;
-
- case 249:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionSqSeen);
- }
- break;
-
- case 250:
-
- {
-// at_least_one_case_branch
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionBodySeen);
- }
- break;
-
- case 251:
-
- {
-// '}'
- 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 ()
- );
-
- if ((tao_yyval.dcval) != 0)
- {
- idl_global->scopes ().pop ();
- }
- }
- break;
-
- case 252:
-
- {
-// switch_type_spec : integer_type
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- (tao_yyvsp[(1) - (1)].etval)
- );
- }
- break;
-
- case 253:
-
- {
-// | char_type
- /* wchars are not allowed. */
- if ((tao_yyvsp[(1) - (1)].etval) == AST_Expression::EV_wchar)
- {
- idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
- }
-
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- (tao_yyvsp[(1) - (1)].etval)
- );
- }
- break;
-
- case 254:
-
- {
-// | octet_type
- /* octets are not allowed. */
- idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- (tao_yyvsp[(1) - (1)].etval)
- );
- }
- break;
-
- case 255:
-
- {
-// | boolean_type
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- (tao_yyvsp[(1) - (1)].etval)
- );
- }
- break;
-
- case 257:
-
- {
-// | enum_type
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = 0;
- AST_PredefinedType *p = 0;
- AST_Typedef *t = 0;
- bool found = 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.
- */
- d = s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
- true);
-
- if (s != 0 && d != 0)
- {
- while (!found)
- {
- switch (d->node_type ())
- {
- case AST_Decl::NT_enum:
- (tao_yyval.dcval) = d;
- found = true;
- break;
- case AST_Decl::NT_pre_defined:
- p = AST_PredefinedType::narrow_from_decl (d);
-
- if (p != 0)
- {
- 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_ushort:
- case AST_PredefinedType::PT_char:
- case AST_PredefinedType::PT_boolean:
- (tao_yyval.dcval) = p;
- found = true;
- break;
- case AST_PredefinedType::PT_wchar:
- case AST_PredefinedType::PT_octet:
- /* octets and wchars are not allowed */
- idl_global->err ()->error0 (
- UTL_Error::EIDL_DISC_TYPE
- );
- (tao_yyval.dcval) = 0;
- found = true;
- break;
- default:
- (tao_yyval.dcval) = 0;
- found = true;
- break;
- }
- }
- else
- {
- (tao_yyval.dcval) = 0;
- found = true;
- }
-
- break;
- case AST_Decl::NT_typedef:
- t = AST_Typedef::narrow_from_decl (d);
-
- if (t != 0)
- {
- d = t->base_type ();
- }
-
- break;
- default:
- (tao_yyval.dcval) = 0;
- found = true;
- break;
- }
- }
- }
- else
- {
- (tao_yyval.dcval) = 0;
- }
-
- if ((tao_yyval.dcval) == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (1)].idlist));
-
- (tao_yyvsp[(1) - (1)].idlist)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idlist);
- (tao_yyvsp[(1) - (1)].idlist) = 0;
-
- /* If we don't return here, we'll crash later.*/
- return 1;
- }
-
- (tao_yyvsp[(1) - (1)].idlist)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idlist);
- (tao_yyvsp[(1) - (1)].idlist) = 0;
- }
- break;
-
- case 261:
-
- {
-// case_branch : at_least_one_case_label
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionLabelSeen);
- }
- break;
-
- case 262:
-
- {
-// element_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemSeen);
- }
- break;
-
- case 263:
-
- {
-// ';'
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_UnionBranch *b = 0;
- AST_Field *f = (tao_yyvsp[(3) - (5)].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 != 0
- && (tao_yyvsp[(1) - (5)].llval) != 0
- && (tao_yyvsp[(3) - (5)].ffval) != 0)
- {
- b =
- idl_global->gen ()->create_union_branch (
- (tao_yyvsp[(1) - (5)].llval),
- f->field_type (),
- f->name ()
- );
- (void) s->fe_add_union_branch (b);
-
- // f has passed its field type to the union branch,
- // but the rest still needs to be cleaned up.
- f->AST_Decl::destroy ();
- delete f;
- f = 0;
- }
- }
- break;
-
- case 264:
-
- {
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
- }
- break;
-
- case 265:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- tao_yyerrok;
- }
- break;
-
- case 266:
-
- {
-// at_least_one_case_label : case_label case_labels
- ACE_NEW_RETURN ((tao_yyval.llval),
- UTL_LabelList ((tao_yyvsp[(1) - (2)].ulval),
- (tao_yyvsp[(2) - (2)].llval)),
- 1);
- }
- break;
-
- case 267:
-
- {
-// case_labels : case_labels case_label
- if ((tao_yyvsp[(1) - (2)].llval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyval.llval),
- UTL_LabelList ((tao_yyvsp[(2) - (2)].ulval),
- 0),
- 1);
- }
- else
- {
- UTL_LabelList *ll = 0;
- ACE_NEW_RETURN (ll,
- UTL_LabelList ((tao_yyvsp[(2) - (2)].ulval),
- 0),
- 1);
- (tao_yyvsp[(1) - (2)].llval)->nconc (ll);
- (tao_yyval.llval) = (tao_yyvsp[(1) - (2)].llval);
- }
- }
- break;
-
- case 268:
-
- {
-/* | EMPTY */
- (tao_yyval.llval) = 0;
- }
- break;
-
- case 269:
-
- {
-// case_label : IDL_DEFAULT
- idl_global->set_parse_state (IDL_GlobalData::PS_DefaultSeen);
- }
- break;
-
- case 270:
-
- {
-// ':'
- idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
-
- (tao_yyval.ulval) = idl_global->gen ()->create_union_label (
- AST_UnionLabel::UL_default,
- 0
- );
- }
- break;
-
- case 271:
-
- {
-// | IDL_CASE
- idl_global->set_parse_state (IDL_GlobalData::PS_CaseSeen);
- }
- break;
-
- case 272:
-
- {
- idl_global->set_parse_state (IDL_GlobalData::PS_LabelExprSeen);
- }
- break;
-
- case 273:
-
- {
-// const_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
-
- (tao_yyval.ulval) = idl_global->gen()->create_union_label (
- AST_UnionLabel::UL_label,
- (tao_yyvsp[(3) - (5)].exval)
- );
- }
- break;
-
- case 274:
-
- {
-// element_spec : type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemTypeSeen);
- }
- break;
-
- case 275:
-
- {
-// declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemDeclSeen);
-
- /*
- * Check for illegal recursive use of type
- */
- if ((tao_yyvsp[(1) - (3)].dcval) != 0
- && AST_illegal_recursive_type ((tao_yyvsp[(1) - (3)].dcval)))
- {
- idl_global->err()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
- (tao_yyvsp[(1) - (3)].dcval));
-
- (tao_yyval.ffval) = 0;
- }
- /*
- * Create a field in a union branch
- */
- else if ((tao_yyvsp[(1) - (3)].dcval) == 0
- || (tao_yyvsp[(3) - (3)].deval) == 0)
- {
- (tao_yyval.ffval) = 0;
- }
- else
- {
- AST_Type *tp = (tao_yyvsp[(3) - (3)].deval)->compose ((tao_yyvsp[(1) - (3)].dcval));
-
- if (tp == 0)
- {
- (tao_yyval.ffval) = 0;
- }
- else
- {
- (tao_yyval.ffval) = idl_global->gen ()->create_field (
- tp,
- (tao_yyvsp[(3) - (3)].deval)->name ()
- );
- }
-
- (tao_yyvsp[(3) - (3)].deval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].deval);
- (tao_yyvsp[(3) - (3)].deval) = 0;
- }
- }
- break;
-
- case 276:
-
- {
-// struct_forward_type : struct_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (1)].idval),
- 0);
- AST_StructureFwd *d = 0;
-
- /*
- * Create a node representing a forward declaration of a struct.
- */
- if (s != 0)
- {
- d = idl_global->gen ()->create_structure_fwd (&n);
- (void) s->fe_add_structure_fwd (d);
- }
-
- (tao_yyvsp[(1) - (1)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idval);
- (tao_yyvsp[(1) - (1)].idval) = 0;
- }
- break;
-
- case 277:
-
- {
-// union_forward_type : union_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(1) - (1)].idval),
- 0);
- AST_UnionFwd *u = 0;
-
- /*
- * Create a node representing a forward declaration of a union.
- */
- if (s != 0)
- {
- u = idl_global->gen ()->create_union_fwd (&n);
- (void) s->fe_add_union_fwd (u);
- }
-
- (tao_yyvsp[(1) - (1)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].idval);
- (tao_yyvsp[(1) - (1)].idval) = 0;
- }
- break;
-
- case 278:
-
- {
-// enum_type : IDL_ENUM
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumSeen);
- }
- break;
-
- case 279:
-
- {
-// id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(3) - (3)].idval),
- 0);
- AST_Enum *e = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumIDSeen);
-
- /*
- * Create a node representing an enum and add it to its
- * enclosing scope.
- */
- if (s != 0)
- {
- e = idl_global->gen ()->create_enum (&n,
- s->is_local (),
- s->is_abstract ());
- /*
- * 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);
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 280:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumSqSeen);
- }
- break;
-
- case 281:
-
- {
-// at_least_one_enumerator
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumBodySeen);
- }
- break;
-
- case 282:
-
- {
-// '}'
- 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 () == 0)
- {
- (tao_yyval.dcval) = 0;
- }
- else
- {
- (tao_yyval.dcval) = AST_Enum::narrow_from_scope (
- idl_global->scopes ().top_non_null ()
- );
- idl_global->scopes ().pop ();
- }
- }
- break;
-
- case 284:
-
- {
-// enumerators : enumerators ','
- idl_global->set_parse_state (IDL_GlobalData::PS_EnumCommaSeen);
- }
- break;
-
- case 287:
-
- {
-// enumerator : IDENTIFIER
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- Identifier id ((tao_yyvsp[(1) - (1)].strval));
- ACE::strdelete ((tao_yyvsp[(1) - (1)].strval));
- (tao_yyvsp[(1) - (1)].strval) = 0;
- UTL_ScopedName n (&id,
- 0);
- AST_EnumVal *e = 0;
- AST_Enum *c = 0;
-
- /*
- * Create a node representing one enumerator in an enum
- * Add it to the enclosing scope (the enum scope)
- */
- if (s != 0
- && s->scope_node_type () == AST_Decl::NT_enum)
- {
- c = AST_Enum::narrow_from_scope (s);
-
- if (c != 0)
- {
- e = idl_global->gen ()->create_enum_val (
- c->next_enum_val (),
- &n
- );
- }
-
- (void) s->fe_add_enum_val (e);
- }
- }
- break;
-
- case 288:
-
- {
-// sequence_type_spec : seq_head ','
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceCommaSeen);
- }
- break;
-
- case 289:
-
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceExprSeen);
- }
- break;
-
- case 290:
-
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
-
- /*
- * Remove sequence marker from scopes stack.
- */
- if (idl_global->scopes ().top() == 0)
- {
- idl_global->scopes ().pop ();
- }
-
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- /*
- * Create a node representing a sequence
- */
- AST_Expression::AST_ExprValue *ev = 0;
-
- if ((tao_yyvsp[(4) - (6)].exval) != 0)
- {
- ev = (tao_yyvsp[(4) - (6)].exval)->coerce (AST_Expression::EV_ulong);
- }
-
- if (0 == (tao_yyvsp[(4) - (6)].exval) || 0 == ev)
- {
- idl_global->err ()->coercion_error ((tao_yyvsp[(4) - (6)].exval),
- AST_Expression::EV_ulong);
- (tao_yyval.dcval) = 0;
- }
- else if (0 == (tao_yyvsp[(1) - (6)].dcval))
- {
- (tao_yyval.dcval) = 0;
- }
- else
- {
- AST_Type *tp = AST_Type::narrow_from_decl ((tao_yyvsp[(1) - (6)].dcval));
-
- if (0 == tp)
- {
- ; // Error will be caught in FE_Declarator.
- }
- else
- {
- Identifier id ("sequence");
- UTL_ScopedName sn (&id,
- 0);
-
- (tao_yyval.dcval) =
- idl_global->gen ()->create_sequence (
- (tao_yyvsp[(4) - (6)].exval),
- tp,
- &sn,
- s->is_local (),
- s->is_abstract ()
- );
- }
- }
-
- delete ev;
- ev = 0;
- }
- break;
-
- case 291:
-
- {
-// | seq_head '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
-
- /*
- * Remove sequence marker from scopes stack.
- */
- if (idl_global->scopes ().top () == 0)
- {
- idl_global->scopes ().pop ();
- }
-
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- /*
- * Create a node representing a sequence.
- */
- if ((tao_yyvsp[(1) - (2)].dcval) == 0)
- {
- (tao_yyval.dcval) = 0;
- }
- else
- {
- AST_Type *tp = AST_Type::narrow_from_decl ((tao_yyvsp[(1) - (2)].dcval));
-
- if (tp == 0)
- {
- ; // Error will be caught in FE_Declarator.
- }
- else
- {
- Identifier id ("sequence");
- UTL_ScopedName sn (&id, 0);
- ACE_CDR::ULong bound = 0UL;
-
- (tao_yyval.dcval) =
- idl_global->gen ()->create_sequence (
- idl_global->gen ()->create_expr (
- bound,
- AST_Expression::EV_ulong
- ),
- tp,
- &sn,
- s->is_local (),
- s->is_abstract ()
- );
- }
- }
- }
- break;
-
- case 292:
-
- {
-// seq_head : IDL_SEQUENCE
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSeen);
-
- /*
- * Push a sequence marker on scopes stack.
- */
- idl_global->scopes ().push (0);
- }
- break;
-
- case 293:
-
- {
-// '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSqSeen);
- }
- break;
-
- case 294:
-
- {
-// simple_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SequenceTypeSeen);
- (tao_yyval.dcval) = (tao_yyvsp[(5) - (5)].dcval);
- }
- break;
-
- case 295:
-
- {
-// string_type_spec : string_head '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
- }
- break;
-
- case 296:
-
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
- }
- break;
-
- case 297:
-
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
-
- /*
- * Create a node representing a string.
- */
- AST_Expression::AST_ExprValue *ev = 0;
-
- if ((tao_yyvsp[(4) - (6)].exval) != 0)
- {
- ev = (tao_yyvsp[(4) - (6)].exval)->coerce (AST_Expression::EV_ulong);
- }
-
- if (0 == (tao_yyvsp[(4) - (6)].exval) || 0 == ev)
- {
- idl_global->err ()->coercion_error ((tao_yyvsp[(4) - (6)].exval),
- AST_Expression::EV_ulong);
- (tao_yyval.dcval) = 0;
- }
- else
- {
- (tao_yyval.dcval) = idl_global->gen ()->create_string ((tao_yyvsp[(4) - (6)].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)
- )
- );
- }
-
- delete ev;
- ev = 0;
- }
- break;
-
- case 298:
-
- {
-// | string_head
- idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
- /*
- * Create a node representing a string.
- */
- ACE_CDR::ULong bound = 0UL;
-
- (tao_yyval.dcval) =
- idl_global->gen ()->create_string (
- idl_global->gen ()->create_expr (bound,
- AST_Expression::EV_ulong)
- );
- /*
- * 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 299:
-
- {
-// string_head : IDL_STRING
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
- }
- break;
-
- case 300:
-
- {
-// wstring_type_spec : wstring_head '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
- }
- break;
-
- case 301:
-
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
- }
- break;
-
- case 302:
-
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
-
- /*
- * Create a node representing a string.
- */
- if ((tao_yyvsp[(4) - (6)].exval) == 0
- || (tao_yyvsp[(4) - (6)].exval)->coerce (AST_Expression::EV_ulong) == 0)
- {
- idl_global->err ()->coercion_error ((tao_yyvsp[(4) - (6)].exval),
- AST_Expression::EV_ulong);
- (tao_yyval.dcval) = 0;
- }
- else
- {
- (tao_yyval.dcval) = idl_global->gen ()->create_wstring ((tao_yyvsp[(4) - (6)].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 303:
-
- {
-// | wstring_head
- idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
-
- /*
- * Create a node representing a wstring.
- */
- ACE_CDR::ULong bound = 0UL;
-
- (tao_yyval.dcval) =
- idl_global->gen ()->create_wstring (
- idl_global->gen ()->create_expr (bound,
- AST_Expression::EV_ulong)
- );
- /*
- * 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 304:
-
- {
-// wstring_head : IDL_WSTRING
- idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
- }
- break;
-
- case 305:
-
- {
-// array_declarator : id
- idl_global->set_parse_state (IDL_GlobalData::PS_ArrayIDSeen);
- }
- break;
-
- case 306:
-
- {
-// at_least_one_array_dim
- idl_global->set_parse_state (IDL_GlobalData::PS_ArrayCompleted);
-
- /*
- * Create a node representing an array.
- */
- if ((tao_yyvsp[(3) - (3)].elval) != 0)
- {
- UTL_ScopedName sn ((tao_yyvsp[(1) - (3)].idval),
- 0);
- (tao_yyval.dcval) =
- idl_global->gen ()->create_array (
- &sn,
- (tao_yyvsp[(3) - (3)].elval)->length (),
- (tao_yyvsp[(3) - (3)].elval),
- 0,
- 0
- );
-
- (tao_yyvsp[(3) - (3)].elval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].elval);
- (tao_yyvsp[(3) - (3)].elval) = 0;
-
- sn.destroy ();
- }
- }
- break;
-
- case 307:
-
- {
-// at_least_one_array_dim : array_dim array_dims
- ACE_NEW_RETURN ((tao_yyval.elval),
- UTL_ExprList ((tao_yyvsp[(1) - (2)].exval),
- (tao_yyvsp[(2) - (2)].elval)),
- 1);
- }
- break;
-
- case 308:
-
- {
-// array_dims : array_dims array_dim
- if ((tao_yyvsp[(1) - (2)].elval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyval.elval),
- UTL_ExprList ((tao_yyvsp[(2) - (2)].exval),
- 0),
- 1);
- }
- else
- {
- UTL_ExprList *el = 0;
- ACE_NEW_RETURN (el,
- UTL_ExprList ((tao_yyvsp[(2) - (2)].exval),
- 0),
- 1);
- (tao_yyvsp[(1) - (2)].elval)->nconc (el);
- (tao_yyval.elval) = (tao_yyvsp[(1) - (2)].elval);
- }
- }
- break;
-
- case 309:
-
- {
-/* | EMPTY */
- (tao_yyval.elval) = 0;
- }
- break;
-
- case 310:
-
- {
-// array_dim : '['
- idl_global->set_parse_state (IDL_GlobalData::PS_DimSqSeen);
- }
- break;
-
- case 311:
-
- {
-// positive_int_expr
- idl_global->set_parse_state (IDL_GlobalData::PS_DimExprSeen);
- }
- break;
-
- case 312:
-
- {
-// ']'
- idl_global->set_parse_state (IDL_GlobalData::PS_DimQsSeen);
-
- /*
- * Array dimensions are expressions which must be coerced to
- * positive integers.
- */
- AST_Expression::AST_ExprValue *ev = 0;
-
- if ((tao_yyvsp[(3) - (5)].exval) != 0)
- {
- ev = (tao_yyvsp[(3) - (5)].exval)->coerce (AST_Expression::EV_ulong);
- }
-
- if (0 == (tao_yyvsp[(3) - (5)].exval) || 0 == ev)
- {
- idl_global->err ()->coercion_error ((tao_yyvsp[(3) - (5)].exval),
- AST_Expression::EV_ulong);
- (tao_yyval.exval) = 0;
- }
- else
- {
- (tao_yyval.exval) = (tao_yyvsp[(3) - (5)].exval);
- }
-
- delete ev;
- ev = 0;
- }
- break;
-
- case 315:
-
- {
-// attribute_readonly : IDL_READONLY
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrROSeen);
- }
- break;
-
- case 316:
-
- {
-// IDL_ATTRIBUTE
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
- }
- break;
-
- case 317:
-
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
- }
- break;
-
- case 318:
-
- {
-// at_least_one_simple_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
- }
- break;
-
- case 319:
-
- {
-// opt_raises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Attribute *a = 0;
- FE_Declarator *d = 0;
-
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- /*
- * Create nodes representing attributes and add them to the
- * enclosing scope.
- */
- if (s != 0
- && (tao_yyvsp[(5) - (9)].dcval) != 0
- && (tao_yyvsp[(7) - (9)].dlval) != 0)
- {
- for (UTL_DecllistActiveIterator l ((tao_yyvsp[(7) - (9)].dlval));
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type *tp = d->compose ((tao_yyvsp[(5) - (9)].dcval));
-
- if (tp == 0)
- {
- continue;
- }
-
- a =
- idl_global->gen ()->create_attribute (
- true,
- tp,
- d->name (),
- s->is_local (),
- s->is_abstract ()
- );
-
- if ((tao_yyvsp[(9) - (9)].nlval) != 0)
- {
- (void) a->fe_add_get_exceptions ((tao_yyvsp[(9) - (9)].nlval));
-
- (tao_yyvsp[(9) - (9)].nlval)->destroy ();
- delete (tao_yyvsp[(9) - (9)].nlval);
- (tao_yyvsp[(9) - (9)].nlval) = 0;
- }
-
- (void) s->fe_add_attribute (a);
- }
- }
-
- (tao_yyvsp[(7) - (9)].dlval)->destroy ();
- delete (tao_yyvsp[(7) - (9)].dlval);
- (tao_yyvsp[(7) - (9)].dlval) = 0;
- }
- break;
-
- case 320:
-
- {
-// attribute_readonly : IDL_ATTRIBUTE
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
- }
- break;
-
- case 321:
-
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
- }
- break;
-
- case 322:
-
- {
-// at_least_one_simple_declarator
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
- }
- break;
-
- case 323:
-
- {
-// opt_getraises
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseCompleted);
- }
- break;
-
- case 324:
-
- {
-// opt_setraises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Attribute *a = 0;
- FE_Declarator *d = 0;
-
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseCompleted);
-
- /*
- * Create nodes representing attributes and add them to the
- * enclosing scope.
- */
- if (s != 0
- && (tao_yyvsp[(3) - (9)].dcval) != 0
- && (tao_yyvsp[(5) - (9)].dlval) != 0)
- {
- for (UTL_DecllistActiveIterator l ((tao_yyvsp[(5) - (9)].dlval));
- !l.is_done ();
- l.next ())
- {
- d = l.item ();
-
- if (d == 0)
- {
- continue;
- }
-
- AST_Type *tp = d->compose ((tao_yyvsp[(3) - (9)].dcval));
-
- if (tp == 0)
- {
- continue;
- }
-
- a =
- idl_global->gen ()->create_attribute (
- false,
- tp,
- d->name (),
- s->is_local (),
- s->is_abstract ()
- );
-
- if ((tao_yyvsp[(7) - (9)].nlval) != 0)
- {
- (void) a->fe_add_get_exceptions ((tao_yyvsp[(7) - (9)].nlval));
-
- (tao_yyvsp[(7) - (9)].nlval)->destroy ();
- delete (tao_yyvsp[(7) - (9)].nlval);
- (tao_yyvsp[(7) - (9)].nlval) = 0;
- }
-
- if ((tao_yyvsp[(9) - (9)].nlval) != 0)
- {
- (void) a->fe_add_set_exceptions ((tao_yyvsp[(9) - (9)].nlval));
-
- (tao_yyvsp[(9) - (9)].nlval)->destroy ();
- delete (tao_yyvsp[(9) - (9)].nlval);
- (tao_yyvsp[(9) - (9)].nlval) = 0;
- }
-
- (void) s->fe_add_attribute (a);
- }
- }
-
- (tao_yyvsp[(5) - (9)].dlval)->destroy ();
- delete (tao_yyvsp[(5) - (9)].dlval);
- (tao_yyvsp[(5) - (9)].dlval) = 0;
- }
- break;
-
- case 325:
-
- {
-// exception : IDL_EXCEPTION
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSeen);
- }
- break;
-
- case 326:
-
- {
-// id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(3) - (3)].idval),
- 0);
- AST_Exception *e = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptIDSeen);
-
- /*
- * Create a node representing an exception and add it to
- * the enclosing scope.
- */
- if (s != 0)
- {
- e = idl_global->gen ()->create_exception (&n,
- s->is_local (),
- s->is_abstract ());
- (void) s->fe_add_exception (e);
- }
-
- /*
- * Push the exception scope on the scope stack.
- */
- idl_global->scopes ().push (e);
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 327:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSqSeen);
- }
- break;
-
- case 328:
-
- {
-// members
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptBodySeen);
- }
- break;
-
- case 329:
-
- {
-// '}'
- 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 330:
-
- {
-// operation : opt_op_attribute op_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
- }
- break;
-
- case 331:
-
- {
-// IDENTIFIER
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- Identifier id ((tao_yyvsp[(4) - (4)].strval));
- ACE::strdelete ((tao_yyvsp[(4) - (4)].strval));
- (tao_yyvsp[(4) - (4)].strval) = 0;
-
- UTL_ScopedName n (&id,
- 0);
- AST_Operation *o = 0;
- 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 != 0 && (tao_yyvsp[(2) - (4)].dcval) != 0)
- {
- AST_Type *tp =
- AST_Type::narrow_from_decl ((tao_yyvsp[(2) - (4)].dcval));
-
- if (tp == 0)
- {
- idl_global->err ()->not_a_type ((tao_yyvsp[(2) - (4)].dcval));
- }
- else if (tp->node_type () == AST_Decl::NT_except)
- {
- idl_global->err ()->not_a_type ((tao_yyvsp[(2) - (4)].dcval));
- }
- else
- {
- AST_Decl *d = ScopeAsDecl (s);
- AST_Decl::NodeType nt = d->node_type ();
- bool local =
- s->is_local ()
- || nt == AST_Decl::NT_valuetype
- || nt == AST_Decl::NT_eventtype;
- o =
- idl_global->gen ()->create_operation (tp,
- (tao_yyvsp[(1) - (4)].ofval),
- &n,
- local,
- s->is_abstract ());
- (void) s->fe_add_operation (o);
- }
- }
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (o);
- }
- break;
-
- case 332:
-
- {
-// parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- break;
-
- case 333:
-
- {
-// opt_raises
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
- }
- break;
-
- case 334:
-
- {
-// opt_context
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpCompleted);
-
- /*
- * Add exceptions and context to the operation.
- */
- if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
- {
- o = AST_Operation::narrow_from_scope (s);
-
- if ((tao_yyvsp[(8) - (10)].nlval) != 0 && o != 0)
- {
- (void) o->fe_add_exceptions ((tao_yyvsp[(8) - (10)].nlval));
- }
-
- if ((tao_yyvsp[(10) - (10)].slval) != 0)
- {
- (void) o->fe_add_context ((tao_yyvsp[(10) - (10)].slval));
- }
- }
-
- /*
- * Done with this operation. Pop its scope from the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 335:
-
- {
-// opt_op_attribute : IDL_ONEWAY
- idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
- (tao_yyval.ofval) = AST_Operation::OP_oneway;
- }
- break;
-
- case 336:
-
- {
-// | IDL_IDEMPOTENT
- idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
- (tao_yyval.ofval) = AST_Operation::OP_idempotent;
- }
- break;
-
- case 337:
-
- {
-/* | EMPTY */
- (tao_yyval.ofval) = AST_Operation::OP_noflags;
- }
- break;
-
- case 339:
-
- {
-// op_type_spec : param_type_spec | IDL_VOID
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- AST_Expression::EV_void
- );
- }
- break;
-
- case 340:
-
- {
-// init_decl : IDL_FACTORY
- //@@ PS_FactorySeen?
- idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
- }
- break;
-
- case 341:
-
- {
-// IDENTIFIER
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- if (s->is_abstract ())
- {
- //@@ Fire error
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("error in %s line %d:\n")
- ACE_TEXT ("Abstract valuetype can't have a ")
- ACE_TEXT ("factory construct.\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
-
- idl_global->set_err_count (idl_global->err_count () + 1);
- }
-
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
-
- UTL_ScopedName n (&id,
- 0);
- AST_Factory *factory = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
-
- /*
- * Create a node representing an factory construct
- * and add it to its enclosing scope
- */
- if (s != 0)
- {
- factory = idl_global->gen ()->create_factory (&n);
- (void) s->fe_add_factory (factory);
- }
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (factory);
- }
- break;
-
- case 342:
-
- {
-// init_parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- break;
-
- case 343:
-
- {
-// opt_raises
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- if ((tao_yyvsp[(7) - (7)].nlval) != 0)
- {
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Factory *f = AST_Factory::narrow_from_scope (s);
- (void) f->fe_add_exceptions ((tao_yyvsp[(7) - (7)].nlval));
- }
-
- idl_global->scopes ().pop ();
- }
- break;
-
- case 344:
-
- {
-// init_parameter_list : '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- break;
-
- case 345:
-
- {
-// ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- break;
-
- case 346:
-
- {
-// | '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- break;
-
- case 347:
-
- {
-// at_least_one_in_parameter ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- break;
-
- case 349:
-
- {
-// in_parameters : in_parameters ','
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
- }
- break;
-
- case 352:
-
- {
-// in_parameter : IDL_IN
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
- }
- break;
-
- case 353:
-
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
- }
- break;
-
- case 354:
-
- {
-// declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Argument *a = 0;
- 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[(3) - (5)].dcval) != 0
- && (tao_yyvsp[(5) - (5)].deval) != 0 &&
- s != 0)
- {
- AST_Type *tp = (tao_yyvsp[(5) - (5)].deval)->compose ((tao_yyvsp[(3) - (5)].dcval));
-
- if (tp != 0)
- {
- a = idl_global->gen ()->create_argument (
- AST_Argument::dir_IN,
- tp,
- (tao_yyvsp[(5) - (5)].deval)->name ()
- );
-
- (void) s->fe_add_argument (a);
- }
- }
-
- (tao_yyvsp[(5) - (5)].deval)->destroy ();
- delete (tao_yyvsp[(5) - (5)].deval);
- (tao_yyvsp[(5) - (5)].deval) = 0;
- }
- break;
-
- case 355:
-
- {
-// parameter_list : '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- break;
-
- case 356:
-
- {
-// ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- break;
-
- case 357:
-
- {
-// | '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
- }
- break;
-
- case 358:
-
- {
-// at_least_one_parameter ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
- }
- break;
-
- case 360:
-
- {
-// parameters : parameters ','
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
- }
- break;
-
- case 363:
-
- {
-// parameter : direction
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
- }
- break;
-
- case 364:
-
- {
-// param_type_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
- }
- break;
-
- case 365:
-
- {
-// declarator
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Argument *a = 0;
- 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[(3) - (5)].dcval) != 0
- && (tao_yyvsp[(5) - (5)].deval) != 0
- && s != 0)
- {
- AST_Type *tp = (tao_yyvsp[(5) - (5)].deval)->compose ((tao_yyvsp[(3) - (5)].dcval));
-
- if (tp != 0)
- {
- if (!s->is_local () && tp->is_local ())
- {
- idl_global->err ()->local_remote_mismatch (tp, s);
- }
- else
- {
- a =
- idl_global->gen ()->create_argument (
- (tao_yyvsp[(1) - (5)].dival),
- tp,
- (tao_yyvsp[(5) - (5)].deval)->name ()
- );
- (void) s->fe_add_argument (a);
- }
- }
- }
-
- (tao_yyvsp[(5) - (5)].deval)->destroy ();
- delete (tao_yyvsp[(5) - (5)].deval);
- (tao_yyvsp[(5) - (5)].deval) = 0;
- }
- break;
-
- case 366:
-
- {
-// param_type_spec : base_type_spec
- (tao_yyval.dcval) =
- idl_global->scopes ().bottom ()->lookup_primitive_type (
- (tao_yyvsp[(1) - (1)].etval)
- );
- }
- break;
-
- case 369:
-
- {
-// | string_type_spec
-// | wstring_type_spec
-// | scoped_name
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = 0;
-
- if (s != 0)
- {
- d = s->lookup_by_name ((tao_yyvsp[(1) - (1)].idlist),
- true);
- }
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (1)].idlist));
- }
- else
- {
- d->last_referenced_as ((tao_yyvsp[(1) - (1)].idlist));
- AST_Decl::NodeType nt = d->node_type ();
- AST_Type *t = AST_Type::narrow_from_decl (d);
- AST_Typedef *td = 0;
- bool can_be_undefined = false;
-
- if (nt == AST_Decl::NT_struct_fwd
- || nt == AST_Decl::NT_union_fwd
- || nt == AST_Decl::NT_struct
- || nt == AST_Decl::NT_union
- || nt == AST_Decl::NT_typedef)
- {
- // This code block ensures that a sequence of
- // as-yet-undefined struct or union isn't used
- // as a return type or argument.
- if (nt == AST_Decl::NT_typedef)
- {
- td = AST_Typedef::narrow_from_decl (d);
- AST_Type *pbt = td->primitive_base_type ();
-
- if (pbt->node_type () == AST_Decl::NT_sequence)
- {
- t = pbt;
- AST_Sequence *seq_type =
- AST_Sequence::narrow_from_decl (pbt);
- AST_Type *elem_type =
- seq_type->base_type ();
- AST_Decl::NodeType elem_nt =
- elem_type->node_type ();
-
- if (elem_nt == AST_Decl::NT_typedef)
- {
- AST_Typedef *elem_td =
- AST_Typedef::narrow_from_decl (elem_type);
- elem_type = elem_td->primitive_base_type ();
- elem_nt = elem_type->node_type ();
- }
-
- if (elem_nt == AST_Decl::NT_interface
- || elem_nt == AST_Decl::NT_interface_fwd
- || elem_nt == AST_Decl::NT_valuetype
- || elem_nt == AST_Decl::NT_valuetype_fwd
- || elem_nt == AST_Decl::NT_component
- || elem_nt == AST_Decl::NT_component_fwd)
- {
- can_be_undefined = true;
- }
- }
- }
-
- if (! t->is_defined () && ! can_be_undefined)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_ILLEGAL_ADD,
- (nt == AST_Decl::NT_typedef ? td : t));
-
- /* If we don't return here, we'll crash later.*/
- return 1;
- }
- }
- }
-
-
- (tao_yyval.dcval) = d;
- }
- break;
-
- case 370:
-
- {
-// direction : IDL_IN
- (tao_yyval.dival) = AST_Argument::dir_IN;
- }
- break;
-
- case 371:
-
- {
-// | IDL_OUT
- (tao_yyval.dival) = AST_Argument::dir_OUT;
- }
- break;
-
- case 372:
-
- {
-// | IDL_INOUT
- (tao_yyval.dival) = AST_Argument::dir_INOUT;
- }
- break;
-
- case 373:
-
- {
-// opt_raises : IDL_RAISES
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSeen);
- }
- break;
-
- case 374:
-
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSqSeen);
- }
- break;
-
- case 375:
-
- {
-// at_least_one_scoped_name ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseQsSeen);
- (tao_yyval.nlval) = (tao_yyvsp[(5) - (6)].nlval);
- }
- break;
-
- case 376:
-
- {
- (tao_yyval.nlval) = 0;
-/* | EMPTY */
- }
- break;
-
- case 377:
-
- {
-// opt_getraises : IDL_GETRAISES
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSeen);
- }
- break;
-
- case 378:
-
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSqSeen);
- }
- break;
-
- case 379:
-
- {
-// at_least_one_scoped_name ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseQsSeen);
- (tao_yyval.nlval) = (tao_yyvsp[(5) - (6)].nlval);
- }
- break;
-
- case 380:
-
- {
- (tao_yyval.nlval) = 0;
-/* | EMPTY */
- }
- break;
-
- case 381:
-
- {
-// opt_setraises : IDL_SETRAISES
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSeen);
- }
- break;
-
- case 382:
-
- {
-// '('
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSqSeen);
- }
- break;
-
- case 383:
-
- {
-// at_least_one_scoped_name ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseQsSeen);
- (tao_yyval.nlval) = (tao_yyvsp[(5) - (6)].nlval);
- }
- break;
-
- case 384:
-
- {
- (tao_yyval.nlval) = 0;
-/* | EMPTY */
- }
- break;
-
- case 385:
-
- {
-// opt_context : IDL_CONTEXT
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSeen);
- }
- break;
-
- case 386:
-
- {
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSqSeen);
-// '('
- }
- break;
-
- case 387:
-
- {
-// at_least_one_string_literal ')'
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextQsSeen);
- (tao_yyval.slval) = (tao_yyvsp[(5) - (6)].slval);
- }
- break;
-
- case 388:
-
- {
-/* | EMPTY */
- (tao_yyval.slval) = 0;
- }
- break;
-
- case 389:
-
- {
-// at_least_one_string_literal : IDL_STRING_LITERAL string_literals
- ACE_NEW_RETURN ((tao_yyval.slval),
- UTL_StrList ((tao_yyvsp[(1) - (2)].sval),
- (tao_yyvsp[(2) - (2)].slval)),
- 1);
- }
- break;
-
- case 390:
-
- {
-// string_literals : string_literals ','
- idl_global->set_parse_state (IDL_GlobalData::PS_OpContextCommaSeen);
- }
- break;
-
- case 391:
-
- {
-// IDL_STRING_LITERAL
- if ((tao_yyvsp[(1) - (4)].slval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyval.slval),
- UTL_StrList ((tao_yyvsp[(4) - (4)].sval),
- 0),
- 1);
- }
- else
- {
- UTL_StrList *sl = 0;
- ACE_NEW_RETURN (sl,
- UTL_StrList ((tao_yyvsp[(4) - (4)].sval),
- 0),
- 1);
- (tao_yyvsp[(1) - (4)].slval)->nconc (sl);
- (tao_yyval.slval) = (tao_yyvsp[(1) - (4)].slval);
- }
- }
- break;
-
- case 392:
-
- {
-/* | EMPTY */
- (tao_yyval.slval) = 0;
- }
- break;
-
- case 393:
-
- {
-// typeid_dcl : IDL_TYPEID scoped_name IDL_STRING_LITERAL
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- }
- else
- {
- d->set_id_with_typeid (
- (tao_yyvsp[(3) - (3)].sval)->get_string ()
- );
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].sval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].sval);
- (tao_yyvsp[(3) - (3)].sval) = 0;
- }
- break;
-
- case 394:
-
- {
-// typeprefix_dcl : IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = ScopeAsDecl (s);
-
- // If we are in a module, we want to avoid a lookup unless the
- // typeprefix is to be applied to some other scope, since we
- // might get a previous opening of the module, and the prefix
- // of this opening would never get checked or set.
- if (d->name ()->compare ((tao_yyvsp[(2) - (3)].idlist)) != 0)
- {
- d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
- }
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- }
- else
- {
- d->set_prefix_with_typeprefix (
- (tao_yyvsp[(3) - (3)].sval)->get_string ()
- );
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].sval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].sval);
- (tao_yyvsp[(3) - (3)].sval) = 0;
- }
- break;
-
- case 397:
-
- {
-// component_forward_decl : IDL_COMPONENT id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_ComponentFwd *f = 0;
- idl_global->set_parse_state (
- IDL_GlobalData::PS_ComponentForwardSeen
- );
-
- /*
- * Create a node representing a forward declaration of a
- * component. Store it in the enclosing scope.
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_component_fwd (&n);
- (void) s->fe_add_component_fwd (f);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
- }
- break;
-
- case 398:
-
- {
-// component_decl : component_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Component *c = 0;
-
- /*
- * Make a new component node and add it to the enclosing scope.
- */
- if (s != 0 && (tao_yyvsp[(1) - (1)].chval) != 0)
- {
- c =
- idl_global->gen ()->create_component (
- (tao_yyvsp[(1) - (1)].chval)->name (),
- (tao_yyvsp[(1) - (1)].chval)->base_component (),
- (tao_yyvsp[(1) - (1)].chval)->supports (),
- (tao_yyvsp[(1) - (1)].chval)->n_supports (),
- (tao_yyvsp[(1) - (1)].chval)->supports_flat (),
- (tao_yyvsp[(1) - (1)].chval)->n_supports_flat ()
- );
- AST_Interface *i = AST_Interface::narrow_from_decl (c);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the component to its definition scope.
- */
- c = AST_Component::narrow_from_decl (i);
- (void) s->fe_add_component (c);
-
- // This FE_ComponentHeader class isn't destroyed with the AST.
- (tao_yyvsp[(1) - (1)].chval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].chval);
- (tao_yyvsp[(1) - (1)].chval) = 0;
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (c);
- }
- break;
-
- case 399:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentSqSeen);
- }
- break;
-
- case 400:
-
- {
-// component_exports
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentBodySeen);
- }
- break;
-
- case 401:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentQsSeen);
-
- /*
- * Done with this component - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 402:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentIDSeen);
- }
- break;
-
- case 403:
-
- {
-// component_inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- break;
-
- case 404:
-
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
-
- /*
- * Create an AST representation of the information in the header
- * part of a component.
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ((tao_yyvsp[(2) - (6)].idval), 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.chval),
- FE_ComponentHeader (n,
- (tao_yyvsp[(4) - (6)].idlist),
- (tao_yyvsp[(6) - (6)].nlval),
- false),
- 1);
-
- if (0 != (tao_yyvsp[(6) - (6)].nlval))
- {
- (tao_yyvsp[(6) - (6)].nlval)->destroy ();
- delete (tao_yyvsp[(6) - (6)].nlval);
- (tao_yyvsp[(6) - (6)].nlval) = 0;
- }
-
- if (0 != (tao_yyvsp[(4) - (6)].idlist))
- {
- (tao_yyvsp[(4) - (6)].idlist)->destroy ();
- delete (tao_yyvsp[(4) - (6)].idlist);
- (tao_yyvsp[(4) - (6)].idlist) = 0;
- }
- }
- break;
-
- case 405:
-
- {
-// component_inheritance_spec : ':'
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
- }
- break;
-
- case 406:
-
- {
-// scoped_name
- (tao_yyval.idlist) = (tao_yyvsp[(3) - (3)].idlist);
- }
- break;
-
- case 407:
-
- {
-/* | EMPTY */
- (tao_yyval.idlist) = 0;
- }
- break;
-
- case 410:
-
- {
-// component_export : provides_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
- }
- break;
-
- case 411:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 412:
-
- {
-// | uses_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
- }
- break;
-
- case 413:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 414:
-
- {
-// | emits_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_EmitsDeclSeen);
- }
- break;
-
- case 415:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 416:
-
- {
-// | publishes_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_PublishesDeclSeen);
- }
- break;
-
- case 417:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 418:
-
- {
-// | consumes_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConsumesDeclSeen);
- }
- break;
-
- case 419:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 420:
-
- {
-// | attribute
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
- }
- break;
-
- case 421:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 422:
-
- {
-// | extended_port_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- }
- break;
-
- case 423:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 424:
-
- {
-// provides_decl : IDL_PROVIDES interface_type id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
-
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_interface)
- {
- // Nothing else but CORBA::Object can have
- // this identifier.
- int comp_result =
- ACE_OS::strcmp (d->local_name ()->get_string (),
- "Object");
-
- // Simple provides port must use IDL interface
- // or CORBA::Object.
- if (comp_result != 0)
- {
- idl_global->err ()->interface_expected (d);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- AST_Type *port_interface_type =
- AST_Type::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ((tao_yyvsp[(3) - (3)].idval));
-
- UTL_ScopedName sn ((tao_yyvsp[(3) - (3)].idval),
- 0);
-
- AST_Provides *p =
- idl_global->gen ()->create_provides (&sn,
- port_interface_type);
-
- (void) s->fe_add_provides (p);
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 425:
-
- {
-// interface_type : scoped_name
- // Lookups and checking are done where the 'interface_type'
- // token is used, in 'provides_decl' and 'uses_decl'.
- (tao_yyval.idlist) = (tao_yyvsp[(1) - (1)].idlist);
- }
- break;
-
- case 426:
-
- {
-// | IDL_OBJECT
- Identifier *corba_id = 0;
- ACE_NEW_RETURN (corba_id,
- Identifier ("Object"),
- 1);
- UTL_IdList *conc_name = 0;
- ACE_NEW_RETURN (conc_name,
- UTL_IdList (corba_id,
- 0),
- 1);
- ACE_NEW_RETURN (corba_id,
- Identifier ("CORBA"),
- 1);
- UTL_IdList *corba_name = 0;
- ACE_NEW_RETURN (corba_name,
- UTL_IdList (corba_id,
- conc_name),
- 1);
- (tao_yyval.idlist) = corba_name;
- }
- break;
-
- case 427:
-
- {
-// uses_decl : uses_opt_multiple interface_type id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
-
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_interface)
- {
- // Nothing else but CORBA::Object can have
- // this identifier.
- int comp_result =
- ACE_OS::strcmp (d->local_name ()->get_string (),
- "Object");
-
- // Simple provides port must use IDL interface
- // or CORBA::Object.
- if (comp_result != 0)
- {
- idl_global->err ()->interface_expected (d);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- AST_Type *port_interface_type =
- AST_Type::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ((tao_yyvsp[(3) - (3)].idval));
-
- UTL_ScopedName sn ((tao_yyvsp[(3) - (3)].idval),
- 0);
-
- AST_Uses *u =
- idl_global->gen ()->create_uses (&sn,
- port_interface_type,
- (tao_yyvsp[(1) - (3)].bval));
-
- (void) s->fe_add_uses (u);
-
- AST_Component *c =
- AST_Component::narrow_from_scope (s);
-
- if (c != 0
- && u->is_multiple ()
- && !idl_global->using_ifr_backend ()
- && !idl_global->ignore_idl3 ())
- {
- // These datatypes must be created in the
- // front end so they can be looked up
- // when compiling the generated executor IDL.
- idl_global->create_uses_multiple_stuff (c, u);
- }
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 428:
-
- {
-// uses_opt_multiple : IDL_USES opt_multiple
- // We use this extra rule here to use in both uses_decl and
- // extended_uses_decl, so the LALR(1) parser can avoid conflicts.
- (tao_yyval.bval) = (tao_yyvsp[(2) - (2)].bval);
- }
- break;
-
- case 429:
-
- {
-// opt_multiple : IDL_MULTIPLE
- (tao_yyval.bval) = true;
- }
- break;
-
- case 430:
-
- {
-/* | EMPTY */
- (tao_yyval.bval) = false;
- }
- break;
-
- case 431:
-
- {
-// emits_decl : IDL_EMITS scoped_name id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
-
- if (0 == d)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_eventtype)
- {
- idl_global->err ()->eventtype_expected (d);
- so_far_so_good = false;
- }
-
- if (so_far_so_good)
- {
- AST_EventType *event_type =
- AST_EventType::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ((tao_yyvsp[(3) - (3)].idval));
-
- UTL_ScopedName sn ((tao_yyvsp[(3) - (3)].idval),
- 0);
-
- AST_Emits *e =
- idl_global->gen ()->create_emits (&sn,
- event_type);
-
- (void) s->fe_add_emits (e);
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 432:
-
- {
-// publishes_decl : IDL_PUBLISHES scoped_name id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
-
- if (0 == d)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_eventtype)
- {
- idl_global->err ()->eventtype_expected (d);
- so_far_so_good = false;
- }
-
- if (so_far_so_good)
- {
- AST_EventType *event_type =
- AST_EventType::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ((tao_yyvsp[(3) - (3)].idval));
-
- UTL_ScopedName sn ((tao_yyvsp[(3) - (3)].idval),
- 0);
-
- AST_Publishes *p =
- idl_global->gen ()->create_publishes (&sn,
- event_type);
-
- (void) s->fe_add_publishes (p);
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 433:
-
- {
-// consumes_decl : IDL_CONSUMES scoped_name id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- bool so_far_so_good = true;
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist),
- true);
-
- if (0 == d)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else if (d->node_type () != AST_Decl::NT_eventtype)
- {
- idl_global->err ()->eventtype_expected (d);
- so_far_so_good = false;
- }
-
- if (so_far_so_good)
- {
- AST_EventType *event_type =
- AST_EventType::narrow_from_decl (d);
-
- // Strip off _cxx_, if any, for port name.
- idl_global->original_local_name ((tao_yyvsp[(3) - (3)].idval));
-
- UTL_ScopedName sn ((tao_yyvsp[(3) - (3)].idval),
- 0);
-
- AST_Consumes *c =
- idl_global->gen ()->create_consumes (&sn,
- event_type);
-
- (void) s->fe_add_consumes (c);
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 434:
-
- {
-// home_decl : home_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Home *h = 0;
-
- /*
- * Make a new home node and add it to the enclosing scope.
- */
- if (s != 0 && (tao_yyvsp[(1) - (1)].hhval) != 0)
- {
- h =
- idl_global->gen ()->create_home (
- (tao_yyvsp[(1) - (1)].hhval)->name (),
- (tao_yyvsp[(1) - (1)].hhval)->base_home (),
- (tao_yyvsp[(1) - (1)].hhval)->managed_component (),
- (tao_yyvsp[(1) - (1)].hhval)->primary_key (),
- (tao_yyvsp[(1) - (1)].hhval)->supports (),
- (tao_yyvsp[(1) - (1)].hhval)->n_supports (),
- (tao_yyvsp[(1) - (1)].hhval)->supports_flat (),
- (tao_yyvsp[(1) - (1)].hhval)->n_supports_flat ()
- );
- /*
- * Add the home to its definition scope.
- */
- (void) s->fe_add_home (h);
-
- // This FE_HomeHeader class isn't destroyed with the AST.
- (tao_yyvsp[(1) - (1)].hhval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].hhval);
- (tao_yyvsp[(1) - (1)].hhval) = 0;
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (h);
- }
- break;
-
- case 435:
-
- {
-// home_body
- /*
- * Done with this component - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 436:
-
- {
-// home_header : IDL_HOME
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeSeen);
- }
- break;
-
- case 437:
-
- {
-// id
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeIDSeen);
- }
- break;
-
- case 438:
-
- {
-// home_inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- break;
-
- case 439:
-
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
- }
- break;
-
- case 440:
-
- {
-// IDL_MANAGES
- idl_global->set_parse_state (IDL_GlobalData::PS_ManagesSeen);
- }
- break;
-
- case 441:
-
- {
-// scoped_name
- idl_global->set_parse_state (IDL_GlobalData::PS_ManagesIDSeen);
- }
- break;
-
- case 442:
-
- {
-// primary_key_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_PrimaryKeySpecSeen);
-
- /*
- * Create an AST representation of the information in the header
- * part of a component home.
- */
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ((tao_yyvsp[(3) - (13)].idval), 0),
- 1);
- ACE_NEW_RETURN ((tao_yyval.hhval),
- FE_HomeHeader (n,
- (tao_yyvsp[(5) - (13)].idlist),
- (tao_yyvsp[(7) - (13)].nlval),
- (tao_yyvsp[(11) - (13)].idlist),
- (tao_yyvsp[(13) - (13)].idlist)),
- 1);
-
- (tao_yyvsp[(11) - (13)].idlist)->destroy ();
- delete (tao_yyvsp[(11) - (13)].idlist);
- (tao_yyvsp[(11) - (13)].idlist) = 0;
-
- if (0 != (tao_yyvsp[(5) - (13)].idlist))
- {
- (tao_yyvsp[(5) - (13)].idlist)->destroy ();
- delete (tao_yyvsp[(5) - (13)].idlist);
- (tao_yyvsp[(5) - (13)].idlist) = 0;
- }
-
- if (0 != (tao_yyvsp[(13) - (13)].idlist))
- {
- (tao_yyvsp[(13) - (13)].idlist)->destroy ();
- delete (tao_yyvsp[(13) - (13)].idlist);
- (tao_yyvsp[(13) - (13)].idlist) = 0;
- }
-
- if (0 != (tao_yyvsp[(7) - (13)].nlval))
- {
- (tao_yyvsp[(7) - (13)].nlval)->destroy ();
- delete (tao_yyvsp[(7) - (13)].nlval);
- (tao_yyvsp[(7) - (13)].nlval) = 0;
- }
- }
- break;
-
- case 443:
-
- {
-// home_inheritance_spec ':'
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
- }
- break;
-
- case 444:
-
- {
-// scoped_name
- (tao_yyval.idlist) = (tao_yyvsp[(3) - (3)].idlist);
- }
- break;
-
- case 445:
-
- {
-/* | EMPTY */
- (tao_yyval.idlist) = 0;
- }
- break;
-
- case 446:
-
- {
-// primary_key_spec : IDL_PRIMARYKEY scoped_name
- (tao_yyval.idlist) = (tao_yyvsp[(2) - (2)].idlist);
- }
- break;
-
- case 447:
-
- {
-/* | EMPTY */
- (tao_yyval.idlist) = 0;
- }
- break;
-
- case 448:
-
- {
-// home_body : '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeSqSeen);
- }
- break;
-
- case 449:
-
- {
-// home_exports
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeBodySeen);
- }
- break;
-
- case 450:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeQsSeen);
- }
- break;
-
- case 454:
-
- {
-// home_export : factory_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_FactoryDeclSeen);
- }
- break;
-
- case 455:
-
- {
-// | ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 456:
-
- {
-// | finder_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_FinderDeclSeen);
- }
- break;
-
- case 457:
-
- {
-// | ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 458:
-
- {
-// factory_decl : IDL_FACTORY id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
-
- /*
- * Create a node representing a factory operation
- * and add it to the enclosing scope.
- */
- if (s != 0)
- {
- AST_Home *home = AST_Home::narrow_from_scope (s);
- o =
- idl_global->gen ()->create_operation (
- home->managed_component (),
- AST_Operation::OP_noflags,
- &n,
- false,
- false
- );
- home->factories ().enqueue_tail (o);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (o);
- }
- break;
-
- case 459:
-
- {
-// init_parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- break;
-
- case 460:
-
- {
-// opt_raises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- /*
- * Add exceptions and context to the operation.
- */
- if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
- {
- o = AST_Operation::narrow_from_scope (s);
-
- if ((tao_yyvsp[(6) - (6)].nlval) != 0 && o != 0)
- {
- (void) o->fe_add_exceptions ((tao_yyvsp[(6) - (6)].nlval));
- }
- }
-
- /*
- * Done with this operation. Pop its scope from the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 461:
-
- {
-// finder_decl : IDL_FINDER id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpIDSeen);
-
- /*
- * Create a node representing a finder operation
- * and add it to the enclosing scope.
- */
- if (s != 0)
- {
- AST_Home *home = AST_Home::narrow_from_scope (s);
- o =
- idl_global->gen ()->create_operation (
- home->managed_component (),
- AST_Operation::OP_noflags,
- &n,
- false,
- false
- );
- home->finders ().enqueue_tail (o);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
-
- /*
- * Push the operation scope onto the scopes stack.
- */
- idl_global->scopes ().push (o);
- }
- break;
-
- case 462:
-
- {
-// init_parameter_list
- idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
- }
- break;
-
- case 463:
-
- {
-// opt_raises
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Operation *o = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
-
- /*
- * Add exceptions and context to the operation.
- */
- if (s != 0 && s->scope_node_type () == AST_Decl::NT_op)
- {
- o = AST_Operation::narrow_from_scope (s);
-
- if ((tao_yyvsp[(6) - (6)].nlval) != 0 && o != 0)
- {
- (void) o->fe_add_exceptions ((tao_yyvsp[(6) - (6)].nlval));
- }
- }
-
- /*
- * Done with this operation. Pop its scope from the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 469:
-
- {
-// event_concrete_forward_decl : IDL_EVENTTYPE id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(2) - (2)].idval),
- 0);
- AST_EventTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * eventtype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_eventtype_fwd (&n,
- false);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- (tao_yyvsp[(2) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].idval);
- (tao_yyvsp[(2) - (2)].idval) = 0;
- }
- break;
-
- case 470:
-
- {
-// event_abs_forward_decl : IDL_ABSTRACT IDL_EVENTTYPE id
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((tao_yyvsp[(3) - (3)].idval),
- 0);
- AST_EventTypeFwd *f = 0;
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeForwardSeen);
-
- /*
- * Create a node representing a forward declaration of an
- * eventtype. Store it in the enclosing scope
- */
- if (s != 0)
- {
- f = idl_global->gen ()->create_eventtype_fwd (&n,
- true);
- (void) s->fe_add_valuetype_fwd (f);
- }
-
- (tao_yyvsp[(3) - (3)].idval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].idval);
- (tao_yyvsp[(3) - (3)].idval) = 0;
- }
- break;
-
- case 471:
-
- {
-// event_abs_decl : event_abs_header event_rest_of_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_EventType *e = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && (tao_yyvsp[(1) - (2)].idval) != 0)
- {
- UTL_ScopedName sn ((tao_yyvsp[(1) - (2)].idval),
- 0);
- e =
- idl_global->gen ()->create_eventtype (
- &sn,
- (tao_yyvsp[(2) - (2)].ehval)->inherits (),
- (tao_yyvsp[(2) - (2)].ehval)->n_inherits (),
- (tao_yyvsp[(2) - (2)].ehval)->inherits_concrete (),
- (tao_yyvsp[(2) - (2)].ehval)->inherits_flat (),
- (tao_yyvsp[(2) - (2)].ehval)->n_inherits_flat (),
- (tao_yyvsp[(2) - (2)].ehval)->supports (),
- (tao_yyvsp[(2) - (2)].ehval)->n_supports (),
- (tao_yyvsp[(2) - (2)].ehval)->supports_concrete (),
- true,
- false,
- false
- );
- i = AST_Interface::narrow_from_decl (e);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the eventetype to its definition scope
- */
- e = AST_EventType::narrow_from_decl (i);
- (void) s->fe_add_eventtype (e);
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (e);
-
- (tao_yyvsp[(1) - (2)].idval)->destroy ();
- delete (tao_yyvsp[(1) - (2)].idval);
- (tao_yyvsp[(1) - (2)].idval) = 0;
- }
- break;
-
- case 472:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
- }
- break;
-
- case 473:
-
- {
-// exports
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
- }
- break;
-
- case 474:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
-
- /*
- * Done with this eventtype - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 475:
-
- {
-// event_abs_header : IDL_ABSTRACT IDL_EVENTTYPE id
- (tao_yyval.idval) = (tao_yyvsp[(3) - (3)].idval);
- }
- break;
-
- case 476:
-
- {
-// event_custom_header : IDL_CUSTOM IDL_EVENTTYPE id
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
-
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %s line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" custom yet\n")));
- (tao_yyval.idval) = 0;
- }
- break;
-
- case 477:
-
- {
-// event_plain_header : IDL_EVENTTYPE id
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
-
- (tao_yyval.idval) = (tao_yyvsp[(2) - (2)].idval);
- }
- break;
-
- case 478:
-
- {
-// event_rest_of_header : inheritance_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
- }
- break;
-
- case 479:
-
- {
-// supports_spec
- idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
-
- ACE_NEW_RETURN ((tao_yyval.ehval),
- FE_EventHeader (
- 0,
- (tao_yyvsp[(1) - (3)].nlval),
- (tao_yyvsp[(3) - (3)].nlval),
- (tao_yyvsp[(1) - (3)].nlval)
- ? (tao_yyvsp[(1) - (3)].nlval)->truncatable ()
- : false
- ),
- 1);
-
- if (0 != (tao_yyvsp[(3) - (3)].nlval))
- {
- (tao_yyvsp[(3) - (3)].nlval)->destroy ();
- delete (tao_yyvsp[(3) - (3)].nlval);
- (tao_yyvsp[(3) - (3)].nlval) = 0;
- }
-
- if (0 != (tao_yyvsp[(1) - (3)].nlval))
- {
- (tao_yyvsp[(1) - (3)].nlval)->destroy ();
- delete (tao_yyvsp[(1) - (3)].nlval);
- (tao_yyvsp[(1) - (3)].nlval) = 0;
- }
- }
- break;
-
- case 480:
-
- {
-// event_decl : event_header event_rest_of_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_EventType *e = 0;
- AST_Interface *i = 0;
-
- if (s != 0 && (tao_yyvsp[(1) - (2)].idval) != 0)
- {
- // We create the scoped name here instead of with the
- // FE_EventHeader because there is a token for it only here.
- UTL_ScopedName sn ((tao_yyvsp[(1) - (2)].idval),
- 0);
- e =
- idl_global->gen ()->create_eventtype (
- &sn,
- (tao_yyvsp[(2) - (2)].ehval)->inherits (),
- (tao_yyvsp[(2) - (2)].ehval)->n_inherits (),
- (tao_yyvsp[(2) - (2)].ehval)->inherits_concrete (),
- (tao_yyvsp[(2) - (2)].ehval)->inherits_flat (),
- (tao_yyvsp[(2) - (2)].ehval)->n_inherits_flat (),
- (tao_yyvsp[(2) - (2)].ehval)->supports (),
- (tao_yyvsp[(2) - (2)].ehval)->n_supports (),
- (tao_yyvsp[(2) - (2)].ehval)->supports_concrete (),
- false,
- (tao_yyvsp[(2) - (2)].ehval)->truncatable (),
- false
- );
- i = AST_Interface::narrow_from_decl (e);
- AST_Interface::fwd_redefinition_helper (i,
- s);
- /*
- * Add the eventetype to its definition scope
- */
- e = AST_EventType::narrow_from_decl (i);
- (void) s->fe_add_eventtype (e);
-
- // FE_EventHeader is not automatically destroyed in the AST
- (tao_yyvsp[(2) - (2)].ehval)->destroy ();
- delete (tao_yyvsp[(2) - (2)].ehval);
- (tao_yyvsp[(2) - (2)].ehval) = 0;
-
- sn.destroy ();
- }
-
- /*
- * Push it on the scope stack.
- */
- idl_global->scopes ().push (e);
- }
- break;
-
- case 481:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
- }
- break;
-
- case 482:
-
- {
-// value_elements
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
- }
- break;
-
- case 483:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
-
- /*
- * Done with this eventtype - pop it off the scopes stack.
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 484:
-
- {
-// event_header : event_custom_header
- (tao_yyval.idval) = (tao_yyvsp[(1) - (1)].idval);
- }
- break;
-
- case 485:
-
- {
-// event_header : event_plain_header
- (tao_yyval.idval) = (tao_yyvsp[(1) - (1)].idval);
- }
- break;
-
- case 486:
-
- {
-// type_classifier : IDL_TYPENAME
- (tao_yyval.ntval) = AST_Decl::NT_type;
- }
- break;
-
- case 487:
-
- {
-// IDL_STRUCT
- (tao_yyval.ntval) = AST_Decl::NT_struct;
- }
- break;
-
- case 488:
-
- {
-// IDL_EVENTTYPE
- (tao_yyval.ntval) = AST_Decl::NT_eventtype;
- }
- break;
-
- case 489:
-
- {
-// IDL_PRIMITIVE
- (tao_yyval.ntval) = AST_Decl::NT_pre_defined;
- }
- break;
-
- case 490:
-
- {
-// IDL_FIXED
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("error in %C line %d:\n")
- ACE_TEXT ("Fixed types not supported ")
- ACE_TEXT ("in TAO.\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
-
- // Caught and handled later.
- (tao_yyval.ntval) = AST_Decl::NT_fixed;
- }
- break;
-
- case 491:
-
- {
-// IDL_SEQUENCE
- (tao_yyval.ntval) = AST_Decl::NT_sequence;
- }
- break;
-
- case 492:
-
- {
-// IDL_INTERFACE
- (tao_yyval.ntval) = AST_Decl::NT_interface;
- }
- break;
-
- case 493:
-
- {
-// IDL_VALUETYPE
- (tao_yyval.ntval) = AST_Decl::NT_valuetype;
- }
- break;
-
- case 494:
-
- {
-// template_interface_def : template_interface_header
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- AST_Template_Interface *i =
- idl_global->gen ()->create_template_interface (
- (tao_yyvsp[(1) - (1)].thval)->name (),
- (tao_yyvsp[(1) - (1)].thval)->inherits (),
- (tao_yyvsp[(1) - (1)].thval)->n_inherits (),
- (tao_yyvsp[(1) - (1)].thval)->inherits_flat (),
- (tao_yyvsp[(1) - (1)].thval)->n_inherits_flat (),
- (tao_yyvsp[(1) - (1)].thval)->param_info ());
-
- (void) s->fe_add_interface (i);
-
- (tao_yyvsp[(1) - (1)].thval)->destroy ();
- delete (tao_yyvsp[(1) - (1)].thval);
- (tao_yyvsp[(1) - (1)].thval) = 0;
-
- idl_global->scopes ().push (i);
- }
- break;
-
- case 495:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
- }
- break;
-
- case 496:
-
- {
-// exports - TODO: change to include concatenated identifiers
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceBodySeen);
- }
- break;
-
- case 497:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceQsSeen);
-
- /*
- * Done with this interface - pop it off the scopes stack
- */
- idl_global->scopes ().pop ();
- }
- break;
-
- case 498:
-
- {
-// template_interface_header : interface_decl at_least_one_template_param template_inheritance_spec
- UTL_ScopedName *n = 0;
- ACE_NEW_RETURN (n,
- UTL_ScopedName ((tao_yyvsp[(1) - (3)].idval), 0),
- 1);
-
- ACE_NEW_RETURN ((tao_yyval.thval),
- FE_Template_InterfaceHeader (n,
- (tao_yyvsp[(2) - (3)].plval),
- (tao_yyvsp[(3) - (3)].rlval)),
- 1);
- }
- break;
-
- case 499:
-
- {
-// at_least_one_template_param : '<'
- idl_global->set_parse_state (IDL_GlobalData::PS_TmplInterfaceSqSeen);
- }
- break;
-
- case 500:
-
- {
-// template_param template_params
- if ((tao_yyvsp[(4) - (4)].plval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyvsp[(4) - (4)].plval),
- FE_Utils::T_PARAMLIST_INFO,
- 1);
- }
-
- (tao_yyvsp[(4) - (4)].plval)->enqueue_head (*(tao_yyvsp[(3) - (4)].pival));
- delete (tao_yyvsp[(3) - (4)].pival);
- (tao_yyvsp[(3) - (4)].pival) = 0;
- }
- break;
-
- case 501:
-
- {
-// '>'
- idl_global->set_parse_state (IDL_GlobalData::PS_TmplInterfaceQsSeen);
- (tao_yyval.plval) = (tao_yyvsp[(4) - (6)].plval);
- }
- break;
-
- case 502:
-
- {
-// template_params : template_params ','
- // Maybe add a new parse state to set here.
- }
- break;
-
- case 503:
-
- {
-// template_param
- if ((tao_yyvsp[(1) - (4)].plval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyvsp[(1) - (4)].plval),
- FE_Utils::T_PARAMLIST_INFO,
- 1);
- }
-
- (tao_yyvsp[(1) - (4)].plval)->enqueue_tail (*(tao_yyvsp[(4) - (4)].pival));
- delete (tao_yyvsp[(4) - (4)].pival);
- (tao_yyvsp[(4) - (4)].pival) = 0;
-
- (tao_yyval.plval) = (tao_yyvsp[(1) - (4)].plval);
- }
- break;
-
- case 504:
-
- {
-// /* EMPTY */
- (tao_yyval.plval) = 0;
- }
- break;
-
- case 505:
-
- {
-// template_param : type_classifier IDENTIFIER
-
- ACE_NEW_RETURN ((tao_yyval.pival),
- FE_Utils::T_Param_Info,
- 1);
-
- (tao_yyval.pival)->type_ = (tao_yyvsp[(1) - (2)].ntval);
- (tao_yyval.pival)->name_ = (tao_yyvsp[(2) - (2)].strval);
- }
- break;
-
- case 506:
-
- {
-// template_inheritance_spec : ':' at_least_one_template_ref
- (tao_yyval.rlval) = (tao_yyvsp[(2) - (2)].rlval);
- }
- break;
-
- case 507:
-
- {
-// /* EMPTY */
- (tao_yyval.rlval) = 0;
- }
- break;
-
- case 508:
-
- {
-// at_least_one_template_ref : template_ref template_refs
- if ((tao_yyvsp[(2) - (2)].rlval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyvsp[(2) - (2)].rlval),
- FE_Utils::T_REFLIST_INFO,
- 1);
- }
-
- (tao_yyvsp[(2) - (2)].rlval)->enqueue_head (*(tao_yyvsp[(1) - (2)].trval));
- delete (tao_yyvsp[(1) - (2)].trval);
- (tao_yyvsp[(1) - (2)].trval) = 0;
-
- (tao_yyval.rlval) = (tao_yyvsp[(2) - (2)].rlval);
- }
- break;
-
- case 509:
-
- {
-// template_refs : template_refs ',' template_ref
- if ((tao_yyvsp[(1) - (3)].rlval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyvsp[(1) - (3)].rlval),
- FE_Utils::T_REFLIST_INFO,
- 1);
-
- (tao_yyvsp[(1) - (3)].rlval)->enqueue_tail (*(tao_yyvsp[(3) - (3)].trval));
- delete (tao_yyvsp[(3) - (3)].trval);
- (tao_yyvsp[(3) - (3)].trval) = 0;
-
- (tao_yyval.rlval) = (tao_yyvsp[(1) - (3)].rlval);
- }
- }
- break;
-
- case 510:
-
- {
-// /* EMPTY */
- (tao_yyval.rlval) = 0;
- }
- break;
-
- case 511:
-
- {
-// template_ref : scoped_name '<' at_least_one_template_param_ref '>'
- ACE_NEW_RETURN ((tao_yyval.trval),
- FE_Utils::T_Ref_Info ((tao_yyvsp[(1) - (4)].idlist), (tao_yyvsp[(3) - (4)].slval)),
- 1);
- }
- break;
-
- case 512:
-
- {
-// at_least_one_template_param_ref : template_param_ref template_param_refs
- ACE_NEW_RETURN ((tao_yyval.slval),
- UTL_StrList ((tao_yyvsp[(1) - (2)].sval),
- (tao_yyvsp[(2) - (2)].slval)),
- 1);
- }
- break;
-
- case 513:
-
- {
-// template_param_refs : template_param_refs ',' template_param_ref
- if ((tao_yyvsp[(1) - (3)].slval) == 0)
- {
- ACE_NEW_RETURN ((tao_yyvsp[(1) - (3)].slval),
- UTL_StrList ((tao_yyvsp[(3) - (3)].sval),
- 0),
- 1);
- }
- else
- {
- UTL_StrList *l = 0;
- ACE_NEW_RETURN (l,
- UTL_StrList ((tao_yyvsp[(3) - (3)].sval),
- 0),
- 1);
-
- (tao_yyvsp[(1) - (3)].slval)->nconc (l);
- }
-
- (tao_yyval.slval) = (tao_yyvsp[(1) - (3)].slval);
- }
- break;
-
- case 514:
-
- {
-// /* EMPTY */
- (tao_yyval.slval) = 0;
- }
- break;
-
- case 515:
-
- {
-// template_param_ref : IDENTIFIER
- ACE_NEW_RETURN ((tao_yyval.sval),
- UTL_String ((tao_yyvsp[(1) - (1)].strval)),
- 1);
- }
- break;
-
- case 516:
-
- {
-// porttype_decl : IDL_PORTTYPE
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSeen);
- }
- break;
-
- case 517:
-
- {
-// IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeIDSeen);
- }
- break;
-
- case 518:
-
- {
-// opt_template_params
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- Identifier id ((tao_yyvsp[(3) - (5)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (5)].strval));
- (tao_yyvsp[(3) - (5)].strval) = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_PortType *p =
- idl_global->gen ()->create_porttype (&sn,
- (tao_yyvsp[(5) - (5)].plval));
-
- (void) s->fe_add_porttype (p);
-
- // Push it on the scopes stack.
- idl_global->scopes ().push (p);
- }
- break;
-
- case 519:
-
- {
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSqSeen);
- }
- break;
-
- case 520:
-
- {
-// at_least_one_port_export
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeBodySeen);
- }
- break;
-
- case 521:
-
- {
-// '}'
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeQsSeen);
-
- // Done with this port type - pop it off the scopes stack.
- idl_global->scopes ().pop ();
- }
- break;
-
- case 522:
-
- {
-// opt_template_params : at_least_one_template_param
- (tao_yyval.plval) = (tao_yyvsp[(1) - (1)].plval);
- }
- break;
-
- case 523:
-
- {
-// | /* EMPTY */
- (tao_yyval.plval) = 0;
- }
- break;
-
- case 524:
-
- {
-// at_least_one_port_export : port_export port_exports
- }
- break;
-
- case 525:
-
- {
-// port_exports : port_exports port_export
- }
- break;
-
- case 526:
-
- {
-// | /* EMPTY */
- }
- break;
-
- case 527:
-
- {
-// port_export : extended_provides_decl
- }
- break;
-
- case 528:
-
- {
-// ';'
- }
- break;
-
- case 529:
-
- {
-// | extended_uses_decl
- }
- break;
-
- case 530:
-
- {
-// ';'
- }
- break;
-
- case 531:
-
- {
-// extended_provides_decl : provides_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
- }
- break;
-
- case 532:
-
- {
-// | IDL_PROVIDES template_ref IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtProvidesDeclSeen);
- bool so_far_so_good = true;
- AST_Template_Interface *i = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].trval)->name_,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].trval)->name_);
- so_far_so_good = false;
- }
- else
- {
- i = AST_Template_Interface::narrow_from_decl (d);
-
- if (i == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_TMPL_IFACE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else if (! i->match_param_names ((tao_yyvsp[(2) - (3)].trval)->params_))
- {
- idl_global->err ()->mismatched_template_param ((tao_yyvsp[(2) - (3)].trval)->name_);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- UTL_ScopedName sn (&id, 0);
-
- AST_Provides *p =
- idl_global->gen ()->create_provides (&sn, i);
-
- (void) s->fe_add_provides (p);
- }
-
- (tao_yyvsp[(2) - (3)].trval)->destroy ();
- delete (tao_yyvsp[(2) - (3)].trval);
- (tao_yyvsp[(2) - (3)].trval) = 0;
-
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
- }
- break;
-
- case 533:
-
- {
-// extended_uses_decl : uses_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
- }
- break;
-
- case 534:
-
- {
-// | uses_opt_multiple template_ref IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtUsesDeclSeen);
- bool so_far_so_good = true;
- AST_Template_Interface *i = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].trval)->name_,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].trval)->name_);
- so_far_so_good = false;
- }
- else
- {
- i = AST_Template_Interface::narrow_from_decl (d);
-
- if (i == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_TMPL_IFACE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else if (! i->match_param_names ((tao_yyvsp[(2) - (3)].trval)->params_))
- {
- idl_global->err ()->mismatched_template_param ((tao_yyvsp[(2) - (3)].trval)->name_);
- so_far_so_good = false;
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- UTL_ScopedName sn (&id, 0);
-
- AST_Uses *u =
- idl_global->gen ()->create_uses (&sn, i, (tao_yyvsp[(1) - (3)].bval));
-
- (void) s->fe_add_uses (u);
- }
-
- (tao_yyvsp[(2) - (3)].trval)->destroy ();
- delete (tao_yyvsp[(2) - (3)].trval);
- (tao_yyvsp[(2) - (3)].trval) = 0;
-
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
- }
- break;
-
- case 537:
-
- {
-// extended_port_decl : IDL_PORT template_inst IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].tival)->name_, true);
- AST_PortType *pt = 0;
- AST_PortType::T_ARGLIST *args = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].tival)->name_);
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- args =
- pt->match_arg_names ((tao_yyvsp[(2) - (3)].tival)->args_);
-
- if (args == 0)
- {
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Extended_Port *ep =
- idl_global->gen ()->create_extended_port (&sn,
- pt,
- args);
-
- (void) s->fe_add_extended_port (ep);
- }
-
- (tao_yyvsp[(2) - (3)].tival)->destroy ();
- delete (tao_yyvsp[(2) - (3)].tival);
- (tao_yyvsp[(2) - (3)].tival) = 0;
- }
- break;
-
- case 538:
-
- {
-// | IDL_MIRRORPORT template_inst IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].tival)->name_, true);
- AST_PortType *pt = 0;
- AST_PortType::T_ARGLIST *args = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].tival)->name_);
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- args =
- pt->match_arg_names ((tao_yyvsp[(2) - (3)].tival)->args_);
-
- if (args == 0)
- {
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Mirror_Port *mp =
- idl_global->gen ()->create_mirror_port (&sn,
- pt,
- args);
-
- (void) s->fe_add_mirror_port (mp);
- }
-
- (tao_yyvsp[(2) - (3)].tival)->destroy ();
- delete (tao_yyvsp[(2) - (3)].tival);
- (tao_yyvsp[(2) - (3)].tival) = 0;
- }
- break;
-
- case 539:
-
- {
-// non_template_port_decl : IDL_PORT scoped_name IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist), true);
- AST_PortType *pt = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- FE_Utils::T_PARAMLIST_INFO *p_list =
- pt->template_params ();
-
- if (p_list != 0 && p_list->size () != 0)
- {
- idl_global->err ()->error0 (
- UTL_Error::EIDL_T_ARG_LENGTH);
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Extended_Port *ep =
- idl_global->gen ()->create_extended_port (
- &sn,
- pt,
- 0);
-
- (void) s->fe_add_extended_port (ep);
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
- }
- break;
-
- case 540:
-
- {
-// | IDL_MIRRORPORT scoped_name IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen);
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(2) - (3)].idlist), true);
- AST_PortType *pt = 0;
- bool so_far_so_good = true;
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(2) - (3)].idlist));
- so_far_so_good = false;
- }
- else
- {
- pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- so_far_so_good = false;
- }
- else
- {
- FE_Utils::T_PARAMLIST_INFO *p_list =
- pt->template_params ();
-
- if (p_list != 0 && p_list->size () != 0)
- {
- idl_global->err ()->error0 (
- UTL_Error::EIDL_T_ARG_LENGTH);
- so_far_so_good = false;
- }
- }
- }
-
- if (so_far_so_good)
- {
- Identifier id ((tao_yyvsp[(3) - (3)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (3)].strval));
- (tao_yyvsp[(3) - (3)].strval) = 0;
-
- UTL_ScopedName sn (&id,
- 0);
-
- AST_Mirror_Port *mp =
- idl_global->gen ()->create_mirror_port (
- &sn,
- pt,
- 0);
-
- (void) s->fe_add_mirror_port (mp);
- }
-
- (tao_yyvsp[(2) - (3)].idlist)->destroy ();
- delete (tao_yyvsp[(2) - (3)].idlist);
- (tao_yyvsp[(2) - (3)].idlist) = 0;
- }
- break;
-
- case 541:
-
- {
-// template_inst : scoped_name '<' at_least_one_scoped_name '>'
- ACE_NEW_RETURN ((tao_yyval.tival),
- FE_Utils::T_Inst_Info ((tao_yyvsp[(1) - (4)].idlist),
- (tao_yyvsp[(3) - (4)].nlval)),
- 1);
- }
- break;
-
- case 543:
-
- {
-// connector_header : IDL_CONNECTOR
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSeen);
- }
- break;
-
- case 544:
-
- {
-// IDENTIFIER
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorIDSeen);
- }
- break;
-
- case 545:
-
- {
-// opt_template_params
- }
- break;
-
- case 546:
-
- {
-// component_inheritance_spec
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Connector *parent = 0;
- bool so_far_so_good = true;
-
- Identifier id ((tao_yyvsp[(3) - (7)].strval));
- ACE::strdelete ((tao_yyvsp[(3) - (7)].strval));
- (tao_yyvsp[(3) - (7)].strval) = 0;
-
- UTL_ScopedName sn (&id, 0);
-
- if ((tao_yyvsp[(7) - (7)].idlist) != 0)
- {
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(7) - (7)].idlist), true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(7) - (7)].idlist));
- so_far_so_good = false;
- }
-
- parent =
- AST_Connector::narrow_from_decl (d);
-
- if (parent == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_CONNECTOR_EXPECTED,
- d);
-
- so_far_so_good = false;
- }
-
- (tao_yyvsp[(7) - (7)].idlist)->destroy ();
- delete (tao_yyvsp[(7) - (7)].idlist);
- (tao_yyvsp[(7) - (7)].idlist) = 0;
- }
-
- if (so_far_so_good)
- {
- AST_Connector *c =
- idl_global->gen ()->create_connector (&sn,
- parent,
- (tao_yyvsp[(5) - (7)].plval));
-
- (void) s->fe_add_connector (c);
-
- // Push it on the scopes stack.
- idl_global->scopes ().push (c);
- }
- }
- break;
-
- case 547:
-
- {
-// connector_body " '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSqSeen);
- }
- break;
-
- case 548:
-
- {
-// at_least_one_connector_export
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorBodySeen);
- }
- break;
-
- case 549:
-
- {
-// '}
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorQsSeen);
-
- // Done with this connector - pop it off the scope stack.
- idl_global->scopes ().pop ();
- }
- break;
-
- case 553:
-
- {
-// connector_export : provides_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
- }
- break;
-
- case 554:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 555:
-
- {
-// | uses_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
- }
- break;
-
- case 556:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 557:
-
- {
-// | attribute
- idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
- }
- break;
-
- case 558:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 559:
-
- {
-// | non_template_port_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- }
- break;
-
- case 560:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 561:
-
- {
-// | template_extended_port_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
- }
- break;
-
- case 562:
-
- {
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
- }
- break;
-
- case 563:
-
- {
-// template_extended_port_decl : IDL_PORT template_ref_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- if ((tao_yyvsp[(2) - (2)].ptval) != 0)
- {
- Identifier id ((tao_yyvsp[(2) - (2)].ptval)->name_.c_str ());
- UTL_ScopedName sn (&id, 0);
-
- AST_Tmpl_Port *pt =
- idl_global->gen ()->create_tmpl_port (
- &sn,
- (tao_yyvsp[(2) - (2)].ptval)->type_);
-
- (void) s->fe_add_tmpl_port (pt);
-
- delete (tao_yyvsp[(2) - (2)].ptval);
- (tao_yyvsp[(2) - (2)].ptval) = 0;
- }
- }
- break;
-
- case 564:
-
- {
-// | IDL_MIRRORPORT template_ref_decl
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
-
- if ((tao_yyvsp[(2) - (2)].ptval) != 0)
- {
- Identifier id ((tao_yyvsp[(2) - (2)].ptval)->name_.c_str ());
- UTL_ScopedName sn (&id, 0);
-
- AST_Tmpl_Mirror_Port *pt =
- idl_global->gen ()->create_tmpl_mirror_port (
- &sn,
- (tao_yyvsp[(2) - (2)].ptval)->type_);
-
- (void) s->fe_add_tmpl_mirror_port (pt);
-
- delete (tao_yyvsp[(2) - (2)].ptval);
- (tao_yyvsp[(2) - (2)].ptval) = 0;
- }
- }
- break;
-
- case 565:
-
- {
-// template_ref_decl : template_ref IDENTIFIER
- (tao_yyval.ptval) = 0;
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- AST_Decl *d = s->lookup_by_name ((tao_yyvsp[(1) - (2)].trval)->name_,
- true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (2)].trval)->name_);
- }
- else
- {
- AST_PortType *pt = AST_PortType::narrow_from_decl (d);
-
- if (pt == 0)
- {
- idl_global->err ()->error1 (UTL_Error::EIDL_PORTTYPE_EXPECTED,
- d);
- }
- else
- {
- ACE_NEW_RETURN ((tao_yyval.ptval),
- FE_Utils::T_Port_Info ((tao_yyvsp[(2) - (2)].strval),
- pt),
- 1);
- }
- }
-
- (tao_yyvsp[(1) - (2)].trval)->destroy ();
- delete (tao_yyvsp[(1) - (2)].trval);
- (tao_yyvsp[(1) - (2)].trval) = 0;
-
- ACE::strdelete ((tao_yyvsp[(2) - (2)].strval));
- (tao_yyvsp[(2) - (2)].strval) = 0;
- }
- break;
-
- case 566:
-
- {
-// connector_inst_spec : template_inst
- UTL_Scope *s = idl_global->scopes ().top_non_null ();
- (tao_yyval.dcval) = 0;
-
- AST_Decl *d =
- s->lookup_by_name ((tao_yyvsp[(1) - (1)].tival)->name_, true);
-
- if (d == 0)
- {
- idl_global->err ()->lookup_error ((tao_yyvsp[(1) - (1)].tival)->name_);
- }
- else
- {
- AST_Connector *c = AST_Connector::narrow_from_decl (d);
-
- if (c == 0)
- {
- idl_global->err ()->error1 (
- UTL_Error::EIDL_CONNECTOR_EXPECTED,
- d);
- }
- else
- {
- AST_Template_Common::T_ARGLIST *args =
- c->match_arg_names ((tao_yyvsp[(1) - (1)].tival)->args_);
-
- if (args != 0)
- {
- Identifier id ("connector");
- UTL_ScopedName sn (&id, 0);
-
- (tao_yyval.dcval) =
- idl_global->gen ()->create_instantiated_connector (
- &sn,
- c,
- args);
- }
- }
- }
-
- (tao_yyvsp[(1) - (1)].tival)->destroy ();
- delete (tao_yyvsp[(1) - (1)].tival);
- (tao_yyvsp[(1) - (1)].tival) = 0;
- }
- break;
-
-
-/* Line 1267 of yacc.c. */
-
- default: break;
- }
- TAO_YY_SYMBOL_PRINT ("-> $$ =", tao_yyr1[tao_yyn], &tao_yyval, &tao_yyloc);
-
- TAO_YYPOPSTACK (tao_yylen);
- tao_yylen = 0;
- TAO_YY_STACK_PRINT (tao_yyss, tao_yyssp);
-
- *++tao_yyvsp = tao_yyval;
-
-
- /* Now `shift' the result of the reduction. Determine what state
- that goes to, based on the state we popped back to and the rule
- number reduced by. */
-
- tao_yyn = tao_yyr1[tao_yyn];
-
- tao_yystate = tao_yypgoto[tao_yyn - TAO_YYNTOKENS] + *tao_yyssp;
- if (0 <= tao_yystate && tao_yystate <= TAO_YYLAST && tao_yycheck[tao_yystate] == *tao_yyssp)
- tao_yystate = tao_yytable[tao_yystate];
- else
- tao_yystate = tao_yydefgoto[tao_yyn - TAO_YYNTOKENS];
-
- goto tao_yynewstate;
-
-
-/*------------------------------------.
-| tao_yyerrlab -- here on detecting error |
-`------------------------------------*/
-tao_yyerrlab:
- /* If not already recovering from an error, report this error. */
- if (!tao_yyerrstatus)
- {
- ++tao_yynerrs;
-#if ! TAO_YYERROR_VERBOSE
- tao_yyerror (TAO_YY_("syntax error"));
-#else
- {
- TAO_YYSIZE_T tao_yysize = tao_yysyntax_error (0, tao_yystate, tao_yychar);
- if (tao_yymsg_alloc < tao_yysize && tao_yymsg_alloc < TAO_YYSTACK_ALLOC_MAXIMUM)
- {
- TAO_YYSIZE_T tao_yyalloc = 2 * tao_yysize;
- if (! (tao_yysize <= tao_yyalloc && tao_yyalloc <= TAO_YYSTACK_ALLOC_MAXIMUM))
- tao_yyalloc = TAO_YYSTACK_ALLOC_MAXIMUM;
- if (tao_yymsg != tao_yymsgbuf)
- TAO_YYSTACK_FREE (tao_yymsg);
- tao_yymsg = (char *) TAO_YYSTACK_ALLOC (tao_yyalloc);
- if (tao_yymsg)
- tao_yymsg_alloc = tao_yyalloc;
- else
- {
- tao_yymsg = tao_yymsgbuf;
- tao_yymsg_alloc = sizeof tao_yymsgbuf;
- }
- }
-
- if (0 < tao_yysize && tao_yysize <= tao_yymsg_alloc)
- {
- (void) tao_yysyntax_error (tao_yymsg, tao_yystate, tao_yychar);
- tao_yyerror (tao_yymsg);
- }
- else
- {
- tao_yyerror (TAO_YY_("syntax error"));
- if (tao_yysize != 0)
- goto tao_yyexhaustedlab;
- }
- }
-#endif
- }
-
-
-
- if (tao_yyerrstatus == 3)
- {
- /* If just tried and failed to reuse look-ahead token after an
- error, discard it. */
-
- if (tao_yychar <= TAO_YYEOF)
- {
- /* Return failure if at end of input. */
- if (tao_yychar == TAO_YYEOF)
- TAO_YYABORT;
- }
- else
- {
- tao_yydestruct ("Error: discarding",
- tao_yytoken, &tao_yylval);
- tao_yychar = TAO_YYEMPTY;
- }
- }
-
- /* Else will try to reuse look-ahead token after shifting the error
- token. */
- goto tao_yyerrlab1;
-
-
-/*---------------------------------------------------.
-| tao_yyerrorlab -- error raised explicitly by TAO_YYERROR. |
-`---------------------------------------------------*/
-tao_yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- TAO_YYERROR and the label tao_yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto tao_yyerrorlab;
-
- /* Do not reclaim the symbols of the rule which action triggered
- this TAO_YYERROR. */
- TAO_YYPOPSTACK (tao_yylen);
- tao_yylen = 0;
- TAO_YY_STACK_PRINT (tao_yyss, tao_yyssp);
- tao_yystate = *tao_yyssp;
- goto tao_yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| tao_yyerrlab1 -- common code for both syntax error and TAO_YYERROR. |
-`-------------------------------------------------------------*/
-tao_yyerrlab1:
- tao_yyerrstatus = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- tao_yyn = tao_yypact[tao_yystate];
- if (tao_yyn != TAO_YYPACT_NINF)
- {
- tao_yyn += TAO_YYTERROR;
- if (0 <= tao_yyn && tao_yyn <= TAO_YYLAST && tao_yycheck[tao_yyn] == TAO_YYTERROR)
- {
- tao_yyn = tao_yytable[tao_yyn];
- if (0 < tao_yyn)
- break;
- }
- }
-
- /* Pop the current state because it cannot handle the error token. */
- if (tao_yyssp == tao_yyss)
- TAO_YYABORT;
-
-
- tao_yydestruct ("Error: popping",
- tao_yystos[tao_yystate], tao_yyvsp);
- TAO_YYPOPSTACK (1);
- tao_yystate = *tao_yyssp;
- TAO_YY_STACK_PRINT (tao_yyss, tao_yyssp);
- }
-
- if (tao_yyn == TAO_YYFINAL)
- TAO_YYACCEPT;
-
- *++tao_yyvsp = tao_yylval;
-
-
- /* Shift the error token. */
- TAO_YY_SYMBOL_PRINT ("Shifting", tao_yystos[tao_yyn], tao_yyvsp, tao_yylsp);
-
- tao_yystate = tao_yyn;
- goto tao_yynewstate;
-
-
-/*-------------------------------------.
-| tao_yyacceptlab -- TAO_YYACCEPT comes here. |
-`-------------------------------------*/
-tao_yyacceptlab:
- tao_yyresult = 0;
- goto tao_yyreturn;
-
-/*-----------------------------------.
-| tao_yyabortlab -- TAO_YYABORT comes here. |
-`-----------------------------------*/
-tao_yyabortlab:
- tao_yyresult = 1;
- goto tao_yyreturn;
-
-#ifndef tao_yyoverflow
-/*-------------------------------------------------.
-| tao_yyexhaustedlab -- memory exhaustion comes here. |
-`-------------------------------------------------*/
-tao_yyexhaustedlab:
- tao_yyerror (TAO_YY_("memory exhausted"));
- tao_yyresult = 2;
- /* Fall through. */
-#endif
-
-tao_yyreturn:
- if (tao_yychar != TAO_YYEOF && tao_yychar != TAO_YYEMPTY)
- tao_yydestruct ("Cleanup: discarding lookahead",
- tao_yytoken, &tao_yylval);
- /* Do not reclaim the symbols of the rule which action triggered
- this TAO_YYABORT or TAO_YYACCEPT. */
- TAO_YYPOPSTACK (tao_yylen);
- TAO_YY_STACK_PRINT (tao_yyss, tao_yyssp);
- while (tao_yyssp != tao_yyss)
- {
- tao_yydestruct ("Cleanup: popping",
- tao_yystos[*tao_yyssp], tao_yyvsp);
- TAO_YYPOPSTACK (1);
- }
-#ifndef tao_yyoverflow
- if (tao_yyss != tao_yyssa)
- TAO_YYSTACK_FREE (tao_yyss);
-#endif
-#if TAO_YYERROR_VERBOSE
- if (tao_yymsg != tao_yymsgbuf)
- TAO_YYSTACK_FREE (tao_yymsg);
-#endif
- /* Make sure TAO_YYID is used. */
- return TAO_YYID (tao_yyresult);
-}
-
-
-
-
-/* programs */
-
-/*
- * ???
- */
-int
-tao_yywrap (void)
-{
- return 1;
-}
-
-/*
- * Report an error situation discovered in a production
- */
-void
-tao_yyerror (const char *msg)
-{
- ACE_ERROR ((LM_ERROR,
- "%s\n",
- msg));
-}
-
diff --git a/modules/TAO/TAO_IDL/fe/y.tab.h b/modules/TAO/TAO_IDL/fe/y.tab.h
deleted file mode 100644
index f77d9917d7c..00000000000
--- a/modules/TAO/TAO_IDL/fe/y.tab.h
+++ /dev/null
@@ -1,269 +0,0 @@
-// $Id$
-/* A Bison parser, made by GNU Bison 2.3. */
-
-/* Skeleton interface for Bison's Yacc-like parsers in C
-
- Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
- Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
-
-/* As a special exception, you may create a larger work that contains
- part or all of the Bison parser skeleton and distribute that work
- under terms of your choice, so long as that work isn't itself a
- parser generator using the skeleton or a modified version thereof
- as a parser skeleton. Alternatively, if you modify or redistribute
- the parser skeleton itself, you may (at your option) remove this
- special exception, which will cause the skeleton and the resulting
- Bison output files to be licensed under the GNU General Public
- License without this special exception.
-
- This special exception was added by the Free Software Foundation in
- version 2.2 of Bison. */
-
-/* Tokens. */
-#ifndef TAO_YYTOKENTYPE
-# define TAO_YYTOKENTYPE
- /* Put the tokens into the symbol table, so that GDB and other debuggers
- know about them. */
- enum tao_yytokentype {
- IDENTIFIER = 258,
- IDL_CONST = 259,
- IDL_MODULE = 260,
- IDL_INTERFACE = 261,
- IDL_TYPEDEF = 262,
- IDL_LONG = 263,
- IDL_SHORT = 264,
- IDL_UNSIGNED = 265,
- IDL_DOUBLE = 266,
- IDL_FLOAT = 267,
- IDL_CHAR = 268,
- IDL_WCHAR = 269,
- IDL_OCTET = 270,
- IDL_BOOLEAN = 271,
- IDL_FIXED = 272,
- IDL_ANY = 273,
- IDL_OBJECT = 274,
- IDL_STRUCT = 275,
- IDL_UNION = 276,
- IDL_SWITCH = 277,
- IDL_ENUM = 278,
- IDL_SEQUENCE = 279,
- IDL_STRING = 280,
- IDL_WSTRING = 281,
- IDL_EXCEPTION = 282,
- IDL_CASE = 283,
- IDL_DEFAULT = 284,
- IDL_READONLY = 285,
- IDL_ATTRIBUTE = 286,
- IDL_ONEWAY = 287,
- IDL_IDEMPOTENT = 288,
- IDL_VOID = 289,
- IDL_IN = 290,
- IDL_OUT = 291,
- IDL_INOUT = 292,
- IDL_RAISES = 293,
- IDL_CONTEXT = 294,
- IDL_NATIVE = 295,
- IDL_LOCAL = 296,
- IDL_ABSTRACT = 297,
- IDL_CUSTOM = 298,
- IDL_FACTORY = 299,
- IDL_PRIVATE = 300,
- IDL_PUBLIC = 301,
- IDL_SUPPORTS = 302,
- IDL_TRUNCATABLE = 303,
- IDL_VALUETYPE = 304,
- IDL_COMPONENT = 305,
- IDL_CONSUMES = 306,
- IDL_EMITS = 307,
- IDL_EVENTTYPE = 308,
- IDL_FINDER = 309,
- IDL_GETRAISES = 310,
- IDL_HOME = 311,
- IDL_IMPORT = 312,
- IDL_MULTIPLE = 313,
- IDL_PRIMARYKEY = 314,
- IDL_PROVIDES = 315,
- IDL_PUBLISHES = 316,
- IDL_SETRAISES = 317,
- IDL_TYPEID = 318,
- IDL_TYPEPREFIX = 319,
- IDL_USES = 320,
- IDL_MANAGES = 321,
- IDL_TYPENAME = 322,
- IDL_PRIMITIVE = 323,
- IDL_PORT = 324,
- IDL_MIRRORPORT = 325,
- IDL_PORTTYPE = 326,
- IDL_CONNECTOR = 327,
- IDL_CONCAT = 328,
- IDL_INTEGER_LITERAL = 329,
- IDL_UINTEGER_LITERAL = 330,
- IDL_STRING_LITERAL = 331,
- IDL_CHARACTER_LITERAL = 332,
- IDL_FLOATING_PT_LITERAL = 333,
- IDL_TRUETOK = 334,
- IDL_FALSETOK = 335,
- IDL_SCOPE_DELIMITOR = 336,
- IDL_LEFT_SHIFT = 337,
- IDL_RIGHT_SHIFT = 338,
- IDL_WCHAR_LITERAL = 339,
- IDL_WSTRING_LITERAL = 340
- };
-#endif
-/* Tokens. */
-#define IDENTIFIER 258
-#define IDL_CONST 259
-#define IDL_MODULE 260
-#define IDL_INTERFACE 261
-#define IDL_TYPEDEF 262
-#define IDL_LONG 263
-#define IDL_SHORT 264
-#define IDL_UNSIGNED 265
-#define IDL_DOUBLE 266
-#define IDL_FLOAT 267
-#define IDL_CHAR 268
-#define IDL_WCHAR 269
-#define IDL_OCTET 270
-#define IDL_BOOLEAN 271
-#define IDL_FIXED 272
-#define IDL_ANY 273
-#define IDL_OBJECT 274
-#define IDL_STRUCT 275
-#define IDL_UNION 276
-#define IDL_SWITCH 277
-#define IDL_ENUM 278
-#define IDL_SEQUENCE 279
-#define IDL_STRING 280
-#define IDL_WSTRING 281
-#define IDL_EXCEPTION 282
-#define IDL_CASE 283
-#define IDL_DEFAULT 284
-#define IDL_READONLY 285
-#define IDL_ATTRIBUTE 286
-#define IDL_ONEWAY 287
-#define IDL_IDEMPOTENT 288
-#define IDL_VOID 289
-#define IDL_IN 290
-#define IDL_OUT 291
-#define IDL_INOUT 292
-#define IDL_RAISES 293
-#define IDL_CONTEXT 294
-#define IDL_NATIVE 295
-#define IDL_LOCAL 296
-#define IDL_ABSTRACT 297
-#define IDL_CUSTOM 298
-#define IDL_FACTORY 299
-#define IDL_PRIVATE 300
-#define IDL_PUBLIC 301
-#define IDL_SUPPORTS 302
-#define IDL_TRUNCATABLE 303
-#define IDL_VALUETYPE 304
-#define IDL_COMPONENT 305
-#define IDL_CONSUMES 306
-#define IDL_EMITS 307
-#define IDL_EVENTTYPE 308
-#define IDL_FINDER 309
-#define IDL_GETRAISES 310
-#define IDL_HOME 311
-#define IDL_IMPORT 312
-#define IDL_MULTIPLE 313
-#define IDL_PRIMARYKEY 314
-#define IDL_PROVIDES 315
-#define IDL_PUBLISHES 316
-#define IDL_SETRAISES 317
-#define IDL_TYPEID 318
-#define IDL_TYPEPREFIX 319
-#define IDL_USES 320
-#define IDL_MANAGES 321
-#define IDL_TYPENAME 322
-#define IDL_PRIMITIVE 323
-#define IDL_PORT 324
-#define IDL_MIRRORPORT 325
-#define IDL_PORTTYPE 326
-#define IDL_CONNECTOR 327
-#define IDL_CONCAT 328
-#define IDL_INTEGER_LITERAL 329
-#define IDL_UINTEGER_LITERAL 330
-#define IDL_STRING_LITERAL 331
-#define IDL_CHARACTER_LITERAL 332
-#define IDL_FLOATING_PT_LITERAL 333
-#define IDL_TRUETOK 334
-#define IDL_FALSETOK 335
-#define IDL_SCOPE_DELIMITOR 336
-#define IDL_LEFT_SHIFT 337
-#define IDL_RIGHT_SHIFT 338
-#define IDL_WCHAR_LITERAL 339
-#define IDL_WSTRING_LITERAL 340
-
-
-
-
-#if ! defined TAO_YYSTYPE && ! defined TAO_YYSTYPE_IS_DECLARED
-typedef union TAO_YYSTYPE
-
-{
- 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_Template_InterfaceHeader *thval; /* Template interface hdr */
- FE_OBVHeader *vhval; /* Valuetype header */
- FE_EventHeader *ehval; /* Event header */
- FE_ComponentHeader *chval; /* Component header */
- FE_HomeHeader *hhval; /* Home 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 */
- ACE_CDR::Boolean bval; /* Boolean value */
- ACE_CDR::Long ival; /* Long value */
- ACE_CDR::ULong uival; /* Unsigned long value */
- ACE_CDR::Double dval; /* Double value */
- ACE_CDR::Float fval; /* Float value */
- ACE_CDR::Char cval; /* Char value */
- ACE_CDR::WChar wcval; /* WChar value */
- UTL_String *sval; /* String value */
- char *wsval; /* WString value */
- char *strval; /* char * value */
- Identifier *idval; /* Identifier */
- UTL_IdList *idlist; /* Identifier list */
- AST_Decl::NodeType ntval; /* Node type value */
- FE_Utils::T_Param_Info *pival; /* Template interface param */
- FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */
- FE_Utils::T_Ref_Info *trval; /* Template interface info */
- FE_Utils::T_REFLIST_INFO *rlval; /* List of above structs */
- FE_Utils::T_Inst_Info *tival; /* Template instantiation */
- FE_Utils::T_Port_Info *ptval; /* Porttype reference */
-}
-/* Line 1489 of yacc.c. */
-
- TAO_YYSTYPE;
-# define tao_yystype TAO_YYSTYPE /* obsolescent; will be withdrawn */
-# define TAO_YYSTYPE_IS_DECLARED 1
-# define TAO_YYSTYPE_IS_TRIVIAL 1
-#endif
-
-extern TAO_YYSTYPE tao_yylval;
-