Esempio n. 1
0
        /// <summary>
        /// Constructor
        /// </summary>
        public void BuildMachine(String filePath)
        {
            int CurrentStateNumber = -1;

            String[] Lines = File.ReadAllLines(filePath);
            // Creates machine states, without transitions
            for (int i = 0; i < Lines.Length; i++)
            {
                String[] CurrentState = Lines[i].Split('\t');;
                if (int.Parse(CurrentState[0]) != CurrentStateNumber)
                {
                    MachineState m = new MachineState();
                    Q.Add(m);
                    CurrentStateNumber = int.Parse(CurrentState[0]);
                }
            }

            // Creates machine states, with its transitions
            for (int i = 0; i < Lines.Length; i++)
            {
                String[]   CurrentTransition = Lines[i].Split('\t');
                int        StateNumber       = int.Parse(CurrentTransition[0]);
                string     Symbol            = CurrentTransition[1] == "blank"?blank:CurrentTransition[1];
                int        NextState         = int.Parse(CurrentTransition[2]);
                string     ReplacingSymbol   = CurrentTransition[3] == "blank" ? blank : CurrentTransition[3];
                bool       moveRight         = CurrentTransition[4] == "R" ? true : false;
                Transition t = new Transition(Symbol, NextState, ReplacingSymbol, moveRight);
                Q[StateNumber].AddTransition(t);
            }

            // Fills the machine tape
            for (int i = 0; i < Entry.Length; i++)
            {
                MachineTape.AddSymbol(Entry[i].ToString());
            }

            // Gets Ready vor Everythin :u
            CurrentState = Q[CurrentStateNumber];
            try
            {
                CurrentSymbol = MachineTape.boxes[Pointer];
            }
            catch
            {
                return;
            }
        }