/*
 * Copyright (c) 1999, 2009, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 *    COMPONENT_NAME:  idl.parser
 *
 *    ORIGINS: 27
 *
 *    5639-D57, (C) COPYRIGHT International Business Machines Corp., 1997, 1998
 *
 */

CORBA 2.3 IDL
---------------

(1) <specification>	<definition><specification'>

(1) <specification'>	e
			<definition><specification'>

(2) <definition>	<type_dcl> ";"
			<const_dcl> ";"
			<except_dcl> ";"
			<interface> ";"
			<module> ";"
			<value> ";"

(3) <module>		"module" <id> "{" <module'> "}"

(3) <module'>		<definition><module''>

(3) <module''>		<definition><module''>
                        e

(4) <interface>		<interface_dcl>
			<forward_dcl>

(5) <interface_dcl>	<interface_header> "{" <interface_body> "}"

(6) <forward_dcl>	"abstract" "interface" <id>
			"interface" <id>

(7) <interface_header>	"abstract" "interface" <id> <interface_header'>
			"interface" <id> <interface_header'>

(7) <interface_header'>	e
			<interface_inheritance_spec>

(8) <interface_body>	<export><interface_body'>

(8) <interface_body'>	e
			<export><interface_body'>

(9) <export>		<type_dcl> ";"
			<const_dcl> ";"
			<except_dcl> ";"
			<attr_dcl> ";"
			<op_dcl> ";"



(10) <interface_inheritance_spec>	":" <scoped_name> <inheritance_spec'>

(10) <interface_inheritance_spec'>	e
			"," <scoped_name> <inheritance_spec'>

(12) <scoped_name>	<id> <scoped_name'>
			"::" <id> <scoped_name'>

(12) <scoped_name'>	e
			"::" <id> <scoped_name'>

(13) <value>		<value_dcl>
			<value_abs_dcl>
			<value_box_dcl>
			<value_forward_dcl>

(14) <value_forward_dcl>    "abstract" "valuetype" <id>
			"valuetype" <id>

(15) <value_box_dcl>	"valuetype" <id> <type_spec>

(16) <value_abs_dcl>	"abstract" "valuetype" <id> <value_inheritance_spec> "{" <export> <vad> "}"
			"abstract" "valuetype" <id> "{" <export> <vad> "}"

(16) <vad>		e
			<export> <vad>

(17) <value_dcl>	<value_header> "{" <value_element> <ve> "}"

(17) <ve>		e
			<value_element> <ve>

(18) <value_header>	"custom" "valuetype" <id> <value_inheritance_spec>
			"valuetype" <id> <value_inheritance_spec>
			"custom" "valuetype" <id>
			"valuetype" <id>

(19) <value_inheritance_spec>	<opt_inherits> <opt_supports>

(19) <opt_inherits>	e
			":" "truncatable" <value_name> <value_name_list>
			":" <value_name> <value_name_list>

(19) <value_name_list>	e
			"," <value_name> <value_name_list>

(19) <opt_supports>	e
			"supports" <interface_name> <interface_name_list>

(19) <interface_name_list>  e
			"," <interface_name> <interface_name_list>

(20) <value_name>	<scoped_name>

(21) <value_element>	<export>
			<state_member>
			<init_dcl>

(22) <state_member>	"public" <type_spec> <declarators> ";"
			"private" <type_spec> <declarators> ";"

(23) <init_dcl>		"factory" <id> "(" ")"
			"factory" <id> "(" <init_param_dcls> ")"

(24) <init_param_dcls>	<init_param_decl>
			<init_param_decl> "," <init_param_dcls>

(25) <init_param_dcl>	<init_param_attribute> <param_type_spec> <simple_declarator>

(26) <init_param_attribute> "in"

(27) <const_dcl>	"const" <const_type> <id> "=" <const_exp>

(28) <const_type>	<integer_type>
			<char_type>
			<wide_char_type>
			<boolean_type>
			<floating_pt_type>
			<string_type>
			<wide_string_type>
			<scoped_name>
			<octet_type>

(29) <const_exp>	<or_expr>

(30) <or_expr>		<xor_expr> <or_expr'>

(30) <or_expr'>		e
			"|" <xor_expr> <or_expr'>

(31) <xor_expr>		<and_expr> <xor_expr'>

(31) <xor_expr'>	e
			"^" <and_expr> <xor_expr'>

(32) <and_expr>		<shift_expr><and_expr'>

