public Form1() { InitializeComponent(); DatosPrimitivo DatoPrimitivoCadena = new DatosPrimitivo("", rTxtCodigo); Comentario Comentario = new Comentario("", rTxtCodigo); OperadorLogic operadorLogico = new OperadorLogic("", rTxtCodigo); OperadorAritmetico operadorAritmetico = new OperadorAritmetico("", rTxtCodigo); PalabrasReservadas reservadas = new PalabrasReservadas("", rTxtCodigo); OperadorRelacion opeRelacion = new OperadorRelacion("", rTxtCodigo); Entero enteroo = new Entero("", rTxtCodigo); boolean Booleano = new boolean("", rTxtCodigo); analizador = new AnalizadorTexto(); this.Datocadena = DatoPrimitivoCadena; this.comentario = Comentario; this.logico = operadorLogico; this.operadorAritmetico1 = operadorAritmetico; this.opeRelacion = opeRelacion; this.enteroo = enteroo; this.reservadas = reservadas; this.Booleano = Booleano; }
private Token pegarToken(char c) { string lexema = ""; int colunaAtual = 0; int linhaAtual = 0; while (true) { switch (this.estado) { case 0: colunaAtual = coluna; linhaAtual = linha; if (Char.IsDigit(c)) { lexema += c; estado = 12; } else if (Char.IsLetter(c)) { lexema += c; estado = 14; } else if (':'.Equals(c)) { lexema += c; estado = 1; } else if ((estado = OperadorAritmetico.simboloValido(c)) != -1) { lexema += c; } else if ((estado = SimboloPontuacao.simboloValido(c)) != -1) { lexema += c; } else { return(null); } break; case 1: if ('='.Equals(c)) { c = (char)r.Read(); coluna++; lexema += c; estado = 2; } else { estado = 3; } break; case 2: return(ReturnToken(EnumTipo.SATRIBUICAO, linhaAtual, colunaAtual, lexema)); case 3: return(ReturnToken(EnumTipo.STIPO, linhaAtual, colunaAtual, lexema)); case 4: return(ReturnToken(EnumTipo.SMAIS, linhaAtual, colunaAtual, lexema)); case 5: return(ReturnToken(EnumTipo.SMENOS, linhaAtual, colunaAtual, lexema)); case 6: return(ReturnToken(EnumTipo.SMULTIPLICACAO, linhaAtual, colunaAtual, lexema)); case 7: return(ReturnToken(EnumTipo.SDIVIDIR, linhaAtual, colunaAtual, lexema)); case 8: return(ReturnToken(EnumTipo.SPONTO_E_VIRGULA, linhaAtual, colunaAtual, lexema)); case 9: return(ReturnToken(EnumTipo.SPONTO, linhaAtual, colunaAtual, lexema)); case 10: return(ReturnToken(EnumTipo.SABRE_PARENTESIS, linhaAtual, colunaAtual, lexema)); case 11: return(ReturnToken(EnumTipo.SFECHA_PARENTESIS, linhaAtual, colunaAtual, lexema)); case 12: if (Char.IsDigit(c)) { lexema += c; c = (char)r.Read(); coluna++; } else { estado = 13; } break; case 13: return(ReturnToken(EnumTipo.SNUMERO, linhaAtual, colunaAtual, lexema)); case 14: if (Char.IsLetterOrDigit(c) || '_'.Equals(c)) { lexema += c; c = (char)r.Read(); coluna++; } else if (!Char.IsLetterOrDigit(c) || !')'.Equals(c)) { estado = 15; } break; case 15: return(ReturnToken(EnumTipo.SIDENTIFICADOR, linhaAtual, colunaAtual, lexema)); default: return(ReturnToken(EnumTipo.SERRO, linhaAtual, colunaAtual, lexema)); } c = (char)r.Peek(); } }