PageRenderTime 48ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/TuringMachine/StateAutomat/State.cs

#
C# | 82 lines | 78 code | 4 blank | 0 comment | 4 complexity | 8cec93e6deb00e8e429a41724a0def75 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace TuringMachine.StateAutomat
  5. {
  6. public class State
  7. {
  8. #region Private members
  9. private String name;
  10. private StateType type;
  11. private Dictionary<char, State> transactionTable = null;
  12. #endregion
  13. #region Properties
  14. public StateType Type
  15. {
  16. get { return type; }
  17. set { type = value; }
  18. }
  19. public String Name
  20. {
  21. get { return name; }
  22. set { name = value; }
  23. }
  24. #endregion
  25. #region Constructors
  26. public State()
  27. {
  28. transactionTable = new Dictionary<char, State>();
  29. name = string.Empty;
  30. type = StateType.Unknown;
  31. }
  32. public State(String name)
  33. {
  34. transactionTable = new Dictionary<char, State>();
  35. name = name;
  36. type = StateType.Unknown;
  37. }
  38. public State(String name, StateType type)
  39. {
  40. transactionTable = new Dictionary<char, State>();
  41. name = name;
  42. type = type;
  43. }
  44. #endregion
  45. #region Public methods
  46. public Boolean IsStart()
  47. {
  48. return (type == StateType.StartState);
  49. }
  50. public Boolean IsHalt()
  51. {
  52. return (type == StateType.HaltState);
  53. }
  54. public State GetNextState(char inputChar)
  55. {
  56. if (transactionTable.ContainsKey(inputChar))
  57. {
  58. return transactionTable[inputChar];
  59. }
  60. else
  61. {
  62. return null;
  63. }
  64. }
  65. public void AddTransition(char inputChar, State nextState)
  66. {
  67. if (transactionTable.ContainsKey(inputChar))
  68. {
  69. throw new Exception("Already exist transaction from state '" + this.Name + "' with character '" + inputChar + "'");
  70. }
  71. else
  72. {
  73. transactionTable.Add(inputChar, nextState);
  74. }
  75. }
  76. #endregion
  77. }
  78. }