[great-users] Generating code with Great

Aditya Agrawal aagrawa at us.ibm.com
Fri Sep 24 16:26:05 CDT 2004


Please see inserts.


Zonghua wrote:
> If I want to generate code in a programming language like Java with
> GReAT, I will need to construct a meta-model for Java in GME. But it's
> not clear to me how to do this. In the compiler area, Java code is
> parsed into an abstract syntax tree (AST), which is further processed
> into machine or byte code. I wondering if we can establish some kind
> of link between AST and meta-model, perhaps using GReaT to generate
> AST, then trivially map AST into Java code?

Yes you do have to create a metamodel for Java. Now there are many 
choices. 

1. One choice is, as you mentioned create a metamodel that shadows that 
Java AST, have a code generator that can convert this shadow AST to Java 
code. 
2. The second choice, is to create a coarse grain AST structure for Java. 
For example, you create a metamodel that models classes, functions, 
variables, code blocks but the statements inside the code block are 
represented as text variables. I have used this style in cases where I 
have these small code fragments that I can use and I am doing higher level 
composition. 

3. The third choice, is to create a metamodel for the class of 
applications rather than for Java. For example, if you want to have your 
Java program implement state machines, you may want to create a metamodel 
for representing state machines and then you could write different code 
generators that would generate Java and potentially code for other 
languages.

4. There was an effort by Abdul (I have cced him on the mail) who tried to 
create a generic AST for OO languages and then specialize it for a 
particular OO language.

Abdul, could you please tell us more about that.

> Another question: Suppose I want to generate output in XML to feed
> into another tool like UPAAL, which already has a dtd (data type
> definition) format defined. Is there a way to "reverse engineer" from
> a dtd file into a meta-model? We can use UDM to generate dtd from
> meta-model, can we go the other direction?

Currently with UDM you cannot create XML files that conform to a 
predefined DTD. Some of the things we have done in the past is to create a 
DTD using UDM which is very close to the target DTD. Then use GReAT and 
other methods to create instances of these DTD and finally use a simple 
(hopefully) XSLT script to convert the UDM XML file to the required XML 
file.

Another choice is to use UDM Pat (UDM pattern processor) or a visitor on 
the UDM objects to generate the required XML format.

Thanks,
Adi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://list.isis.vanderbilt.edu/pipermail/great-users/attachments/20040924/75507bc3/attachment.htm


More information about the great-users mailing list