Esempio n. 1
0
        public static CategoriaTokenLexico CategorizarEspecial(string valor)
        {
            CategoriaTokenLexico categoria = CategoriaTokenLexico.NA;

            switch (valor)
            {
            case "=":
                categoria = CategoriaTokenLexico.ESPECIAL_IGUAL;
                break;

            case "<":
                categoria = CategoriaTokenLexico.ESPECIAL_MENOR;
                break;

            case ">":
                categoria = CategoriaTokenLexico.ESPECIAL_MAIOR;
                break;

            case "(":
                categoria = CategoriaTokenLexico.ESPECIAL_ABRE_PARENTESES;
                break;

            case ")":
                categoria = CategoriaTokenLexico.ESPECIAL_FECHA_PARENTESES;
                break;

            case ",":
                categoria = CategoriaTokenLexico.ESPECIAL_VIRGULA;
                break;

            case "+":
                categoria = CategoriaTokenLexico.ESPECIAL_MAIS;
                break;

            case "-":
                categoria = CategoriaTokenLexico.ESPECIAL_MENOS;
                break;

            case "*":
                categoria = CategoriaTokenLexico.ESPECIAL_ASTERISCO;
                break;

            case "/":
                categoria = CategoriaTokenLexico.ESPECIAL_BARRA;
                break;

            case "^":
                categoria = CategoriaTokenLexico.ESPECIAL_CIRCUNFLEXO;
                break;

            case "\"":
                categoria = CategoriaTokenLexico.ESPECIAL_ASPAS;
                break;
            }
            return(categoria);
        }
Esempio n. 2
0
        TokenLexico GetTokenLexicoFromEstadoAtual()
        {
            string               valor     = string.Concat(Acumulador.Select(cc => cc.Caracter));
            TipoTokenLexico      tipo      = TipoTokenLexico.NA;
            CategoriaTokenLexico categoria = CategoriaTokenLexico.NA;

            switch (Cabecote.EstadoAtual)
            {
            case "ESPECIAL":
                tipo      = TipoTokenLexico.ESPECIAL;
                categoria = TokenLexico.CategorizarEspecial(valor);
                break;

            case "IDENTIFICADOR":
                tipo      = TipoTokenLexico.IDENTIFICADOR;
                categoria = TokenLexico.CategorizarIdentificador(valor);
                break;

            case "INTEIRO":
                tipo      = TipoTokenLexico.NUMERO;
                categoria = CategoriaTokenLexico.NUMERO_INTEIRO;
                break;

            case "ESPECIAL_2":
                tipo      = TipoTokenLexico.ESPECIAL;
                categoria = TokenLexico.CategorizarEspecial(valor);
                break;

            case "DECIMAL":
                tipo      = TipoTokenLexico.NUMERO;
                categoria = CategoriaTokenLexico.NUMERO_DECIMAL;
                break;

            case "CIENTIFICO":
                tipo      = TipoTokenLexico.NUMERO;
                categoria = CategoriaTokenLexico.NUMERO_CIENTIFICO;
                break;

            case "TEXTO":
                tipo      = TipoTokenLexico.TEXTO;
                categoria = CategoriaTokenLexico.TEXTO;
                break;
            }

            return(new TokenLexico()
            {
                Valor = valor, Tipo = tipo, Categoria = categoria
            });
        }
        TokenLexico GetTokenLexicoFromEstadoAtual()
        {
            string               valor     = string.Concat(Acumulador.Select(t => t.Valor));
            TipoTokenLexico      tipo      = TipoTokenLexico.NA;
            CategoriaTokenLexico categoria = CategoriaTokenLexico.NA;

            switch (Cabecote.EstadoAtual)
            {
            case "GOTO":
                tipo      = TipoTokenLexico.IDENTIFICADOR;
                categoria = CategoriaTokenLexico.RESERVADA_GOTO;
                break;

            case "DEF_FN":
                tipo      = TipoTokenLexico.IDENTIFICADOR;
                categoria = CategoriaTokenLexico.RESERVADA_DEF_FN;
                break;

            case "MAIOR_IGUAL":
                tipo      = TipoTokenLexico.ESPECIAL;
                categoria = CategoriaTokenLexico.ESPECIAL_MAIOR_IGUAL;
                break;

            case "MENOR_IGUAL":
                tipo      = TipoTokenLexico.ESPECIAL;
                categoria = CategoriaTokenLexico.ESPECIAL_MENOR_IGUAL;
                break;

            case "DIFERENTE":
                tipo      = TipoTokenLexico.ESPECIAL;
                categoria = CategoriaTokenLexico.ESPECIAL_DIFERENTE;
                break;

            case "REMARK":
                tipo      = TipoTokenLexico.TEXTO;
                categoria = CategoriaTokenLexico.COMENTARIO;
                break;
            }

            return(new TokenLexico()
            {
                Valor = valor, Tipo = tipo, Categoria = categoria
            });
        }
 public TransicaoRecategorizadorLexico(string origem, string destino, CategoriaTokenLexico simbolo)
 {
     Origem  = origem;
     Destino = destino;
     Simbolo = simbolo;
 }
