public void executa(string comandos) { try { tabResultado.SelectedIndex = 0; clearMensagem(); Stopwatch sw = new Stopwatch(); sw.Start(); addMensagem("Executando..."); Semantico semantico = new Semantico(this); Lexico lexico = new Lexico(comandos); Sintatico sintatico = new Sintatico(); sintatico.parse(lexico, semantico); semantico.Dispose(); semantico = null; sw.Stop(); Base.getInstance().commit(); TimeSpan tempo = sw.Elapsed; addMensagem(String.Format("Sucesso!!! Tempo de Execução: {0}min {1}s {2}ms", tempo.Minutes, tempo.Seconds, tempo.Milliseconds)); } catch (Exception ex) { addMensagem("#ERROR: " + ex.ToString()); //Console.WriteLine(ex.StackTrace); } }
private void compilar() { if (arquivo == "") { salvarArquivo(); } richTextBox2.Clear(); Lexico lexico = new Lexico(); Sintatico sintatico = new Sintatico(); Semantico semantico = null; semantico = Semantico.GetInstance(); lexico.setInput(richTextBox1.Text); string arq = Path.GetFileNameWithoutExtension(statusStrip1.Items[1].ToString()); semantico.NomeArq = arq; try { sintatico.parse(lexico, semantico); richTextBox2.AppendText("programa compilado com sucesso"); this.compilado = true; Token t = null; /* richTextBox2.AppendText("linha\t\tclasse\t\t\tlexema"+Environment.NewLine); * while ( (t = lexico.nextToken()) != null ) * { * richTextBox2.AppendText(t.Position + "\t\t"+ t.getTipoToken() +"\t\t" +t.Lexeme +Environment.NewLine); * * }*/ } catch (LexicalError e) { richTextBox2.Clear(); richTextBox2.AppendText(" Erro na linha " + e.getPosition() + " - " + e.Message + Environment.NewLine); } catch (SyntaticError e) { richTextBox2.Clear(); richTextBox2.AppendText(" Erro na linha " + e.getPosition() + " - " + e.Message + Environment.NewLine); } catch (SemanticError e) { richTextBox2.Clear(); richTextBox2.AppendText(" Erro na linha " + e.getPosition() + " - " + e.Message + Environment.NewLine); } catch (Exception e) { richTextBox2.Clear(); richTextBox2.AppendText(" Erro não tratado/previsto: - " + e.Message + Environment.NewLine + e.StackTrace); } }