grammar3.idl revision 608:7e06bf1dcb09
1196200Sscottl/*
2196200Sscottl * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
3196200Sscottl * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4196200Sscottl *
5196200Sscottl * This code is free software; you can redistribute it and/or modify it
6196200Sscottl * under the terms of the GNU General Public License version 2 only, as
7196200Sscottl * published by the Free Software Foundation.  Oracle designates this
8196200Sscottl * particular file as subject to the "Classpath" exception as provided
9196200Sscottl * by Oracle in the LICENSE file that accompanied this code.
10196200Sscottl *
11196200Sscottl * This code is distributed in the hope that it will be useful, but WITHOUT
12196200Sscottl * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13196200Sscottl * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14196200Sscottl * version 2 for more details (a copy is included in the LICENSE file that
15196200Sscottl * accompanied this code).
16196200Sscottl *
17196200Sscottl * You should have received a copy of the GNU General Public License version
18196200Sscottl * 2 along with this work; if not, write to the Free Software Foundation,
19196200Sscottl * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20196200Sscottl *
21196200Sscottl * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22196200Sscottl * or visit www.oracle.com if you need additional information or have any
23196200Sscottl * questions.
24196200Sscottl */
25196200Sscottl
26196200Sscottl/*
27196200Sscottl *    COMPONENT_NAME:  idl.parser
28196200Sscottl *
29196200Sscottl *    ORIGINS: 27
30225331Sjhb *
31196282Sscottl *    5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
32196200Sscottl *
33196200Sscottl */
34196200Sscottl
35196200Sscottl(1) <specification>	<imports> <definition> <specification'> // CORBA3
36196200Sscottl
37196200Sscottl(1) <imports>		e   // CORBA3
38196200Sscottl			<import> <imports>  // CORBA3
39196200Sscottl
40196200Sscottl(1) <import>		"import" <imported_scope> ";"	// CORBA3
41196200Sscottl
42196200Sscottl(1) <imported_scope>	<scoped_name>	// CORBA3
43196200Sscottl			<string_literal>    // CORBA3
44196200Sscottl
45196200Sscottl(1) <specification'>	e
46223345Sbz			<definition><specification'>
47223345Sbz
48196200Sscottl(2) <definition>	<type_dcl> ";"
49196200Sscottl			<const_dcl> ";"
50196200Sscottl			<except_dcl> ";"
51196200Sscottl			<interface> ";"
52196200Sscottl			<module> ";"
53196200Sscottl			<value> ";"
54196200Sscottl			<type_id_dcl> ";" // CORBA3
55196200Sscottl			<type_prefix_dcl> ";"  // CORBA3
56196200Sscottl			<component> ";"	// CORBA3
57196200Sscottl			<home_dcl> ";"	    // CORBA3
58196200Sscottl
59196200Sscottl(2) <type_id_dcl>	"typeId" <scoped_name> <string_literal> // CORBA3
60196200Sscottl
61196200Sscottl(2) <type_prefix_dcl>	"typePrefix" <scoped_name> <string_literal> // CORBA3
62196200Sscottl
63196200Sscottl(3) <module>		"module" <id> "{" <module'> "}"
64196200Sscottl
65196200Sscottl(3) <module'>		<definition><module''>
66251516Ssbruno
67251516Ssbruno(3) <module''>		<definition><module''>
68251516Ssbruno                        e
69196200Sscottl
70196200Sscottl(4) <interface>		<interface_dcl>
71223345Sbz			<forward_dcl>
72223345Sbz
73196200Sscottl(5) <interface_dcl>	<interface_header> "{" <interface_body> "}"
74196200Sscottl
75196200Sscottl(6) <forward_dcl>	"abstract" "interface" <id>
76223345Sbz			"local" "interface" <id>	// CORBA3
77223345Sbz			"interface" <id>
78196200Sscottl
79221208Sjhb(7) <interface_header>	"abstract" "interface" <id> <interface_header'>
80221208Sjhb			"local" "interface" <id> <interface_header'> // CORBA3
81221208Sjhb			"interface" <id> <interface_header'>
82196200Sscottl
83196200Sscottl(7) <interface_header'>	e
84196200Sscottl			<interface_inheritance_spec>
85196200Sscottl
86196200Sscottl(8) <interface_body>	<export><interface_body'>
87196200Sscottl
88196200Sscottl(8) <interface_body'>	e
89196200Sscottl			<export><interface_body'>
90196200Sscottl
91196200Sscottl(9) <export>		<type_dcl> ";"
92196200Sscottl			<const_dcl> ";"
93196200Sscottl			<except_dcl> ";"
94254906Ssbruno			<attr_dcl> ";"
95254906Ssbruno			<op_dcl> ";"
96254906Ssbruno			<type_id_dcl> ";" // CORBA3
97196200Sscottl			<type_prefix_dcl> ";"  // CORBA3
98196200Sscottl
99196200Sscottl(10) <interface_inheritance_spec>	":" <scoped_name> <inheritance_spec'>
100196200Sscottl
101196200Sscottl(10) <interface_inheritance_spec'>	e
102196200Sscottl			"," <scoped_name> <inheritance_spec'>
103196200Sscottl
104196200Sscottl(12) <scoped_name>	<id> <scoped_name'>
105196200Sscottl			"::" <id> <scoped_name'>
106196200Sscottl
107196200Sscottl(12) <scoped_name'>	e
108196200Sscottl			"::" <id> <scoped_name'>
109196200Sscottl
110196200Sscottl(13) <value>		<value_dcl>
111196200Sscottl			<value_abs_dcl>
112225331Sjhb			<value_box_dcl>
113196200Sscottl			<value_forward_dcl>
114196200Sscottl
115196200Sscottl(14) <value_forward_dcl>    "abstract" "valuetype" <id>
116196200Sscottl			"valuetype" <id>
117196200Sscottl
118196200Sscottl(15) <value_box_dcl>	"valuetype" <id> <type_spec>
119196200Sscottl
120196200Sscottl(16) <value_abs_dcl>	"abstract" "valuetype" <id> <value_inheritance_spec> "{" <export> <vad> "}"
121196200Sscottl			"abstract" "valuetype" <id> "{" <export> <vad> "}"
122196200Sscottl
123196200Sscottl(16) <vad>		e
124196200Sscottl			<export> <vad>
125196200Sscottl
126196200Sscottl(17) <value_dcl>	<value_header> "{" <value_element> <ve> "}"
127196200Sscottl
128196200Sscottl(17) <ve>		e
129196200Sscottl			<value_element> <ve>
130196200Sscottl
131196200Sscottl(18) <value_header>	"custom" "valuetype" <id> <value_inheritance_spec>
132196200Sscottl			"valuetype" <id> <value_inheritance_spec>
133196200Sscottl			"custom" "valuetype" <id>
134196200Sscottl			"valuetype" <id>
135196200Sscottl
136196200Sscottl(19) <value_inheritance_spec>	<opt_inherits> <opt_supports>
137196200Sscottl
138196200Sscottl(19) <opt_inherits>	e
139196200Sscottl			":" "truncatable" <value_name> <value_name_list>
140196200Sscottl			":" <value_name> <value_name_list>
141196200Sscottl
142196200Sscottl(19) <value_name_list>	e
143196200Sscottl			"," <value_name> <value_name_list>
144196200Sscottl
145196200Sscottl(19) <opt_supports>	e
146196200Sscottl			"supports" <interface_name> <interface_name_list>
147196200Sscottl
148196200Sscottl(19) <interface_name_list>  e
149251516Ssbruno			"," <interface_name> <interface_name_list>
150251516Ssbruno
151251516Ssbruno(20) <value_name>	<scoped_name>
152251516Ssbruno
153251516Ssbruno(21) <value_element>	<export>
154251516Ssbruno			<state_member>
155251516Ssbruno			<init_dcl>
156251516Ssbruno
157251516Ssbruno(22) <state_member>	"public" <type_spec> <declarators> ";"
158251516Ssbruno			"private" <type_spec> <declarators> ";"
159251516Ssbruno
160251516Ssbruno(23) <init_dcl>		"factory" <id> "(" ")"
161251516Ssbruno			"factory" <id> "(" <init_param_dcls> ")"
162251516Ssbruno
163251516Ssbruno(24) <init_param_dcls>	<init_param_dcl>
164196200Sscottl			<init_param_dcl> "," <init_param_dcls>
165249257Smarkj
166249257Smarkj(25) <init_param_dcl>	<init_param_attribute> <param_type_spec> <simple_declarator>
167249257Smarkj
168249257Smarkj(26) <init_param_attribute> "in"
169249257Smarkj
170249257Smarkj(27) <const_dcl>	"const" <const_type> <id> "=" <const_exp>
171257820Ssbruno
172257820Ssbruno(28) <const_type>	<integer_type>
173257820Ssbruno			<char_type>
174257820Ssbruno			<wide_char_type>
175257820Ssbruno			<boolean_type>
176257820Ssbruno			<floating_pt_type>
177196200Sscottl			<string_type>
178196200Sscottl			<wide_string_type>
179196200Sscottl			<scoped_name>
180196200Sscottl			<octet_type>
181196200Sscottl
182196200Sscottl(29) <const_exp>	<or_expr>
183196200Sscottl
184196200Sscottl(30) <or_expr>		<xor_expr> <or_expr'>
185196200Sscottl
186196200Sscottl(30) <or_expr'>		e
187196200Sscottl			"|" <xor_expr> <or_expr'>
188196200Sscottl
189196200Sscottl(31) <xor_expr>		<and_expr> <xor_expr'>
190196200Sscottl
191196200Sscottl(31) <xor_expr'>	e
192196200Sscottl			"^" <and_expr> <xor_expr'>
193196200Sscottl
194196200Sscottl(32) <and_expr>		<shift_expr><and_expr'>
195196200Sscottl
196196200Sscottl(32) <and_expr'>	e
197223345Sbz			"&" <shift_expr> <and_expr'>
198223345Sbz
199223345Sbz(33) <shift_expr>	<add_expr> <shift_expr'>
200223345Sbz
201223345Sbz(33) <shift_expr'>	e
202223345Sbz			">>" <add_expr> <shift_expr'>
203223345Sbz			"<<" <add_expr> <shift_expr'>
204223345Sbz
205223345Sbz(34) <add_expr>		<mult_expr> <add_expr'>
206223345Sbz
207223345Sbz(34) <add_expr'>	e
208223345Sbz			"+" <mult_expr> <add_expr'>
209223345Sbz			"-" <mult_expr> <add_expr'>
210196200Sscottl
211196200Sscottl(35) <mult_expr>	<unary_expr> <mult_expr'>
212196200Sscottl
213196200Sscottl(35) <mult_expr'>	e
214196200Sscottl			"*" <unary_expr> <mult_expr'>
215196200Sscottl			"/" <unary_expr> <mult_expr'>
216196200Sscottl			"%" <unary_expr> <mult_expr'>
217196200Sscottl
218196200Sscottl(36) <unary_expr>	<unary_operator> <primary_expr>
219196200Sscottl			<primary_expr>
220196200Sscottl
221196200Sscottl(37) <unary_operator>	"-"
222196200Sscottl			"+"
223196200Sscottl			"~"
224196200Sscottl
225196200Sscottl(38) <primary_expr>	<scoped_name>
226196200Sscottl			<literal>
227196200Sscottl			"(" <const_exp> ")"
228196200Sscottl
229196200Sscottl(39) <literal>		<<integer_literal>>
230223345Sbz			<<string_literal>>>
231223345Sbz			<<wide_string_literal>>>
232223345Sbz			<<character_literal>>
233223345Sbz			<<wide_character_literal>>
234223345Sbz			<<fixed_pt_literal>>
235223345Sbz			<<floating_pt_literal>>
236223345Sbz			<<boolean_literal>>
237223345Sbz
238223345Sbz(40) <boolean_literal>	"TRUE"
239223345Sbz			"FALSE"
240196200Sscottl
241196200Sscottl(41) <positive_int_const>   <const_exp>
242196200Sscottl
243196200Sscottl(42) <type_dcl>		"typedef" <type_declarator>
244196200Sscottl			<struct_type>
245196200Sscottl			<union_type>
246196200Sscottl			<enum_type>
247196200Sscottl			"native" <simple_declarator>
248196200Sscottl
249196200Sscottl(43) <type_declarator>	<type_spec> <declarators>
250196200Sscottl
251196200Sscottl(44) <type_spec>	<simple_type_spec>
252196200Sscottl			<constr_type_spec>
253196200Sscottl
254196200Sscottl(45) <simple_type_spec>	<base_type_spec>
255196200Sscottl			<template_type_spec>
256196200Sscottl			<scoped_name>
257196200Sscottl
258196200Sscottl(46) <base_type_spec>	<floating_pt_type>
259196200Sscottl			<integer_type>
260196200Sscottl			<char_type>
261196200Sscottl			<wide_char_type>
262196200Sscottl			<boolean_type>
263196200Sscottl			<octet_type>
264196200Sscottl			<any_type>
265196200Sscottl			<object_type>
266196200Sscottl			<value_base_type>
267196200Sscottl
268196200Sscottl(47) <template_type_spec> <sequence_type>
269196200Sscottl			<string_type>
270196200Sscottl			<wide_string_type>
271196200Sscottl			<fixed_pt_type>
272196200Sscottl
273196200Sscottl(48) <constr_type_spec>	<struct_type>
274196200Sscottl			<union_type>
275196200Sscottl			<enum_type>
276196200Sscottl
277196200Sscottl(49) <declarators>	<declarator> <declarators'>
278196200Sscottl
279196200Sscottl(49) <declarators'>	e
280196200Sscottl			"," <declarator> <declarators'>
281196200Sscottl
282196200Sscottl(50) <declarator>	<simple_declarator>
283196200Sscottl			<complex_declarator>
284196200Sscottl
285196200Sscottl(51) <simple_declarator> <id>
286233522Sjoel
287196200Sscottl(52) <complex_declarator>   <array_declarator>
288196200Sscottl
289196200Sscottl(53) <floating_pt_type>	"float"
290196200Sscottl			"double"
291196200Sscottl			"long" "double"
292196200Sscottl
293196200Sscottl(54) <integer_type>	<signed_int>
294196200Sscottl			<unsigned_int>
295196200Sscottl
296196200Sscottl(55) <signed_int>	"long"
297196200Sscottl			"short"
298196200Sscottl			"long" "long"
299196200Sscottl
300196200Sscottl// 56-58 omitted
301196200Sscottl
302196200Sscottl(59) <unsigned_int>	"unsigned" <signed_int>
303196200Sscottl
304196200Sscottl// 60-62 omitted
305196200Sscottl
306196200Sscottl(63) <char_type>	"char"
307196200Sscottl
308196200Sscottl(64) <wide_char_type>	"wchar"
309196200Sscottl
310196200Sscottl(65) <boolean_type>	"boolean"
311196200Sscottl
312196200Sscottl(66) <octet_type>	"octet"
313210933Sjoel
314196200Sscottl(67) <any_type>		"any"
315196200Sscottl
316196200Sscottl(68) <object_type>	"Object"
317196200Sscottl
318196200Sscottl(69) <struct_type>	"struct" <id> "{" <member_list> "}"
319196200Sscottl
320196200Sscottl(70) <member_list>	<member> <member_list'>
321196200Sscottl
322196200Sscottl(70) <member_list'>	e
323196200Sscottl			<member> <member_list'>
324196200Sscottl
325196200Sscottl(71) <member>		<type_spec> <declarators> ";"
326196200Sscottl
327196200Sscottl(72) <union_type>	"union" <id> "switch" "(" <switch_type_spec> ")" "{" <switch_body> "}"
328196200Sscottl
329196200Sscottl(73) <switch_type_spec>	<integer_type>
330196200Sscottl			<char_type>
331196200Sscottl			<boolean_type>
332196200Sscottl			<enum_type>
333196200Sscottl			<scoped_name>
334196200Sscottl
335196200Sscottl(74) <switch_body>	<case> <switch_body'>
336233522Sjoel
337196200Sscottl(74) <switch_body'>	e
338196200Sscottl			<case> <switch_body'>
339196200Sscottl
340196200Sscottl(75) <case>		<case_label> <case'> <element_spec> ";"
341196200Sscottl
342196200Sscottl(75) <case'>		e
343196200Sscottl			<case_label> <case'>
344196200Sscottl
345196200Sscottl(76) <case_label>	"case" <const_exp> ":"
346196200Sscottl			"default" ":"
347196200Sscottl
348196200Sscottl(77) <element_spec>	<type_spec> <declarator>
349196200Sscottl
350196200Sscottl(78) <enum_type>	"enum" <id> "{" <id> <enum_type'> "}"
351251516Ssbruno
352251516Ssbruno(78) <enum_type'>	e
353196200Sscottl			"," <id> <enum_type'>
354196200Sscottl
355196200Sscottl// 79 omitted
356196200Sscottl
357221208Sjhb(80) <sequence_type>	"sequence" "<" <simple_type_spec> <sequence_type'>
358221208Sjhb
359221208Sjhb(80) <sequence_type'>	"," <positive_int_const> ">"
360196200Sscottl			">"
361196200Sscottl
362196200Sscottl(81) <string_type>	"string"
363196200Sscottl			"string" "<" <positive_int_const> ">"
364196200Sscottl
365196200Sscottl(82) <wide_string_type>	"wstring"
366196200Sscottl			"wstring" "<" <positive_int_const> ">"
367196200Sscottl
368196200Sscottl(83) <array_declarator>	<id> <fixed_array_size>
369196200Sscottl
370196200Sscottl(84) <fixed_array_size>	"[" <positive_int_const> "]"
371196200Sscottl
372196200Sscottl(85) <attr_dcl>		<readonly_attr_spec>	// CORBA3
373196200Sscottl			<attr_spec> // CORBA3
374196200Sscottl
375196200Sscottl(85) <readonly_attr_spec>   <readonly_attr_header> <readonly_attr_declarator>	// CORBA3
376196200Sscottl
377196200Sscottl(85) <readonly_attr_header> "readonly" "attribute" <param_type_spec>	// CORBA3
378196200Sscottl
379196200Sscottl(85) <readonly_attr_declarator> <simple_declarator> <get_excep_expr>	// CORBA3
380196200Sscottl			<simple_declarator> <sds>   // CORBA3
381196200Sscottl
382196200Sscottl(85) <sds>		e   // CORBA3
383196200Sscottl			<simple_declarator> <sds>   // CORBA3
384254906Ssbruno
385254906Ssbruno(85) <attr_spec>	"attribute" <param_type_spec> <attr_declarator>	// CORBA3
386254906Ssbruno
387254906Ssbruno(85) <attr_declarator>	<simple_declarator> <attr_raises_expr>	// CORBA3
388254906Ssbruno			<simple_declarator> <sds>   // CORBA3
389196200Sscottl
390196200Sscottl(85) <attr_raises_expr>	<get_excep_expr>    // CORBA3
391196200Sscottl			<get_excep_expr> <set_excep_expr>   // CORBA3
392196200Sscottl			<set_excep_expr>    // CORBA3
393196200Sscottl
394196200Sscottl(85) <get_excep_expr>	"getRaises" <exception_list>	// CORBA3
395196200Sscottl
396196200Sscottl(85) <set_excep_expr>	"setRaises" <exception_list>	// CORBA3
397196200Sscottl
398196200Sscottl(85) <exception_list>	"(" <scoped_name> <els> ")" // CORBA3
399196200Sscottl
400196200Sscottl(85) <els>		e   // CORBA3
401196200Sscottl			"," <scoped_name> <els>	    // CORBA3
402196200Sscottl
403196200Sscottl(86) <except_dcl>	"exception" <id> "{" <except_dcl'> "}"
404196200Sscottl
405196200Sscottl(86) <except_dcl'>	e
406196200Sscottl			<member> <except_dcl'>
407196200Sscottl
408196200Sscottl(87) <op_dcl>		<op_attribute> <op_type_spec> <op_dcl'>
409196200Sscottl			<op_type_spec> <op_dcl'>
410225331Sjhb
411196200Sscottl(87) <op_dcl'>		<id> <parameter_dcls> <op_dcl''>
412196200Sscottl			<macroID> <parameter_dcls'> <op_dcl''>
413225331Sjhb
414196200Sscottl(87) <op_dcl''>		e
415196200Sscottl			<context_expr>
416196200Sscottl			<raises_expr>
417196200Sscottl			<raises_expr> <context_expr>
418196200Sscottl
419196200Sscottl(88) <op_attribute>	"oneway"
420225331Sjhb
421196200Sscottl(89) <op_type_spec>	<param_type_spec>
422225331Sjhb			"void"
423225331Sjhb
424225331Sjhb(90) <parameter_dcls>	"(" <parameter_dcls'>
425225331Sjhb
426225331Sjhb(90) <parameter_dcls'>	<param_dcl> <parameter_dcls''> ")"
427196200Sscottl			")"
428196200Sscottl
429196200Sscottl(90) <parameter_dcls''>	e
430196200Sscottl			"," <param_dcl> <parameter_dcls''>
431196200Sscottl
432196200Sscottl(91) <param_dcl>	<param_attribute> <param_type_spec> <id>
433196200Sscottl
434196200Sscottl(92) <param_attribute>	"in"
435196200Sscottl			"out"
436196200Sscottl			"inout"
437196200Sscottl
438196200Sscottl(93) <raises_expr>	"raises" "(" <scoped_name> <raises_expr'> ")"
439196200Sscottl
440220363Sjhb(93) <raises_expr'>	e
441196200Sscottl			"," <scoped_name> <raises_expr'>
442196200Sscottl
443196200Sscottl(94) <context_expr>	"context" "(" <string_literal> <context_expr'> ")"
444196200Sscottl
445196200Sscottl(94) <context_expr'>        e
446196200Sscottl			"," <string_literal> <context_expr'>
447196200Sscottl
448196200Sscottl(95) <param_type_spec>	<base_type_spec>
449220363Sjhb			<string_type>
450220363Sjhb			<wide_string_type>
451220363Sjhb			<scoped_name>
452220363Sjhb
453220363Sjhb(96) <fixed_pt_type>	"fixed" "<" <positive_int_const> "," <positive_int_const> ">"
454220363Sjhb
455220363Sjhb(97) <fixed_pt_const_type> "fixed"
456220363Sjhb
457220363Sjhb(98) <value_base_type>	"ValueBase"
458220363Sjhb
459220363Sjhb// CORBA3 Component and Home IDL
460220363Sjhb
461196200Sscottl(200) <component>	<component_dcl>
462196200Sscottl			<component_forward_dcl>
463196200Sscottl
464196200Sscottl(201) <component_forward_dcl>	"component" <id>
465196200Sscottl
466196200Sscottl(202) <component_dcl>	<component_header> "{" <component_body> "}"
467196200Sscottl
468196200Sscottl(203) <component_header> "component" <id>
469196200Sscottl			"component" <id> <component_inheritance_spec>
470196200Sscottl			"component" <id> <supported_interface_spec>
471196200Sscottl			"component" <id> <component_inheritance_spec> <supported_interface_spec>
472196200Sscottl
473196200Sscottl(204) <supported_interface_spec> "supports" <scoped_name> <snames>
474196200Sscottl
475196200Sscottl(204) <snames>		e
476196200Sscottl			"," <scoped_name> <snames>
477196200Sscottl
478196200Sscottl(205) <component_inheritance_spec> ":" <scoped_name>
479196200Sscottl
480196200Sscottl(206) <component_body>	<component_export> <ces>
481196200Sscottl
482196200Sscottl(206) <ces>		e
483196200Sscottl			<component_export> <ces>
484196200Sscottl
485196200Sscottl(207) <component_export>    <provides_dcl> ";"
486196200Sscottl			<uses_dcl> ";"
487196200Sscottl			<emits_dcl> ";"
488196200Sscottl			<publishes_dcl> ";"
489196200Sscottl			<consumes_dcl> ";"
490196200Sscottl			<attr_dcl> ";"
491196200Sscottl
492196200Sscottl(208) <provides_dcl>	"provides" <interface_type> <id>
493196200Sscottl
494196200Sscottl(209) <interface_type>	<scoped_name>
495196200Sscottl			"Object"
496196200Sscottl
497196200Sscottl(210) <uses_dcl>	"uses" <interface_type> <id>
498196200Sscottl			"uses" "multiple" <interface_type> <id>
499196200Sscottl
500196200Sscottl(211) <emits_dcl>	"emits" <scoped_name> <id>
501196200Sscottl
502196200Sscottl(212) <publishes_dcl>	"publishes" <scoped_name> <id>
503196200Sscottl
504196200Sscottl(213) <consumes_dcl>	"consumes" <scoped_name> <id>
505196200Sscottl
506196200Sscottl(214) <home_dcl>	<home_header> <home_body>
507196200Sscottl
508196200Sscottl(215) <home_header>	"home" <id> <home_inheritance_spec> "manages" <scoped_name>
509196200Sscottl			"home" <id> "manages" <scoped_name>
510196200Sscottl			"home" <id> <home_inheritance_spec> "manages" <scoped_name> <primary_key_spec>
511196200Sscottl			"home" <id> "manages" <scoped_name> <primary_key_spec>
512196200Sscottl
513196200Sscottl(216) <home_inheritance_spec> ":" <scoped_name>
514196200Sscottl
515196200Sscottl(217) <primary_key_spec>    "primaryKey" <scoped_name>
516196200Sscottl
517196200Sscottl(218) <home_body>	"{" <home_export> <hes> "}"
518196200Sscottl
519196200Sscottl(218) <hes>		e
520196200Sscottl			<home_export> <hes>
521196200Sscottl
522196200Sscottl(219) <home_export>	<export>
523196200Sscottl			<factory_dcl> ";"
524196200Sscottl			<finder_dcl> ";"
525196200Sscottl
526196200Sscottl(220) <factory_dcl>	"factory" <id> "(" <init_param_dcls> ")" <raises_expr>
527196200Sscottl			"factory" <id> "("  ")" <raises_expr>
528196200Sscottl			"factory" <id> "(" <init_param_dcls> ")"
529196200Sscottl			"factory" <id> "("  ")"
530196200Sscottl
531196200Sscottl(221) <finder_dcl>	"finder" <id> "(" <init_param_dcls> ")" <raises_expr>
532196200Sscottl			"finder" <id> "("  ")" <raises_expr>
533196200Sscottl			"finder" <id> "(" <init_param_dcls> ")"
534196200Sscottl			"finder" <id> "("  ")"
535196200Sscottl
536196200SscottlNOTES:
537196200Sscottl
538196200Sscottl- #define id(id, id, ...) token-string is a macro definition.  There can be no space between the first id and the left paren.  Since id( must be treated as a token and id( can also appear in op_dcl, see that production for the effect of this token.
539196200Sscottl
540196200Sscottl