コード例 #1
0
        static void Main(string[] args)
        {
            try
            {
                string file = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);     // pega o diretorio da aplicação
                // file = file.Replace(@"bin\Debug\netcoreapp2.0", @"Tests\Parser\Test_Success_1.txt"); // (arquivo de sucesso) substitui o diretorio da aplicação para a pasta que está na solução do projeto
                file = file.Replace(@"bin\Debug\netcoreapp2.0", @"Tests\Parser\Test_Error_2.txt"); // (arquivo de erro) substitui o diretorio da aplicação para a pasta que está na solução do projeto

                Lexer lexer = new Lexer(file);                                                     // parametro do Lexer: Um programa de acordo com a gramatica

                Parser parser = new Parser(lexer);

                parser.Prog(); // primeiro procedimento do PasC

                parser.FechaArquivos();

                TableOfSymbols.ShowAllTableSymbols(); // Imprimir a tabela de simbolos

                System.Console.WriteLine("\nCompilação de Programa Realizada!");
                Console.ReadKey();
            }
            catch (Exception ex)
            {
                ErrorMessage.ErrorStart(ex.Message);
            }
        }
コード例 #2
0
        /// <summary>
        /// Busca e depois exibe todos os token que foram encontrados na leitura do arquivo.
        /// </summary>
        private void ImprimeToken()
        {
            Token token;

            Message.Print("TOKENS ENCONTRADOS: ");
            // Enquanto não houver erros ou não for fim de arquivo.
            do
            {
                token = ProxToken();

                // Imprime token
                if (token != null)
                {
                    Message.ShowToken(token, n_line, n_column);

                    // Verificar se existe o lexema na tabela de símbolos
                    if (TableOfSymbols.ReturnToken(token.Lexema) == null && token.EnumToken.ToString() == "ID")
                    {
                        TableOfSymbols.Add(token.Lexema.ToUpper(), token);
                    }
                }
            } while (token != null && token.EnumToken != TokenEnum.EOF);

            if (ErrorMessage.errorFound != null)
            {
                ErrorMessage.ShowErrorFound();
            }

            TableOfSymbols.ShowAllTableSymbols();
        }
コード例 #3
0
        /// <summary>
        /// Exibe o erro sintático e conta quanto erro já foram registrados, ao somar 5 erros,
        /// o programa será finalizado.
        /// </summary>
        /// <param name="lexema"></param>
        public void ErroSintatico(String lexema)
        {
            quantidadeErros++;

            Console.WriteLine("[ERRO SINTATICO] esperado " + lexema + " encontrado " + Token.Lexema +
                              " na linha " + Token.Linha + " e coluna " + Token.Coluna);

            if (quantidadeErros == 5)
            {
                Console.WriteLine("***Estouro de erros sintáticos.***");
                TableOfSymbols.ShowAllTableSymbols();
                Console.ReadLine();
                Environment.Exit(0);
            }
        }