<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">




<meta name=Generator content="Microsoft Word 10 (filtered)">

<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:sans-serif;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
p.MsoAutoSig, li.MsoAutoSig, div.MsoAutoSig
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
tt
        {font-family:"Courier New";}
span.EmailStyle18
        {font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>All,</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>The &#8216;CreateNew&#8217; construct in GReAT
typically constructs a &#8216;model type&#8217; (in the GME types/instances sense).
&nbsp;Is it possible to create &#8216;model instances&#8217; with the &#8216;CreateNew&#8217;
construct.</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Sandeep</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>&nbsp;</span></font></p>

<div>

<p class=MsoAutoSig><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>--</span></font></p>

<p class=MsoAutoSig><font size=3 color=navy face="Times New Roman"><span
 style='font-size:12.0pt;color:navy'>Sandeep Neema</span></font></p>

<p class=MsoAutoSig><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>Research Scientist,</span></font></p>

<p class=MsoAutoSig><font size=3 color=navy face="Times New Roman"><span
  style='font-size:12.0pt;color:navy'>Institute</span></font><font color=navy><span
 style='color:navy'> of </span></font><font color=navy><span style='color:navy'>Software</span></font><font
color=navy><span style='color:navy'> Integrated Systems, </span></font><font
  color=navy><span style='color:navy'>Vanderbilt</span></font><font color=navy><span
 style='color:navy'> </span></font><font color=navy><span style='color:navy'>University</span></font></p>

<p class=MsoAutoSig><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>Phone: 615-343-9996</span></font></p>

<p class=MsoAutoSig><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>Email: <a
href="mailto:sandeep.k.neema@vanderbilt.edu">sandeep.k.neema@vanderbilt.edu</a></span></font></p>

</div>

<p class=MsoNormal style='margin-left:.5in'><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-----Original Message-----<br>
<b><span style='font-weight:bold'>From:</span></b> </span></font><font size=2
 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>great-users</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>-bounces@list.isis.vanderbilt.edu
[mailto:</span></font><font size=2 face=Tahoma><span style='font-size:10.0pt;
 font-family:Tahoma'>great-users</span></font><font size=2 face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma'>-bounces@list.isis.vanderbilt.edu] <b><span
style='font-weight:bold'>On Behalf Of </span></b></span></font><font size=2
 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>Aditya Agrawal</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>Sent:</span></b> Friday, September 24, 2004
2:26 PM<br>
<b><span style='font-weight:bold'>To:</span></b> Zonghua Gu; </span></font><font
 size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>great-users</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [</span></font><font
 size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>great-users</span></font><font
size=2 face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>]
Generating code with Great</span></font></p>

<p class=MsoNormal style='margin-left:.5in'><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>&nbsp;</span></font></p>

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

</div>

</body>

</html>