Sophie

Sophie

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

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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>5.1 The Base Language</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="node5.html">- Up -</A></TD><TD><A href="node7.html#section.translation.constraints">Next &gt;&gt;</A></TD></TR></TABLE><DIV id="section.translation.base"><H2><A name="section.translation.base">5.1 The Base Language</A></H2><DIV class="unnumbered"><H3><A name="label20">Declarations</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>in statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><I>S</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>in expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE>[ <I>S</I> ]<CODE>&nbsp;</CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE>[ <I>S</I> ]<CODE>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><P> The following rule makes implicit declarations explicit, i.&nbsp;e., declarations only name variables between <CODE><SPAN class="keyword">local</SPAN></CODE> and <CODE><SPAN class="keyword">in</SPAN></CODE>. We need an auxiliary definition: The function <I>PV</I> returns the set of <EM>pattern variables</EM> of a statement (or expression). Furthermore, we call a position&nbsp;<I>p</I> in a given statement&nbsp;<I>S</I> a <EM>pattern position</EM> iff the following holds: If the subterm at position&nbsp;<I>p</I> of&nbsp;<I>S</I> is replaced by a fresh variable&nbsp;<CODE><I>X</I></CODE>, then <CODE><I>X</I></CODE> <IMG alt="\in" src="latex16.png"> <I>PV</I>(<I>S</I>[<CODE><I>X</I></CODE>/<I>p</I>]). </P><TABLE align="center" bgcolor="#f0f0e0"><TR valign="top"><TH><P><I>D</I></P></TH><TH><P><I>PV</I>(<I>D</I>)</P></TH></TR><TR valign="top"><TD><P><I>D1</I><CODE>&nbsp;</CODE><I>D2</I></P></TD><TD><P><I>PV</I>(<I>D1</I>) <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>D2</I>)</P></TD></TR><TR valign="top"><TD><P><I>x</I></P></TD><TD><P>{<I>x</I>}</P></TD></TR><TR valign="top"><TD><P><CODE>(</CODE><I>S</I><CODE>)</CODE></P></TD><TD><P><I>PV</I>(<I>S</I>)</P></TD></TR><TR valign="top"><TD><P><CODE>(</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><I>S</I><CODE>)</CODE></P></TD><TD><P><I>PV</I>(<I>S</I>) - <I>PV</I>(<I>D</I>)</P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><P><I>PV</I>(<I>S</I>) - <I>PV</I>(<I>D</I>)</P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E</I><CODE>&nbsp;</CODE>...<CODE>}&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><P><I>PV</I>(<I>E</I>)</P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">fun</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E</I><CODE>&nbsp;</CODE>...<CODE>}&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><P><I>PV</I>(<I>E</I>)</P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">class</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><P><I>PV</I>(<I>E</I>)</P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">functor</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><P><I>PV</I>(<I>E</I>)</P></TD></TR><TR valign="top"><TD><P><I>E</I><CODE>&nbsp;=&nbsp;</CODE>...</P></TD><TD><P><I>PV</I>(<I>E</I>)</P></TD></TR><TR valign="top"><TD><P>otherwise</P></TD><TD><P><IMG alt="\emptyset" src="latex18.png"></P></TD></TR></TABLE><P> </P><TABLE align="center" bgcolor="#f0f0e0"><TR valign="top"><TH><P><I>E</I></P></TH><TH><P><I>PV</I>(<I>E</I>)</P></TH></TR><TR valign="top"><TD><P><I>x</I></P></TD><TD><P>{<I>x</I>}</P></TD></TR><TR valign="top"><TD><P><CODE>(</CODE><I>E</I><CODE>)</CODE></P></TD><TD><P><I>PV</I>(<I>E</I>)</P></TD></TR><TR valign="top"><TD><P><CODE>(</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE>[ <I>S</I> ]<CODE>&nbsp;</CODE><I>E</I><CODE>)</CODE></P></TD><TD><P>(<I>PV</I>(<I>S</I>) <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>E</I>)) - <I>PV</I>(<I>D</I>)</P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE>[ <I>S</I> ]<CODE>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><P>(<I>PV</I>(<I>S</I>) <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>E</I>)) - <I>PV</I>(<I>D</I>)</P></TD></TR><TR valign="top"><TD><P><I>E1</I><CODE>&nbsp;=&nbsp;</CODE><I>E2</I></P></TD><TD><P><I>PV</I>(<I>E1</I>) <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>E2</I>)</P></TD></TR><TR valign="top"><TD><P><CODE>[</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>]</CODE></P></TD><TD><P><I>PV</I>(<I>E1</I>) <IMG alt="\cup" src="latex17.png"> ... <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>En</I>)</P></TD></TR><TR valign="top"><TD><P><I>E1</I><CODE><SPAN class="keyword">|</SPAN></CODE><I>E2</I></P></TD><TD><P><I>PV</I>(<I>E1</I>) <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>E2</I>)</P></TD></TR><TR valign="top"><TD><P><I>E1</I><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><I>En</I></P></TD><TD><P><I>PV</I>(<I>E1</I>) <IMG alt="\cup" src="latex17.png"> ... <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>En</I>)</P></TD></TR><TR valign="top"><TD><P><I>l</I><CODE>(</CODE>[ <I>f1</I><CODE>:</CODE> ]<CODE>&nbsp;</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE>[ <I>fn</I><CODE>:</CODE> ]<CODE>&nbsp;</CODE><I>En</I><CODE>&nbsp;</CODE>[ <CODE><SPAN class="keyword">...</SPAN></CODE> ]<CODE>)</CODE></P></TD><TD><P><I>PV</I>(<I>E1</I>) <IMG alt="\cup" src="latex17.png"> ... <IMG alt="\cup" src="latex17.png"> <I>PV</I>(<I>En</I>)</P></TD></TR><TR valign="top"><TD><P>otherwise</P></TD><TD><P><IMG alt="\emptyset" src="latex18.png"></P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>x1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>xn</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><I>D'</I><CODE>&nbsp;</CODE><I>S</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>D</I> is not a sequence of distinct variables and where {<I>x1</I>, ..., <I>xn</I>} = <I>PV</I>(<I>D</I>) and <I>D'</I> is <I>D</I> with singleton variables and escapes in pattern position removed.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE>[ <I>S</I> ]<CODE>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>x</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">local</SPAN>&nbsp;</CODE><I>D</I><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE>[ <I>S</I> ]<CODE>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label21">Grouping</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>(</CODE><I>S</I><CODE>)</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>S</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>(</CODE><I>E</I><CODE>)</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>E</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label22">Procedure Definitions</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;</CODE><I>SE</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</CODE><I>SE</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E</I> is no variable.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">fun</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;lazy&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E1</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">fun</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E1</I><CODE>&nbsp;</CODE><CODE><I>X1</I></CODE><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><CODE><I>X</I></CODE><I>n</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;{<SPAN class="string">`Value.byNeed`</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">fun</SPAN><SPAN class="variablename">&nbsp;</SPAN>{<SPAN class="functionname">$</SPAN>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">case</SPAN>&nbsp;</CODE><CODE><I>X1</I></CODE><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><CODE><I>X</I></CODE><I>n</I><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE><I>P1</I><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><I>Pn</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>}<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>where all occurrences of <CODE>lazy</CODE> are removed from the procedure flags.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">fun</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E1</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E1</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>&nbsp;$}<BR>&nbsp;&nbsp;&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if no&nbsp;<CODE>$</CODE> occurs in <I>P1</I> ... <I>Pn</I> and no <CODE>lazy</CODE> occurs in the procedure flags.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E1</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pk</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E1</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pk'</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <CODE>$</CODE> occurs in&nbsp;<I>Pk</I> and no other&nbsp;<CODE>$</CODE> occurs in <I>P1</I> ... <I>Pn</I> and no <CODE>lazy</CODE> occurs in the procedure flags. <I>Pk'</I>&nbsp;is the result of replacing the&nbsp;<CODE>$</CODE> in&nbsp;<I>Pk</I> by&nbsp;<CODE><I>X</I></CODE>.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E</I><CODE>&nbsp;</CODE><I>P1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Pn</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;</CODE><I>S</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>E</I><CODE>&nbsp;</CODE><CODE><I>X1</I></CODE><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><CODE><I>X</I></CODE><I>n</I><CODE>}<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">case</SPAN>&nbsp;</CODE><CODE><I>X1</I></CODE><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><CODE><I>X</I></CODE><I>n</I><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE><I>P1</I><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><I>Pn</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>P1</I> ... <I>Pn</I> are not distinct variables and no <CODE>$</CODE> occurs in <I>P1</I> ... <I>Pn</I> and no <CODE>lazy</CODE> occurs in the procedure flags.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{<SPAN class="functionname">$</SPAN>&nbsp;</CODE>...<CODE>}&nbsp;</CODE><I>SE</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename">&nbsp;</SPAN></CODE>...<CODE><SPAN class="variablename">&nbsp;</SPAN>{</CODE><I>x</I><CODE>&nbsp;</CODE>...<CODE>}&nbsp;</CODE><I>SE</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label23">Applications</A></H3><P> Actual arguments are evaluated from left to right and after the designator expression. </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>{</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Ek</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>}</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>Ek</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;{</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>}<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>Ek</I> is no variable and all <I>Ei</I> with <I>i</I> &lt; <I>k</I> are variables.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;{</CODE><I>E</I><CODE>&nbsp;</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>}</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>E</I><CODE>&nbsp;</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>&nbsp;</CODE><I>x</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if no <CODE>$</CODE> occurs in <I>E1</I> ... <I>En</I> in pattern position.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;{</CODE><I>E</I><CODE>&nbsp;</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Ek</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>}</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>E</I><CODE>&nbsp;</CODE><I>E1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>Ek'</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>En</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <CODE>$</CODE> occurs in&nbsp;<I>Ek</I> in pattern position and no other&nbsp;<CODE>$</CODE> occurs in <I>E1</I> ... <I>En</I> in pattern position. <I>Ek'</I> is the result of replacing the&nbsp;<CODE>$</CODE> in pattern position in&nbsp;<I>Ek</I> by&nbsp;<I>x</I>.</P></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label24">Boolean and Pattern-Matching Conditionals</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>else statement</I>&gt;, &lt;<I>else expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">elseif</SPAN>&nbsp;</CODE>...</P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">else</SPAN>&nbsp;<SPAN class="keyword">if</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>else statement</I>&gt;, &lt;<I>else expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">elsecase</SPAN>&nbsp;</CODE>...</P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">else</SPAN>&nbsp;<SPAN class="keyword">case</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;<SPAN class="keyword">skip</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">raise</SPAN>&nbsp;error(kernel(noElse&nbsp;</CODE>...<CODE>)&nbsp;</CODE>...<CODE>)&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>where the omitted parts of the exception are implementation-dependent.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>SE1</I><CODE>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;</CODE><I>SE2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">case</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;<SPAN class="keyword">true</SPAN>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>SE1</I><CODE>&nbsp;<BR><SPAN class="keyword">[]</SPAN>&nbsp;<SPAN class="keyword">false</SPAN>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>SE2</I><CODE>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">raise</SPAN>&nbsp;error(kernel(boolCaseType&nbsp;</CODE>...<CODE>)&nbsp;</CODE>...<CODE>)&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>where the omitted parts of the exception are implementation-dependent.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">case</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">case</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E</I> is no variable.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">case</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE><I>C1</I><CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE><I>Cn</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">case</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE><I>C1</I><CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE><I>Cn</I><CODE>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">raise</SPAN>&nbsp;error(kernel(noElse&nbsp;</CODE>...<CODE>)&nbsp;</CODE>...<CODE>)&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>where the omitted parts of the exception are implementation-dependent.</P></TD></TR></TABLE><P> </P><DIV class="note"><P>Missing: expansion of <CODE><SPAN class="keyword">case</SPAN></CODE> statement/expression to <CODE><SPAN class="keyword">cond</SPAN></CODE></P></DIV><P> </P></DIV><DIV class="unnumbered"><H3><A name="label25">Locks</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">lock</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>SE</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">lock</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>SE</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E</I> is no variable.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">lock</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">lock</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>E2</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label26">Threads</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">thread</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">thread</SPAN>&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label27">Exception Handling</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt;, &lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">try</SPAN>&nbsp;</CODE><I>SE1</I><CODE>&nbsp;<BR><SPAN class="keyword">catch</SPAN>&nbsp;</CODE><I>C1</I><CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE><I>Cn</I><CODE>&nbsp;<BR></CODE>[ <CODE><SPAN class="keyword">finally</SPAN>&nbsp;</CODE><I>S</I> ]<CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">try</SPAN>&nbsp;</CODE><I>SE1</I><CODE>&nbsp;<BR><SPAN class="keyword">catch</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">case</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;</CODE><I>C1</I><CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE><I>Cn</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">else</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">raise</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR></CODE>[ <CODE><SPAN class="keyword">finally</SPAN>&nbsp;</CODE><I>S</I> ]<CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>C1</I><CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">[]</SPAN>&nbsp;</CODE><I>Cn</I> does not have the form <I>x</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>SE2</I>.</P></TD></TR></TABLE><P> </P><P> In the following rule, the intermediate variable&nbsp;<CODE><I>X</I></CODE> ensures that <I>x</I> is only bound iff evaluation of <I>E</I> does not raise an exception. </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">try</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;</CODE>[ <CODE><SPAN class="keyword">catch</SPAN>&nbsp;</CODE><I>y</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>E</I> ]<CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;</CODE>[ <CODE><SPAN class="keyword">finally</SPAN>&nbsp;</CODE><I>S</I> ]<CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">try</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<BR></CODE>[ <CODE><SPAN class="keyword">catch</SPAN>&nbsp;</CODE><I>y</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>E</I> ]<CODE>&nbsp;<BR></CODE>[ <CODE><SPAN class="keyword">finally</SPAN>&nbsp;</CODE><I>S</I> ]<CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">try</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<BR><SPAN class="keyword">finally</SPAN>&nbsp;</CODE><I>S</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;<SPAN class="keyword">try</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">try</SPAN>&nbsp;</CODE>...<CODE>&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">unit</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">catch</SPAN>&nbsp;</CODE><CODE><I>Y</I></CODE><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;ex(</CODE><CODE><I>Y</I></CODE><CODE>)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><I>S</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">case</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">of</SPAN>&nbsp;ex(</CODE><CODE><I>Z</I></CODE><CODE>)&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="keyword">raise</SPAN>&nbsp;</CODE><CODE><I>Z</I></CODE><CODE>&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">else</SPAN>&nbsp;<SPAN class="keyword">skip</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;<SPAN class="keyword">end</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">try</SPAN>&nbsp;</CODE><I>SE</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>SE</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label28">Exception Raising</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">raise</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{<SPAN class="string">`Exception.raise`</SPAN>&nbsp;</CODE><I>E</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">raise</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">raise</SPAN>&nbsp;</CODE><I>E</I><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label29">Equations</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I> = <I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E1</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E1</I> is no variable.</P></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label30">Operators</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>o</I><CODE>&nbsp;</CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>x</I><CODE>&nbsp;</CODE><I>E</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>where <I>o</I> <IMG alt="\in" src="latex16.png"> {<CODE><SPAN class="keyword">!!</SPAN></CODE>, <CODE><SPAN class="keyword">~</SPAN></CODE>} and <I>x</I> = <I>CV</I>(<I>o</I>).</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE>&nbsp;</CODE><I>o</I><CODE>&nbsp;</CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>x</I><CODE>&nbsp;</CODE><I>E1</I><CODE>&nbsp;</CODE><I>E2</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>where <I>o</I> <IMG alt="\in" src="latex16.png"> {<CODE><SPAN class="keyword">.</SPAN></CODE>, <CODE>^</CODE>, <CODE><SPAN class="keyword">*</SPAN></CODE>, <CODE><SPAN class="keyword">/</SPAN></CODE>, <CODE><SPAN class="keyword">div</SPAN></CODE>, <CODE><SPAN class="keyword">mod</SPAN></CODE>, <CODE><SPAN class="keyword">+</SPAN></CODE>, <CODE><SPAN class="keyword">-</SPAN></CODE>, <CODE><SPAN class="keyword">==</SPAN></CODE>, <CODE><SPAN class="keyword">\=</SPAN></CODE>, <CODE><SPAN class="keyword">&lt;</SPAN></CODE>, <CODE><SPAN class="keyword">=&lt;</SPAN></CODE>, <CODE><SPAN class="keyword">&gt;</SPAN></CODE>, <CODE><SPAN class="keyword">&gt;=</SPAN></CODE>} and <I>x</I> = <I>CV</I>(<I>o</I>). </P></TD></TR></TABLE><P> <I>CV</I>(<I>o</I>) denotes the Core variable to which operation&nbsp;<I>o</I> is bound. The following table summarizes in which module from <A href="../base/index.html">``The Oz Base Environment''</A> each operator is available, e.&nbsp;g., <CODE><SPAN class="keyword">+</SPAN></CODE> is available as <CODE>Number<SPAN class="keyword">.</SPAN><SPAN class="string">'+'</SPAN></CODE>, which means that <I>CV</I>(<I>o</I>) = <CODE><SPAN class="string">`Number.'+'`</SPAN></CODE>. </P><TABLE align="center" bgcolor="#f0f0e0"><TR valign="top"><TH><P>Operators</P></TH><TH><P>Located in Module</P></TH></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">!!</SPAN></CODE> <CODE><SPAN class="keyword">.</SPAN></CODE> <CODE><SPAN class="keyword">==</SPAN></CODE> <CODE><SPAN class="keyword">\=</SPAN></CODE> <CODE><SPAN class="keyword">&lt;</SPAN></CODE> <CODE><SPAN class="keyword">=&lt;</SPAN></CODE> <CODE><SPAN class="keyword">&gt;</SPAN></CODE> <CODE><SPAN class="keyword">&gt;=</SPAN></CODE></P></TD><TD><P><CODE>Value</CODE></P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">~</SPAN></CODE> <CODE><SPAN class="keyword">*</SPAN></CODE> <CODE><SPAN class="keyword">+</SPAN></CODE> <CODE><SPAN class="keyword">-</SPAN></CODE></P></TD><TD><P><CODE>Number</CODE></P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">div</SPAN></CODE> <CODE><SPAN class="keyword">mod</SPAN></CODE></P></TD><TD><P><CODE>Int</CODE></P></TD></TR><TR valign="top"><TD><P><CODE><SPAN class="keyword">/</SPAN></CODE></P></TD><TD><P><CODE>Float</CODE></P></TD></TR><TR valign="top"><TD><P><CODE>^</CODE></P></TD><TD><P><CODE>Record</CODE></P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE>&nbsp;<SPAN class="keyword">andthen</SPAN>&nbsp;</CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;<SPAN class="keyword">false</SPAN>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE>&nbsp;<SPAN class="keyword">orelse</SPAN>&nbsp;</CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN>&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">then</SPAN>&nbsp;<SPAN class="keyword">true</SPAN>&nbsp;<BR><SPAN class="keyword">else</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label31">Records</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt;, &lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>[</CODE><I>EP1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>EPn</I><CODE>]</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>EP1</I><CODE><SPAN class="keyword">|</SPAN></CODE>...<CODE><SPAN class="keyword">|</SPAN></CODE><I>EPn</I><CODE><SPAN class="keyword">|</SPAN>nil</CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt;, &lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>EP1</I><CODE><SPAN class="keyword">|</SPAN></CODE><I>EP2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="string">'|'</SPAN>(</CODE><I>EP1</I><CODE>&nbsp;</CODE><I>EP2</I><CODE>)</CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt;, &lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>EP1</I><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><I>EPn</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="string">'#'</SPAN>(</CODE><I>EP1</I><CODE>&nbsp;</CODE>...<CODE>&nbsp;</CODE><I>EPn</I><CODE>)</CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><DIV class="note"><P>Missing: dots, omitted features</P></DIV><P> </P></DIV><DIV class="unnumbered"><H3><A name="label32">Uniform State</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">@</SPAN></CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;<SPAN class="keyword">@</SPAN></CODE><CODE><I>X</I></CODE><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E</I> is no variable.</P></TD></TR></TABLE><P></P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE><SPAN class="keyword">.</SPAN></CODE><I>E2</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E3</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>E1</I><CODE><SPAN class="keyword">#</SPAN></CODE><I>E2</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E3</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>E1</I><CODE><SPAN class="keyword">.</SPAN></CODE><I>E2</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E3</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>E1</I><CODE><SPAN class="keyword">#</SPAN></CODE><I>E2</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E3</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E1</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E1</I> is no variable.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>x</I></CODE><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E</I> is no variable.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>E1</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E1</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E2</I><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E1</I> is no variable.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>statement</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>y</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;=&nbsp;</CODE><I>E</I><CODE>&nbsp;<BR>&nbsp;&nbsp;&nbsp;</CODE><I>x</I><CODE>&nbsp;=&nbsp;</CODE><I>y</I><CODE>&nbsp;<SPAN class="keyword">:=</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>E</I> is no variable.</P></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label33">Wildcard</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>_</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">in</SPAN>&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;<SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>_</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><I>X</I></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV><DIV class="unnumbered"><H3><A name="label34">Named Constants</A></H3><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt;, &lt;<I>label</I>&gt;, &lt;<I>feature</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">unit</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="string">`Unit.'unit'`</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">unit</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">!</SPAN><SPAN class="string">`Unit.'unit'`</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt;, &lt;<I>label</I>&gt;, &lt;<I>feature</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">true</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="string">`Bool.'true'`</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">true</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">!</SPAN><SPAN class="string">`Bool.'true'`</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>expression</I>&gt;, &lt;<I>label</I>&gt;, &lt;<I>feature</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">false</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="string">`Bool.'false'`</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD>&lt;<I>pattern</I>&gt; ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">false</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">!</SPAN><SPAN class="string">`Bool.'false'`</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P></DIV></DIV><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node5.html">- Up -</A></TD><TD><A href="node7.html#section.translation.constraints">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>