fsa_simulate.alc 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. include "primitives.alh"
  2. include "modelling.alh"
  3. include "object_operations.alh"
  4. include "conformance_scd.alh"
  5. include "io.alh"
  6. include "metamodels.alh"
  7. include "mini_modify.alh"
  8. Boolean function main(model : Element):
  9. String input_value
  10. Float start_time
  11. String current_state
  12. Element transitions
  13. String transition
  14. start_time = time()
  15. while (True):
  16. if (has_input()):
  17. input_value = input()
  18. if (input_value == "__EXIT__"):
  19. break!
  20. transitions = allOutgoingAssociationInstances(model, current_state)
  21. while (set_len(transitions) > 0):
  22. transition = set_pop(transitions)
  23. if (read_attribute(model, transition, "trigger") == input_value):
  24. if (element_neq(read_attribute(model, transition, "raise"), read_root())):
  25. output(cast_value(time() - start_time) + " ! " + cast_value(read_attribute(model, transition, "raise")))
  26. instantiate_attribute(model, current_state, "current", False)
  27. current_state = readAssociationDestination(model, transition)
  28. instantiate_attribute(model, current_state, "current", True)
  29. break!
  30. output(cast_value(time() - start_time) + " : " + cast_value(read_attribute(model, current_state, "name")))
  31. sleep(0.2)
  32. output("CLOSE")
  33. return True!