follow.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>      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
234