-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathREADME.IDL.txt
285 lines (284 loc) · 11 KB
/
README.IDL.txt
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
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
CORBA - Part 1: Interfaces, v3.3, 7.4 IDL Grammar
(1) <specification> ::= <import>* <definition>+
(2) <definition> ::=
<type_dcl> ";"
| <const_dcl> ";"
| <except_dcl> ";"
| <interface> ";"
| <module> ";"
| <value> ";"
| <type_id_dcl> ";"
| <type_prefix_dcl> ";"
| <event> ";"
| <component> ";"
| <home_dcl> ";"
(3) <module> ::= "module" <identifier> "{" <definition>+ "}"
(4) <interface> ::=
<interface_dcl>
| <forward_dcl>
(5) <interface_dcl> ::= <interface_header> "{" <interface_body> "}"
(6) <forward_dcl> ::= [ "abstract" | "local" ] "interface" <identifier>
(7) <interface_header> ::= [ "abstract" | "local" ] "interface" <identifier>
[ <interface_inheritance_spec> ]
(8) <interface_body> ::= <export>*
(9) <export>::=<type_dcl> ";"
| <const_dcl> ";"
| <except_dcl> ";"
| <attr_dcl> ";"
| <op_dcl> ";"
| <type_id_dcl> ";"
| <type_prefix_dcl> ";"
(10) <interface_inheritance_spec> ::= ":" <interface_name> { "," <interface_name> }*
(11) <interface_name> ::= <scoped_name>
(12) <scoped_name> ::=
<identifier>
| "::" <identifier>
| <scoped_name> "::" <identifier>
(13) <value> ::= ( <value_dcl> | <value_abs_dcl> | <value_box_dcl> | <value_forward_dcl> )
(14) <value_forward_dcl> ::= [ "abstract" ] "valuetype" <identifier>
(15) <value_box_dcl> ::= "valuetype" <identifier> <type_spec>
(16) <value_abs_dcl> ::= "abstract" "valuetype" <identifier>
[ <value_inheritance_spec> ]
"{" <export>* "}"
(17) <value_dcl> ::= <value_header> "{" < value_element>* "}"
(18) <value_header> ::=
["custom" ] "valuetype" <identifier>
[ <value_inheritance_spec> ]
(19) <value_inheritance_spec> ::= [ ":" [ "truncatable" ] <value_name>
{ "," <value_name> }* ]
[ "supports" <interface_name>
{ "," <interface_name> }* ]
(20) <value_name> ::=<scoped_name>
(21) <value_element> ::= <export> | < state_member> | <init_dcl>
(22) <state_member> ::= ( "public" | "private" )
<type_spec> <declarators> ";"
(23) <init_dcl> ::= "factory" <identifier> "(" [ <init_param_decls> ] ")" [ <raises_expr> ] ";"
(24) <init_param_decls> ::= <init_param_decl> { "," <init_param_decl> }*
(25) <init_param_decl> ::= <init_param_attribute> <param_type_spec> <simple_declarator>
(26) <init_param_attribute> ::= "in"
(27) <const_dcl> ::= "const" <const_type> <identifier> "=" <const_exp>
(28) <const_type> ::=
<integer_type>
| <char_type>
| <wide_char_type>
| <boolean_type>
| <floating_pt_type>
| <string_type>
| <wide_string_type>
| <fixed_pt_const_type>
| <scoped_name>
| <octet_type>
(29) <const_exp> ::= <or_expr>
(30) <or_expr> ::=
<xor_expr>
| <or_expr> "|" <xor_expr>
(31) <xor_expr> ::=
<and_expr>
| <xor_expr> "^" <and_expr>
(32) <and_expr> ::=
<shift_expr>
| <and_expr> "&" <shift_expr>
(33) <shift_expr> ::=
<add_expr>
| <shift_expr> ">>" <add_expr>
| <shift_expr> "<<" <add_expr>
(34) <add_expr> ::=
<mult_expr>
| <add_expr> "+" <mult_expr>
| <add_expr> "-" <mult_expr>
(35) <mult_expr> ::=
<unary_expr>
| <mult_expr> "*" <unary_expr>
| <mult_expr> "/" <unary_expr>
| <mult_expr> "%" <unary_expr>
(36) <unary_expr> ::= <unary_operator> <primary_expr>
| <primary_expr>
(37) <unary_operator> ::=
"-"
| "+"
| "~"
(38) <primary_expr> ::=
<scoped_name>
| <literal>
| "(" <const_exp> ")"
(39) <literal> ::=
<integer_literal>
| <string_literal>
| <wide_string_literal>
| <character_literal>
| <wide_character_literal>
| <fixed_pt_literal>
| <floating_pt_literal>
| <boolean_literal>
(40) <boolean_literal> ::= "TRUE" | "FALSE"
(41) <positive_int_const> ::= <const_exp>
(42) <type_dcl> ::= "typedef"
<type_declarator> <struct_type>
| <union_type>
| <enum_type>
| "native" <simple_declarator>
| <constr_forward_decl>
(43) <type_declarator> ::= <type_spec> <declarators>
(44) <type_spec> ::=
<simple_type_spec>
| <constr_type_spec>
(45) <simple_type_spec> ::=
<base_type_spec>
| <template_type_spec>
| <scoped_name>
(46) <base_type_spec> ::=
<floating_pt_type>
| <integer_type>
| <char_type>
| <wide_char_type>
| <boolean_type>
| <octet_type>
| <any_type>
| <object_type>
| <value_base_type>
(47) <template_type_spec> ::=
<sequence_type>
| <string_type>
| <wide_string_type>
| <fixed_pt_type>
(48) <constr_type_spec> ::=
<struct_type>
| <union_type>
| <enum_type>
(49) <declarators> ::= <declarator> { "," <declarator> }*
(50) <declarator> ::=
<simple_declarator>
| <complex_declarator>
(51) <simple_declarator> ::= <identifier>
(52) <complex_declarator> ::= <array_declarator>
(53) <floating_pt_type> ::=
"float"
| "double"
| "long" "double"
(54) <integer_type> ::=
<signed_int>
| <unsigned_int>
(55) <signed_int> ::=
<signed_short_int>
| <signed_long_int>
| <signed_longlong_int>
(56) <signed_short_int> ::= "short"
(57) <signed_long_int> ::= "long"
(58) <signed_longlong_int> ::= "long" "long"
(59) <unsigned_int> ::=
<unsigned_short_int>
| <unsigned_long_int>
| <unsigned_longlong_int>
(60) <unsigned_short_int> ::= "unsigned" "short"
(61) <unsigned_long_int> ::= "unsigned" "long"
(62) <unsigned_longlong_int> ::= "unsigned" "long" "long"
(63) <char_type> ::= "char"
(64) <wide_char_type> ::= "wchar"
(65) <boolean_type> ::= "boolean"
(66) <octet_type> ::= "octet"
(67) <any_type> ::= "any"
(68) <object_type> ::= "Object"
(69) <struct_type> ::= "struct" <identifier> "{" <member_list> "}"
(70) <member_list> ::= <member>+
(71) <member> ::= <type_spec> <declarators> ";"
(72) <union_type> ::= "union" <identifier> "switch"
"(" <switch_type_spec> ")"
"{" <switch_body> "}"
(73) <switch_type_spec> ::=
<integer_type>
| <char_type>
| <boolean_type>
| <enum_type>
| <scoped_name>
(74) <switch_body> ::= <case>+
(75) <case> ::= <case_label>+ <element_spec> ";"
(76) <case_label> ::=
"case" <const_exp> ":"
| "default" ":"
(77) <element_spec> ::= <type_spec> <declarator>
(78) <enum_type> ::= "enum" <identifier> "{" <enumerator> { "," <enumerator> }∗ "}"
(79) <enumerator> ::= <identifier>
(80) <sequence_type>::="sequence" "<" <simple_type_spec> "," <positive_int_const> ">" | "sequence" "<" <simple_type_spec> ">"
(81) <string_type>::="string" "<" <positive_int_const> ">" | "string"
(82) <wide_string_type>::="wstring" "<" <positive_int_const> ">" | "wstring"
(83) <array_declarator>::=<identifier> <fixed_array_size>+
(84) <fixed_array_size>::="[" <positive_int_const> "]"
(85) <attr_dcl> ::= <readonly_attr_spec> | <attr_spec>
(86) <except_dcl>::="exception" <identifier> "{" <member>* "}"
(87) <op_dcl>::=[ <op_attribute> ] <op_type_spec> <identifier> <parameter_dcls>
[ <raises_expr> ] [ <context_expr> ]
(88) <op_attribute>::="oneway"
(89) <op_type_spec>::=<param_type_spec> | "void"
(90) <parameter_dcls>::="(" <param_dcl> { "," <param_dcl> }∗ ")" | "(" ")"
(91) <param_dcl>::=<param_attribute> <param_type_spec> <simple_declarator>
(92) <param_attribute> ::=
"in"
| "out"
| "inout"
(93) <raises_expr>::="raises" "(" <scoped_name> { "," <scoped_name> }∗ ")"
(94) <context_expr>::="context" "(" <string_literal> { "," <string_literal> }∗ ")"
(95) <param_type_spec> ::=
<base_type_spec>
| <string_type>
| <wide_string_type>
| <scoped_name>
(96) <fixed_pt_type>::="fixed" "<" <positive_int_const> "," <positive_int_const> ">"
(97) <fixed_pt_const_type>::="fixed"
(98) <value_base_type>::= "ValueBase"
(99) <constr_forward_decl>::="struct" <identifier> | "union" <identifier>
(100) <import> ::= "import" <imported_scope> ";"
(101) <imported_scope> ::= <scoped_name> | <string_literal>
(102) <type_id_dcl> ::="typeid" <scoped_name> <string_literal>
(103) <type_prefix_dcl>::="typeprefix" <scoped_name> <string_literal>
(104) <readonly_attr_spec> ::= "readonly" "attribute" <param_type_spec> <readonly_attr_declarator>
(105) <readonly_attr_declarator>::= <simple_declarator> <raises_expr> | <simple_declarator>
{ "," <simple_declarator> }*
(106) <attr_spec> ::= "attribute" <param_type_spec>
<attr_declarator>
(107) <attr_declarator> ::=<simple_declarator> <attr_raises_expr> | <simple_declarator>
{ "," <simple_declarator> }*
(108) <attr_raises_expr> ::=<get_excep_expr> [ <set_excep_expr> ] | <set_excep_expr>
(109) <get_excep_expr> ::= "getraises" <exception_list>
(110) <set_excep_expr> ::= "setraises" <exception_list>
(111) <exception_list>::= "(" <scoped_name>
{ "," <scoped_name> } * ")"
(112) <component> ::=
<component_dcl>
| <component_forward_dcl>
(113) <component_forward_dcl> ::= "component" <identifier>
(114) <component_dcl> ::= <component_header> "{" <component_body> "}"
(115) <component_header> ::= "component" <identifier> [ <component_inheritance_spec> ]
[ <supported_interface_spec> ]
(116) <supported_interface_spec> ::= "supports" <scoped_name> { "," <scoped_name> }*
(117) <component_inheritance_spec> ::= ":" <scoped_name>
(118) <component_body> ::=<component_export>*
(119) <component_export> ::=
<provides_dcl> ";"
| <uses_dcl> ";"
| <emits_dcl> ";"
| <publishes_dcl> ";"
| <consumes_dcl> ";"
| <attr_dcl> ";"
(120) <provides_dcl> ::= "provides" <interface_type> <identifier>
(121) <interface_type> ::= <scoped_name> | "Object"
(122) <uses_dcl> ::= "uses" [ "multiple" ] < interface_type> <identifier>
(123) <emits_dcl> ::= "emits" <scoped_name> <identifier>
(124) <publishes_dcl> ::= "publishes" <scoped_name> <identifier>
(125) <consumes_dcl> ::= "consumes" <scoped_name> <identifier> (126) <home_dcl> ::= <home_header> <home_body>
(127) <home_header> ::= "home" <identifier> [ <home_inheritance_spec> ]
[ <supported_interface_spec> ] "manages" <scoped_name> [ <primary_key_spec> ]
(128) <home_inheritance_spec> ::= ":" <scoped_name>
(129) <primary_key_spec> ::= "primarykey" <scoped_name>
(130) <home_body> ::= "{" <home_export>* "}"
(131) <home_export ::= <export> | <factory_dcl> ";"
| <finder_dcl> ";"
(132) <factory_dcl> ::= "factory" <identifier>
"(" [ <init_param_decls> ] ")" [ <raises_expr> ]
(133) <finder_dcl> ::= "finder" <identifier> "(" [ <init_param_decls> ] ")"
[ <raises_expr> ]
(134) <event> ::= ( <event_dcl> | <event_abs_dcl> | <event_forward_dcl>)
(135) <event_forward_dcl> ::=[ "abstract" ] "eventtype" <identifier>
(136) <event_abs_dcl> ::="abstract" "eventtype" <identifier> [ <value_inheritance_spec> ]
"{" <export>* "}"
(137) <event_dcl>::=<event_header> "{" <value_element> * "}"
(138) <event_header>::=[ "custom" ] "eventtype" <identifier> [ <value_inheritance_spec> ]