Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » TMF (Xtext) » Xtext project from ECore with abstract types
Xtext project from ECore with abstract types [message #1067004] Fri, 05 July 2013 12:00 Go to next message
Vincent De Bry is currently offline Vincent De BryFriend
Messages: 55
Registered: May 2013
Member
Hi,

I have created an XTEXT project from an ECore.
This ECore has been generated from a XSD containing this partial specification, based on abstract types and groups:
  <xsd:complexType name="CT_operation" abstract="true">
    <xsd:sequence>
      <xsd:element ref="doc" minOccurs="0" />
    </xsd:sequence>
    <xsd:attribute name="name" type="OperationName" use="required"/>
  </xsd:complexType>


  <xsd:complexType name="CT_event" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="CT_operation">
        <xsd:sequence>
          <xsd:element name="parameter" type="CT_qualified_field" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>


  <xsd:complexType name="CT_sent_event">
    <xsd:complexContent>
      <xsd:extension base="CT_event">
        <xsd:attribute name="period" type="xsd:decimal" use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>


  <xsd:complexType name="CT_received_event">
    <xsd:complexContent>
      <xsd:extension base="CT_event"/>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:group name="operations_not_in_transaction">
    <xsd:choice>
      <xsd:element name="event_received" type="CT_received_event" minOccurs="0">
        <xsd:unique name="param_event_received">
          <xsd:selector xpath="parameter"/>
          <xsd:field xpath="@name"/>
        </xsd:unique>
      </xsd:element>
 ...
    </xsd:choice>
  </xsd:group>


  <xsd:group name="operations_in_transaction">
    <xsd:choice>
       <xsd:element name="event_sent" type="CT_sent_event" minOccurs="0">
        <xsd:unique name="param_event_sent">
          <xsd:selector xpath="parameter"/>
          <xsd:field xpath="@name"/>
        </xsd:unique>
      </xsd:element>
...
    </xsd:choice>
  </xsd:group>


  <xsd:group name="all_operations">
    <xsd:choice>
      <xsd:group ref="operations_in_transaction"/>
      <xsd:group ref="operations_not_in_transaction"/>
    </xsd:choice>
  </xsd:group>


  <xsd:complexType name="CT_operations">
    <xsd:group ref="all_operations" maxOccurs="unbounded"/>
  </xsd:complexType>

I have an issue with the generated Xtext project:

The Rule generated for CT_operations only looks like:
CTOperations returns ComponentType::CTOperations:
	{ComponentType::CTOperations}
	'CTOperations';

=> no rule generated for CT_received_event nor CT_sent_event

If I am trying to define the rules manually, like:
CTOperations returns ComponentType::CTOperations:
	{ComponentType::CTOperations}
	'{'
	(eventSent+=CTSentEvent)?
	(eventReceived+=CTReceivedEvent)?
	'}';

Decimal returns ecore::EBigDecimal:
	INT;

CTSentEvent returns ComponentType::CTSentEvent:
	'eventSent' period=Decimal;

CTReceivedEvent returns ComponentType::CTReceivedEvent:
	{ComponentType::CTReceivedEvent}
	'eventReceived';

I am facing 2 problems with using the generated editor:
1/ I don't have access to inherited attibutes of the abstract types CT_event (parameter) and CT_operation (doc and name)

2/ It appears the the ECore has been generated with a EFeatureMapEntry for the group/choice and I am getting the following exception when I am entering the keyword 'eventSent':
An internal error occurred during: "Xtext validation".
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$ContainmentUpdatingFeatureMapEntry cannot be cast to org.eclipse.emf.ecore.EObject

=> I don't know how to manage the FeaturingMapEntry. Do I have to add sometinh in the Xtext grammar ?

Could someone please help me with thesebig troubles that totally stoppe me ?

Sorry for the length of my post.
Thanks
Re: Xtext project from ECore with abstract types [message #1067011 is a reply to message #1067004] Fri, 05 July 2013 12:33 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
Vincent,

Is the schema itself within your control such that you could perhaps
change it in a way that allows you to suppress the generation of feature
maps? I.e., if it could be expressed using substitution groups it would
potentially be possible to suppress the feature maps entirely:

http://ed-merks.blogspot.de/2007/12/winters-icy-grip.html

In particular I think the use of <xsd:group ref="all_operations"
maxOccurs="unbounded"/> could refer instead to an abstract element
that's the head of a substitution group where the things in here (don't
know what's in your ...) would be in that substitution group.

<xsd:group name="operations_not_in_transaction">
<xsd:choice>
<xsd:element name="event_received" type="CT_received_event"
minOccurs="0">
<xsd:unique name="param_event_received">
<xsd:selector xpath="parameter"/>
<xsd:field xpath="@name"/>
</xsd:unique>
</xsd:element>
....
</xsd:choice>
</xsd:group>


<xsd:group name="operations_in_transaction">
<xsd:choice>
<xsd:element name="event_sent" type="CT_sent_event" minOccurs="0">
<xsd:unique name="param_event_sent">
<xsd:selector xpath="parameter"/>
<xsd:field xpath="@name"/>
</xsd:unique>
</xsd:element>
...
</xsd:choice>
</xsd:group>

So potentially you could specify the same valid XML because a
substitution group is essentially like a choice of the members of the
group (though unfortunately they need to be global elements). Whether
that works depends on what else you have in your "..." and in particular
on each of them having a unique type such that the appropriate element
can be deduced from just the type.

Otherwise, I think Xtext has no support for feature maps...


On 05/07/2013 2:00 PM, Vincent De Bry wrote:
> Hi,
>
> I have created an XTEXT project from an ECore.
> This ECore has been generated from a XSD containing this partial
> specification, based on abstract types and groups:
>
> <xsd:complexType name="CT_operation" abstract="true">
> <xsd:sequence>
> <xsd:element ref="doc" minOccurs="0" />
> </xsd:sequence>
> <xsd:attribute name="name" type="OperationName" use="required"/>
> </xsd:complexType>
>
>
> <xsd:complexType name="CT_event" abstract="true">
> <xsd:complexContent>
> <xsd:extension base="CT_operation">
> <xsd:sequence>
> <xsd:element name="parameter" type="CT_qualified_field"
> minOccurs="0" maxOccurs="unbounded"/>
> </xsd:sequence>
> </xsd:extension>
> </xsd:complexContent>
> </xsd:complexType>
>
>
> <xsd:complexType name="CT_sent_event">
> <xsd:complexContent>
> <xsd:extension base="CT_event">
> <xsd:attribute name="period" type="xsd:decimal" use="optional"/>
> </xsd:extension>
> </xsd:complexContent>
> </xsd:complexType>
>
>
> <xsd:complexType name="CT_received_event">
> <xsd:complexContent>
> <xsd:extension base="CT_event"/>
> </xsd:complexContent>
> </xsd:complexType>
>
> <xsd:group name="operations_not_in_transaction">
> <xsd:choice>
> <xsd:element name="event_received" type="CT_received_event"
> minOccurs="0">
> <xsd:unique name="param_event_received">
> <xsd:selector xpath="parameter"/>
> <xsd:field xpath="@name"/>
> </xsd:unique>
> </xsd:element>
> ...
> </xsd:choice>
> </xsd:group>
>
>
> <xsd:group name="operations_in_transaction">
> <xsd:choice>
> <xsd:element name="event_sent" type="CT_sent_event" minOccurs="0">
> <xsd:unique name="param_event_sent">
> <xsd:selector xpath="parameter"/>
> <xsd:field xpath="@name"/>
> </xsd:unique>
> </xsd:element>
> ..
> </xsd:choice>
> </xsd:group>
>
>
> <xsd:group name="all_operations">
> <xsd:choice>
> <xsd:group ref="operations_in_transaction"/>
> <xsd:group ref="operations_not_in_transaction"/>
> </xsd:choice>
> </xsd:group>
>
>
> <xsd:complexType name="CT_operations">
> <xsd:group ref="all_operations" maxOccurs="unbounded"/>
> </xsd:complexType>
>
> I have an issue with the generated Xtext project:
>
> The Rule generated for CT_operations only looks like:
>
> CTOperations returns ComponentType::CTOperations:
> {ComponentType::CTOperations}
> 'CTOperations';
>
> => no rule generated for CT_received_event nor CT_sent_event
>
> If I am trying to define the rules manually, like:
>
> CTOperations returns ComponentType::CTOperations:
> {ComponentType::CTOperations}
> '{'
> (eventSent+=CTSentEvent)?
> (eventReceived+=CTReceivedEvent)?
> '}';
>
> Decimal returns ecore::EBigDecimal:
> INT;
>
> CTSentEvent returns ComponentType::CTSentEvent:
> 'eventSent' period=Decimal;
>
> CTReceivedEvent returns ComponentType::CTReceivedEvent:
> {ComponentType::CTReceivedEvent}
> 'eventReceived';
>
> I am facing 2 problems with using the generated editor:
> 1/ I don't have access to inherited attibutes of the abstract types
> CT_event (parameter) and CT_operation (doc and name)
>
> 2/ It appears the the ECore has been generated with a EFeatureMapEntry
> for the group/choice and I am getting the following exception when I
> am entering the keyword 'eventSent':
>
> An internal error occurred during: "Xtext validation".
> org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$ContainmentUpdatingFeatureMapEntry
> cannot be cast to org.eclipse.emf.ecore.EObject
>
> => I don't know how to manage the FeaturingMapEntry. Do I have to add
> sometinh in the Xtext grammar ?
>
> Could someone please help me with thesebig troubles that totally
> stoppe me ?
>
> Sorry for the length of my post.
> Thanks


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Xtext project from ECore with abstract types [message #1067042 is a reply to message #1067011] Fri, 05 July 2013 14:56 Go to previous messageGo to next message
Vincent De Bry is currently offline Vincent De BryFriend
Messages: 55
Registered: May 2013
Member
Thanks Ed,

I don't have really the hand on the Schema, but I may try to write my own schema based on your advise and hope the resulting ecores will be compatible.

That said, has anybody an answer for my first point: how to be able to access to the inherited attributes while in Xtext generated editor ? I still freeze on that point Sad
Re: Xtext project from ECore with abstract types [message #1067058 is a reply to message #1067042] Fri, 05 July 2013 15:43 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
Vincent,

I'm not sure what problem you have in terms of "access inherited
attributes". How are you trying to access them? What specifically
isn't accessible?


On 05/07/2013 4:56 PM, Vincent De Bry wrote:
> Thanks Ed,
>
> I don't have really the hand on the Schema, but I may try to write my
> own schema based on your advise and hope the resulting ecores will be
> compatible.
>
> That said, has anybody an answer for my first point: how to be able to
> access to the inherited attributes while in Xtext generated editor ? I
> still freeze on that point :(


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Xtext project from ECore with abstract types [message #1067077 is a reply to message #1067058] Fri, 05 July 2013 17:20 Go to previous messageGo to next message
Vincent De Bry is currently offline Vincent De BryFriend
Messages: 55
Registered: May 2013
Member
Ed, thanks to try helping me.

Actually, I was first surprised that the XText project creation from the Ecore does not generate a rule for CTSensEvent, for example.

So I defined it (and the type 'Decimal') by myself like this
Decimal returns ecore::EBigDecimal:
	INT;

CTSentEvent returns ComponentType::CTSentEvent:
	'eventSent' period=Decimal;

I am first wondering if it is normal that I have to define it manually, as everything is in the Ecore.

Then, as CTSentEvent inherits from CTEvent, I would expect that the attribute 'parameter' from CTEvent would be immediatly proposed during file edition, by the content assist. As it does not work like that, I ment I should define a rule for CTEvent like:
CTEvent returns ComponentType::CTEvent:
	parameter=CTQualifiedField;

and do so that rule CTSentEvent inherits from CTEvent (but how ? I don't know !)

The only solution I have found seems to duplicate the inherited attribtes in each rule associated to a super type, like:
Decimal returns ecore::EBigDecimal:
	INT;

CTSentEvent returns ComponentType::CTSentEvent:
	'eventSent' period=Decimal
	parameter=CTQualifiedField 
...;

But doing so, I am loosing the interest of having a super type, I mean ... Sad

What do you mean ?

Thank you very much.
Re: Xtext project from ECore with abstract types [message #1067104 is a reply to message #1067077] Fri, 05 July 2013 21:10 Go to previous messageGo to next message
Vincent De Bry is currently offline Vincent De BryFriend
Messages: 55
Registered: May 2013
Member
Ok, I have replace the use of groups in my XSD:
  <xsd:complexType name="CT_operations">
    <xsd:choice>
       <xsd:element name="event_sent" type="CT_sent_event" minOccurs="0" maxOccurs="unbounded">
        <xsd:unique name="param_event_sent">
          <xsd:selector xpath="parameter"/>
          <xsd:field xpath="@name"/>
        </xsd:unique>
      </xsd:element>
      <xsd:element name="event_received" type="CT_received_event" minOccurs="0" maxOccurs="unbounded">
        <xsd:unique name="param_event_received">
          <xsd:selector xpath="parameter"/>
          <xsd:field xpath="@name"/>
        </xsd:unique>
      </xsd:element>	  
    </xsd:choice>
  </xsd:complexType>


I think the resulting schema would be equivalent for writting XML files...

This seems to solve all my issues: Xtext rules are generated and their are no more Validation exception.

Finally, it seems that the use of XSD Groups are totally not supported by XTEXT. This is a very big constraint Sad

Thanks Ed for your support.
Re: Xtext project from ECore with abstract types [message #1067132 is a reply to message #1067104] Sat, 06 July 2013 07:59 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
Vincent,

One thing to note is that this expression allows either a bunch of sent
events or a bunch of received events but not both. Your EMF model won't
check for that constraint (there's no concept of choice or mutually
exclusive features in Ecore) so you will be able to have both. But note
that while they can even appear in any mixed order (EMF doesn't check
that either) that mixed order won't be recorded properly (because there
is no feature map), and you'll always end up with all the sents before
the receiveds. If you expressed this as a substitution group with some
global abstract element "x" and have the global CT_sent_event and
CT_received_event declare they are in substitution group "x" (x must
have a type that is a base type of each of these) then if you used the
options I mentioned in the blog, you'd end up with a feature "x" in your
model of type base event that stores the mixed order of the two types of
events. That should probably be your goal.


On 05/07/2013 11:10 PM, Vincent De Bry wrote:
> Ok, I have replace the use of groups in my XSD:
>
> <xsd:complexType name="CT_operations">
> <xsd:choice>
> <xsd:element name="event_sent" type="CT_sent_event"
> minOccurs="0" maxOccurs="unbounded">
> <xsd:unique name="param_event_sent">
> <xsd:selector xpath="parameter"/>
> <xsd:field xpath="@name"/>
> </xsd:unique>
> </xsd:element>
> <xsd:element name="event_received" type="CT_received_event"
> minOccurs="0" maxOccurs="unbounded">
> <xsd:unique name="param_event_received">
> <xsd:selector xpath="parameter"/>
> <xsd:field xpath="@name"/>
> </xsd:unique>
> </xsd:element> </xsd:choice>
> </xsd:complexType>
>
>
> I think the resulting schema would be equivalent for writting XML
> files...
>
> This seems to solve all my issues: Xtext rules are generated and their
> are no more Validation exception.
>
> Finally, it seems that the use of XSD Groups are totally not supported
> by XTEXT. This is a very big constraint :(
>
> Thanks Ed for your support.


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Xtext project from ECore with abstract types [message #1067511 is a reply to message #1067132] Tue, 09 July 2013 08:02 Go to previous messageGo to next message
Vincent De Bry is currently offline Vincent De BryFriend
Messages: 55
Registered: May 2013
Member
Hi Ed,

You are right, my adaptation does not match my need. So I tried to use substitution groups but I probably did not caught something as with the following adapted XSD, I still get a EFeatureMapEntry in my Ecore and, moreover, no feature for "event_received" and "event_sent" but a single feature on "all_operations" instead Sad
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="unqualified" attributeFormDefault="unqualified">

  <xsd:complexType name="CT_operation" abstract="true">
    <xsd:attribute name="name" type="xsd:string" use="required"/>
  </xsd:complexType>

  <xsd:complexType name="CT_event" abstract="true">
    <xsd:complexContent>
      <xsd:extension base="CT_operation">
        <xsd:sequence>
          <xsd:element name="parameter" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="CT_sent_event">
    <xsd:complexContent>
      <xsd:extension base="CT_event">
        <xsd:attribute name="period" type="xsd:decimal" use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="CT_received_event">
    <xsd:complexContent>
      <xsd:extension base="CT_event"/>
    </xsd:complexContent>
  </xsd:complexType>

  

  <xsd:element name="all_operations" abstract="true"/>

  <xsd:element name="event_received" type="CT_received_event" substitutionGroup="all_operations">
    <xsd:unique name="param_event_received">
      <xsd:selector xpath="parameter"/>
      <xsd:field xpath="@name"/>
    </xsd:unique>
  </xsd:element>

  <xsd:element name="event_sent" type="CT_sent_event" substitutionGroup="all_operations">
    <xsd:unique name="param_event_sent">
      <xsd:selector xpath="parameter"/>
      <xsd:field xpath="@name"/>
    </xsd:unique>
  </xsd:element>

  <xsd:complexType name="CT_operations">
    <xsd:sequence>
      <xsd:element ref="all_operations" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>
  
</xsd:schema>


could you please help me pointing what is wrong ?
note That I also did not succeed in defining intermediate subsitution groups for replacing "operations_in_transaction" and "operations_not_in_transaction" Sad

Thanks
Re: Xtext project from ECore with abstract types [message #1067523 is a reply to message #1067511] Tue, 09 July 2013 08:30 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
Vincent,

Here's a complete example of what I had in mind. Note the ecore
annotation to suppress the feature maps for substitution groups and the
type specifies for the "all_operations" element.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
ecore:ignoreSubstitutionGroups="true">

<xsd:complexType name="CT_operation" abstract="true">
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>

<xsd:complexType name="CT_event" abstract="true">
<xsd:complexContent>
<xsd:extension base="CT_operation">
<xsd:sequence>
<xsd:element name="parameter" type="xsd:string" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="CT_sent_event">
<xsd:complexContent>
<xsd:extension base="CT_event">
<xsd:attribute name="period" type="xsd:decimal" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="CT_received_event">
<xsd:complexContent>
<xsd:extension base="CT_event"/>
</xsd:complexContent>
</xsd:complexType>



<xsd:element name="all_operations" abstract="true" type="CT_event"/>

<xsd:element name="event_received" type="CT_received_event"
substitutionGroup="all_operations">
<xsd:unique name="param_event_received">
<xsd:selector xpath="parameter"/>
<xsd:field xpath="@name"/>
</xsd:unique>
</xsd:element>

<xsd:element name="event_sent" type="CT_sent_event"
substitutionGroup="all_operations">
<xsd:unique name="param_event_sent">
<xsd:selector xpath="parameter"/>
<xsd:field xpath="@name"/>
</xsd:unique>
</xsd:element>

<xsd:complexType name="CT_operations">
<xsd:sequence>
<xsd:element ref="all_operations" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

</xsd:schema>

And yes, the result is that you end up with a single getAllOperations
feature that contains CTEvent instances, which can be either CTSentEvent
or CTReceivedEvent instances so processing will require iterating over
the whole list and doing instanceof checks. Given that Xtext doesn't
support feature maps (as far as I know) and given that you need to
preserve/represent the mixed order of these things, you need such an
overall feature.

If your real schema specifies elementFormDefault="unqualified" then this
new representation will result in the use of qualified element names
because you've made the element global rather than local, so I'm not
sure this solutions pans out for you.



On 09/07/2013 10:02 AM, Vincent De Bry wrote:
> Hi Ed,
>
> You are right, my adaptation does not match my need. So I tried to use
> substitution groups but I probably did not caught something as with
> the following adapted XSD, I still get a EFeatureMapEntry in my Ecore
> and, moreover, no feature for "event_received" and "event_sent" but a
> single feature on "all_operations" instead :(
>
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="unqualified"
> attributeFormDefault="unqualified">
>
> <xsd:complexType name="CT_operation" abstract="true">
> <xsd:attribute name="name" type="xsd:string" use="required"/>
> </xsd:complexType>
>
> <xsd:complexType name="CT_event" abstract="true">
> <xsd:complexContent>
> <xsd:extension base="CT_operation">
> <xsd:sequence>
> <xsd:element name="parameter" type="xsd:string" minOccurs="0"
> maxOccurs="unbounded"/>
> </xsd:sequence>
> </xsd:extension>
> </xsd:complexContent>
> </xsd:complexType>
>
> <xsd:complexType name="CT_sent_event">
> <xsd:complexContent>
> <xsd:extension base="CT_event">
> <xsd:attribute name="period" type="xsd:decimal" use="optional"/>
> </xsd:extension>
> </xsd:complexContent>
> </xsd:complexType>
>
> <xsd:complexType name="CT_received_event">
> <xsd:complexContent>
> <xsd:extension base="CT_event"/>
> </xsd:complexContent>
> </xsd:complexType>
>
>
>
> <xsd:element name="all_operations" abstract="true"/>
>
> <xsd:element name="event_received" type="CT_received_event"
> substitutionGroup="all_operations">
> <xsd:unique name="param_event_received">
> <xsd:selector xpath="parameter"/>
> <xsd:field xpath="@name"/>
> </xsd:unique>
> </xsd:element>
>
> <xsd:element name="event_sent" type="CT_sent_event"
> substitutionGroup="all_operations">
> <xsd:unique name="param_event_sent">
> <xsd:selector xpath="parameter"/>
> <xsd:field xpath="@name"/>
> </xsd:unique>
> </xsd:element>
>
> <xsd:complexType name="CT_operations">
> <xsd:sequence>
> <xsd:element ref="all_operations" maxOccurs="unbounded"/>
> </xsd:sequence>
> </xsd:complexType>
>
> </xsd:schema>
>
>
> could you please help me pointing what is wrong ?
> note That I also did not succeed in defining intermediate subsitution
> groups for replacing "operations_in_transaction" and
> "operations_not_in_transaction" :(
>
> Thanks
>


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Xtext project from ECore with abstract types [message #1067537 is a reply to message #1067523] Tue, 09 July 2013 09:14 Go to previous message
Vincent De Bry is currently offline Vincent De BryFriend
Messages: 55
Registered: May 2013
Member
Thank you very much Ed !

Based on your last post, I have generated a Ecore and the corresponding Xtext project. So far, I think I should go ahead with them.
Thanks again !
Previous Topic:Factoring out rules with no wrapper return types
Next Topic:grammar problem (probably scoping)
Goto Forum:
  


Current Time: Fri Apr 26 23:55:14 GMT 2024

Powered by FUDForum. Page generated in 0.04327 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top