On 27/03/2010 22:52, Sven Efftinge wrote:
cool that you're implementing OCL in Xtext. We have similar plans
We're working on a base language for Xtext (called Xbase) which
allows people to create new languages which extends and reused
parts (or everything) of it. We want to implement an EMFatic editor
based on it.
I find Xbase an interesting source of ideas, but not directly useful
for MDT/OCL and I'm temporarily bypassing the generic types that
Xtypes would solve. [I'm likely to have a GSoC student doing direct
Java code generation from OCL. It would be good to align this to
support an interchange point for alternate 'action' languages such
I find that OCLinEcore at the model level is OCL in Emfatic at the
concrete syntax level so there will be duplication between the
I'm committed to providing as an Example in Helios and Emfatic in
Iona. Long term it presumably makes better sense for OCL to depend
Emfatic rather than Emfatic on OCL, so the functionality, if not the
implementation, should migrate. However I'm not sure there is really
any point in confusing users with both a traditional Ecore/Emfatic
editor and an enhanced Ecore/OCLinEcore editor. So perhaps Emfatic
should provide the combined editor exploiting EssentialOCL.xtext to
provide the semantic validation of OCL expressions.
The OCL embedded in EAnnotation is persisted in concrete syntax
The editor parses an OCL expression to a tree but has to fight Xtext
to revert it to a String again. Xtext does not allow a non-trivial
rule to return a String!
What persistent representation do you plan for Emfatic? Xtext does a
very good job of hiding the XML representation, but the use of
*.ecore is very entrenched, so I'm not sure that all *.ecore will
migrate to *.emfatic.
I'm finding it not too hard to provide a variant DocumentProvider so
that *.ecore is the persistent representation for OCL in Ecore. On
load, the Document InputStream starts as the Ecore XML that is
as an Ecore AST and is then transformed to a similar CST which is
serialised to provide the OCLinEcore InputSteam for conventional
editing. On save, the CST is transformed back to the Ecore AST which
The 'similar' CST is needed to make the serialiser work on Ecore. It
solves simple problems such as:
'readonly' is inverted from EStructuralFeature.changeable
'ordered' is default not-ordered in CS but default ordered in Ecore
multiplicity has '*' representation for upperBound -1, and also '?'
embedded OCL annotations need first class representation
other annotations need a representation
[The serialiser seems quite slow. A direct Java implementation seems
attractive if the XML input is common and would not have such struct
Since both *.emfatic and *.ecore may co exist, the editor needs to
support either on input, which is relatively easy with a "<xml?"
peak. On save, the input format should be the default output, but
alternate should be selectable. More generally perhaps Xtext should
always offer a SaveAs XML option.
How would you like to progress the Emfatic-OCL dependency?
What persistent representations do you envisage for Emfatic?
[And how do you plan to persist Emfatic comments in a *.ecore?]
emft-dev mailing list