/*
 * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 *    COMPONENT_NAME:  idl.parser
 *
 *    ORIGINS: 27
 *
 *    5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
 *
 */

CORBA IDL
---------------

<specification>      typedef, struct, union, enum, const, exception, interface, module

<specification'>     <FOLLOW>, typedef, struct, union, enum, const, exception, interface, module

<definition>         typedef, struct, union, enum, const, exception, interface, module

<module>             module

<module'>            typedef, struct, union, enum, const, exception, interface, module

<module''>           typedef, struct, union, enum, const, exception, interface, module, <FOLLOW>

<interface>          interface

<interface'>         <FOLLOW>, :, {

<interface_dcl>      :, {

<interface_body>	  typedef, struct, union, enum, const, exception, readonly, attribute, oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void, state

<interface_body'>    <FOLLOW>, typedef, struct, union, enum, const, exception, readonly, attribute, oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void, state

<export>             typedef, struct, union, enum, const, exception, readonly, attribute, oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void, state

<state_def>          state

<state_def'>         private, protected, public, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum, <FOLLOW>

<state_member>       private, protected, public, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<state_modifier>     private, protected, public

<inheritance_spec>   :

<inheritance_spec'>  <FOLLOW>, ","

<scoped_name>        id, ::

<scoped_name'>       <FOLLOW>, ::

<const_dcl>          const

<const_type>         long, short, unsigned, char, boolean, float, double, string, id, ::

<const_exp>          -, +, ~, id, ::, literal, (

<or_expr>            -, +, ~, id, ::, literal, (

<or_expr'>           <FOLLOW>, |

<xor_expr>           -, +, ~, id, ::, literal, (

<xor_expr'>          <FOLLOW>, ^

<and_expr>           -, +, ~, id, ::, literal, (

<and_expr'>          <FOLLOW>, &

<shift_expr>         -, +, ~, id, ::, literal, (

<shift_expr'>        <FOLLOW>, >>, <<

<add_expr>           -, +, ~, id, ::, literal, (

<add_expr'>          <FOLLOW>, +, -

<mult_expr>          -, +, ~, id, ::, literal, (

<mult_expr'>         <FOLLOW>, *, /, %

<unary_expr>         -, +, ~, id, ::, literal, (

<unary_operator>     -, +, ~

<primary_expr>       id, ::, literal, (

<literal>            literals

<positive_int_const> -, +, ~, id, ::, literal, (

<type_dcl>           typedef, struct, union, enum

<type_declarator>    float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<type_spec>          float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<simple_type_spec>   float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::

<base_type_spec>     float, double, long, short, unsigned, char, boolean, octet, any

<template_type_spec> sequence, string

<constr_type_spec>   struct, union, enum

<declarators>        id

<declarators'>       <FOLLOW>, ","

<declarator>         id

<declarator'>        <FOLLOW>, [

<floating_pt_type>   float, double

<integer_type>       long, short, unsigned

<signed_int>         long, short

<unsigned_int>       unsigned

<char_type>          char

<boolean_type>       boolean

<octet_type>         octet

<any_type>           any

<struct_type>        struct

<member_list>        float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<member_list'>       <FOLLOW>, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<member>             float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<union_type>         union

<switch_type_spec>   long, short, unsigned, char, boolean, enum, id, ::

<switch_body>        case, default

<switch_body'>       <FOLLOW>, case, default

<case>               case, default

<case'>              <FOLLOW>, case, default

<case_label>         case, default

<element_spec>       float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<enum_type>          enum

<enum_type'>         <FOLLOW>, ","

<sequence_type>      sequence

<sequence_type'>     ",", >

<string_type>        string

<string_type'>       <FOLLOW>, <

<fixed_array_size>   [

<attr_dcl>           readonly, attribute

<attr_dcl'>          <FOLLOW>, ","

<except_dcl>         exception

<except_dcl'>        <FOLLOW>, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum

<op_dcl>             oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void

<op_dcl'>            id, macroID

<op_dcl''>           <FOLLOW>, raises, context, ;

<op_dcl'''>          <FOLLOW>, context

<op_attribute>       oneway

<op_type_spec>       float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void

<parameter_dcls>     (

<parameter_dcls'>    in, out, inout, )

<parameter_dcls''>   <FOLLOW>, ","

<param_dcl>          in, out, inout

<param_attribute>    in, out, inout

<raises_expr>        raises

<raises_expr'>       <FOLLOW>, ","

<context_expr>       context

<context_expr'>      <FOLLOW>, ","

<param_type_spec>    float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::