Esempio n. 5
0
        public static CategoriaTokenLexico CategorizarIdentificador(string valor)
        {
            CategoriaTokenLexico categoria = CategoriaTokenLexico.NA;

            switch (valor)
            {
            case "END":
                categoria = CategoriaTokenLexico.RESERVADA_END;
                break;

            case "LET":
                categoria = CategoriaTokenLexico.RESERVADA_LET;
                break;

            case "FN":
                categoria = CategoriaTokenLexico.RESERVADA_FN;
                break;

            case "SIN":
                categoria = CategoriaTokenLexico.RESERVADA_SIN;
                break;

            case "COS":
                categoria = CategoriaTokenLexico.RESERVADA_COS;
                break;

            case "TAN":
                categoria = CategoriaTokenLexico.RESERVADA_TAN;
                break;

            case "ATN":
                categoria = CategoriaTokenLexico.RESERVADA_ATN;
                break;

            case "EXP":
                categoria = CategoriaTokenLexico.RESERVADA_EXP;
                break;

            case "ABS":
                categoria = CategoriaTokenLexico.RESERVADA_ABS;
                break;

            case "LOG":
                categoria = CategoriaTokenLexico.RESERVADA_LOG;
                break;

            case "SQR":
                categoria = CategoriaTokenLexico.RESERVADA_SQR;
                break;

            case "INT":
                categoria = CategoriaTokenLexico.RESERVADA_INT;
                break;

            case "RND":
                categoria = CategoriaTokenLexico.RESERVADA_RND;
                break;

            case "READ":
                categoria = CategoriaTokenLexico.RESERVADA_READ;
                break;

            case "DATA":
                categoria = CategoriaTokenLexico.RESERVADA_DATA;
                break;

            case "PRINT":
                categoria = CategoriaTokenLexico.RESERVADA_PRINT;
                break;

            case "GOTO":
                categoria = CategoriaTokenLexico.RESERVADA_GOTO;
                break;

            case "GO":
                categoria = CategoriaTokenLexico.RESERVADA_GO;
                break;

            case "TO":
                categoria = CategoriaTokenLexico.RESERVADA_TO;
                break;

            case "IF":
                categoria = CategoriaTokenLexico.RESERVADA_IF;
                break;

            case "THEN":
                categoria = CategoriaTokenLexico.RESERVADA_THEN;
                break;

            case "FOR":
                categoria = CategoriaTokenLexico.RESERVADA_FOR;
                break;

            case "STEP":
                categoria = CategoriaTokenLexico.RESERVADA_STEP;
                break;

            case "NEXT":
                categoria = CategoriaTokenLexico.RESERVADA_NEXT;
                break;

            case "DIM":
                categoria = CategoriaTokenLexico.RESERVADA_DIM;
                break;

            case "DEF":
                categoria = CategoriaTokenLexico.RESERVADA_DEF;
                break;

            case "GOSUB":
                categoria = CategoriaTokenLexico.RESERVADA_GOSUB;
                break;

            case "RETURN":
                categoria = CategoriaTokenLexico.RESERVADA_RETURN;
                break;

            case "REM":
                categoria = CategoriaTokenLexico.RESERVADA_REM;
                break;

            default:
                if (Regex.IsMatch(valor, @"^\w$"))
                {
                    categoria = CategoriaTokenLexico.IDENTIFICADOR_LETRA;
                }
                else if (Regex.IsMatch(valor, @"^\w\d$"))
                {
                    categoria = CategoriaTokenLexico.IDENTIFICADOR_LETRA_NUMERO;
                }
                break;
            }
            return(categoria);
        }