first.set revision 608:7e06bf1dcb09
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
35CORBA IDL
36---------------
37
38<specification>      typedef, struct, union, enum, const, exception, interface, module
39
40<specification'>     <FOLLOW>, typedef, struct, union, enum, const, exception, interface, module
41
42<definition>         typedef, struct, union, enum, const, exception, interface, module
43
44<module>             module
45
46<module'>            typedef, struct, union, enum, const, exception, interface, module
47
48<module''>           typedef, struct, union, enum, const, exception, interface, module, <FOLLOW>
49
50<interface>          interface
51
52<interface'>         <FOLLOW>, :, {
53
54<interface_dcl>      :, {
55
56<interface_body>	  typedef, struct, union, enum, const, exception, readonly, attribute, oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void, state
57
58<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
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>          state
63
64<state_def'>         private, protected, public, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum, <FOLLOW>
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>     private, protected, public
69
70<inheritance_spec>   :
71
72<inheritance_spec'>  <FOLLOW>, ","
73
74<scoped_name>        id, ::
75
76<scoped_name'>       <FOLLOW>, ::
77
78<const_dcl>          const
79
80<const_type>         long, short, unsigned, char, boolean, float, double, string, id, ::
81
82<const_exp>          -, +, ~, id, ::, literal, (
83
84<or_expr>            -, +, ~, id, ::, literal, (
85
86<or_expr'>           <FOLLOW>, |
87
88<xor_expr>           -, +, ~, id, ::, literal, (
89
90<xor_expr'>          <FOLLOW>, ^
91
92<and_expr>           -, +, ~, id, ::, literal, (
93
94<and_expr'>          <FOLLOW>, &
95
96<shift_expr>         -, +, ~, id, ::, literal, (
97
98<shift_expr'>        <FOLLOW>, >>, <<
99
100<add_expr>           -, +, ~, id, ::, literal, (
101
102<add_expr'>          <FOLLOW>, +, -
103
104<mult_expr>          -, +, ~, id, ::, literal, (
105
106<mult_expr'>         <FOLLOW>, *, /, %
107
108<unary_expr>         -, +, ~, id, ::, literal, (
109
110<unary_operator>     -, +, ~
111
112<primary_expr>       id, ::, literal, (
113
114<literal>            literals
115
116<positive_int_const> -, +, ~, id, ::, literal, (
117
118<type_dcl>           typedef, struct, union, enum
119
120<type_declarator>    float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
121
122<type_spec>          float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
123
124<simple_type_spec>   float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::
125
126<base_type_spec>     float, double, long, short, unsigned, char, boolean, octet, any
127
128<template_type_spec> sequence, string
129
130<constr_type_spec>   struct, union, enum
131
132<declarators>        id
133
134<declarators'>       <FOLLOW>, ","
135
136<declarator>         id
137
138<declarator'>        <FOLLOW>, [
139
140<floating_pt_type>   float, double
141
142<integer_type>       long, short, unsigned
143
144<signed_int>         long, short
145
146<unsigned_int>       unsigned
147
148<char_type>          char
149
150<boolean_type>       boolean
151
152<octet_type>         octet
153
154<any_type>           any
155
156<struct_type>        struct
157
158<member_list>        float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
159
160<member_list'>       <FOLLOW>, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
161
162<member>             float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
163
164<union_type>         union
165
166<switch_type_spec>   long, short, unsigned, char, boolean, enum, id, ::
167
168<switch_body>        case, default
169
170<switch_body'>       <FOLLOW>, case, default
171
172<case>               case, default
173
174<case'>              <FOLLOW>, case, default
175
176<case_label>         case, default
177
178<element_spec>       float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
179
180<enum_type>          enum
181
182<enum_type'>         <FOLLOW>, ","
183
184<sequence_type>      sequence
185
186<sequence_type'>     ",", >
187
188<string_type>        string
189
190<string_type'>       <FOLLOW>, <
191
192<fixed_array_size>   [
193
194<attr_dcl>           readonly, attribute
195
196<attr_dcl'>          <FOLLOW>, ","
197
198<except_dcl>         exception
199
200<except_dcl'>        <FOLLOW>, float, double, long, short, unsigned, char, boolean, octet, any, sequence, string, id, ::, struct, union, enum
201
202<op_dcl>             oneway, float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void
203
204<op_dcl'>            id, macroID
205
206<op_dcl''>           <FOLLOW>, raises, context, ;
207
208<op_dcl'''>          <FOLLOW>, context
209
210<op_attribute>       oneway
211
212<op_type_spec>       float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::, void
213
214<parameter_dcls>     (
215
216<parameter_dcls'>    in, out, inout, )
217
218<parameter_dcls''>   <FOLLOW>, ","
219
220<param_dcl>          in, out, inout
221
222<param_attribute>    in, out, inout
223
224<raises_expr>        raises
225
226<raises_expr'>       <FOLLOW>, ","
227
228<context_expr>       context
229
230<context_expr'>      <FOLLOW>, ","
231
232<param_type_spec>    float, double, long, short, unsigned, char, boolean, octet, any, string, id, ::
233
234