示例#1
0
        public static FilaSimbolos Tokenizer(int ini, int fim, ElemFormula form, FilaSimbolos simb)
        {
            string coisa;

            if (ini >= form.Formula.Length)
            {
                return(simb);
            }
            if ((fim + 1) < form.Formula.Length)
            {
                if ((Validador.EhOperador(form.Formula[fim].ToString()) == false))
                {
                    if (Validador.EhOperador(form.Formula[fim + 1].ToString()) == false)
                    {
                        return(Tokenizer(ini, (fim + 1), form, simb));
                    }
                    else
                    {
                        coisa = "";
                        for (int i = ini; i <= fim; i++)
                        {
                            coisa = coisa + form.Formula[i];
                        }
                        simb.Enfileirar(new ElemSimbolo(coisa));
                        fim++;
                        ini = fim;
                        return(Tokenizer(ini, fim, form, simb));
                    }
                }
                else
                {
                    simb.Enfileirar(new ElemSimbolo(form.Formula[fim].ToString()));
                    fim++;
                    ini = fim;
                    return(Tokenizer(ini, fim, form, simb));
                }
            }
            else
            {
                if (Validador.EhOperador(form.Formula[fim].ToString()) == false)
                {
                    coisa = "";
                    for (int i = ini; i <= fim; i++)
                    {
                        coisa = coisa + form.Formula[i];
                    }
                    simb.Enfileirar(new ElemSimbolo(coisa));
                    fim++;
                    ini = fim;
                    return(Tokenizer(ini, fim, form, simb));
                }
                else
                {
                    simb.Enfileirar(new ElemSimbolo(form.Formula[fim].ToString()));
                    fim++;
                    ini = fim;
                    return(Tokenizer(ini, fim, form, simb));
                }
            }
        }
        public ElemFormula Desenfileirar()
        {
            ElemFormula aux = this.Primeiro.Proximo;

            this.Primeiro.Proximo = aux.Proximo;
            aux.Proximo           = null;
            return(aux);
        }
        public void ImprimeFila()
        {
            ElemFormula aux = this.Primeiro.Proximo;

            while (aux != null)
            {
                Console.Write("\n {0}", aux.Formula);
                aux = aux.Proximo;
            }
        }
        public void lerArquivo(string nomeArquivo)
        {
            //Encoding.UTF8 para formatação correta dos caracteres no console
            StreamReader file = new StreamReader(nomeArquivo, Encoding.UTF8);

            while (!file.EndOfStream)
            {
                string      line = file.ReadLine();
                ElemFormula novo = new ElemFormula(line);
                Enfileirar(novo);
            }

            file.Close();
        }
 public ElemFormula Enfileirar(ElemFormula novo)
 {
     this.Ultimo.Proximo = novo;
     this.Ultimo         = novo;
     return(Ultimo);
 }
        //  public ElemFormula Primeiro { get => primeiro; set => primeiro = value; }
        //  public ElemFormula Ultimo { get => ultimo; set => ultimo = value; }

        public FilaFormulas()
        {
            this.Primeiro = new ElemFormula();
            this.Ultimo   = this.Primeiro;
        }