private void btnLexica_Click(object sender, EventArgs e) { AnalisadorLexico Al = new AnalisadorLexico(); if (Al.Validar(txtCodigo.Text, variaveis.ListaVariaveis)) { AnalisadorSintatico Asin = new AnalisadorSintatico(); if (Asin.Validar(Al)) { AnalisadorSemantico Asem = new AnalisadorSemantico(); if (Asem.Validar(Asin)) { dgvCodigo.DataSource = Asem.getCodigoIntermediario(); codigo = Asem.Codigo; } else { MessageBox.Show(Asem.MensagemErro); } } else { MessageBox.Show(Asin.MensagemErro); } } else { MessageBox.Show(Al.MensagemErro); } }
static void Main(string[] args) { Level level = Level.EXEC; Log.level = Level.EXEC; if (!LerArquivo(args)) { Log.println("Erro de leitura do arquivo fonte!", Level.EXEC); Console.ReadKey(); return; //sai do programa } //ANÁLISE LÉXICA AnalisadorLexico analisadorLexico = new AnalisadorLexico(file); analisadorLexico.Analisar(); if (analisadorLexico.TemErros()) { Log.println("Análise Léxica terminada com erro:", Level.DEBUG); analisadorLexico.MostraErros(); Console.ReadKey(); return; } else { Log.println("Análise Léxica terminada com sucesso!", Level.DEBUG); if (level == Level.DEBUG) { analisadorLexico.MostraTokens(); } } //ANÁLISE SINTÁTICA COM GERAÇÃO DE ÁRVORE AnalisadorSintaticoGeradorArvore analisadorSintatico = new AnalisadorSintaticoGeradorArvore(analisadorLexico.Tokens); analisadorSintatico.Analisar(); if (analisadorSintatico.TemErros()) { Log.println("Análise Sintática terminada com erro:", Level.DEBUG); analisadorSintatico.MostraErros(); Console.ReadKey(); return; } else { Log.println("Análise Sintática terminada com sucesso!", Level.DEBUG); if (level == Level.DEBUG) { analisadorLexico.MostraTokens(); TabelaSimbolos.MostraSimbolos(); } } //analisadorSintatico.MostraArvore(); AnalisadorSemantico analisadorSemantico = new AnalisadorSemantico(analisadorSintatico.Raiz); analisadorSemantico.Analisar(); if (analisadorSemantico.TemErros()) { Log.println("Análise Semântica terminada com erro:", Level.DEBUG); analisadorSemantico.MostraErros(); Console.ReadKey(); return; } else { Log.println("Análise Semântica terminada com sucesso!", Level.DEBUG); if (level == Level.DEBUG) { TabelaSimbolos.MostraSimbolos(); } } try { DateTime inicio = DateTime.Now; Interpretador interpretador = new Interpretador(analisadorSemantico.Raiz, args); //interpretador.Memoization = true; interpretador.Executar(); DateTime fim = DateTime.Now; Log.println("\n\nExecução encerrada com sucesso! Tempo gasto: " + fim.Subtract(inicio).TotalMilliseconds + " ms", Level.EXEC); } catch (Exception ex) { Log.println("Erro na interpretação: " + ex.Message, Level.EXEC); } Console.ReadKey(); }