Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Usando novos pacotes de dialetos, que deixarão de fazer parte do núcleo de Delégua + ajustes. #36

Merged
merged 7 commits into from
Feb 11, 2024
2 changes: 1 addition & 1 deletion execucao.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ const principal = async () => {
}

if (opcoes.codigo) {
await delegua.executarCodigoComoArgumento(
return await delegua.executarCodigoComoArgumento(
opcoes.codigo || codigoOuNomeArquivo,
opcoes.dialeto,
Boolean(opcoes.performance)
Expand Down
8 changes: 4 additions & 4 deletions fontes/delegua.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export class Delegua implements DeleguaInterface {

return JSON.parse(sistemaArquivos.readFileSync(manifesto, { encoding: 'utf8' })).version || '0.26';
} catch (error: any) {
return '0.24 (desenvolvimento)';
return '0.32 (desenvolvimento)';
}
}

Expand All @@ -51,7 +51,7 @@ export class Delegua implements DeleguaInterface {
): Promise<void> {
const nucleoExecucao = new NucleoExecucao(this.versao(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
nucleoExecucao.configurarDialeto(dialeto, performance);
await nucleoExecucao.executarCodigoComoArgumento(codigo);
return await nucleoExecucao.executarCodigoComoArgumento(codigo);
}

async executarCodigoPorArquivo(
Expand All @@ -61,13 +61,13 @@ export class Delegua implements DeleguaInterface {
): Promise<any> {
const nucleoExecucao = new NucleoExecucao(this.versao(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
nucleoExecucao.configurarDialeto(dialeto, performance);
await nucleoExecucao.carregarEExecutarArquivo(caminhoRelativoArquivo);
return await nucleoExecucao.carregarEExecutarArquivo(caminhoRelativoArquivo);
}

async iniciarLair(dialeto: string = 'delegua'): Promise<void> {
const nucleoExecucao = new NucleoExecucao(this.versao(), this.funcaoDeRetorno, this.funcaoDeRetornoMesmaLinha);
nucleoExecucao.configurarDialeto(dialeto, false);
await nucleoExecucao.iniciarLairDelegua();
return await nucleoExecucao.iniciarLairDelegua();
}

traduzirArquivo(
Expand Down
26 changes: 14 additions & 12 deletions fontes/nucleo-execucao.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,13 @@ import {
AvaliadorSintaticoPitugues,
AvaliadorSintaticoMapler,
AvaliadorSintaticoPortugolIpt,
AvaliadorSintaticoPortugolStudio,
AvaliadorSintaticoVisuAlg,
AvaliadorSintaticoPotigol,
} from "@designliquido/delegua/fontes/avaliador-sintatico/dialetos";
import {
InterpretadorBirl,
InterpretadorEguaClassico,
InterpretadorMapler,
InterpretadorPortugolIpt,
InterpretadorPortugolStudioComDepuracao,
InterpretadorPortugolStudio,
InterpretadorVisuAlg,
InterpretadorPotigol,
} from "@designliquido/delegua/fontes/interpretador/dialetos";
import { InterpretadorPotigolComDepuracao } from '@designliquido/delegua/fontes/interpretador/dialetos/potigol/interpretador-potigol-com-depuracao';
Expand All @@ -48,10 +43,17 @@ import {
LexadorPitugues,
LexadorMapler,
LexadorPortugolIpt,
LexadorPortugolStudio,
LexadorVisuAlg,
LexadorPotigol,
} from "@designliquido/delegua/fontes/lexador/dialetos";

import { LexadorPortugolStudio } from "@designliquido/portugol-studio/lexador";
import { AvaliadorSintaticoPortugolStudio } from '@designliquido/portugol-studio/avaliador-sintatico';
import { InterpretadorPortugolStudio, InterpretadorPortugolStudioComDepuracao } from '@designliquido/portugol-studio/interpretador';

import { LexadorVisuAlg } from '@designliquido/visualg/fontes/lexador';
import { AvaliadorSintaticoVisuAlg } from '@designliquido/visualg/fontes/avaliador-sintatico';
import { InterpretadorVisuAlg } from '@designliquido/visualg/fontes/interpretador';

import { Interpretador } from "./interpretador";
import { InterpretadorMaplerComDepuracaoImportacao } from "./interpretador/dialetos/interpretador-mapler-com-depuracao-importacao";
import { InterpretadorVisuAlgComDepuracaoImportacao } from "./interpretador/dialetos/interpretador-visualg-com-depuracao-importacao";
Expand Down Expand Up @@ -379,7 +381,7 @@ export class NucleoExecucao
// Se a interface de entrada e saída ainda não está definida, definimos agora.
// A interface pode ser definida por um teste unitário antes da execução
// aqui, por exemplo.
let interfaceLeitura: any;
let interfaceLeitura: readline.Interface | any;
if (!this.interpretador.interfaceEntradaSaida) {
interfaceLeitura = readline.createInterface({
input: process.stdin,
Expand Down Expand Up @@ -408,19 +410,19 @@ export class NucleoExecucao
errosExecucao = erros;
}

if (interfaceLeitura && interfaceLeitura.hasOwnProperty("close")) {
if (interfaceLeitura && (interfaceLeitura instanceof readline.Interface || interfaceLeitura.hasOwnProperty("close"))) {
interfaceLeitura.close();
}

if (errosExecucao.length > 0) process.exit(70); // Código com exceções não tratadas
process.exit(0);
if (errosExecucao.length > 0) process.exitCode = 70; // Código com exceções não tratadas
return;
}

/**
* LAIR (Leia-Avalie-Imprima-Repita) é o modo em que Delégua executa em modo console,
* ou seja, esperando como entrada linhas de código fornecidas pelo usuário.
*/
iniciarLairDelegua(): void {
async iniciarLairDelegua(): Promise<void> {
const lexadorJson = new LexadorJson();
const formatadorJson = new FormatadorJson();

Expand Down
1 change: 1 addition & 0 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,6 @@ export default async (): Promise<Config.InitialOptions> => {
preset: 'ts-jest',
testEnvironment: 'node',
coverageReporters: ['json-summary', 'lcov', 'text', 'text-summary'],
detectOpenHandles: true
};
};
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.32.2",
"description": "Linguagem Delégua com capacidades para ecossistema Node.js.",
"scripts": {
"empacotar": "rimraf ./dist && tsc && copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && copyfiles -V ./package.json ./dist/bin && copyfiles -V ./README.md ./dist && copyfiles -V ./LICENSE ./dist",
"empacotar": "yarn rimraf ./dist && tsc && yarn copyfiles -V ./bin/delegua ./bin/delegua.cmd ./dist && yarn copyfiles -V ./package.json ./dist/bin && yarn copyfiles -V ./README.md ./dist && yarn copyfiles -V ./LICENSE ./dist",
"testes-unitarios": "jest --coverage",
"testes:egua": "./bin/delegua-ts exemplos/dialetos/egua-classico/testes.egua",
"testes:delegua:bhaskara": "./bin/delegua-ts exemplos/dialetos/egua-classico/bhaskara.egua",
Expand All @@ -13,10 +13,11 @@
},
"dependencies": {
"@designliquido/delegua": "0.32.2",
"@designliquido/portugol-studio": "^0.0.0",
"@designliquido/visualg": "^0.0.1",
"chalk": "4.1.2",
"commander": "^9.4.1",
"json-colorizer": "^2.2.2",
"lodash.clonedeep": "^4.5.0"
"json-colorizer": "^2.2.2"
},
"devDependencies": {
"@designliquido/delegua-estatistica": "^0.0.5",
Expand Down
1 change: 1 addition & 0 deletions testes/nucleo-traducao.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ describe('Núcleo de tradução', () => {
let retornoSaida: string = '';
const funcaoDeRetorno = (saida: string) => retornoSaida += saida;
const nucleoTraducao = new NucleoTraducao(funcaoDeRetorno);

nucleoTraducao.iniciarTradutor('javascript-para-delegua');
nucleoTraducao.traduzirArquivo('./exemplos/tradutores/javascript-para-delegua.js', false);

Expand Down
17 changes: 16 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@
resolved "https://registry.yarnpkg.com/@designliquido/delegua-tempo/-/delegua-tempo-0.0.1.tgz#964834d127354857cda1c388f5de9327735b6747"
integrity sha512-/O1/eXlTXPTWSZGZ862i6uHHKCW0cmP6KnOV29zK4d4hgn03QjcNDeFKVC9L9vz3OJ6pPY0d/S8ANJkgBnnoaQ==

"@designliquido/[email protected]":
"@designliquido/[email protected]", "@designliquido/delegua@^0.32.2":
version "0.32.2"
resolved "https://registry.yarnpkg.com/@designliquido/delegua/-/delegua-0.32.2.tgz#97dbffc39b17fd280ada32e141da7547a80edbfa"
integrity sha512-2iEW78j+SMt57uvDeC366RuDcOWkmU2wQ1lMhbGvF8JnbrjK4vijXk/aEHtsr03M0wGnjUERoGx4l/jCWmedFA==
Expand All @@ -347,6 +347,21 @@
esprima "^4.0.1"
lodash.clonedeep "^4.5.0"

"@designliquido/portugol-studio@^0.0.0":
version "0.0.0"
resolved "https://registry.yarnpkg.com/@designliquido/portugol-studio/-/portugol-studio-0.0.0.tgz#cf40e6f0c2837b32e35e84332211b5c56073ccc7"
integrity sha512-al4IR4HZRw5q9Ujsf6B6I+3Sy3G2jEhYCeli90iZKfxq7meNBmwqXiUvWdrX1RpM6scwWDO1UDVHTlASYyan9g==
dependencies:
"@designliquido/delegua" "^0.32.2"

"@designliquido/visualg@^0.0.1":
version "0.0.1"
resolved "https://registry.yarnpkg.com/@designliquido/visualg/-/visualg-0.0.1.tgz#650e24ad914aeae0465a72b6a9eea6cb1c2b6619"
integrity sha512-SV2O9g51iN6VM/dmYkml23BUYbKEwT9eIVja/koGTrKcG3tRfL5vMaiWSdghSLuBmBgtmOPJ6Tenj3y1nc66Rg==
dependencies:
"@designliquido/delegua" "^0.32.2"
lodash "^4.17.21"

"@iarna/[email protected]":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
Expand Down
Loading