Issue 563: Object terminal missing from IDL grammar (orb_revision) Source: (, ) Nature: Uncategorized Severity: Summary: Summary: Given the current IDL grammar, there is no way to parse any IDL containing the keyword "Object". It never appears in the grammar as a terminal symbol. Resolution: resolved, closed in "97 Revised Text: Append a line to production (31) and (32) <base_type_spec>, as follows:"| <object_type>", and insert a new production between (31) and (32), as follows"(31a) <object_type> ::="Object"". also, append sentence to second para of 3.2.4 (see corresponding arc Actions taken: May 1, 1997: received issue June 20, 1997: closed issue Discussion: End of Annotations:===== Return-Path: X-Sender: curtis@192.67.184.65 Date: Thu, 01 May 1997 12:17:32 -0400 To: issues@omg.org, orb_revision@omg.org From: David Curtis Subject: my issues Errors-To: owner-issues@omg.org Sender: owner-issues@omg.org X-OMG: issues.1 Hi guys, Somebody told me that you looked at the first one and decided it wasn't an issue. If this is true, could you explain it to me? I'm pretty sure it is. Issues for CORBA Core RTF Issue 1. Object terminal missing from IDL grammar Given the current IDL grammar, there is no way to parse any IDL containing the keyword "Object". It never appears in the grammar as a terminal symbol. For example, try to parse the following IDL given the current grammar. typedef Object bar; Following this chain: (1) ::= + (2) ::= ";" (27) ::= "typedef" (28) ::= we end up trying to parse "Object" as a . (29) ::= | (30) ::= | | (31)::= | | | | | (32) ::= | (33) ::= | | Object will obviously not parse as a constructed type, so from (29) we try to parse it as . In production (30) we can eliminate and . It is important to recognize that Object is not an identifier, it is a keyword. If it were an identifier, it would parse as , but it isn't. It won't parse as a , either. can only produce the following terminal keywords: "float"," double", "long", "short", "unsigned long", "unsigned short", "char", "boolean", "octet", and "any". This isn't just the case for typedefs, it happens anywhere where is used in the grammar, which includes struct members and union elements. It also affects operation return and parameter types, since they are a subset of : (69) ::= | "void" (75) ::= | | which means that you can't parse this: interface boo { void bar(in Object obj); Object beer(); }; This means that most of the CORBAservices IDL won't parse, in theory. The fix is easy; add an Object terminal under : (31)::= | | | | | | (31a) ::= "Object" Return-Path: X-Sender: rabin@postman.opengroup.org Date: Sun, 25 May 1997 17:45:57 -0400 To: jmischki@wheel.dcn.davis.ca.us, curtis@omg.org From: Paul Rabin Subject: issue 563: fixing IDL grammar to support "Object" Cc: orb_revision@omg.org Jeff, David, David Curtis' original proposal for fixing the IDL grammar to support "Object" was to add it as a new alternative under . During the Core RTF meeting in Stresa, Jeff Mischkinsky argued that a better solution is to add it under . After thinking about it, the original solution seems preferable. Both solutions work for and for , but is also used in many contexts where "Object" would be inappropriate. Paul Paul Rabin tel: +1 617 621 8873 The Open Group - Open Software Foundation fax: +1 617 621 0584 11 Cambridge Center email: p.rabin@opengroup.org Cambridge, MA 02142-1405 USA Return-Path: From: Jeffrey Mischkinsky Subject: Re: issue 563: fixing IDL grammar to support "Object" To: rabin@osf.org (Paul Rabin) Date: Tue, 27 May 1997 12:36:12 -0700 (PDT) Cc: jmischki@wheel.dcn.davis.ca.us, curtis@omg.org, orb_revision@omg.org > > Jeff, David, > > David Curtis' original proposal for fixing the IDL grammar to support "Object" was to add it as a new alternative under . During the Core RTF meeting in Stresa, Jeff Mischkinsky argued that a better solution is to add it under . After thinking about it, the original solution seems preferable. Both solutions work for and for , but is also used in many contexts where "Object" would be inappropriate. > no problem. i don't particularly care, how it gets fixed. The practical result will be the same--the spec will be brought into conformance with existing implementations. jeff > Paul > > Paul Rabin tel: +1 617 621 8873 > The Open Group - Open Software Foundation fax: +1 617 621 0584 > 11 Cambridge Center email: p.rabin@opengroup.org > Cambridge, MA 02142-1405 > USA > > > -- Jeff Mischkinsky jmischki@dcn.davis.ca.us +1 916-758-9850 jeffm@visigenic.com +1 415-312-5158 #563 CLOSED Section 3.4, pages 3-9 to 3-13 Comment: Given the current IDL grammar, there is no way to parse any IDL containing the keyword "Object". It never appears in the grammar as a terminal symbol. Resolution: Append a line to production (31) , as follows: "| ", and insert a new production between (31) and (32), as follows: "(31a) ::= "Object"". Also, append a sentence to the second paragraph of 3.2.4, as follows: "The keywork "Object" can be used as a type specifier." Discussion: Jeff Mischkinsky proposed adding to , instead.