示例#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));
                }
            }
        }