...
Now when you parse it , you get an array of dottedExpressionAttribute items, each of which may or may not have an attribute operator.
Parsing subRefinements
The normative grammar is ambiguous with respect to the eclRefinement rule. Suppose we are trying to parse the following constraint:
< 404684003 |Clinical finding| :
363698007 |Finding site|= << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis|
116676008 |Associated morphology| = << 415582006 |Stenosis|
The significant rules are the following:
eclRefinement = subRefinement ws [conjunctionRefinementSet / disjunctionRefinementSet]
subRefinement = eclAttributeSet / eclAttributeGroup / "(" ws eclRefinement ws ")"
The example expression constraint could either be parsed as a single subRefinement with a single eclAttributeSet, or as an eclAttribute (as the subRefinement) followed a conjunctionRefinementSet.
To resolve this ambiguity, it is proposed that the subRefinement rule is changed as follows:
subRefinement = eclAttribute / eclAttributeGroup / "(" ws eclRefinement ws ")"
Selecting Concepts Recorded in Additional Reference Set Attributes
...