CMS Interpreter: Documentation and Applet

Syntax

<E> ::=
<C>  |
<VAR>  |
`[' <VN> `;' <NE> `;' <VE> `]'  |
<E> `@' <E>  |
reduct `{' <NN> `}'  `|'  <E>  `|'  `{' <NN> `}'  |
freeze `{' <NN> `}'  `('  <E>  `)'  |
<E> `.' <NAME> |
eval `('  <E>  `)' 
<C> ::=
<E>
fn <VAR> `=>' <C>  |
<C>  `(' <C> `)'  |
if <C> then <C> else <C>  |
let <VAR> '=' <C> in <C>  |
<COP>  |
<UNOP> <C>  |
<C> <BINOP> <C>
<VN> ::=
[ <VAR> `->' <NAME> { `,' <VAR> `->' <NAME> } ]
<NE> ::=
[ <NAME> `->' <E> { `,' <NAME> `->' <E> } ]
<VE> ::=
[ <VAR> `->' <E> { `,' <VAR> `->' <E> } ]
<NN> ::=
[ <NAME>  [ `->' <NAME> ] { `,' <NAME>  [ `->' <NAME> ] } ]
<COP> ::=
<NUM>  | false | true
<UOP> ::=
`-'  |  `!'
<BOP> ::=
`+'  |  `-'  |  `*'  |  `/'  |  `||'  |  `&&'  |  `=='  |  `!='  |  `<'  |  `<='  |  `>'  |  `>='

Remarks

Semantics

 See A Calculus of Module Systems  (note that the syntax has been slightly changed!).

Examples




Applet