diff --git a/fontes/formatadores/delegua.ts b/fontes/formatadores/delegua.ts index 9b8710d5..4be41c73 100644 --- a/fontes/formatadores/delegua.ts +++ b/fontes/formatadores/delegua.ts @@ -1,7 +1,7 @@ import { Agrupamento, Atribuir, Binario, Construto, ExpressaoRegular, FimPara, FormatacaoEscrita, FuncaoConstruto, Literal, Super, TipoDe, Unario, Variavel, Vetor } from '../construtos'; import { Classe, Const, ConstMultiplo, Expressao, FuncaoDeclaracao, Enquanto, Escolha, Escreva, Fazer, Importar, Para, ParaCada, Se, Tente, Var, VarMultiplo, Bloco, Continua, EscrevaMesmaLinha, Leia, LeiaMultiplo, Retorna, Sustar, Declaracao } from '../declaracoes'; import { VisitanteComumInterface } from '../interfaces'; -import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras'; +import { RetornoQuebra, SustarQuebra } from '../quebras'; import tiposDeSimbolos from '../tipos-de-simbolos/delegua'; @@ -68,7 +68,7 @@ export class FormatadorDelegua implements VisitanteComumInterface { this.indentacaoAtual -= this.tamanhoIndentacao; - this.codigoFormatado += `}${this.quebraLinha}${this.quebraLinha}`; + this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}}${this.quebraLinha}${this.quebraLinha}`; } visitarDeclaracaoEscolha(declaracao: Escolha) { @@ -100,7 +100,7 @@ export class FormatadorDelegua implements VisitanteComumInterface { this.indentacaoAtual -= this.tamanhoIndentacao; - this.codigoFormatado += `}${this.quebraLinha}${this.quebraLinha}`; + this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}}${this.quebraLinha}${this.quebraLinha}`; } visitarDeclaracaoEscreva(declaracao: Escreva) { @@ -157,7 +157,7 @@ export class FormatadorDelegua implements VisitanteComumInterface { this.indentacaoAtual -= this.tamanhoIndentacao; - this.codigoFormatado += `}${this.quebraLinha}${this.quebraLinha}`; + this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}}${this.quebraLinha}${this.quebraLinha}`; } visitarDeclaracaoParaCada(declaracao: ParaCada): Promise { @@ -184,7 +184,7 @@ export class FormatadorDelegua implements VisitanteComumInterface { this.indentacaoAtual -= this.tamanhoIndentacao; } - this.codigoFormatado += `}${this.quebraLinha}${this.quebraLinha}`; + this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}}${this.quebraLinha}${this.quebraLinha}`; } visitarDeclaracaoTente(declaracao: Tente) { @@ -221,7 +221,7 @@ export class FormatadorDelegua implements VisitanteComumInterface { this.indentacaoAtual -= this.tamanhoIndentacao; - this.codigoFormatado += `}${this.quebraLinha}${this.quebraLinha}`; + this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}}${this.quebraLinha}${this.quebraLinha}`; } visitarDeclaracaoVar(declaracao: Var): any { @@ -285,6 +285,9 @@ export class FormatadorDelegua implements VisitanteComumInterface { case tiposDeSimbolos.MENOR_IGUAL: this.codigoFormatado += ` <= `; break; + case tiposDeSimbolos.MODULO: + this.codigoFormatado += ` % `; + break; case tiposDeSimbolos.MULTIPLICACAO: this.codigoFormatado += ` * `; break; @@ -299,9 +302,11 @@ export class FormatadorDelegua implements VisitanteComumInterface { visitarExpressaoBloco(declaracao: Bloco): Promise { throw new Error('Método não implementado.'); } - visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra { - throw new Error('Método não implementado.'); + + visitarExpressaoContinua(declaracao?: Continua): any { + this.codigoFormatado += `${" ".repeat(this.indentacaoAtual)}continua${this.quebraLinha}`; } + visitarExpressaoDeChamada(expressao: any) { throw new Error('Método não implementado.'); } @@ -420,6 +425,9 @@ export class FormatadorDelegua implements VisitanteComumInterface { case 'Binario': this.visitarExpressaoBinaria(declaracaoOuConstruto as Binario); break; + case 'Continua': + this.visitarExpressaoContinua(declaracaoOuConstruto as Continua); + break; case 'Escolha': this.visitarDeclaracaoEscolha(declaracaoOuConstruto as Escolha); break; diff --git a/testes/formatadores/formatador-delegua.test.ts b/testes/formatadores/formatador-delegua.test.ts index 00890a08..ede03d90 100644 --- a/testes/formatadores/formatador-delegua.test.ts +++ b/testes/formatadores/formatador-delegua.test.ts @@ -25,7 +25,7 @@ describe('Formatadores > Delégua', () => { it('Vetor', () => { const resultadoLexador = lexador.mapear( - ["var a = [1,2,3] var c = [4,5,6]"], + ["var a = [1,2,3] const c = [4,5,6]"], -1 ); @@ -33,7 +33,7 @@ describe('Formatadores > Delégua', () => { const resultado = formatador.formatar(resultadoAvaliacaoSintatica.declaracoes); const linhasResultado = resultado.split(sistemaOperacional.EOL); - console.log(resultado); + // console.log(resultado); expect(linhasResultado).toHaveLength(3); }); @@ -80,7 +80,7 @@ describe('Formatadores > Delégua', () => { it('Para', () => { const resultadoLexador = lexador.mapear( - ["para var a = 1; a < 10; a++ { escreva(a) }"], + ["para var a = 1; a < 10; a++ { se a %2==0 { continua } escreva(a) }"], -1 ); @@ -88,8 +88,8 @@ describe('Formatadores > Delégua', () => { const resultado = formatador.formatar(resultadoAvaliacaoSintatica.declaracoes); const linhasResultado = resultado.split(sistemaOperacional.EOL); - // console.log(resultado); - expect(linhasResultado).toHaveLength(5); + console.log(resultado); + expect(linhasResultado).toHaveLength(9); }); it('Se', () => {