コード例 #1
0
    private static void MostrarRelacoesZ(Interpretador interpretador)
    {
        Console.WriteLine(" ===== Relações Z ===== ");

        foreach (RelacaoReducoesZ z in interpretador.RelacoesReducoesZ)
        {
            Console.Write(z);
            Console.WriteLine(string.Format(" possui {0} cupons", z.Cupons.Count));
        }
    }
コード例 #2
0
    static void Main(string[] args)
    {
        var interpretador = Interpretador.InterpretaArquivo(@"c:\arquivo.tdm");

        foreach (CupomFiscal cupom in interpretador.CuponsFiscais)
        {
            MostrarCupom(cupom);
            MostrarItens(cupom);
            MostrarPagamentos(cupom);
        }

        MostrarRelacoesZ(interpretador);

        Console.ReadLine();
    }
コード例 #3
0
        public void DeveDetalharCupons()
        {
            Interpretador interpretador = Interpretador.InterpretaArquivo(ARQUIVO_ENTRADA);

            Assert.AreEqual(1, interpretador.CuponsFiscais[0].Detalhes.Count);
        }
コード例 #4
0
        public void deve_entender_numeros_romanos_menores_a_esquerda(string entrada, int resultadoEsperado)
        {
            var resultado = new Interpretador().Converter(entrada);

            resultado.Should().Be(resultadoEsperado);
        }
コード例 #5
0
        public void deve_entender_dois_numeros_romanos_iguais(string entrada, int resultadoEsperado)
        {
            var resultado = new Interpretador().Converter(entrada);

            resultado.Should().Be(resultadoEsperado);
        }
コード例 #6
0
        public void deve_entender_o_numero_X_como_10()
        {
            var resultado = new Interpretador().Converter("X");

            resultado.Should().Be(10);
        }
コード例 #7
0
        public void deve_entender_o_numero_V_como_5()
        {
            var resultado = new Interpretador().Converter("V");

            resultado.Should().Be(5);
        }
コード例 #8
0
        static void Main(string[] args)
        {
            Level level = Level.EXEC;

            Log.level = Level.EXEC;

            if (!LerArquivo(args))
            {
                Log.println("Erro de leitura do arquivo fonte!", Level.EXEC);
                Console.ReadKey();
                return; //sai do programa
            }

            //ANÁLISE LÉXICA

            AnalisadorLexico analisadorLexico = new AnalisadorLexico(file);

            analisadorLexico.Analisar();
            if (analisadorLexico.TemErros())
            {
                Log.println("Análise Léxica terminada com erro:", Level.DEBUG);
                analisadorLexico.MostraErros();
                Console.ReadKey();
                return;
            }
            else
            {
                Log.println("Análise Léxica terminada com sucesso!", Level.DEBUG);
                if (level == Level.DEBUG)
                {
                    analisadorLexico.MostraTokens();
                }
            }

            //ANÁLISE SINTÁTICA COM GERAÇÃO DE ÁRVORE

            AnalisadorSintaticoGeradorArvore analisadorSintatico = new AnalisadorSintaticoGeradorArvore(analisadorLexico.Tokens);

            analisadorSintatico.Analisar();
            if (analisadorSintatico.TemErros())
            {
                Log.println("Análise Sintática terminada com erro:", Level.DEBUG);
                analisadorSintatico.MostraErros();
                Console.ReadKey();
                return;
            }
            else
            {
                Log.println("Análise Sintática terminada com sucesso!", Level.DEBUG);
                if (level == Level.DEBUG)
                {
                    analisadorLexico.MostraTokens();
                    TabelaSimbolos.MostraSimbolos();
                }
            }

            //analisadorSintatico.MostraArvore();


            AnalisadorSemantico analisadorSemantico = new AnalisadorSemantico(analisadorSintatico.Raiz);

            analisadorSemantico.Analisar();
            if (analisadorSemantico.TemErros())
            {
                Log.println("Análise Semântica terminada com erro:", Level.DEBUG);
                analisadorSemantico.MostraErros();
                Console.ReadKey();
                return;
            }
            else
            {
                Log.println("Análise Semântica terminada com sucesso!", Level.DEBUG);
                if (level == Level.DEBUG)
                {
                    TabelaSimbolos.MostraSimbolos();
                }
            }

            try
            {
                DateTime      inicio        = DateTime.Now;
                Interpretador interpretador = new Interpretador(analisadorSemantico.Raiz, args);
                //interpretador.Memoization = true;
                interpretador.Executar();
                DateTime fim = DateTime.Now;
                Log.println("\n\nExecução encerrada com sucesso! Tempo gasto: " + fim.Subtract(inicio).TotalMilliseconds + " ms", Level.EXEC);
            }
            catch (Exception ex)
            {
                Log.println("Erro na interpretação: " + ex.Message, Level.EXEC);
            }


            Console.ReadKey();
        }