(32) <and_expr'>	e
			"&" <shift_expr> <and_expr'>

(33) <shift_expr>	<add_expr> <shift_expr'>

(33) <shift_expr'>	e
			">>" <add_expr> <shift_expr'>
			"<<" <add_expr> <shift_expr'>

(34) <add_expr>		<mult_expr> <add_expr'>

(34) <add_expr'>	e
			"+" <mult_expr> <add_expr'>
			"-" <mult_expr> <add_expr'>

(35) <mult_expr>	<unary_expr> <mult_expr'>

(35) <mult_expr'>	e
			"*" <unary_expr> <mult_expr'>
			"/" <unary_expr> <mult_expr'>
			"%" <unary_expr> <mult_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>

(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> <declarators'>

(49) <declarators'>	e
			"," <declarator> <declarators'>

(50) <declarator>	<simple_declarator>
			<complex_declarator>

(51) <simple_declarator> <id>

(52) <complex_declarator>   <array_declarator>

(53) <floating_pt_type>	"float"
			"double"
			"long" "double"

(54) <integer_type>	<signed_int>
			<unsigned_int>

(55) <signed_int>	"long"
			"short"
			"long" "long"

// 56-58 omitted

(59) <unsigned_int>	"unsigned" <signed_int>

// 60-62 omitted

(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" <id> "{" <member_list> "}"

(70) <member_list>	<member> <member_list'>

(70) <member_list'>	e
			<member> <member_list'>

(71) <member>		<type_spec> <declarators> ";"

(72) <union_type>	"union" <id> "switch" "(" <switch_type_spec> ")" "{" <switch_body> "}"

(73) <switch_type_spec>	<integer_type>
			<char_type>
			<boolean_type>
			<enum_type>
			<scoped_name>

(74) <switch_body>	<case> <switch_body'>

(74) <switch_body'>	e
			<case> <switch_body'>

(75) <case>		<case_label> <case'> <element_spec> ";"

(75) <case'>		e
			<case_label> <case'>

(76) <case_label>	"case" <const_exp> ":"
			"default" ":"

(77) <element_spec>	<type_spec> <declarator>

(78) <enum_type>	"enum" <id> "{" <id> <enum_type'> "}"

(78) <enum_type'>	e
			"," <id> <enum_type'>

// 79 omitted

(80) <sequence_type>	"sequence" "<" <simple_type_spec> <sequence_type'>

(80) <sequence_type'>	"," <positive_int_const> ">"
			">"

(81) <string_type>	"string"
			"string" "<" <positive_int_const> ">"

(82) <wide_string_type>	"wstring"
			"wstring" "<" <positive_int_const> ">"

(83) <array_declarator>	<id> <fixed_array_size>

(84) <fixed_array_size>	"[" <positive_int_const> "]"

(85) <attr_dcl>		"readonly" "attribute" <param_type_spec> <id> <attr_dcl'>
			"attribute" <param_type_spec> <id> <attr_dcl'>

(85) <attr_dcl'>	e
			"," <id> <attr_dcl'>

(86) <except_dcl>	"exception" <id> "{" <except_dcl'> "}"

(86) <except_dcl'>	e
			<member> <except_dcl'>

(87) <op_dcl>		<op_attribute> <op_type_spec> <op_dcl'>
			<op_type_spec> <op_dcl'>

(87) <op_dcl'>		<id> <parameter_dcls> <op_dcl''>
			<macroID> <parameter_dcls'> <op_dcl''>

(87) <op_dcl''>		e
			<context_expr>
			<raises_expr>
			<raises_expr> <context_expr>

(88) <op_attribute>	"oneway"

(89) <op_type_spec>	<param_type_spec>
			"void"

(90) <parameter_dcls>	"(" <parameter_dcls'>

(90) <parameter_dcls'>	<param_dcl> <parameter_dcls''> ")"
			")"

(90) <parameter_dcls''>	e
			"," <param_dcl> <parameter_dcls''>

(91) <param_dcl>	<param_attribute> <param_type_spec> <id>

(92) <param_attribute>	"in"
			"out"
			"inout"

(93) <raises_expr>	"raises" "(" <scoped_name> <raises_expr'> ")"

(93) <raises_expr'>	e
			"," <scoped_name> <raises_expr'>

(94) <context_expr>	"context" "(" <string_literal> <context_expr'> ")"

(94) <context_expr'>        e
			"," <string_literal> <context_expr'>

(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"

NOTES:

- #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.

