/// <summary>
        /// Handles the Click event of the btnCompilar control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void btnCompilar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(Convert.ToString(txtCode.Text)))
            {
                StreamReader codigo = new StreamReader(txtAbrirCaminho.Text);

                AnalisadorLexico analisadorLexico = new AnalisadorLexico(Convert.ToString(txtCode.Text));
                analisadorLexico.realizaAnaliseLexica(codigo);


                foreach (string t in analisadorLexico.lstErros)
                {
                    txtResult.Text = txtResult.Text + t + "\r\n\n";
                }

                if (!(txtResult.Text == ""))
                {
                    txtResult.Text = txtResult.Text + "\r\n\n";
                    txtResult.Text = txtResult.Text + "\r\n\n";
                    txtResult.Text = txtResult.Text + "============================================" + "\r\n\n";
                    txtResult.Text = txtResult.Text + "=============   Analise Lexica  ============" + "\r\n\n";
                    txtResult.Text = txtResult.Text + "============================================" + "\r\n\n";
                    txtResult.Text = txtResult.Text + "\r\n\n";
                    txtResult.Text = txtResult.Text + "\r\n\n";
                }

                foreach (Token t in analisadorLexico.lstToken)
                {
                    txtResult.Text = txtResult.Text + " id : " + t.id + " Tipo : " + t.tipo + "\r\n\n";
                }
            }
        }
예제 #2
0
        public static void Main(string[] args)
        {
            AnalisadorLexico    lexo      = new AnalisadorLexico("PrimeiroCerto.txt");
            AnalisadorSintatico sintatico = new AnalisadorSintatico(lexo);

            sintatico.Prog();
            sintatico.fecharArquivo();
            lexo.imprimeTabelaSimbolos();
            Console.WriteLine("Programa compilado !");
            Console.ReadLine();
        }
예제 #3
0
 public AnalisadorSintatico(string caminhoArquivo)
 {
     arquivo = new StreamReader(new FileStream(caminhoArquivo, FileMode.Open));
     if (File.Exists(caminhoArquivo + ".obj"))
     {
         File.WriteAllText(caminhoArquivo + ".obj", String.Empty);
     }
     arquivoObjeto = new StreamWriter(new FileStream(caminhoArquivo + ".obj", FileMode.OpenOrCreate));
     lexico        = new AnalisadorLexico(arquivo);
     semantico     = new AnalisadorSemantico();
     gerador       = new GeradorCodigo(arquivoObjeto);
 }
예제 #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            AnalisadorLexico x = new AnalisadorLexico();

            debug.Text = "";
            string texto = codigo.Text;

            bool erro = x.Analisa(texto);

            debug.Text = (x.analiseLexica);
            if (erro)
            {
                debug.BackColor = Color.Red;
            }
            else
            {
                debug.BackColor = Color.Green;
            }
        }
예제 #5
0
        static void Main(string[] args)
        {
            Console.WriteLine("Inicio\nA eentrada será lida do aquivo Entrada.txt\n");
            var analisadorLexico = new AnalisadorLexico(File.ReadAllText("Entrada.txt"));

            analisadorLexico.Analisar();
            Console.WriteLine("Analise léxica completa...");
            var analisadorSintatico = new AnalisadorSintatico(analisadorLexico.Tokens);

            analisadorSintatico.Analisar();
            Console.WriteLine("Analise sintática completa...");
            Console.WriteLine("Analise semantica completa...");
            Console.WriteLine($"\nTabela de Simbolos:\n");
            foreach (var simboloTs in analisadorSintatico.TabelaDeSimbolos.Simbolos.Values)
            {
                Console.WriteLine(
                    $"Cadeia : {simboloTs.Cadeia} |Escopo: {simboloTs.Escopo} | Linha: {simboloTs.Linha} | Tipo: {simboloTs.Tipo}");
                if (simboloTs.Parametros != null)
                {
                    Console.Write(" |Parametros: ");

                    foreach (var parametro in simboloTs.Parametros)
                    {
                        Console.Write($" Cadea: {parametro.Cadeia} Tipo: {parametro.Tipo}");
                    }
                    Console.Write("\n");
                }
            }

            Console.WriteLine("Código HIpo");
            foreach (var item in analisadorSintatico.GeradorCodigoHipo.AreaDeCodigo)
            {
                Console.WriteLine(item);
            }

            Console.WriteLine("\nAcabou");
        }
예제 #6
0
 public AnalisadorSintatico(AnalisadorLexico lexo)
 {
     this.lexo = lexo;
     token     = lexo.proximoToken();
     Console.WriteLine("\t\t    [DEBUG]" + token.ToString());
 }