ORSL Version 1.0.1
© 2001, 2007, 2017 by TranSeed Internet Solutions. All rights reserved.
The Object Relationship Specification Language, ORSL, is a simple declarative language designed to permit rapid design of object oriented applications and systems. ORSL is free of drawing constructs, permitting significantly quicker data entry and manipulation than languages such as UML in exchange for pretty graphic presentation.
The syntax is defined only by a set of operators. Each operator is represented in an expression by a one or two ASCII character sign. The meaning of the operators and expressions derived from their combination is intuitive to those with object oriented design expertise. Contextualization is provided below for terms that require clarification. A table is provided below to define the ORSL operators and there evaluation precedence.
ORSL has several attractive features.
Containment in ORSL implies that the container is solely responsible for destruction of that which it contains, whether or not the contained item is located within the memory allocated for the container.
Aggregation in ORSL implies that the item contained cooperates with one or more containers to ensure that destruction occurs at the appropriate instant. This implies a reference counting mechanism or the equivalent.
Reference in ORSL implies that the container relies on the existence of that which it references for the life of the reference, but does not include containment. That is that the responsibility of destruction is delegated to other objects than the container in accordance with a pattern that guarantees the integrity of the reference.
Property in ORSL implies that the access to the item considered a property conforms to the canonical definition of a property for the target language, and also component architecture, if one exists.
Self, as denoted by the key word "self", refers to the subject of the sentence or parenthetical group, which is the first item of the sentence or parenthetical group.
Operators with higher numbered precedence are evaluated first.
|1||right to left||c||must contain|
|p||must contain property|
|ap||must aggregate property|
|i||must be [either] a[n]|
|m||must map to|
|u||must uniquely map to|
|2||right to left||o||provides the operation|
|rw||reading from and writing to|
|pr||passing responsibility (of destruction) for|
|ar||assuming responsibility (of destruction) for|
|3||left to right||,||aggregate and|
|4||left to right||&&||logical and|
|5||left to right||||||logical or|
|7||right to left||w||with|
|8||n/a||1..9||between 1 and 9, inclusively, of|
|1..*||any positive number of|
|*..7||any non-negative number, up to 7, of|
|*||any non-negative number of|
|7||exactly 7 (exactly 1 is the default)|
|9||n/a||< ... >||type parameterization|
|11||10 (done first)||( ... )||parenthetical grouping|