コード例 #1
0
 private TuringMachine(TuringMachineData dado, string estadoInicial, string[] estadoFim, TuringMachineInstrucoes[]
                       instrucoes)
 {
     Dado          = dado;
     EstadoAtual   = estadoInicial;
     EstadoFim     = estadoFim;
     Instrucoes    = instrucoes;
     MachineEstado = Estado.Pronto;
     Resultado     = null;
 }
コード例 #2
0
        public static TuringMachine FromText(string[] linhas)
        {
            TuringMachineData dado          = null;
            string            estadoInicial = null;

            string[] estadoFim = new string[0];
            List <TuringMachineInstrucoes> instrucoes = new List <TuringMachineInstrucoes>();

            foreach (var linha in linhas)
            {
                var linhaLimpa = linha.Trim();

                if (linhaLimpa.StartsWith("@"))
                {
                    continue;
                }
                if (linhaLimpa.StartsWith("fita "))
                {
                    dado = new TuringMachineData(linhaLimpa.Substring(5));//Ignore 'fita '
                }
                else if (linhaLimpa.StartsWith("init "))
                {
                    estadoInicial = linhaLimpa.Substring(5);
                }
                else if (linhaLimpa.StartsWith("accept "))
                {
                    estadoFim = linhaLimpa.Substring(7).Trim().Split(",");
                }
                else if (!string.IsNullOrWhiteSpace(linhaLimpa))
                {
                    var instruction = TuringMachineInstrucoes.FromString(linhaLimpa);
                    instrucoes.Add(instruction);
                }
            }

            return(new TuringMachine(dado, estadoInicial, estadoFim, instrucoes.ToArray()));
        }