Recursive Grammar with EMF [message #1842471] |
Mon, 21 June 2021 04:10  |
Eclipse User |
|
|
|
I am trying to add some simple recursion in my rules and I am using EMF for generating the code of my models.
I tried following the recursion guide in the docs, but get an error:
"Cannot add supertype 'JdlExpression' to sealed type 'JdlBracedExpression'."
I don't want Expression to be a Supertype of BracedExpression (since it might contain multiple expressions).
Here are my rules:
JdlExpressions returns JdlExpressions:
{JdlExpressions}
exp+=JdlExpression*
;
JdlExpression returns JdlExpression:
{JdlExpression}
(=> JdlBracedExpression | ID)
;
JdlBracedExpression returns JdlBracedExpression:
"(" exp=JdlExpressions ")"
;
My Genmodel:
<genClasses ecoreClass="cbcmodel.ecore#//JdlExpressions">
<genFeatures createChild="true" ecoreFeature="ecore:EReference cbcmodel.ecore#//JdlExpressions/exp"/>
</genClasses>
<genClasses ecoreClass="cbcmodel.ecore#//JdlExpression">
</genClasses>
<genClasses ecoreClass="cbcmodel.ecore#//JdlBracedExpression">
<genFeatures createChild="true" ecoreFeature="ecore:EReference cbcmodel.ecore#//JdlExpressions/exp"/>
</genClasses>
Ecore:
<eClassifiers xsi:type="ecore:EClass" name="JdlExpressions">
<eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="-1" eType="#//JdlExpression"
containment="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="JdlExpression">
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="JdlBracedExpression">
<eStructuralFeatures xsi:type="ecore:EReference" name="exp" upperBound="1" eType="#//JdlExpressions"
containment="true"/>
</eClassifiers>
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.05597 seconds