Summary
This issue proposes additions and clarifications to the EXPRESS-Q specification based on formal analysis comparing the specification against implementation requirements and architecture documentation.
Identified Gaps
1. Incomplete EBNF Grammar
The current grammar in express-q.ebnf is missing several constructs that are documented in the specification prose:
- Inverse navigation operator (
<-): Documented in symbols table but not in EBNF
- Constraint blocks (
{}, \!{}): Documented but grammar only shows []
- Alternative blocks (
()): Documented but not in EBNF relationship production
- Required path blocks (
<>): Documented but not in EBNF
- Supertype constraint (
||): Documented but not in EBNF
- Aggregate index (
[i], [n]): Documented but not in EBNF
- Line continuation (
\): Documented but not in EBNF
- Enumeration literals (
.VALUE.): Not documented at all
2. Missing Constraint Expression Grammar
The specification states:
constraint_expression = ? expression following EXPRESS syntax ?
This is incomplete. Need formal grammar for:
- Comparison operators (
=, <>, <, >, <=, >=)
- Boolean operators (
AND, OR, NOT)
- String literals (
'value')
- Enumeration literals (
.TRUE., .MAXIMUM_MATERIAL_CONDITION.)
- Attribute paths (
entity.attribute)
3. Missing Operator Precedence
No explicit precedence rules for combining operators in complex reference paths.
4. Missing MAPPING_OF Template
Cross-module reference substitution via /MAPPING_OF(entity)/ is used in practice but not documented.
5. Negative Constraint Logic Rules
The \!{} operator is documented but no rules for:
- Logical interaction with positive constraints
- Contradiction detection
- Satisfiability requirements
Proposed Changes
- Extend EBNF grammar with complete operator coverage
- Add formal constraint expression grammar
- Add operator precedence table
- Document MAPPING_OF template syntax
- Add negative constraint validation rules
References
- ISO 10303-11:2004 — EXPRESS Language Reference Manual
- ISO TC 184/SC 4 N2661 — Guidelines for the Development of Mapping Specifications
- Mapping Spec Validator formal analysis documentation
Summary
This issue proposes additions and clarifications to the EXPRESS-Q specification based on formal analysis comparing the specification against implementation requirements and architecture documentation.
Identified Gaps
1. Incomplete EBNF Grammar
The current grammar in
express-q.ebnfis missing several constructs that are documented in the specification prose:<-): Documented in symbols table but not in EBNF{},\!{}): Documented but grammar only shows[]()): Documented but not in EBNF relationship production<>): Documented but not in EBNF||): Documented but not in EBNF[i],[n]): Documented but not in EBNF\): Documented but not in EBNF.VALUE.): Not documented at all2. Missing Constraint Expression Grammar
The specification states:
This is incomplete. Need formal grammar for:
=,<>,<,>,<=,>=)AND,OR,NOT)'value').TRUE.,.MAXIMUM_MATERIAL_CONDITION.)entity.attribute)3. Missing Operator Precedence
No explicit precedence rules for combining operators in complex reference paths.
4. Missing MAPPING_OF Template
Cross-module reference substitution via
/MAPPING_OF(entity)/is used in practice but not documented.5. Negative Constraint Logic Rules
The
\!{}operator is documented but no rules for:Proposed Changes
References