Re: Question: How do I derive the Functional Syntax grammar from the Diagrams?

On 31 Jul 2008, at 08:48, Michael Schneider wrote:

> Hi!
>
> After the Metamodel session at F2F3, I am still confused about one  
> point:
> How is it possible to automatically generate the Functional Syntax  
> grammar
> from the diagrams?

Think of the Metamodel as a nondeterministic machine and a concrete  
grammar as *one* run of that machine. Different runs can make  
different choices thus ending up with different grammars that conform  
to the abstract description.

Thus, to generate a particular grammar you have to additionally  
specify some choices.

> IIRC, it has been claimed that this will be possible.
>
> Take for example class assertions, which have the following grammar
> according to sec. 8.5.3 of the Syntax document:
>
>   ClassAssertion := 'ClassAssertion' '(' { Annotation }  
> ClassExpression Individual ')'
>
> One must not change the ordering of the arguments in a class  
> assertion,

See above. A functional syntax with the reverse ordering would be  
perfectly coherent.

> because this would swap a class expression and an individual.
>
> However, the respective diagram at the beginning of sec. 8.5 [1]
> does not contain such ordering information for ClassAssertion.
> And I do not know how it is possible to specify such a ordering in  
> UML,
> at least for situations, where different types are involved
> (classes and individuals in our case).

Adding ordering to the diagram would import concrete details into the  
abstract view.

Think of it this way: Suppose you wanted to use dictionary/hash  
tables as your api. So a class assertion would be something like:

{"type": "ClassAssertion";
  "Annotations":[];
  "Individual": someURi;
  "ClassExpression": someClassExpression}

Oh NOES! I got the sequence of individual and classexpression wrong  
way around!!!

Obviously, it doesn't matter for this linear syntax, so the above  
reaction would be incorrect.

Hope this helps.

Cheers,
Bijan.

Received on Thursday, 31 July 2008 11:40:21 UTC