示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }