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); }
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; }
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); }