[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