Issue 1680: Use of lexical components (notif_service-rtf) Source: (, ) Nature: Revision Severity: Summary: Summary: Firstly, due to the use of lexical components such as "and", "or", "not", etc., the grammar is not context free. A backslash (I assume the syntactic category <CompEsc> is a backslash) is used to distinguish runtime variables from symbol names, and this is enough to ensure that any symbol subsequent to "\" is treated as an <Ident>. However, the <CompDot> lexical category doesn"t provide for an escaped <Ident>. However, I believe the following is legal IDL: struct A { long and; }; This leads to a situation where a constraint such as: $.A.and == 34 must be regarded as syntactically incorrect for the grammar to remain context free. I believe that the issue can be resolved without ambiguity by extending <CompDot> to allow a backslash followed by a <CompIdent>. Resolution: Revised Text: Actions taken: July 15, 1998: received issue February 23, 1999: closed issue Discussion: End of Annotations:===== Return-Path: Date: Wed, 15 Jul 1998 10:24:56 +1000 From: briggs Organization: DSTC Pty Ltd To: issues@omg.org CC: notification@dstc.edu.au, briggs@dstc.edu.au Subject: Notification Service Issues Hello everyone, I'd like to raise some issues concerning the Notification Service constraint language. Firstly, due to the use of lexical components such as "and", "or", "not", etc., the grammar is not context free. A backslash (I assume the syntactic category is a backslash) is used to distinguish runtime variables from symbol names, and this is enough to ensure that any symbol subsequent to '\' is treated as an . However, the lexical category doesn't provide for an escaped . However, I believe the following is legal IDL: struct A { long and; }; This leads to a situation where a constraint such as: $.A.and == 34 must be regarded as syntactically incorrect for the grammar to remain context free. I believe that the issue can be resolved without ambiguity by extending to allow a backslash followed by a . := \ | | _length | _d | _type_id | _repos_id The above example would then become: $.A.\and == 34