<br><font size=2 face="sans-serif">Please see inserts.</font>
<br>
<br>
<br><font size=2><tt>Zonghua wrote:</tt></font>
<br><font size=2><tt>&gt; If I want to generate code in a programming language
like Java with<br>
&gt; GReAT, I will need to construct a meta-model for Java in GME. But
it's<br>
&gt; not clear to me how to do this. In the compiler area, Java code is<br>
&gt; parsed into an abstract syntax tree (AST), which is further processed<br>
&gt; into machine or byte code. I wondering if we can establish some kind<br>
&gt; of link between AST and meta-model, perhaps using GReaT to generate<br>
&gt; AST, then trivially map AST into Java code?<br>
</tt></font>
<br><font size=2><tt>Yes you do have to create a metamodel for Java. Now
there are many choices. </tt></font>
<br>
<br><font size=2><tt>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. </tt></font>
<br><font size=2><tt>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. </tt></font>
<br>
<br><font size=2><tt>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.</tt></font>
<br>
<br><font size=2><tt>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.</tt></font>
<br>
<br><font size=2><tt>Abdul, could you please tell us more about that.</tt></font>
<br>
<br><font size=2><tt>&gt; Another question: Suppose I want to generate
output in XML to feed<br>
&gt; into another tool like UPAAL, which already has a dtd (data type<br>
&gt; definition) format defined. Is there a way to &quot;reverse engineer&quot;
from<br>
&gt; a dtd file into a meta-model? We can use UDM to generate dtd from<br>
&gt; meta-model, can we go the other direction?<br>
</tt></font>
<br><font size=2><tt>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.</tt></font>
<br>
<br><font size=2><tt>Another choice is to use UDM Pat (UDM pattern processor)
or a visitor on the UDM objects to generate the required XML format.</tt></font>
<br>
<br><font size=2><tt>Thanks,<br>
Adi</tt></font>
<br>