Action.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Xml.Linq;
  4. namespace csharp_sccd_compiler
  5. {
  6. public class Action : Visitable
  7. {
  8. public List<SubAction> sub_actions { get; private set; }
  9. public Action(XElement xml)
  10. {
  11. this.sub_actions = new List<SubAction>();
  12. foreach (XElement sub_action_xml in xml.Elements())
  13. {
  14. SubAction sub_action = null;
  15. if (sub_action_xml.Name == "raise")
  16. sub_action = new RaiseEvent(sub_action_xml);
  17. else if (sub_action_xml.Name == "script")
  18. sub_action = new Script(sub_action_xml);
  19. else if (sub_action_xml.Name == "log")
  20. sub_action = new Log(sub_action_xml);
  21. else if (sub_action_xml.Name == "assign")
  22. sub_action = new Assign(sub_action_xml);
  23. else if (sub_action_xml.Name != "parameter")
  24. throw new CompilerException(string.Format("Invalid subaction <{0}>.", sub_action_xml.Name));
  25. if (sub_action != null)
  26. this.sub_actions.Add(sub_action);
  27. }
  28. }
  29. public override void accept(Visitor visitor)
  30. {
  31. foreach (SubAction sub_action in this.sub_actions)
  32. sub_action.accept(visitor);
  33. }
  34. }
  35. }