Skip to content

Commit

Permalink
- continua;
Browse files Browse the repository at this point in the history
- indentação para fechamento de blocos.
  • Loading branch information
leonelsanchesdasilva committed Jan 19, 2024
1 parent c566d50 commit 124edd2
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 13 deletions.
24 changes: 16 additions & 8 deletions fontes/formatadores/delegua.ts
Original file line number Diff line number Diff line change
@@ -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';

Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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<any> {
Expand All @@ -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) {
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
Expand All @@ -299,9 +302,11 @@ export class FormatadorDelegua implements VisitanteComumInterface {
visitarExpressaoBloco(declaracao: Bloco): Promise<any> {
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.');
}
Expand Down Expand Up @@ -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;
Expand Down
10 changes: 5 additions & 5 deletions testes/formatadores/formatador-delegua.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,15 @@ 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
);

const resultadoAvaliacaoSintatica = avaliadorSintatico.analisar(resultadoLexador, -1);
const resultado = formatador.formatar(resultadoAvaliacaoSintatica.declaracoes);
const linhasResultado = resultado.split(sistemaOperacional.EOL);

console.log(resultado);
// console.log(resultado);
expect(linhasResultado).toHaveLength(3);
});

Expand Down Expand Up @@ -80,16 +80,16 @@ 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
);

const resultadoAvaliacaoSintatica = avaliadorSintatico.analisar(resultadoLexador, -1);
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', () => {
Expand Down

0 comments on commit 124edd2

Please sign in to comment.