Skip to content

Commit

Permalink
Ajustes feitos pós entrega do Aristides.
Browse files Browse the repository at this point in the history
  • Loading branch information
leonelsanchesdasilva committed Jan 20, 2024
1 parent 4ec82f7 commit 60db497
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { RetornoAnalisadorSemantico } from '../../interfaces/retornos/retorno-an
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../quebras';
import { PilhaVariaveis } from '../pilha-variaveis';

interface VariavelHipoteticaInterface {
interface VariavelHipoteticaBirlInterface {
tipo:
| 'texto'
| 'número'
Expand All @@ -50,7 +50,7 @@ interface VariavelHipoteticaInterface {

export class AnalisadorSemanticoBirl implements AnalisadorSemanticoInterface {
pilhaVariaveis: PilhaVariaveis;
variaveis: { [nomeVariavel: string]: VariavelHipoteticaInterface };
variaveis: { [nomeVariavel: string]: VariavelHipoteticaBirlInterface };
atual: number;
diagnosticos: DiagnosticoAnalisadorSemantico[];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,12 @@ import {
import { SimboloInterface } from '../../interfaces';
import { AnalisadorSemanticoInterface } from '../../interfaces/analisador-semantico-interface';
import { DiagnosticoAnalisadorSemantico, DiagnosticoSeveridade } from '../../interfaces/erros';
import { FuncaoHipoteticaInterface } from '../../interfaces/funcao-hipotetica-interface';
import { RetornoAnalisadorSemantico } from '../../interfaces/retornos/retorno-analisador-semantico';
import { TiposDadosInterface } from '../../interfaces/tipos-dados-interface';
import { VariavelHipoteticaInterface } from '../../interfaces/variavel-hipotetica-interface';
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../quebras';
import { PilhaVariaveis } from './../pilha-variaveis';

interface VariavelHipoteticaInterface {
tipo: TiposDadosInterface;
subtipo?: 'texto' | 'número' | 'inteiro' | 'longo' | 'lógico';
imutavel: boolean;
valor?: any
}

interface FuncaoHipoteticaInterface {
valor: any
}

export class AnalisadorSemanticoMapler implements AnalisadorSemanticoInterface {
pilhaVariaveis: PilhaVariaveis;
variaveis: { [nomeVariavel: string]: VariavelHipoteticaInterface };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,23 +28,14 @@ import {
import { SimboloInterface } from "../../interfaces";
import { AnalisadorSemanticoInterface } from "../../interfaces/analisador-semantico-interface";
import { DiagnosticoAnalisadorSemantico, DiagnosticoSeveridade } from "../../interfaces/erros";
import { FuncaoHipoteticaInterface } from "../../interfaces/funcao-hipotetica-interface";
import { RetornoAnalisadorSemantico } from "../../interfaces/retornos/retorno-analisador-semantico";
import { TiposDadosInterface } from "../../interfaces/tipos-dados-interface";
import { VariavelHipoteticaInterface } from "../../interfaces/variavel-hipotetica-interface";
import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from "../../quebras";
import { PilhaVariaveis } from "../pilha-variaveis";

interface VariavelHipoteticaInterface {
tipo: TiposDadosInterface;
subtipo?: 'texto' | 'número' | 'inteiro' | 'longo' | 'lógico';
imutavel: boolean;
valor?: any
}

interface FuncaoHipoteticaInterface {
valor: any
}

export class AnalisadorSemanticoVisualg implements AnalisadorSemanticoInterface {
export class AnalisadorSemanticoVisuAlg implements AnalisadorSemanticoInterface {
pilhaVariaveis: PilhaVariaveis;
variaveis: { [nomeVariavel: string]: VariavelHipoteticaInterface };
funcoes: { [nomeFuncao: string]: FuncaoHipoteticaInterface }
Expand Down Expand Up @@ -267,7 +258,7 @@ export class AnalisadorSemanticoVisualg implements AnalisadorSemanticoInterface
if (!funcaoChamada) {
this.erro(
variavel.simbolo,
`Função '${variavel.simbolo.lexema} não foi declarada.'`
`Função '${variavel.simbolo.lexema}' não foi declarada.`
)
return Promise.resolve();
}
Expand All @@ -279,20 +270,20 @@ export class AnalisadorSemanticoVisualg implements AnalisadorSemanticoInterface
)
}

for (let [indice, arg0] of funcao.parametros.entries()) {
for (let [indice, argumento] of funcao.parametros.entries()) {
const arg1 = expressao.argumentos[indice];
if (arg1) {
if (arg0.tipoDado?.tipo.toLowerCase() === 'caracter' && typeof arg1.valor !== 'string') {
if (argumento.tipoDado?.tipo.toLowerCase() === 'caracter' && typeof arg1.valor !== 'string') {
this.erro(
variavel.simbolo,
`O valor passado para o parâmetro '${arg0.tipoDado.nome}' é diferente do esperado pela função.`
`O tipo do valor passado para o parâmetro '${argumento.nome.lexema}' (${argumento.tipoDado.nome}) é diferente do esperado pela função.`
);
}
else if (['inteiro', 'real'].includes(arg0.tipoDado?.tipo.toLowerCase())
else if (['inteiro', 'real'].includes(argumento.tipoDado?.tipo.toLowerCase())
&& typeof arg1.valor !== 'number') {
this.erro(
variavel.simbolo,
`O valor passado para o parâmetro '${arg0.tipoDado.nome}' é diferente do esperado pela função.`
`O tipo do valor passado para o parâmetro '${argumento.nome.lexema}' (${argumento.tipoDado.nome}) é diferente do esperado pela função.`
);
}
}
Expand Down
3 changes: 3 additions & 0 deletions fontes/interfaces/funcao-hipotetica-interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export interface FuncaoHipoteticaInterface {
valor: any
}
8 changes: 8 additions & 0 deletions fontes/interfaces/variavel-hipotetica-interface.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { TiposDadosInterface } from "./tipos-dados-interface";

export interface VariavelHipoteticaInterface {
tipo: TiposDadosInterface;
subtipo?: 'texto' | 'número' | 'inteiro' | 'longo' | 'lógico';
imutavel: boolean;
valor?: any
}
2 changes: 1 addition & 1 deletion fontes/interpretador/dialetos/birl/comum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AcessoIndiceVariavel, Construto, Literal, Variavel } from '../../../con
import { Declaracao, Leia, Para } from '../../../declaracoes';
import { EspacoVariaveis } from '../../../espaco-variaveis';
import { ErroEmTempoDeExecucao } from '../../../excecoes';
import { InterpretadorBirlInterface } from '../../../interfaces/dialeto/interpretador-birl-interface';
import { InterpretadorBirlInterface } from '../../../interfaces/dialetos/interpretador-birl-interface';
import { EscopoExecucao } from '../../../interfaces/escopo-execucao';
import { RetornoInterpretador } from '../../../interfaces/retornos';
import { ContinuarQuebra, Quebra, SustarQuebra } from '../../../quebras';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Construto, Literal } from '../../../construtos';
import { Declaracao, Leia, Para } from '../../../declaracoes';
import { InterpretadorBirlInterface } from '../../../interfaces/dialeto/interpretador-birl-interface';
import { InterpretadorBirlInterface } from '../../../interfaces/dialetos/interpretador-birl-interface';
import { RetornoInterpretador } from '../../../interfaces/retornos';
import { InterpretadorComDepuracao } from '../../interpretador-com-depuracao';
import * as comum from './comum';
Expand Down

0 comments on commit 60db497

Please sign in to comment.