[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.modeling.tmf] How to return a list of objects?

Hi,

I have a grammar that is a bit like EcoreDsl or emfatic. This language
has annotations, but the syntax is slightly different:

Instead of putting the annotation before the element like in emfatic and EcoreDsl:

  @Annotation1 @Annotation2 attr int foo;

it comes after the element with a colon as a comma separated list:

  int foo: Annotation1, Annotation2;

For EcoreDsl and emfatic the rules are easy because there is no
spparator between them [1]. BUT for my language, I have  to inline a
complicated rule because of the separator:

  MyAttributeDecl returns ecore::EAttribute:
    .... (':' eAnnotations+=MyAnnotationDecl (',' eAnnotations+=MyAnnotationDecl)*)? ...

I have many elements wit annotation and I have to repeat myeself. I'd like to
create a annotations rule like:

   MyAnnotations:
	':' annotations+=MyAnnotationDecl (',' annotations+=MyAnnotationDecl)*;

and use it like:

  MyAttributeDecl returns ecore::EAttribute:
    .... (eAnnotations = /*THIS DOES NOT WORK*/ MyAnnotations)? ...

I could not find a way to set get the annotations list form the
Annotations rule and pass it into the eAnnotations of EAttribute...

Michael
--------------------------------------------------------------------------------

[1] the rules for EcoreDsl:

  EAnnotationDecl returns ecore::EAnnotation:
    "@" source=STRING_OR_QID;

and the annotations can easyly be added to the EAttribute

  EAttributeDecl returns ecore::EAttribute:
    (eAnnotations+=EAnnotationDecl)*
    'attr' ...;

the annotation rule looks like:

  AnnotationDecl returns ecore::EAnnotation:
    source=STRING_OR_QID ...;



--
Michael Scharf
Wind River Systems GmbH
http://www.WindRiver.com
http://MichaelScharf.blogspot.com/