diff options
| author | Peter Sewell | 2014-11-04 23:43:13 +0000 |
|---|---|---|
| committer | Peter Sewell | 2014-11-04 23:43:13 +0000 |
| commit | dc28ca5f66a2cd1a777f1ed9b21d2fbeb6fb613c (patch) | |
| tree | 4a8979624a527fae5476e141add91459837dc86a /src/lem_interp/interp_inter_imp.lem | |
| parent | e73242b38b528a810f447bc83ae5a1fa2b482287 (diff) | |
proposed split of decode into decode-to-instruction and instruction-to-instructionstate
Diffstat (limited to 'src/lem_interp/interp_inter_imp.lem')
| -rw-r--r-- | src/lem_interp/interp_inter_imp.lem | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lem_interp/interp_inter_imp.lem b/src/lem_interp/interp_inter_imp.lem index 06782451..120241f4 100644 --- a/src/lem_interp/interp_inter_imp.lem +++ b/src/lem_interp/interp_inter_imp.lem @@ -301,16 +301,24 @@ let decode_to_istate top_level value = | (Nothing, Just err) -> Decode_error err end + +let decode_to_instruction top_level value = + match decode_to_istate top_level value with + | Instr inst is -> IDE_instr inst + | Decode_error de -> IDE_decode_error de + end + + let instruction_to_istate top_level ((name, parms, _) as instr) = let mode = make_mode true false in let get_value (name,typ,v) = let (e,_) = Interp.to_exp mode Interp.eenv (intern_value v) in e in - (Instr instr +(* (Instr instr*) (Interp.Thunk_frame (E_aux (E_app (Id_aux (Id "execute") Interp_ast.Unknown) [(E_aux (E_app (Id_aux (Id name) Interp_ast.Unknown) (List.map get_value parms)) (Interp_ast.Unknown,Interp.ctor_annot (T_id "ast")) (*This type shouldn't be hard-coded*))]) (Interp_ast.Unknown,Nothing)) - top_level Interp.eenv Interp.emem Interp.Top)) + top_level Interp.eenv Interp.emem Interp.Top) (*)*) let rec interp_to_outcome mode thunk = match thunk () with |
