/usr/share/mozart/doc/notation/node6.html is in mozart-doc 1.4.0-8ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 | <!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 >></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><<I>in statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE><I>S</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE><I>S</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>in expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE>[ <I>S</I> ]<CODE> </CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE>[ <I>S</I> ]<CODE> </CODE><I>E</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><P> The following rule makes implicit declarations explicit, i. 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 <I>p</I> in a given statement <I>S</I> a <EM>pattern position</EM> iff the following holds: If the subterm at position <I>p</I> of <I>S</I> is replaced by a fresh variable <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> </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> <SPAN class="keyword">in</SPAN> </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> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE><I>S</I><CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E</I><CODE> </CODE>...<CODE>} </CODE>...<CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E</I><CODE> </CODE>...<CODE>} </CODE>...<CODE> <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> </CODE><I>E</I><CODE> </CODE>...<CODE> <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> </CODE><I>E</I><CODE> </CODE>...<CODE> <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> = </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> <SPAN class="keyword">in</SPAN> </CODE>[ <I>S</I> ]<CODE> </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> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE>[ <I>S</I> ]<CODE> </CODE><I>E</I><CODE> <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> = </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> </CODE>...<CODE> </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> </CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE>[ <I>fn</I><CODE>:</CODE> ]<CODE> </CODE><I>En</I><CODE> </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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE><I>S</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><I>x1</I><CODE> </CODE>...<CODE> </CODE><I>xn</I><CODE> <SPAN class="keyword">in</SPAN> </CODE><I>D'</I><CODE> </CODE><I>S</I><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <SPAN class="keyword">local</SPAN> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE>[ <I>S</I> ]<CODE> </CODE><I>E</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>x</I><CODE> <BR> <SPAN class="keyword">local</SPAN> </CODE><I>D</I><CODE> <SPAN class="keyword">in</SPAN> </CODE>[ <I>S</I> ]<CODE> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <SPAN class="keyword">end</SPAN> <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><<I>statement</I>> ::=</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><<I>expression</I>> ::=</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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><I>SE</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> <SPAN class="keyword">proc</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><CODE><I>X</I></CODE><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><I>SE</I><CODE> <BR> <SPAN class="keyword">end</SPAN> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">fun</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> lazy </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E1</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><I>E2</I><CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E1</I><CODE> </CODE><CODE><I>X1</I></CODE><CODE> </CODE>...<CODE> </CODE><CODE><I>X</I></CODE><I>n</I><CODE>}<BR> {<SPAN class="string">`Value.byNeed`</SPAN> <BR> <SPAN class="keyword">fun</SPAN><SPAN class="variablename"> </SPAN>{<SPAN class="functionname">$</SPAN>}<BR> <SPAN class="keyword">case</SPAN> </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> <SPAN class="keyword">of</SPAN> </CODE><I>P1</I><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><I>Pn</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>E2</I><CODE> <BR> <SPAN class="keyword">end</SPAN> <BR> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">fun</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E1</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><I>E2</I><CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E1</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE> $}<BR> </CODE><I>E2</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if 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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E1</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pk</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><I>E2</I><CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E1</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pk'</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E2</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <CODE>$</CODE> occurs in <I>Pk</I> and no other <CODE>$</CODE> occurs in <I>P1</I> ... <I>Pn</I> and no <CODE>lazy</CODE> occurs in the procedure flags. <I>Pk'</I> is the result of replacing the <CODE>$</CODE> in <I>Pk</I> by <CODE><I>X</I></CODE>.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">proc</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E</I><CODE> </CODE><I>P1</I><CODE> </CODE>...<CODE> </CODE><I>Pn</I><CODE>}<BR> </CODE><I>S</I><CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>E</I><CODE> </CODE><CODE><I>X1</I></CODE><CODE> </CODE>...<CODE> </CODE><CODE><I>X</I></CODE><I>n</I><CODE>}<BR> <SPAN class="keyword">case</SPAN> </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> <SPAN class="keyword">of</SPAN> </CODE><I>P1</I><CODE><SPAN class="keyword">#</SPAN></CODE>...<CODE><SPAN class="keyword">#</SPAN></CODE><I>Pn</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>S</I><CODE> <BR> <SPAN class="keyword">end</SPAN> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <SPAN class="keyword">proc</SPAN><SPAN class="variablename"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{<SPAN class="functionname">$</SPAN> </CODE>...<CODE>} </CODE><I>SE</I><CODE> <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"> </SPAN></CODE>...<CODE><SPAN class="variablename"> </SPAN>{</CODE><I>x</I><CODE> </CODE>...<CODE>} </CODE><I>SE</I><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>{</CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE><I>Ek</I><CODE> </CODE>...<CODE> </CODE><I>En</I><CODE>}</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>Ek</I><CODE> <BR> {</CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE><CODE><I>X</I></CODE><CODE> </CODE>...<CODE> </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> < <I>k</I> are variables.</P></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = {</CODE><I>E</I><CODE> </CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE><I>En</I><CODE>}</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>E</I><CODE> </CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE><I>En</I><CODE> </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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = {</CODE><I>E</I><CODE> </CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE><I>Ek</I><CODE> </CODE>...<CODE> </CODE><I>En</I><CODE>}</CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>E</I><CODE> </CODE><I>E1</I><CODE> </CODE>...<CODE> </CODE><I>Ek'</I><CODE> </CODE>...<CODE> </CODE><I>En</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <CODE>$</CODE> occurs in <I>Ek</I> in pattern position and no other <CODE>$</CODE> occurs in <I>E1</I> ... <I>En</I> in pattern position. <I>Ek'</I> is the result of replacing the <CODE>$</CODE> in pattern position in <I>Ek</I> by <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><<I>else statement</I>>, <<I>else expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">elseif</SPAN> </CODE>...</P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">else</SPAN> <SPAN class="keyword">if</SPAN> </CODE>...<CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>else statement</I>>, <<I>else expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">elsecase</SPAN> </CODE>...</P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">else</SPAN> <SPAN class="keyword">case</SPAN> </CODE>...<CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>S</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>S</I><CODE> <BR><SPAN class="keyword">else</SPAN> <SPAN class="keyword">skip</SPAN> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E1</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>E1</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E1</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>E2</I><CODE> <BR><SPAN class="keyword">else</SPAN> <BR> <SPAN class="keyword">raise</SPAN> error(kernel(noElse </CODE>...<CODE>) </CODE>...<CODE>) <SPAN class="keyword">end</SPAN> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>SE1</I><CODE> <BR><SPAN class="keyword">else</SPAN> </CODE><I>SE2</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">case</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">of</SPAN> <SPAN class="keyword">true</SPAN> <SPAN class="keyword">then</SPAN> </CODE><I>SE1</I><CODE> <BR><SPAN class="keyword">[]</SPAN> <SPAN class="keyword">false</SPAN> <SPAN class="keyword">then</SPAN> </CODE><I>SE2</I><CODE> <BR><SPAN class="keyword">else</SPAN> <BR> <SPAN class="keyword">raise</SPAN> error(kernel(boolCaseType </CODE>...<CODE>) </CODE>...<CODE>) <SPAN class="keyword">end</SPAN> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">case</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">of</SPAN> </CODE>...<CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> <SPAN class="keyword">case</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">of</SPAN> </CODE>...<CODE> <SPAN class="keyword">end</SPAN> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">case</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">of</SPAN> </CODE><I>C1</I><CODE> <SPAN class="keyword">[]</SPAN> </CODE>...<CODE> <SPAN class="keyword">[]</SPAN> </CODE><I>Cn</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">case</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">of</SPAN> </CODE><I>C1</I><CODE> <SPAN class="keyword">[]</SPAN> </CODE>...<CODE> <SPAN class="keyword">[]</SPAN> </CODE><I>Cn</I><CODE> <BR><SPAN class="keyword">else</SPAN> <BR> <SPAN class="keyword">raise</SPAN> error(kernel(noElse </CODE>...<CODE>) </CODE>...<CODE>) <SPAN class="keyword">end</SPAN> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">lock</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>SE</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> <SPAN class="keyword">lock</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>SE</I><CODE> <SPAN class="keyword">end</SPAN> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <SPAN class="keyword">lock</SPAN> </CODE><I>E1</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>E2</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">lock</SPAN> </CODE><I>E1</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>x</I><CODE> = </CODE><I>E2</I><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <SPAN class="keyword">thread</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">thread</SPAN> </CODE><I>x</I><CODE> = </CODE><I>E</I><CODE> <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><<I>statement</I>>, <<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">try</SPAN> </CODE><I>SE1</I><CODE> <BR><SPAN class="keyword">catch</SPAN> </CODE><I>C1</I><CODE> <SPAN class="keyword">[]</SPAN> </CODE>...<CODE> <SPAN class="keyword">[]</SPAN> </CODE><I>Cn</I><CODE> <BR></CODE>[ <CODE><SPAN class="keyword">finally</SPAN> </CODE><I>S</I> ]<CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">try</SPAN> </CODE><I>SE1</I><CODE> <BR><SPAN class="keyword">catch</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">then</SPAN> <BR> <SPAN class="keyword">case</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">of</SPAN> </CODE><I>C1</I><CODE> <SPAN class="keyword">[]</SPAN> </CODE>...<CODE> <SPAN class="keyword">[]</SPAN> </CODE><I>Cn</I><CODE> <BR> <SPAN class="keyword">else</SPAN> <BR> <SPAN class="keyword">raise</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">end</SPAN> <BR> <SPAN class="keyword">end</SPAN> <BR></CODE>[ <CODE><SPAN class="keyword">finally</SPAN> </CODE><I>S</I> ]<CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR><TR valign="top"><TD><P>if <I>C1</I><CODE> <SPAN class="keyword">[]</SPAN> </CODE>...<CODE> <SPAN class="keyword">[]</SPAN> </CODE><I>Cn</I> does not have the form <I>x</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>SE2</I>.</P></TD></TR></TABLE><P> </P><P> In the following rule, the intermediate variable <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <SPAN class="keyword">try</SPAN> </CODE><I>E</I><CODE> <BR> </CODE>[ <CODE><SPAN class="keyword">catch</SPAN> </CODE><I>y</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>E</I> ]<CODE> <BR> </CODE>[ <CODE><SPAN class="keyword">finally</SPAN> </CODE><I>S</I> ]<CODE> <BR> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">try</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> </CODE><I>x</I><CODE> = </CODE><CODE><I>X</I></CODE><CODE> <BR></CODE>[ <CODE><SPAN class="keyword">catch</SPAN> </CODE><I>y</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>x</I><CODE> = </CODE><I>E</I> ]<CODE> <BR></CODE>[ <CODE><SPAN class="keyword">finally</SPAN> </CODE><I>S</I> ]<CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">try</SPAN> </CODE>...<CODE> <BR><SPAN class="keyword">finally</SPAN> </CODE><I>S</I><CODE> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = <SPAN class="keyword">try</SPAN> <BR> <SPAN class="keyword">try</SPAN> </CODE>...<CODE> <SPAN class="keyword">end</SPAN> <BR> <SPAN class="keyword">unit</SPAN> <BR> <SPAN class="keyword">catch</SPAN> </CODE><CODE><I>Y</I></CODE><CODE> <SPAN class="keyword">then</SPAN> ex(</CODE><CODE><I>Y</I></CODE><CODE>)<BR> <SPAN class="keyword">end</SPAN> <BR> </CODE><I>S</I><CODE> <BR> <SPAN class="keyword">case</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">of</SPAN> ex(</CODE><CODE><I>Z</I></CODE><CODE>) <SPAN class="keyword">then</SPAN> <BR> <SPAN class="keyword">raise</SPAN> </CODE><CODE><I>Z</I></CODE><CODE> <SPAN class="keyword">end</SPAN> <BR> <SPAN class="keyword">else</SPAN> <SPAN class="keyword">skip</SPAN> <BR> <SPAN class="keyword">end</SPAN> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">try</SPAN> </CODE><I>SE</I><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE><SPAN class="keyword">raise</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{<SPAN class="string">`Exception.raise`</SPAN> </CODE><I>E</I><CODE>}</CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <SPAN class="keyword">raise</SPAN> </CODE><I>E</I><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">raise</SPAN> </CODE><I>E</I><CODE> <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><<I>statement</I>> ::=</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> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E1</I><CODE> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E2</I><CODE> <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><<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>o</I><CODE> </CODE><I>E</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>x</I><CODE> </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><<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE> </CODE><I>o</I><CODE> </CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE>{</CODE><I>x</I><CODE> </CODE><I>E1</I><CODE> </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"><</SPAN></CODE>, <CODE><SPAN class="keyword">=<</SPAN></CODE>, <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> <I>CV</I>(<I>o</I>) denotes the Core variable to which operation <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. 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"><</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>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><<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE> <SPAN class="keyword">andthen</SPAN> </CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E1</I><CODE> <SPAN class="keyword">then</SPAN> </CODE><I>E2</I><CODE> <BR><SPAN class="keyword">else</SPAN> <SPAN class="keyword">false</SPAN> <BR><SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>expression</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE> <SPAN class="keyword">orelse</SPAN> </CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">if</SPAN> </CODE><I>E1</I><CODE> <SPAN class="keyword">then</SPAN> <SPAN class="keyword">true</SPAN> <BR><SPAN class="keyword">else</SPAN> </CODE><I>E2</I><CODE> <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><<I>expression</I>>, <<I>pattern</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><CODE>[</CODE><I>EP1</I><CODE> </CODE>...<CODE> </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><<I>expression</I>>, <<I>pattern</I>> ::=</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> </CODE><I>EP2</I><CODE>)</CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>expression</I>>, <<I>pattern</I>> ::=</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> </CODE>...<CODE> </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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = <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> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> </CODE><I>x</I><CODE> = <SPAN class="keyword">@</SPAN></CODE><CODE><I>X</I></CODE><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE><SPAN class="keyword">.</SPAN></CODE><I>E2</I><CODE> <SPAN class="keyword">:=</SPAN> </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> <SPAN class="keyword">:=</SPAN> </CODE><I>E3</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = </CODE><I>E1</I><CODE><SPAN class="keyword">.</SPAN></CODE><I>E2</I><CODE> <SPAN class="keyword">:=</SPAN> </CODE><I>E3</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><I>x</I><CODE> = </CODE><I>E1</I><CODE><SPAN class="keyword">#</SPAN></CODE><I>E2</I><CODE> <SPAN class="keyword">:=</SPAN> </CODE><I>E3</I></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>E1</I><CODE> <SPAN class="keyword">:=</SPAN> </CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E1</I><CODE> <BR> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">:=</SPAN> </CODE><I>E2</I><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> <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> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> </CODE><CODE><I>x</I></CODE><CODE> <SPAN class="keyword">:=</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = </CODE><I>E1</I><CODE> <SPAN class="keyword">:=</SPAN> </CODE><I>E2</I></P></TD><TD><IMG alt="==>" src="latex15.png"></TD><TD><P><CODE><SPAN class="keyword">local</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E1</I><CODE> <BR> </CODE><I>x</I><CODE> = </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">:=</SPAN> </CODE><I>E2</I><CODE> <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><<I>statement</I>> ::=</TD></TR><TR><TD><TABLE width="100%"><TR><TD><P><I>x</I><CODE> = </CODE><I>y</I><CODE> <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> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> <BR> </CODE><CODE><I>X</I></CODE><CODE> = </CODE><I>E</I><CODE> <BR> </CODE><I>x</I><CODE> = </CODE><I>y</I><CODE> <SPAN class="keyword">:=</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <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><<I>expression</I>> ::=</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> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">in</SPAN> </CODE><CODE><I>X</I></CODE><CODE> <SPAN class="keyword">end</SPAN></CODE></P></TD></TR></TABLE></TD></TR></TABLE><P> </P><TABLE border="1"><TR valign="top"><TD><<I>pattern</I>> ::=</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><<I>expression</I>>, <<I>label</I>>, <<I>feature</I>> ::=</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><<I>pattern</I>> ::=</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><<I>expression</I>>, <<I>label</I>>, <<I>feature</I>> ::=</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><<I>pattern</I>> ::=</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><<I>expression</I>>, <<I>label</I>>, <<I>feature</I>> ::=</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><<I>pattern</I>> ::=</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 >></A></TD></TR></TABLE><HR><ADDRESS><A href="http://www.iscs.nus.edu.sg/~henz">Martin Henz</A> and <A href="http://www.ps.uni-sb.de/~kornstae/">Leif Kornstaedt</A><BR><SPAN class="version">Version 1.4.0 (20110908185330)</SPAN></ADDRESS></BODY></HTML>
|