diff --git a/fontes/delegua.ts b/fontes/delegua.ts index 76300fc..eb59f18 100644 --- a/fontes/delegua.ts +++ b/fontes/delegua.ts @@ -16,7 +16,7 @@ import { NucleoTraducao } from './nucleo-traducao'; export class Delegua implements DeleguaInterface { lexador: LexadorInterface; avaliadorSintatico: AvaliadorSintaticoInterface; - importador: ImportadorInterface; + importador: ImportadorInterface; funcaoDeRetorno: Function; funcaoDeRetornoMesmaLinha: Function; diff --git a/fontes/importador/importador-javascript.ts b/fontes/importador/importador-javascript.ts index 6b32018..d8b9c1f 100644 --- a/fontes/importador/importador-javascript.ts +++ b/fontes/importador/importador-javascript.ts @@ -9,14 +9,15 @@ import { AvaliadorSintaticoJavaScript } from "@designliquido/delegua/fontes/aval import { ImportadorInterface } from "../interfaces"; import { RetornoImportador } from "./retorno-importador"; +import { Statement, Directive, ModuleDeclaration } from 'estree'; -export class ImportadorJavaScript implements ImportadorInterface { +export class ImportadorJavaScript implements ImportadorInterface<(Statement | Directive | ModuleDeclaration), (Statement | Directive | ModuleDeclaration)> { diretorioBase: string; conteudoArquivosAbertos: { [identificador: string]: string[]; }; lexador: LexadorJavaScript; avaliadorSintatico: AvaliadorSintaticoJavaScript; - importar(caminhoRelativoArquivo: string, importacaoInicial: boolean): RetornoImportador { + importar(caminhoRelativoArquivo: string, importacaoInicial: boolean): RetornoImportador<(Statement | Directive | ModuleDeclaration), (Statement | Directive | ModuleDeclaration)> { const nomeArquivo = caminho.basename(caminhoRelativoArquivo); let caminhoAbsolutoArquivo = caminho.resolve(this.diretorioBase, caminhoRelativoArquivo); if (importacaoInicial) { @@ -41,7 +42,7 @@ export class ImportadorJavaScript implements ImportadorInterface { hashArquivo, retornoLexador, retornoAvaliadorSintatico, - } as RetornoImportador; + } as RetornoImportador<(Statement | Directive | ModuleDeclaration), (Statement | Directive | ModuleDeclaration)>; } } \ No newline at end of file diff --git a/fontes/importador/importador.ts b/fontes/importador/importador.ts index cb72e6c..a905b72 100644 --- a/fontes/importador/importador.ts +++ b/fontes/importador/importador.ts @@ -16,7 +16,7 @@ import { Declaracao } from '@designliquido/delegua/fontes/declaracoes'; * `conteudoArquivosAbertos`) e aponta erros caso ocorram. * */ -export class Importador implements ImportadorInterface { +export class Importador implements ImportadorInterface { diretorioBase: string = process.cwd(); lexador: LexadorInterface; avaliadorSintatico: AvaliadorSintaticoInterface; @@ -41,7 +41,7 @@ export class Importador implements ImportadorInterface { importar( caminhoRelativoArquivo: string, importacaoInicial: boolean = false - ): RetornoImportador { + ): RetornoImportador { const nomeArquivo = caminho.basename(caminhoRelativoArquivo); let caminhoAbsolutoArquivo = caminho.resolve(this.diretorioBase, caminhoRelativoArquivo); if (importacaoInicial) { @@ -79,6 +79,6 @@ export class Importador implements ImportadorInterface { hashArquivo, retornoLexador, retornoAvaliadorSintatico, - } as RetornoImportador; + } as RetornoImportador; } } diff --git a/fontes/importador/retorno-importador.ts b/fontes/importador/retorno-importador.ts index b9be8e6..5067b96 100644 --- a/fontes/importador/retorno-importador.ts +++ b/fontes/importador/retorno-importador.ts @@ -1,10 +1,10 @@ import { RetornoAvaliadorSintatico } from '@designliquido/delegua/fontes/interfaces/retornos/retorno-avaliador-sintatico'; import { RetornoLexador } from '@designliquido/delegua/fontes/interfaces/retornos/retorno-lexador'; -export interface RetornoImportador { +export interface RetornoImportador { conteudoArquivo: string[]; nomeArquivo: string; hashArquivo: number; - retornoLexador: RetornoLexador; - retornoAvaliadorSintatico: RetornoAvaliadorSintatico; + retornoLexador: RetornoLexador; + retornoAvaliadorSintatico: RetornoAvaliadorSintatico; } diff --git a/fontes/interfaces/importador-interface.ts b/fontes/interfaces/importador-interface.ts index 5792e91..ff141c6 100644 --- a/fontes/interfaces/importador-interface.ts +++ b/fontes/interfaces/importador-interface.ts @@ -1,11 +1,11 @@ import { RetornoImportador } from '../importador'; -export interface ImportadorInterface { +export interface ImportadorInterface { diretorioBase: string; conteudoArquivosAbertos: { [identificador: string]: string[] }; importar( caminhoRelativoArquivo: string, importacaoInicial: boolean - ): RetornoImportador; + ): RetornoImportador; } diff --git a/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.ts b/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.ts index d3d1489..8a84269 100644 --- a/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.ts +++ b/fontes/interpretador/dialetos/interpretador-birl-com-depuracao-importacao.ts @@ -2,16 +2,17 @@ import * as caminho from 'path'; import { InterpretadorBirl } from "@designliquido/delegua/fontes/interpretador/dialetos"; import { ImportadorInterface } from "../../interfaces"; -import { Importar } from "@designliquido/delegua/fontes/declaracoes"; +import { Declaracao, Importar } from "@designliquido/delegua/fontes/declaracoes"; import { DeleguaModulo } from "@designliquido/delegua/fontes/estruturas"; import carregarBibliotecaNode from '../mecanismo-importacao-bibliotecas'; +import { SimboloInterface } from '@designliquido/delegua/fontes/interfaces'; export class InterpretadorBirlImportacao extends InterpretadorBirl { - importador: ImportadorInterface + importador: ImportadorInterface constructor( - importador: ImportadorInterface, + importador: ImportadorInterface, diretorioBase: string, funcaoDeRetorno: Function, funcaoDeRetornoMesmaLinha: Function @@ -35,7 +36,7 @@ export class InterpretadorBirlImportacao extends InterpretadorBirl { } } - const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false); + const conteudoImportacao = this.importador.importar(caminhoRelativo, false); const retornoInterpretador = await this.interpretar( conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true diff --git a/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.ts b/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.ts index 7fca40a..201d501 100644 --- a/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.ts +++ b/fontes/interpretador/dialetos/interpretador-mapler-com-depuracao-importacao.ts @@ -1,13 +1,14 @@ -import { Importar } from "@designliquido/delegua/fontes/declaracoes"; +import { Declaracao, Importar } from "@designliquido/delegua/fontes/declaracoes"; import { DeleguaModulo } from "@designliquido/delegua/fontes/estruturas"; import { InterpretadorMaplerComDepuracao } from "@designliquido/delegua/fontes/interpretador/dialetos/mapler/interpretador-mapler-com-depuracao"; import { ImportadorInterface } from "../../interfaces"; +import { SimboloInterface } from "@designliquido/delegua/fontes/interfaces"; export class InterpretadorMaplerComDepuracaoImportacao extends InterpretadorMaplerComDepuracao { - importador: ImportadorInterface; + importador: ImportadorInterface; constructor( - importador: ImportadorInterface, + importador: ImportadorInterface, diretorioBase: string, funcaoDeRetorno: Function, funcaoDeRetornoMesmaLinha: Function) @@ -24,7 +25,7 @@ export class InterpretadorMaplerComDepuracaoImportacao extends InterpretadorMapl async visitarDeclaracaoImportar(declaracao: Importar): Promise { const caminhoRelativo = await this.avaliar(declaracao.caminho); - const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false); + const conteudoImportacao = this.importador.importar(caminhoRelativo, false); const retornoInterpretador = await this.interpretar( conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true diff --git a/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.ts b/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.ts index f92e297..ab7332f 100644 --- a/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.ts +++ b/fontes/interpretador/dialetos/interpretador-visualg-com-depuracao-importacao.ts @@ -1,17 +1,18 @@ import * as caminho from 'path'; -import { Importar } from "@designliquido/delegua/fontes/declaracoes"; +import { Declaracao, Importar } from "@designliquido/delegua/fontes/declaracoes"; import { DeleguaModulo } from "@designliquido/delegua/fontes/estruturas"; import { InterpretadorVisuAlgComDepuracao } from "@designliquido/delegua/fontes/interpretador/dialetos"; import { ImportadorInterface } from "../../interfaces"; import carregarBibliotecaNode from '../mecanismo-importacao-bibliotecas'; +import { SimboloInterface } from '@designliquido/delegua/fontes/interfaces'; export class InterpretadorVisuAlgComDepuracaoImportacao extends InterpretadorVisuAlgComDepuracao { - importador: ImportadorInterface; + importador: ImportadorInterface; constructor( - importador: ImportadorInterface, + importador: ImportadorInterface, diretorioBase: string, funcaoDeRetorno: Function, funcaoDeRetornoMesmaLinha: Function) @@ -40,7 +41,7 @@ export class InterpretadorVisuAlgComDepuracaoImportacao extends InterpretadorVis } } - const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false); + const conteudoImportacao = this.importador.importar(caminhoRelativo, false); const retornoInterpretador = await this.interpretar( conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true diff --git a/fontes/interpretador/interpretador-com-depuracao-importacao.ts b/fontes/interpretador/interpretador-com-depuracao-importacao.ts index 405bd3f..ce94c03 100644 --- a/fontes/interpretador/interpretador-com-depuracao-importacao.ts +++ b/fontes/interpretador/interpretador-com-depuracao-importacao.ts @@ -1,17 +1,18 @@ import * as caminho from 'path'; -import { Importar } from "@designliquido/delegua/fontes/declaracoes"; +import { Declaracao, Importar } from "@designliquido/delegua/fontes/declaracoes"; import { DeleguaModulo } from "@designliquido/delegua/fontes/estruturas"; import { InterpretadorComDepuracao } from "@designliquido/delegua/fontes/interpretador"; import { ImportadorInterface } from "../interfaces"; import carregarBibliotecaNode from './mecanismo-importacao-bibliotecas'; +import { SimboloInterface } from '@designliquido/delegua/fontes/interfaces'; export class InterpretadorComDepuracaoImportacao extends InterpretadorComDepuracao { - importador: ImportadorInterface; + importador: ImportadorInterface; constructor( - importador: ImportadorInterface, + importador: ImportadorInterface, diretorioBase: string, funcaoDeRetorno: Function, funcaoDeRetornoMesmaLinha: Function) @@ -39,7 +40,7 @@ export class InterpretadorComDepuracaoImportacao extends InterpretadorComDepurac } } - const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false); + const conteudoImportacao = this.importador.importar(caminhoRelativo, false); const retornoInterpretador = await this.interpretar( conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true diff --git a/fontes/interpretador/interpretador.ts b/fontes/interpretador/interpretador.ts index 4b989a5..f5280d9 100644 --- a/fontes/interpretador/interpretador.ts +++ b/fontes/interpretador/interpretador.ts @@ -1,12 +1,13 @@ import * as caminho from 'path'; -import { Importar } from '@designliquido/delegua/fontes/declaracoes'; +import { Declaracao, Importar } from '@designliquido/delegua/fontes/declaracoes'; import { DeleguaModulo } from '@designliquido/delegua/fontes/estruturas'; import { ImportadorInterface } from '../interfaces/importador-interface'; import { InterpretadorBase } from '@designliquido/delegua/fontes/interpretador/interpretador-base'; import carregarBibliotecaNode from './mecanismo-importacao-bibliotecas'; +import { SimboloInterface } from '@designliquido/delegua/fontes/interfaces'; /** @@ -14,10 +15,10 @@ import carregarBibliotecaNode from './mecanismo-importacao-bibliotecas'; * e de fato executa a lógica de programação descrita no código. */ export class Interpretador extends InterpretadorBase { - importador: ImportadorInterface; + importador: ImportadorInterface; constructor( - importador: ImportadorInterface, + importador: ImportadorInterface, diretorioBase: string, performance = false, funcaoDeRetorno: Function = null, @@ -46,7 +47,7 @@ export class Interpretador extends InterpretadorBase { } } - const conteudoImportacao = this.importador.importar(caminhoRelativo, false, false); + const conteudoImportacao = this.importador.importar(caminhoRelativo, false); const retornoInterpretador = await this.interpretar( conteudoImportacao.retornoAvaliadorSintatico.declaracoes, true diff --git a/fontes/nucleo-comum.ts b/fontes/nucleo-comum.ts index fee3352..a2cb263 100644 --- a/fontes/nucleo-comum.ts +++ b/fontes/nucleo-comum.ts @@ -11,7 +11,7 @@ export abstract class NucleoComum { * @param retornoImportador Um objeto que implementa a interface RetornoImportador. * @returns Verdadeiro se há erros. Falso caso contrário. */ - protected afericaoErros(retornoImportador: RetornoImportador): boolean { + protected afericaoErros(retornoImportador: RetornoImportador): boolean { if (retornoImportador.retornoLexador.erros.length > 0) { for (const erroLexador of retornoImportador.retornoLexador.erros) { this.reportar(erroLexador.linha, ` no '${erroLexador.caractere}'`, erroLexador.mensagem); diff --git a/fontes/nucleo-execucao.ts b/fontes/nucleo-execucao.ts index ba4eeea..cdc391d 100644 --- a/fontes/nucleo-execucao.ts +++ b/fontes/nucleo-execucao.ts @@ -33,7 +33,7 @@ export class NucleoExecucao interpretador: InterpretadorInterface; lexador: LexadorInterface; avaliadorSintatico: AvaliadorSintaticoInterface; - importador: ImportadorInterface; + importador: ImportadorInterface; servidorDepuracao: ServidorDepuracao; dialeto: string; @@ -364,7 +364,7 @@ export class NucleoExecucao * para LAIR, falso para execução por arquivo. * @returns Um objeto com o resultado da execução. */ - async executar(retornoImportador: RetornoImportador, manterAmbiente = false): Promise { + async executar(retornoImportador: RetornoImportador, manterAmbiente = false): Promise { const retornoInterpretador = await this.interpretador.interpretar( retornoImportador.retornoAvaliadorSintatico.declaracoes, manterAmbiente @@ -409,7 +409,7 @@ export class NucleoExecucao this.afericaoErros({ retornoLexador, retornoAvaliadorSintatico, - } as RetornoImportador) + } as RetornoImportador) ) { return { resultado: [] } as RetornoExecucaoInterface; } @@ -418,7 +418,7 @@ export class NucleoExecucao { retornoLexador, retornoAvaliadorSintatico, - } as RetornoImportador, + } as RetornoImportador, true ); } diff --git a/fontes/nucleo-traducao.ts b/fontes/nucleo-traducao.ts index 507043a..a4133fc 100644 --- a/fontes/nucleo-traducao.ts +++ b/fontes/nucleo-traducao.ts @@ -9,7 +9,7 @@ import { NucleoComum } from './nucleo-comum'; export class NucleoTraducao extends NucleoComum { - importador: ImportadorInterface; + importador: ImportadorInterface; tradutor: TradutorInterface; funcaoDeRetorno: Function; funcaoDeRetornoMesmaLinha: Function;