コード例 #1
0
ファイル: Program.cs プロジェクト: lfp97/compilador
        static void Main(string[] args)
        {
            if (args.Length <= 0)
            {
                Console.WriteLine("Os Argumentos são Scanner [Arquivo] \n ex: Scanner file"); //caso nao especifique o arquivo a ser lido
            }
            else
            {
                string filePath   = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\" + args[0] + ".luc";
                string outputPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\output.luc";
                string token      = string.Empty;
                try
                {
                    using (StreamReader sr = new StreamReader(filePath)) //sr vai ler o arquivo no caminho definido acima que é onde está o arquivo de entrada
                    {
                        if (new FileInfo(filePath).Length != 0)
                        {
                            using (StreamWriter fw = new StreamWriter(outputPath))
                            {
                                while (!sr.EndOfStream)
                                {
                                    lexema lexemas = lexema.indef;
                                    lexemas = CheckChar(sr, ref token);              //aqui chama a função que realiza a comparação da leitura com os lexemas

                                    fw.WriteLine($"{lexemas.ToString()},{token}\n"); //como será escrito no arquivo de saída "LEXEMA,TOKEN"
                                }

                                Console.WriteLine("Output criado.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("O Arquivo está vazio.");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                //Console.WriteLine("caminho do arq: " + outputPath);
                if (AnalisadorSintatico.AnalyzeOutput(outputPath))
                {
                    Console.WriteLine("Análise Sintática finalizada com sucesso, não foram encontrados erros.");
                    Console.WriteLine("Iniciando Análise Semântica...");
                    AnalisadorSemantico.analisador_semantico(outputPath);
                }
                else
                {
                    Console.WriteLine("Analise Sintática com erro!");
                }
            }
        }
コード例 #2
0
        static void Main(string[] args)
        {
            if (args.Length <= 0)
            {
                Console.WriteLine("Os Argumentos são Scanner [Arquivo] \n ex: Scanner file");
            }
            else
            {
                string filePath   = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\" + args[0] + ".luc";
                string outputPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\output.luc";
                string token      = string.Empty;
                try
                {
                    using (StreamReader sr = new StreamReader(filePath))
                    {
                        if (new FileInfo(filePath).Length != 0)
                        {
                            using (StreamWriter fw = new StreamWriter(outputPath))
                            {
                                while (!sr.EndOfStream)
                                {
                                    lexema mlex = lexema.undef;
                                    mlex = CheckChar(sr, ref token);

                                    fw.WriteLine($"{token},{mlex.ToString()}\n");
                                }

                                Console.WriteLine("Output criado.");
                            }
                        }
                        else
                        {
                            Console.WriteLine("O Arquivo está vazio.");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                if (SyntacticAnalyzer.AnalyzeOutput())
                {
                    Console.WriteLine("Analise Sintatica finalizada com sucesso, nao foram encontrados erros.");
                }
            }
        }