specification |
::= |
( ( idl_pp )* definition )+ |
definition |
::= |
type_dcl ";" |
|
| |
const_dcl ";" |
|
| |
except_dcl ";" |
|
| |
interfacex ";" |
|
| |
module ";" |
module |
::= |
"module" identifier "{" ( ( idl_pp )* definition )* "}" |
interfacex |
::= |
"pseudo" interfacex1 |
|
| |
"abstract" interfacex1 |
|
| |
interfacex1 |
interfacex1 |
::= |
interface_dcl |
|
| |
forward_dcl |
interface_dcl |
::= |
interface_header "{" interface_body "}" |
forward_dcl |
::= |
"interface" identifier |
interface_header |
::= |
"interface" identifier ( inheritance_spec )? |
interface_body |
::= |
( ( idl_pp )* export )* |
export |
::= |
type_dcl ";" |
|
| |
const_dcl ";" |
|
| |
except_dcl ";" |
|
| |
attr_dcl ";" |
|
| |
op_dcl ";" |
inheritance_spec |
::= |
":" scoped_name ( inheritance_spec1 )* |
inheritance_spec1 |
::= |
"," scoped_name |
scoped_name |
::= |
scoped_name1 |
scoped_name1 |
::= |
"::" identifier ( scoped_name2 )* |
|
| |
identifier ( scoped_name2 )* |
scoped_name2 |
::= |
"::" identifier |
const_dcl |
::= |
"const" const_type identifier "=" const_exp |
const_type |
::= |
floating_type |
|
| |
integer_type |
|
| |
char_type |
|
| |
boolean_type |
|
| |
string_type |
|
| |
fixed_type |
|
| |
scoped_name |
const_exp |
::= |
or_expr |
or_expr |
::= |
xor_expr ( or_expr1 )* |
or_expr1 |
::= |
"|" xor_expr |
xor_expr |
::= |
and_expr ( xor_expr1 )* |
xor_expr1 |
::= |
"^" and_expr |
and_expr |
::= |
shift_expr ( and_expr1 )* |
and_expr1 |
::= |
"&" shift_expr |
shift_expr |
::= |
add_expr ( shift_expr1 )* |
shift_expr1 |
::= |
">>" add_expr |
|
| |
"<<" add_expr |
add_expr |
::= |
mult_expr ( add_expr1 )* |
add_expr1 |
::= |
"+" mult_expr |
|
| |
"-" mult_expr |
mult_expr |
::= |
unary_expr ( mult_expr1 )* |
mult_expr1 |
::= |
"*" unary_expr |
|
| |
"/" unary_expr |
|
| |
"%" unary_expr |
unary_expr |
::= |
"-" primary_expr |
|
| |
"+" primary_expr |
|
| |
"~" primary_expr |
|
| |
primary_expr |
primary_expr |
::= |
scoped_name |
|
| |
literal |
|
| |
"(" const_exp ")" |
literal |
::= |
integer_literal |
|
| |
string_literal |
|
| |
character_literal |
|
| |
floating_literal |
|
| |
boolean_literal |
boolean_literal |
::= |
"TRUE" |
|
| |
"FALSE" |
positive_int_const |
::= |
const_exp |
type_dcl |
::= |
"typedef" type_spec type_declarators |
|
| |
"native" native_type |
|
| |
constr_type_spec |
type_spec |
::= |
simple_type_spec |
|
| |
constr_type_spec |
simple_type_spec |
::= |
base_type_spec |
|
| |
template_type_spec |
|
| |
scoped_name |
base_type_spec |
::= |
floating_type |
|
| |
integer_type |
|
| |
char_type |
|
| |
boolean_type |
|
| |
octet_type |
|
| |
object_type |
|
| |
any_type |
template_type_spec |
::= |
sequence_type |
|
| |
fixed_type |
|
| |
string_type |
constr_type_spec |
::= |
struct_type |
|
| |
union_type |
|
| |
enum_type |
type_declarators |
::= |
t_declarator ( "," t_declarator )* |
t_declarator |
::= |
complex_declarator |
|
| |
simple_declarator |
simple_declarator |
::= |
identifier |
complex_declarator |
::= |
array_declarator |
array_declarator |
::= |
identifier ( fixed_array_size )+ |
fixed_array_size |
::= |
"[" positive_int_const "]" |
floating_type |
::= |
"float" |
|
| |
"double" |
|
| |
"long" "double" |
integer_type |
::= |
"unsigned" int_type |
|
| |
int_type |
int_type |
::= |
"long" "long" |
|
| |
"long" |
|
| |
"short" |
char_type |
::= |
"char" |
|
| |
"wchar" |
boolean_type |
::= |
"boolean" |
octet_type |
::= |
"octet" |
object_type |
::= |
"Object" |
any_type |
::= |
"any" |
native_type |
::= |
simple_declarator |
s_declarator |
::= |
complex_declarator |
|
| |
simple_declarator |
e_declarator |
::= |
complex_declarator |
|
| |
simple_declarator |
u_declarator |
::= |
complex_declarator |
|
| |
simple_declarator |
struct_type |
::= |
"struct" identifier "{" ( ( idl_pp )* struct_member_dcl )+ "}" |
struct_member_dcl |
::= |
type_spec struct_declarators |
struct_declarators |
::= |
s_declarator ( "," s_declarator )* ";" |
union_type |
::= |
"union" identifier "switch" "(" switch_type_spec ")" "{" switch_body "}" |
switch_type_spec |
::= |
integer_type |
|
| |
char_type |
|
| |
boolean_type |
|
| |
enum_type |
|
| |
scoped_name |
switch_body |
::= |
( casex )+ |
casex |
::= |
( idl_pp )* case_label ( ( idl_pp )* case_label1 )* union_member_dcl ";" |
case_label |
::= |
"case" const_exp ":" |
|
| |
"default" ":" |
case_label1 |
::= |
"case" const_exp ":" |
union_member_dcl |
::= |
type_spec union_declarators |
union_declarators |
::= |
u_declarator |
enum_type |
::= |
"enum" identifier "{" enumerator ( "," enumerator )* "}" |
enumerator |
::= |
identifier |
sequence_type |
::= |
"sequence" "<" simple_type_spec sequence_type1 |
sequence_type1 |
::= |
"," positive_int_const ">" |
|
| |
">" |
fixed_type |
::= |
"fixed" "<" positive_int_const "," integer_literal ">" |
string_type |
::= |
"string" "<" positive_int_const ">" |
|
| |
"string" |
|
| |
"wstring" "<" positive_int_const ">" |
|
| |
"wstring" |
attr_dcl |
::= |
"readonly" "attribute" param_type_spec attr_declarator ( "," attr_declarator )* |
|
| |
"attribute" param_type_spec attr_declarator ( "," attr_declarator )* |
attr_declarator |
::= |
simple_declarator |
except_dcl |
::= |
"exception" identifier "{" ( ( idl_pp )* exception_member_dcl )* "}" |
exception_member_dcl |
::= |
type_spec exception_declarators |
exception_declarators |
::= |
e_declarator ( "," e_declarator )* ";" |
op_dcl |
::= |
"oneway" "void" identifier parameter_dcls ( context_expr )? |
|
| |
op_type_spec identifier parameter_dcls ( raises_expr )? ( context_expr )? |
op_type_spec |
::= |
param_type_spec |
|
| |
"void" |
parameter_dcls |
::= |
"(" ( param_dcl ( "," param_dcl )* )? ")" |
param_dcl |
::= |
param_attribute param_type_spec simple_declarator |
param_attribute |
::= |
"in" |
|
| |
"out" |
|
| |
"inout" |
raises_expr |
::= |
"raises" "(" raises_expr1 ( "," raises_expr1 )* ")" |
raises_expr1 |
::= |
scoped_name |
context_expr |
::= |
"context" "(" context_expr1 ( "," context_expr1 )* ")" |
context_expr1 |
::= |
string_literal |
param_type_spec |
::= |
base_type_spec |
|
| |
string_type |
|
| |
scoped_name |
identifier |
::= |
<ID> |
integer_literal |
::= |
<OCTALINT> |
|
| |
<DECIMALINT> |
|
| |
<HEXADECIMALINT> |
string_literal |
::= |
<STRING> ( string_literal1 )* |
string_literal1 |
::= |
<STRING> |
character_literal |
::= |
<CHARACTER> |
floating_literal |
::= |
<FLOATONE> |
|
| |
<FLOATTWO> |
idl_pp |
::= |
<JAVADOC> |
|
| |
"#pragma" <ID> |
|
| |
"#" idl_post_cpp |
|
| |
idl_pre_cpp |
idl_pragma1 |
::= |
scoped_name <STRING> |
idl_pragma2 |
::= |
<STRING> |
idl_pragma3 |
::= |
scoped_name integer_literal "." integer_literal |
idl_post_cpp |
::= |
integer_literal <STRING> ( idl_postcpp1 )* |
idl_postcpp1 |
::= |
integer_literal |
idl_pre_cpp |
::= |
"#include" |
|
| |
"#if" |
|
| |
"#ifdef" |
|
| |
"#ifndef" |
|
| |
"#elif" |
|
| |
"#fi" |