public void Entrada_vazia_retorna_nenhum_token() { //Arrange var analisadorLexico = new AnalisadorLexico(string.Empty); //Act var tokens = analisadorLexico.Analisar(); //Assert tokens.Should().Equal(new List <Token>()); }
public void Entrada_Identificador_Invalido() { //Arrange var analisadorLexico = new AnalisadorLexico("13212dasd"); //Act Action analisar = () => analisadorLexico.Analisar(); //Assert analisar.Should().Throw <CompiladorException>() .WithMessage("Identificador Inválido: 13212dasd \n Linha: 1"); }
public void EntradaInvalida() { //Arrange var analisadorLexico = new AnalisadorLexico(Helper.GetExemploIncorretoLalg()); analisadorLexico.Analisar(); var analisadorSintatico = new AnalisadorSintatico(analisadorLexico.Tokens); //Act Action analisar = () => analisadorSintatico.Analisar(); //Assert analisar.Should().Throw <CompiladorException>(); }
public void EntradaValida() { //Arrange var analisadorLexico = new AnalisadorLexico(Helper.GetExemploCorretoLalg()); analisadorLexico.Analisar(); var analisadorSintatico = new AnalisadorSintatico(analisadorLexico.Tokens); //Act Action analisar = () => analisadorSintatico.Analisar(); //Assert analisar.Should().NotThrow(); }
public void Entrada_Identificador_Invalido_Linha2() { //Arrange System.IO.File.WriteAllText("entrada.txt", "if numero > 1\n123abc"); var textoArquivo = System.IO.File.ReadAllText("entrada.txt"); var analisadorLexico = new AnalisadorLexico(textoArquivo); //Act Action analisar = () => analisadorLexico.Analisar(); //Assert analisar.Should().Throw <CompiladorException>() .WithMessage("Identificador Inválido: 123abc \n Linha: 2"); }
public void Entrada_Identificadores_Validos() { //Arrange var analisadorLexico = new AnalisadorLexico("if teste"); //Act var tokens = analisadorLexico.Analisar(); //Assert tokens.Should().Equal(new List <Token>() { new Token("if", ReservadoIf, 1), new Token("teste", Identificador, 1) }); }
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(); }