- Up - | Next >> |
<in statement> ::= | |||
|
<in expression> ::= | |||
|
The following rule makes implicit declarations explicit, i. e., declarations only name variables between local
and in
. We need an auxiliary definition: The function PV returns the set of pattern variables of a statement (or expression). Furthermore, we call a position p in a given statement S a pattern position iff the following holds: If the subterm at position p of S is replaced by a fresh variable X
, then X
PV(S[X
/p]).
D | PV(D) |
---|---|
D1 | PV(D1) PV(D2) |
x | {x} |
| PV(S) |
| PV(S) - PV(D) |
| PV(S) - PV(D) |
| PV(E) |
| PV(E) |
| PV(E) |
| PV(E) |
E | PV(E) |
otherwise |
E | PV(E) |
---|---|
x | {x} |
| PV(E) |
| (PV(S) PV(E)) - PV(D) |
| (PV(S) PV(E)) - PV(D) |
E1 | PV(E1) PV(E2) |
| PV(E1) ... PV(En) |
E1 | PV(E1) PV(E2) |
E1 | PV(E1) ... PV(En) |
l | PV(E1) ... PV(En) |
otherwise |
<statement> ::= | |||
| |||
if D is not a sequence of distinct variables and where {x1, ..., xn} = PV(D) and D' is D with singleton variables and escapes in pattern position removed. |
<statement> ::= | |||
|
<statement> ::= | |||
| |||
if E is no variable. |
<statement>, <expression> ::= | |||
| |||
where all occurrences of |
<statement>, <expression> ::= | |||
| |||
if no |
<statement>, <expression> ::= | |||
| |||
if |
<statement>, <expression> ::= | |||
| |||
if P1 ... Pn are not distinct variables and no |
<statement> ::= | |||
|
Actual arguments are evaluated from left to right and after the designator expression.
<statement> ::= | |||
| |||
if Ek is no variable and all Ei with i < k are variables. |
<statement> ::= | |||
| |||
if no |
<statement> ::= | |||
| |||
if |
<else statement>, <else expression> ::= | |||
|
<else statement>, <else expression> ::= | |||
|
<statement> ::= | |||
|
<expression> ::= | |||
| |||
where the omitted parts of the exception are implementation-dependent. |
<statement>, <expression> ::= | |||
| |||
where the omitted parts of the exception are implementation-dependent. |
<statement>, <expression> ::= | |||
| |||
if E is no variable. |
<statement>, <expression> ::= | |||
| |||
where the omitted parts of the exception are implementation-dependent. |
Missing: expansion of case
statement/expression to cond
<statement>, <expression> ::= | |||
| |||
if E is no variable. |
<statement> ::= | |||
|
<statement>, <expression> ::= | |||
| |||
if C1 |
In the following rule, the intermediate variable X
ensures that x is only bound iff evaluation of E does not raise an exception.
<statement> ::= | |||
|
<statement> ::= | |||
|
<statement> ::= | |||
|
<statement> ::= | |||
|
<statement> ::= | |||
|
<expression> ::= | |||
| |||
where o { |
<expression> ::= | |||
| |||
where o { |
CV(o) denotes the Core variable to which operation o is bound. The following table summarizes in which module from ``The Oz Base Environment'' each operator is available, e. g., +
is available as Number.'+'
, which means that CV(o) = `Number.'+'`
.
Operators | Located in Module |
---|---|
|
|
|
|
|
|
|
|
|
|
<expression> ::= | |||
|
<expression> ::= | |||
|
<expression>, <pattern> ::= | |||
|
<expression>, <pattern> ::= | |||
|
<expression>, <pattern> ::= | |||
|
Missing: dots, omitted features
<statement> ::= | |||
| |||
if E is no variable. |
<statement> ::= | |||
|
<statement> ::= | |||
|
<statement> ::= | |||
| |||
if E1 is no variable. |
<statement> ::= | |||
| |||
if E is no variable. |
<statement> ::= | |||
| |||
if E1 is no variable. |
<statement> ::= | |||
| |||
if E is no variable. |
<expression>, <label>, <feature> ::= | |||
|
<pattern> ::= | |||
|
<expression>, <label>, <feature> ::= | |||
|
<pattern> ::= | |||
|
<expression>, <label>, <feature> ::= | |||
|
<pattern> ::= | |||
|
- Up - | Next >> |