(1) ::= * + (2) ::= “;” | “;” | “;” | “;” | “;” | “;” | “;” | “;” | “;” | “;” | “;” (3) ::= “module” “{“ + “}” (4) ::= | (5) ::= “{” “}” (6) ::= [ “abstract” | “local” ] “interface” (7) ::= [ “abstract” | “local” ] “interface” [ ] (8) ::= * (9) ::= “;” | “;” | “;” | “;” | “;” | “;” | “;” (10)::=“:” { “,” }* (11) ::= (12) ::= | “::” | “::” //July 2002 CORBA, v3.0: OMG IDL Grammar 3-13 //3 (13) ::= ( | | | ) (14) ::= [ “abstract” ] “valuetype” (15) ::= “valuetype” (16) ::= “abstract” “valuetype” [ ] “{“ * “}” (17) ::= “{“ < value_element>* “}” (18) ::= [“custom” ] “valuetype” [ ] (19) ::= [ “:” [ “truncatable” ] { “,” }* ] [ “supports” { “,” }* ] (20) ::= (21) ::= | < state_member> | (22) ::= ( “public” | “private” ) “;” (23) ::= “factory” “(“ [ ] “)” [ ] “;” (24) ::= { “,” }* (25) ::= (26) ::= “in” (27) ::= “const” “=” (28) ::= | | | | | | | | | (29) ::= (30) ::= | “|” (31) ::= | “^” (32) ::= | “&” (33) ::= | “>>” | “<<” //3-14 Common Object Request Broker Architecture (CORBA), v3.0 July 2002 //3 (34) ::= | “+” | “-” (35) ::= | “*” | “/” | “%” (36) ::= | (37) ::= “-” | “+” | “~” (38) ::= | | “(” “)” (39) ::= | | | | | | | (40) ::= “TRUE” | “FALSE” (41) ::= (42) ::= “typedef” | | | | “native” | (43) ::= (44) ::= | (45) ::= | | (46) ::= | | | | | | | | (47) ::= //July 2002 CORBA, v3.0: OMG IDL Grammar 3-15 //3 | | | (48) ::= | | (49) ::= { “,” }* (50) ::= | (51) ::= (52) ::= (53) ::= “float” | “double” | “long” “double” (54) ::= | (55) ::= | | (56) ::= “short” (57) ::= “long” (58) ::= “long” “long” (59) ::= | | (60) ::= “unsigned” “short” (61) ::= “unsigned” “long” (62) ::= “unsigned” “long” “long” (63) ::= “char” (64) ::= “wchar” (65) ::= “boolean” (66) ::= “octet” (67) ::= “any” (68) ::= “Object” (69) ::= “struct” “{” “}” (70) ::= + (71) ::= “;” (72) ::= “union” “switch” “(” “)” “{” “}” (73) ::= | | | | (74) ::= + //3-16 Common Object Request Broker Architecture (CORBA), v3.0 July 2002 //3 (75) ::= + “;” (76) ::= “case” “:” | “default” “:” (77) ::= (78) ::= “enum” “{” { “,” }* “}” (79) ::= (80) ::= “sequence” “<” “,” “>” | “sequence” “<” “>” (81) ::= “string” “<” “>” | “string” (82) ::= “wstring” “<” “>” | “wstring” (83) ::= + (84) ::= “[” “]” (85) ::= | (86) ::= “exception” “{“ * “}” (87) ::= [ ] [ ] [ ] (88) ::= “oneway” (89) ::= | “void” (90) ::= “(” { “,” }* “)” | “(” “)” (91) ::= (92) ::= “in” | “out” | “inout” (93) ::= “raises” “(” { “,” }* “)” (94) ::= “context” “(” { “,” }* “)” (95) ::= | | | (96) ::= “fixed” “<“ “,” “>” (97) ::= “fixed” (98) ::= “ValueBase” (99) ::= “struct” | “union” //July 2002 CORBA, v3.0: OMG IDL Grammar 3-17 //3 (100) ::= “import” “;” (101) ::= | (102) ::= “typeid” (103) ::= “typeprefix” (104) ::= “readonly” “attribute” (105)::= | { “,” }* (106) ::= “attribute” (107) ::= | { “,” }* (108) ::= [ ] | (109) ::= “getraises” (110) ::= “setraises” (111) ::= “(” { “,” } * “)” //Note – Grammar rules 1 through 111 with the exception of the last three lines of rule //2 constitutes the portion of IDL that is not related to components. (112) ::= | (113) ::= “component” (114) ::= “{” “}” (115) ::= “component” [ ] [ ] (116) ::= “supports” { “,” }* (117) ::= “:” (118) ::= * (119) ::= “;” | “;” | “;” | “;” | “;” | “;” (120) ::= “provides” (121) ::= | “Object” (122) ::= “uses” [ “multiple” ] < interface_type> //3-18 Common Object Request Broker Architecture (CORBA), v3.0 July 2002 //3 (123) ::= “emits” (124) ::= “publishes” (125) ::= “consumes” (126) ::= (127) ::= “home” [ ] [ ] “manages” [ ] (128) ::= “:” (129) ::= “primarykey” (130) ::= “{” * “}” (131) ::= | “;” | “;” (132) ::= “factory” “(“ [ ] “)” [ ] (133) ::= “finder” “(“ [ ] “)” [ ] (134) ::= ( | | ) (135) ::= [ “abstract” ] “eventtype” (136) ::= “abstract” “eventtype” [ ] “{” * “}” (137) ::= “{” * “}” (138) ::= [ “custom” ] “eventtype” [ ]