Issue 10935: 9.18 Identifiers (qvt-rtf) Source: Model Driven Solutions (Dr. Edward Willink, ed(at)willink.me.uk) Nature: Uncategorized Issue Severity: Summary: The syntax of identifiers is undefined. The syntax for mapping clearly prohibits the use of a direction named 'where'. Suggest: identifier is an OCL simpleName, less the new reserved words (check default enforce imports map realize refines transformation uses where) Suggest: a string-literal may be used as an identifier to support awkward identifiers such as 'where'. Resolution: Identifiers The syntax of identifiers is undefined. The syntax for mapping clearly prohibits the use of a direction named 'where'. Suggest: identifier is an OCL simpleName, less the new reserved words (check default enforce imports map realize refines transformation uses where) Suggest: a string-literal may be used as an identifier to support awkward identifiers such as 'where'. Discussion OCL 2.3/2.4 clarified identifiers and strings so we can just exploit the OCL productions including it's underscore-prefixed-string identifier. OCL 2.3 also introduced String::_'+' so no special description is needed for a QVTr extension. Revised Text: In 7.13.2 replace The "_" OCL prefix convention for escaping reserved words can be used to refer to conflicting properties or class names. by Reserved words and awkward characters may be used within identifiers using OCL's underscore-prefixed-string-literal escape. e.g _'key' _'new\nline' A simple underscore prefix may also be used but is now deprecated. Delete 7.13.4 Shorthands used to invoke pre-defined operations The binary operator ?+? can be used as shorthand for the string concat operation. In 7.13.5 add Production names ending CS are defined by OCL. <identifier> :: <simpleNameCS> replace all usages of <TypeCS> by <typeCS>. In 8.4.7 after keywords add <identifier> ::= <simpleNameCS> // from OCL<STRING> ::= (#x22 StringChar* #x22) | (#x27 StringChar* #x27) // from OCL StringLiteralExpCS In 9.18 add Production names ending CS are defined by OCL. DirectionName ::= simpleNameCS MappingName ::= pathNameCS PackageName ::= pathNameCS PropertyName ::= simpleNameCS QueryName ::= pathNameCS TransformationName ::= pathNameCS VariableName ::= simpleNameCS TypeDeclaration ::= typeCS BooleanOCLExpr ::= OclExpressionCS QueryOCLExpr ::= OclExpressionCS SlotOwnerOCLExpr ::= OclExpressionCS ValueOCLExpr ::= OclExpressionCS Actions taken: March 25, 2007: received issue December 22, 2015: Resolved March 29, 2016: closed issue Discussion: It is hard to tackle this properly until we have the model-driven specification generated technology and clear OCL grammar that OCL 2.5 will pioneer. Disposition: Deferred End of Annotations:===== s is issue # 10935 From: "Ed Willink" 9.18 Identifiers The syntax of identifiers is undefined. The syntax for mapping clearly prohibits the use of a direction named 'where'. Suggest: identifier is an OCL simpleName, less the new reserved words (check default enforce imports map realize refines transformation uses where) Suggest: a string-literal may be used as an identifier to support awkward identifiers such as 'where'.