Project

General

Profile

« Previous | Next » 

Revision eb70bae5

Added by Christophe Garion about 6 years ago

parser-json: final version of parser with new types

View differences:

src/tools/stateflow/semantics/cPS_interpreter.ml
1
open Basetypes 
1
open Basetypes
2 2
open Datatype
3 3
(* open ActiveEnv *)
4 4
open CPS_transformer
5 5
(* open Simulink *)
6
open Theta 
6
open Theta
7 7

  
8 8
module Interpreter (Transformer : TransformerType) =
9 9
struct
......
165 165
	match tag with
166 166
	| E -> fun path frontier -> Transformer.(
167 167
	  Log.report ~level:sf_level (fun fmt -> Format.fprintf fmt "@[<v 2>S_%a[[node %a, dest %a, frontier %a]]@ " pp_tag tag pp_path p pp_path path pp_frontier frontier);
168
	  ((frontier = Loose) >? (eval_act (module Theta) p_def.state_actions.entry_act >> eval_act (module Theta) (open_path p))) >> 
168
	  ((frontier = Loose) >? (eval_act (module Theta) p_def.state_actions.entry_act >> eval_act (module Theta) (open_path p))) >>
169 169
	  match path with
170 170
	  | []         -> eval_C E p p_def.internal_composition
171 171
	  | s::path_tl -> Theta.theta E (p@[s]) path_tl Loose
......
195 195
  module type ProgType =
196 196
  sig
197 197
    val init : state_name_t
198
    val defs : src_components_t list
198
    val defs : prog_t src_components_t list
199 199
  end
200 200

  
201 201
  module type EvaluationType =
......
204 204
    val eval_prog : Transformer.t
205 205
    val eval_components : 'c call_t -> ('c * Transformer.t) list
206 206
  end
207
    
207

  
208 208
  module Evaluation (Thetaify : ThetaifyType) (Prog : ProgType) : EvaluationType =
209 209
  struct
210 210
    module Denotation = Denotation (Thetaify)
......
216 216
      let kenv =
217 217
	List.fold_left (
218 218
	  fun accu d -> match d with
219
   | State (p, defp) -> { accu with cont_node = (p, ((fun kenv -> eval_S kenv E p defp), (fun kenv -> eval_S kenv D p defp), (fun kenv -> eval_S kenv X p defp)))::accu.cont_node  }
220
	  | Junction (j, defj) -> { accu with cont_junc = (j, (fun kenv -> eval_T kenv defj))::accu.cont_junc  }
221
	) {cont_node = []; cont_junc = []} Prog.defs
219
          | State (p, defp)    -> { accu with cont_node = (p, ((fun kenv -> eval_S kenv E p defp),
220
                                                               (fun kenv -> eval_S kenv D p defp),
221
                                                               (fun kenv -> eval_S kenv X p defp)))::accu.cont_node }
222
	  | Junction (j, defj) -> { accu with cont_junc = (j, (fun kenv -> eval_T kenv defj))::accu.cont_junc }
223
          | SFFunction _       -> accu
224
        ) {cont_node = []; cont_junc = []} Prog.defs
222 225
    end
223 226

  
224 227
    module AppDenotation = Denotation (Kenv)

Also available in: Unified diff