Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [m2t-dev] [MTL] discussion about the specification

Aha, now I got the point.
 
I may be mistaken, but if you look at page 9 of the spec: Is the string you are looking for the one passed as an argument in 
 
[protected('user_code')] 
; user code 
[/protected] 

In this example the string would be 'user_code' and an additional identifier I would guess. In the metamodel this would be the marker association from ProtectedAreaBlock to OclExpression class.

So then I guess we need to decide on whether we can assume to prepend the words "start" and "end" to the marker expression.

I guess what the standard reffers to as delimiters is mostly aimed at what string/char is used to define a comment in the target language. 

Regards

Tor


________________________________

From: m2t-dev-bounces@xxxxxxxxxxx on behalf of Jonathan MUSSET
Sent: Thu 05/06/2008 9:59
To: Model to Text
Subject: Re: [m2t-dev] [MTL] discussion about the specification


Hi,

Thank you Topr,

You're right
I wanted to say "Start of user code" ... "End of user code"

It can be <!--Start of user code--> ... <!--End of user code-->
or "//Start of user code ID \n" ... "//End of user code ID \n"
or "'Start of user code ID \n" ... "'End of user code ID \n"

but we have to define a way to configure the delimiters : "Start of user code" and "End of user code"
There isn't any way to define it in the specification... Do you agree?

Regards,

Jonathan



Neple Tor a écrit : 

	Hello all
	 
	My name is Tor Neple, and I was part of the SINTEF team working with Arjan and Wim on the OMG spec. 

	With regard to the delimiters of the protected code, and forgive me if I am misunderstanding the point of the question totally; The idea was that we wanted to support protected blocks in any target syntax, meaning that we could not define what delimiter to use as part of the standard. One approach could be that the delimiter for the protected area is stored in each transformation description/template. This would aid in interoperability. I guess this would have to be placed in the metamodel also.
	 
	If I am not totally misunderstanding this; always using "//" would make it impossble to generate correct code for for instance Visual Basic where the tag for a comment is '.
	 
	 
	Regards
	 
	 
	Topr
	
	
	- The delimiters of the protected area are not defined in the standard, they don't want to make a choice
	 So, We have to choose the way to keep the user code...
	 We can use tags like : //Start of user code   //End of user code
	 I would like to dicuss about the different points of views?
	
	I think leaving the delimiters to the implementation is an error in the spec, because it will lead to interoperability problems. Note that the id of the text parts should be unique (see example 3).
	
	 -------------------------------------- 
	
	
	On Mon, May 26, 2008 at 3:02 PM, Jonathan MUSSET <jonathan.musset@xxxxxxx> wrote:
	

		Hi everybody
		We've got a first version of the MTL parser on the CVS
		It means that we can create an abstract representation of the templates. The AST is based on an EMF metamodel.
		Here is an example of a MTL template (for those who don't know the MTL syntax) :
		
		  [module mymodule(http://www.eclipse.org/uml2/2.1.0/UML)/ <http://www.eclipse.org/uml2/2.1.0/UML%29/> ]
		  [template  public classToJava(a:Property, c:Class)]
		  [if (1 = (1 + c.ownedAttribute->size() + a->type->size() + c->size()))]
		      [if (c.attribute->size())]
		          aaa
		      [elseif (a->type.name <http://type.name/> )]
		          bbb
		      [else]
		          ccc
		      [/if]
		  [/if]
		    [for (p : Operation | c ->ownedOperation.type)]
		      ddd[p.name/]
		  [/for]
		  [/template]  
		
		The metamodel is also based on the OCL metamodel of the MDT project.
		According to the Model-To-Text specification, We have to use the classes ocl.OCLExpression and ocl.Variable...
		
		Now, Laurent is working more actively on the generation engine.
		The architecture of this standalone engine will probably be a combination of this MTL AST, the m2t backend, and the MDT-OCL execution environnement...
		
		We had a lot of problems with the specification...
		Arjan and Me have worked a long time on the ambiguities of the specification.
		Arjan, Do you have any feedbacks from the OMG guys?
		I would like to dicuss more about these ambiguities with those who know the specification...
		I think that this mailing list is a good place to make choice for the eclipse implementation of this specification
		Don't hesitate to share your experiences and your point of view
		Here are some examples of ambiguities that We have detected :
		- When an invocation creates an empty line :
		 Does it mean that we have to generate "\n" or ""?
		- For the abstract syntax, there are a lot of namings and multiplicities issues : "arguments" mustn't end with 's'
		- Can we use MANIFEST.MF files to declare dependencies between generation modules?
		 I would like to use the eclipse mecanism for dependencies but it is not compatible with the specification
		- There is a confusion for the "escape" character, the specification defines a way to change the delimiters using an annotation (@delimiter=)
		 but sometimes I would like to use a simple escape character like in java ('\'), more usefull and readable
		 For example, I want to generate : String[] tab = "";
		 I think that the following template is quite simple to write : String\[] tab [subTemplate/];
		- The delimiters of the protected area are not defined in the standard, they don't want to make a choice
		 So, We have to choose the way to keep the user code...
		 We can use tags like : //Start of user code   //End of user code
		 I would like to dicuss about the different points of views?
		- TemplateInvocation : The specification is ambiguous if the result is not a string... Is it an error? Do We have to call the toString by default?
		- String libraries are different between the QVT and the MTL specifications : for example firstUpper() != upperFirst()
		 The priority for us is to be as near as possible of the QVT library
		- Module.import reference is missing in the metamodel... We decided to create an import link in the metamodel...
		- We need the position of the template element during the generation (for the debugger)
		 So, We defined a new element to store the position information
		 I'll be really happy to have more points of view ;-)
		Thank you
		Cheers,
		
		Jonathan
		
		_______________________________________________
		m2t-dev mailing list
		m2t-dev@xxxxxxxxxxx
		https://dev.eclipse.org/mailman/listinfo/m2t-dev
		
		


	
________________________________


	_______________________________________________
	m2t-dev mailing list
	m2t-dev@xxxxxxxxxxx
	https://dev.eclipse.org/mailman/listinfo/m2t-dev
	  




Back to the top