Skip to content

moduleexpression

Norbert Preining edited this page Oct 6, 2017 · 2 revisions

module expression

In various syntax elements not only module names itself, but whole module expressions can appear. A typical example is

open <mod_exp> .

which opens a module expression. The following constructs are supported:

module name ~ using the name of a module

renaming ~ <mod_exp> * { <mappings> }

This expressions describes a new module where sort and/or
operators are renamed. 
`<mappings>` are like in the case of [`view`](/CafeOBJ/cafeobj/wiki/view) a comma
separated list of mappings of either sorts (`sort` and `hsort`) or
operators (`op` and `bop`). Source names may be qualified, while
target names are not, they are required to be new names. Renaming
is often used in combination with [instantiation](/CafeOBJ/cafeobj/wiki/instantiation).

summation ~ <mod_exp> + <mod_exp>

This expression describes a module consisting of all the module
elements of the summands. If a submodule is imported more than
once, it is assumed to be shared.
Clone this wiki locally