/TuringMachine/StateAutomat/State.cs
# · C# · 82 lines · 78 code · 4 blank · 0 comment · 4 complexity · 8cec93e6deb00e8e429a41724a0def75 MD5 · raw file
- using System;
- using System.Collections.Generic;
- using System.Text;
-
- namespace TuringMachine.StateAutomat
- {
- public class State
- {
- #region Private members
- private String name;
- private StateType type;
- private Dictionary<char, State> transactionTable = null;
- #endregion
-
- #region Properties
- public StateType Type
- {
- get { return type; }
- set { type = value; }
- }
- public String Name
- {
- get { return name; }
- set { name = value; }
- }
- #endregion
-
- #region Constructors
- public State()
- {
- transactionTable = new Dictionary<char, State>();
- name = string.Empty;
- type = StateType.Unknown;
- }
- public State(String name)
- {
- transactionTable = new Dictionary<char, State>();
- name = name;
- type = StateType.Unknown;
- }
- public State(String name, StateType type)
- {
- transactionTable = new Dictionary<char, State>();
- name = name;
- type = type;
- }
- #endregion
-
- #region Public methods
- public Boolean IsStart()
- {
- return (type == StateType.StartState);
- }
- public Boolean IsHalt()
- {
- return (type == StateType.HaltState);
- }
- public State GetNextState(char inputChar)
- {
- if (transactionTable.ContainsKey(inputChar))
- {
- return transactionTable[inputChar];
- }
- else
- {
- return null;
- }
- }
- public void AddTransition(char inputChar, State nextState)
- {
- if (transactionTable.ContainsKey(inputChar))
- {
- throw new Exception("Already exist transaction from state '" + this.Name + "' with character '" + inputChar + "'");
- }
- else
- {
- transactionTable.Add(inputChar, nextState);
- }
- }
- #endregion
- }
- }