summaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ansys.com>2014-06-19 18:48:54 +0200
committerAlex Auvolat <alex.auvolat@ansys.com>2014-06-19 18:48:54 +0200
commitdd7b7d30adddfa0258aa5b3819a0a58d6b5d8705 (patch)
tree0ddf10bde1613ce5a5eb243b2d6114d6f6e3ddec /frontend
parent2514cd8a0767804a254addc9ac0ad8da2ce97dda (diff)
downloadscade-analyzer-dd7b7d30adddfa0258aa5b3819a0a58d6b5d8705.tar.gz
scade-analyzer-dd7b7d30adddfa0258aa5b3819a0a58d6b5d8705.zip
Everything proved !!
Diffstat (limited to 'frontend')
-rw-r--r--frontend/typing.ml17
1 files changed, 16 insertions, 1 deletions
diff --git a/frontend/typing.ml b/frontend/typing.ml
index a4abfe0..564d91e 100644
--- a/frontend/typing.ml
+++ b/frontend/typing.ml
@@ -158,7 +158,22 @@ let rec extract_all_vars rp (node, prefix, eqs) n_vars =
| AST_activate_if(c, a, b) ->
vars_of_expr c @ do_branch a @ do_branch b
in do_branch b
- | AST_automaton _ -> not_implemented "extract_all vars automaton"
+ | AST_automaton (aid, states, ret) ->
+ let do_state (st, _) =
+ let tvars =
+ List.flatten
+ (List.map (fun (e, _, _) -> vars_of_expr e) st.until)
+ in
+ let svars = vars_in_node node st.st_locals in
+ svars @ tvars @
+ extract_all_vars rp
+ (node, aid^"."^st.st_name^".", st.body)
+ (tvars@n_vars)
+ in
+ let st_ids = List.map (fun (st, _) -> st.st_name) states in
+ (false, node^"/"^aid^".state", TEnum st_ids)::
+ (false, "N"^node^"/"^aid^".state", TEnum st_ids)::
+ (List.flatten (List.map do_state states))
in
let v = List.flatten (List.map vars_of_eq eqs) in
let v =