static void Main(string[] args) { try { string file = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); // pega o diretorio da aplicação // file = file.Replace(@"bin\Debug\netcoreapp2.0", @"Tests\Parser\Test_Success_1.txt"); // (arquivo de sucesso) substitui o diretorio da aplicação para a pasta que está na solução do projeto file = file.Replace(@"bin\Debug\netcoreapp2.0", @"Tests\Parser\Test_Error_2.txt"); // (arquivo de erro) substitui o diretorio da aplicação para a pasta que está na solução do projeto Lexer lexer = new Lexer(file); // parametro do Lexer: Um programa de acordo com a gramatica Parser parser = new Parser(lexer); parser.Prog(); // primeiro procedimento do PasC parser.FechaArquivos(); TableOfSymbols.ShowAllTableSymbols(); // Imprimir a tabela de simbolos System.Console.WriteLine("\nCompilação de Programa Realizada!"); Console.ReadKey(); } catch (Exception ex) { ErrorMessage.ErrorStart(ex.Message); } }
/// <summary> /// Busca e depois exibe todos os token que foram encontrados na leitura do arquivo. /// </summary> private void ImprimeToken() { Token token; Message.Print("TOKENS ENCONTRADOS: "); // Enquanto não houver erros ou não for fim de arquivo. do { token = ProxToken(); // Imprime token if (token != null) { Message.ShowToken(token, n_line, n_column); // Verificar se existe o lexema na tabela de símbolos if (TableOfSymbols.ReturnToken(token.Lexema) == null && token.EnumToken.ToString() == "ID") { TableOfSymbols.Add(token.Lexema.ToUpper(), token); } } } while (token != null && token.EnumToken != TokenEnum.EOF); if (ErrorMessage.errorFound != null) { ErrorMessage.ShowErrorFound(); } TableOfSymbols.ShowAllTableSymbols(); }
/// <summary> /// Exibe o erro sintático e conta quanto erro já foram registrados, ao somar 5 erros, /// o programa será finalizado. /// </summary> /// <param name="lexema"></param> public void ErroSintatico(String lexema) { quantidadeErros++; Console.WriteLine("[ERRO SINTATICO] esperado " + lexema + " encontrado " + Token.Lexema + " na linha " + Token.Linha + " e coluna " + Token.Coluna); if (quantidadeErros == 5) { Console.WriteLine("***Estouro de erros sintáticos.***"); TableOfSymbols.ShowAllTableSymbols(); Console.ReadLine(); Environment.Exit(0); } }