Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bd5c3d824c3db63ffd9226c15941e6ad > files > 1492

mozart-1.4.0-1mdv2010.0.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>4 Core Programs</TITLE><LINK href="ozdoc.css" rel="stylesheet" type="text/css"></HEAD><BODY><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node3.html#chapter.context-free">&lt;&lt; Prev</A></TD><TD><A href="index.html">- Up -</A></TD><TD><A href="node5.html#chapter.translation">Next &gt;&gt;</A></TD></TR></TABLE><DIV id="chapter.core"><H1><A name="chapter.core">4 Core Programs</A></H1><P> In this section, we give a context-free grammar for Core Oz programs. </P><H2><A name="label18">4.1 The Base Language</A></H2><DIV class="apropos"><P class="margin">Statements</P><P> </P><BLOCKQUOTE><TABLE border="0" cellpadding="0" cellspacing="0"><TR valign="top"><TD>&lt;<I>statement</I>&gt;</TD><TD align="center">&nbsp;::=&nbsp;</TD><TD>&lt;<I>statement</I>&gt; &lt;<I>statement</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">local</SPAN></CODE> { &lt;<I>variable</I>&gt; }+ <CODE><SPAN class="keyword">in</SPAN></CODE> &lt;<I>statement</I>&gt; <CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">proc</SPAN></CODE> { &lt;<I>atom</I>&gt; } <SPAN class="terminal">&quot;<CODE>{</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; { &lt;<I>variable</I>&gt; } <SPAN class="terminal">&quot;<CODE>}</CODE>&quot;</SPAN></TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>&lt;<I>statement</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD><CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><SPAN class="terminal">&quot;<CODE>{</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; { &lt;<I>variable</I>&gt; } <SPAN class="terminal">&quot;<CODE>}</CODE>&quot;</SPAN></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">lock</SPAN></CODE> &lt;<I>variable</I>&gt; <CODE><SPAN class="keyword">then</SPAN></CODE> &lt;<I>statement</I>&gt; <CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">thread</SPAN></CODE> &lt;<I>statement</I>&gt; <CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">try</SPAN></CODE> &lt;<I>statement</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD><CODE><SPAN class="keyword">catch</SPAN></CODE> &lt;<I>variable</I>&gt; <CODE><SPAN class="keyword">then</SPAN></CODE> &lt;<I>statement</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD><CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE>=</CODE>&quot;</SPAN> <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">@</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">:=</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE>=</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">:=</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE>=</CODE>&quot;</SPAN> &lt;<I>expression</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">skip</SPAN></CODE></TD></TR></TABLE></BLOCKQUOTE><P> </P></DIV><DIV class="apropos"><P class="margin">Expressions</P><P> </P><BLOCKQUOTE><TABLE border="0" cellpadding="0" cellspacing="0"><TR valign="top"><TD>&lt;<I>expression</I>&gt;</TD><TD align="center">&nbsp;::=&nbsp;</TD><TD>&lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>atom</I>&gt; | &lt;<I>int</I>&gt; | &lt;<I>float</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>label</I>&gt; <SPAN class="terminal">&quot;<CODE>(</CODE>&quot;</SPAN> { &lt;<I>feature</I>&gt; <SPAN class="terminal">&quot;<CODE>:</CODE>&quot;</SPAN> &lt;<I>expression</I>&gt; } [ <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">...</SPAN></CODE>&quot;</SPAN> ] <SPAN class="terminal">&quot;<CODE>)</CODE>&quot;</SPAN></TD></TR></TABLE></BLOCKQUOTE><P> </P><BLOCKQUOTE><TABLE border="0" cellpadding="0" cellspacing="0"><TR valign="top"><TD>&lt;<I>label</I>&gt;</TD><TD align="center">&nbsp;::=&nbsp;</TD><TD>&lt;<I>variable label</I>&gt; | &lt;<I>atom label</I>&gt;</TD></TR></TABLE></BLOCKQUOTE><P> </P><BLOCKQUOTE><TABLE border="0" cellpadding="0" cellspacing="0"><TR valign="top"><TD>&lt;<I>feature</I>&gt;</TD><TD align="center">&nbsp;::=&nbsp;</TD><TD>&lt;<I>variable</I>&gt; | &lt;<I>atom</I>&gt; | &lt;<I>int</I>&gt;</TD></TR></TABLE></BLOCKQUOTE><P> </P></DIV><H2><A name="label19">4.2 Class Extensions</A></H2><P> </P><BLOCKQUOTE><TABLE border="0" cellpadding="0" cellspacing="0"><TR valign="top"><TD>&lt;<I>statement</I>&gt;</TD><TD align="center">&nbsp;+=&nbsp;</TD><TD><CODE><SPAN class="keyword">class</SPAN></CODE> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>[ <CODE><SPAN class="keyword">from</SPAN></CODE> { &lt;<I>variable</I>&gt; }+ ]</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>[ <CODE><SPAN class="keyword">prop</SPAN></CODE> { &lt;<I>variable</I>&gt; }+ ]</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>[ <CODE><SPAN class="keyword">attr</SPAN></CODE> { <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">!</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; [ <SPAN class="terminal">&quot;<CODE>:</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; ] }+ ]</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>[ <CODE><SPAN class="keyword">feat</SPAN></CODE> { <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">!</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; [ <SPAN class="terminal">&quot;<CODE>:</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; ] }+ ]</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>{ &lt;<I>method</I>&gt; }</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD><CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD><CODE><SPAN class="keyword">lock</SPAN></CODE> &lt;<I>statement</I>&gt; <CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">&lt;-</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE>=</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">&lt;-</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">,</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center">&nbsp;|&nbsp;</TD><TD>&lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE>=</CODE>&quot;</SPAN> <CODE><SPAN class="keyword">self</SPAN></CODE></TD></TR></TABLE></BLOCKQUOTE><P> </P><DIV class="apropos"><P class="margin">Methods</P><P> </P><BLOCKQUOTE><TABLE border="0" cellpadding="0" cellspacing="0"><TR valign="top"><TD>&lt;<I>method</I>&gt;</TD><TD align="center">&nbsp;::=&nbsp;</TD><TD><CODE><SPAN class="keyword">meth</SPAN></CODE> <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">!</SPAN></CODE>&quot;</SPAN> &lt;<I>variable</I>&gt; <SPAN class="terminal">&quot;<CODE>(</CODE>&quot;</SPAN> <SPAN class="terminal">&quot;<CODE><SPAN class="keyword">...</SPAN></CODE>&quot;</SPAN> <SPAN class="terminal">&quot;<CODE>)</CODE>&quot;</SPAN> <SPAN class="terminal">&quot;<CODE>=</CODE>&quot;</SPAN> &lt;<I>variable</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD>&lt;<I>statement</I>&gt;</TD></TR><TR valign="top"><TD></TD><TD align="center"></TD><TD><CODE><SPAN class="keyword">end</SPAN></CODE></TD></TR></TABLE></BLOCKQUOTE><P> </P></DIV></DIV><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node3.html#chapter.context-free">&lt;&lt; Prev</A></TD><TD><A href="index.html">- Up -</A></TD><TD><A href="node5.html#chapter.translation">Next &gt;&gt;</A></TD></TR></TABLE><HR><ADDRESS><A href="http://www.iscs.nus.edu.sg/~henz">Martin&nbsp;Henz</A> and&nbsp;<A href="http://www.ps.uni-sb.de/~kornstae/">Leif&nbsp;Kornstaedt</A><BR><SPAN class="version">Version 1.4.0 (20090610)</SPAN></ADDRESS></BODY></HTML>