1 /*
   2  * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 /*
  27  *    COMPONENT_NAME:  idl.parser
  28  *
  29  *    ORIGINS: 27
  30  *
  31  *    5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
  32  *
  33  */
  34 
  35 CORBA IDL
  36 -----------------
  37 
  38 <specification>      EOF
  39 
  40 <specification'>     EOF
  41 
  42 <definition>         EOF, typedef, struct, union, enum, const, exception, interface, module, }
  43 
  44 <module>             ;
  45 
  46 <module'>            }
  47 
  48 <module''>           }
  49 
  50 <interface>          ;
  51 
  52 <interface'>         ;
  53 
  54 <interface_dcl>      ;
  55 
  56 <interface_body>     }
  57 
  58 <interface_body'>    }
  59 
  60 <export>             typedef, struct, union, enum, const, exception, readonly, attribute, oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void, state, }
  61 
  62 <state_def>          typedef, struct, union, enum, const, exception, readonly, attribute, oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void, state, }
  63 
  64 <state_def'>         }
  65 
  66 <state_member>       private, protected, public, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum, }
  67 
  68 <state_modifier>     float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
  69 
  70 <inheritance_spec>   {
  71 
  72 <inheritance_spec'>  {
  73 
  74 <scoped_name>        ",", {, id, ::, literal, (, >, ), macroID
  75 
  76 <scoped_name'>       ",", {, id, ::, literal, (, >, ), macroID
  77 
  78 <const_dcl>          ;
  79 
  80 <const_type>         id
  81 
  82 <const_exp>          ;, ), >, ], :
  83 
  84 <or_expr>            ;, ), >, ], :
  85 
  86 <or_expr'>           ;, ), >, ], :
  87 
  88 <xor_expr>           |, ;, ), >, ], :
  89 
  90 <xor_expr'>          | ;, ), >, ], :
  91 
  92 <and_expr>           ^, |, ;, ), >, ], :
  93 
  94 <and_expr'>          ^, |, ;, ), >, ], :
  95 
  96 <shift_expr>         &, ^, |, ;, ), >, ], :
  97 
  98 <shift_expr'>        &, ^, |, ;, ), >, ], :
  99 
 100 <add_expr>           >>, <<, &, ^, |, ;, ), >, ], :
 101 
 102 <add_expr'>          >>, <<, &, ^, |, ;, ), >, ], :
 103 
 104 <mult_expr>          >>, <<, &, ^, |, ;, ), >, ], :
 105 
 106 <mult_expr'>         +, -, >>, <<, &, ^, |, ;, ), >, ], :
 107 
 108 <unary_expr>         *, /, %, +, -, >>, <<, &, ^, |,  ;, ), >, ], :
 109 
 110 <unary_operator>     id, ::, literal, (
 111 
 112 <primary_expr>       *, /, %, +, -, >>, <<, &, ^, |,  ;, ), >, ], :
 113 
 114 <literal>            *, /, %, +, -, >>, <<, &, ^, |,  ;, ), >, ], : (and , for string literal in <context_expr>)
 115 
 116 <positive_int_const> >, ]
 117 
 118 <type_dcl>           ;
 119 
 120 <type_declarator>    ;
 121 
 122 <type_spec>          id
 123 
 124 <simple_type_spec>   id, ",", >
 125 
 126 <base_type_spec>     id, ",", >, macroID
 127 
 128 <template_type_spec> id, ",", >
 129 
 130 <constr_type_spec>   id
 131 
 132 <declarators>        ;
 133 
 134 <declarators'>       ;
 135 
 136 <declarator>         ",", ;
 137 
 138 <declarator'>        ",", ;
 139 
 140 <floating_pt_type>   id, ",", >, macroID
 141 
 142 <integer_type>       id, ",", >, macroID, )
 143 
 144 <signed_int>         id, ",", >, macroID, )
 145 
 146 <unsigned_int>       id, ",", >, macroID, )
 147 
 148 <char_type>          id, ",", >, macroID, )
 149 
 150 <boolean_type>       id, ",", >, macroID, )
 151 
 152 <octet_type>         id, ",", >, macroID
 153 
 154 <any_type>           id, ",", >, macroID
 155 
 156 <struct_type>        ;, id
 157 
 158 <member_list>        }
 159 
 160 <member_list'>       }
 161 
 162 <member>             float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum, }
 163 
 164 <union_type>         ;, id
 165 
 166 <switch_type_spec>   )
 167 
 168 <switch_body>        }
 169 
 170 <switch_body'>       }
 171 
 172 <case>               case, default, }
 173 
 174 <case'>              float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
 175 
 176 <case_label>         case, default, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
 177 
 178 <element_spec>       ;
 179 
 180 <enum_type>          ;, id, )
 181 
 182 <enum_type'>         }
 183 
 184 <sequence_type>      id, ",", >
 185 
 186 <sequence_type'>     id, ",", >
 187 
 188 <string_type>        id, ",", >, macroID
 189 
 190 <string_type'>       id, ",", >, macroID
 191 
 192 <fixed_array_size>   [, ",", ;
 193 
 194 <attr_dcl>           ;
 195 
 196 <attr_dcl'>          ;
 197 
 198 <except_dcl>         ;
 199 
 200 <except_dcl'>        }
 201 
 202 <op_dcl>             ;
 203 
 204 <op_dcl'>            ;
 205 
 206 <op_dcl''>           ;
 207 
 208 <op_dcl'''>          ;
 209 
 210 <op_attribute>       float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void
 211 
 212 <op_type_spec>       id, macroID
 213 
 214 <parameter_dcls>     raises, context, ;
 215 
 216 <parameter_dcls'>    raises, context, ;
 217 
 218 <parameter_dcls''>   )
 219 
 220 <param_dcl>          , )
 221 
 222 <param_attribute>    float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::
 223 
 224 <raises_expr>        context, ;
 225 
 226 <raises_expr'>       )
 227 
 228 <context_expr>       ;
 229 
 230 <context_expr'>      )
 231 
 232 <param_type_spec>    id, macroID
 233