Class Std.expi

Expression interpreter

constraint 'a = Expi.context

Interaction with environment

method empty : Bil.storage

creates an empty storage. If you want to provide your own implementation of storage, then it is definitely the right place.

method lookup : var -> 'a Expi.r

a variable is looked up in a context

method update : var -> Bil.result -> 'a Expi.u

a variable is bind to a value.

method load : Bil.storage -> addr -> 'a Expi.r

a byte is loaded from a given address

method store : Bil.storage -> addr -> word -> 'a Expi.r

a byte is stored to a a given address

Error conditions

method type_error : type_error -> 'a Expi.r

a given typing error has occurred

method division_by_zero : unit -> 'a Expi.r

we can't do this!

method undefined_addr : addr -> 'a Expi.r

called when storage doesn't contain the addr

method undefined_var : var -> 'a Expi.r

called when context doesn't know the variable