@designliquido/delegua 0.12.7 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +2 -2
  2. package/bin/package.json +2 -1
  3. package/execucao.js +2 -1
  4. package/execucao.js.map +1 -1
  5. package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +3 -1
  6. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +28 -1
  7. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  8. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.d.ts +4 -3
  9. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +90 -17
  10. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  11. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.d.ts +26 -0
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js +157 -0
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js.map +1 -0
  14. package/fontes/delegua.d.ts +1 -1
  15. package/fontes/delegua.js +14 -3
  16. package/fontes/delegua.js.map +1 -1
  17. package/fontes/lexador/dialetos/lexador-birl.js +10 -51
  18. package/fontes/lexador/dialetos/lexador-birl.js.map +1 -1
  19. package/fontes/lexador/dialetos/lexador-portugol-studio.d.ts +15 -0
  20. package/fontes/lexador/dialetos/lexador-portugol-studio.js +243 -0
  21. package/fontes/lexador/dialetos/lexador-portugol-studio.js.map +1 -0
  22. package/fontes/lexador/dialetos/palavras-reservadas/index.d.ts +1 -0
  23. package/fontes/lexador/dialetos/palavras-reservadas/index.js +1 -0
  24. package/fontes/lexador/dialetos/palavras-reservadas/index.js.map +1 -1
  25. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.d.ts +6 -0
  26. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js +12 -0
  27. package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js.map +1 -0
  28. package/fontes/lexador/lexador-base.d.ts +41 -0
  29. package/fontes/lexador/lexador-base.js +113 -0
  30. package/fontes/lexador/lexador-base.js.map +1 -0
  31. package/fontes/tipos-de-simbolos/birl.d.ts +5 -0
  32. package/fontes/tipos-de-simbolos/birl.js +5 -0
  33. package/fontes/tipos-de-simbolos/birl.js.map +1 -1
  34. package/fontes/tipos-de-simbolos/portugol-studio.d.ts +33 -0
  35. package/fontes/tipos-de-simbolos/portugol-studio.js +35 -0
  36. package/fontes/tipos-de-simbolos/portugol-studio.js.map +1 -0
  37. package/package.json +2 -1
package/README.md CHANGED
@@ -53,7 +53,7 @@ Delégua tem retrocompatibilidade com a linguagem Égua e compreende sua extens
53
53
  - **Grátis.** Sem planos, sem limitações e sem propaganda.
54
54
  - **Código aberto (_open source_).** Todo o código fonte disponível para estudar, modificar e contribuir.
55
55
  - **Linguagem Científica.** Apoiamos e encorajamos o desenvolvimento e aprimoramento da ciência e da educação.
56
- - **Multidialetos.** Execute algoritmos em [Portugol VisuAlg](http://visualg3.com.br).
56
+ - **Multidialetos.** Execute algoritmos em [Portugol VisuAlg](http://visualg3.com.br) e [Portugol Studio](http://lite.acad.univali.br/portugol/).
57
57
  - **Depurável.** Usando um editor com suporte à depuração como o [Visual Studio Code](https://code.visualstudio.com), você pode inspecionar o seu programa, suas variáveis e executar linha por linha
58
58
 
59
59
  ## Aplicações
@@ -119,7 +119,7 @@ npm install -g @designliquido/delegua
119
119
 
120
120
  ## Tradução para outras linguagens
121
121
 
122
- Por ora, Delégua traduz para JavaScript simples. [Mais informações aqui](https://github.com/DesignLiquido/delegua/wiki/Tradu%C3%A7%C3%A3o-para-outras-linguagens).
122
+ Delégua traduz para JavaScript e vice-versa. [Mais informações aqui](https://github.com/DesignLiquido/delegua/wiki/Tradu%C3%A7%C3%A3o-para-outras-linguagens).
123
123
 
124
124
  ## Documentação
125
125
 
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designliquido/delegua",
3
- "version": "0.12.6",
3
+ "version": "0.12.8",
4
4
  "description": "Linguagem de programação simples e moderna usando português estruturado, com suporte a múltiplos dialetos",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -67,6 +67,7 @@
67
67
  "@designliquido/delegua-matematica": "^0.2.0",
68
68
  "@designliquido/delegua-tempo": "^0.0.1",
69
69
  "@types/esprima": "^4.0.3",
70
+ "@types/estree": "^1.0.0",
70
71
  "@types/jest": "^29.4.0",
71
72
  "@types/node": "^18.11.13",
72
73
  "@typescript-eslint/eslint-plugin": "^5.46.1",
package/execucao.js CHANGED
@@ -27,7 +27,8 @@ const principal = () => {
27
27
  else {
28
28
  if (codigoOuNomeArquivo) {
29
29
  if (opcoes.traduzir) {
30
- delegua.traduzirArquivo(codigoOuNomeArquivo, opcoes.saida);
30
+ const extensaoSaida = opcoes.traduzir;
31
+ delegua.traduzirArquivo(codigoOuNomeArquivo, opcoes.saida, extensaoSaida);
31
32
  }
32
33
  else {
33
34
  delegua.carregarArquivo(codigoOuNomeArquivo);
package/execucao.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"execucao.js","sourceRoot":"","sources":["../execucao.ts"],"names":[],"mappings":";;AAAA,8CAA2C;AAC3C,yCAAoC;AAEpC,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,MAAM,oBAAoB,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC3C,IAAI,mBAA2B,CAAC;IAEhC,oBAAoB;SACf,MAAM,CACH,uBAAuB,EACvB,wBAAwB,EACxB,EAAE,CACL;SACA,MAAM,CACH,yBAAyB,EACzB,uCAAuC,EACvC,SAAS,CACZ;SACA,MAAM,CACH,iBAAiB,EACjB,4GAA4G,EAC5G,KAAK,CACR;SACA,MAAM,CACH,mBAAmB,EACnB,iEAAiE,EACjE,KAAK,CACR;SACA,MAAM,CACH,aAAa,EACb,4CAA4C,EAC5C,KAAK,CACR;SACA,MAAM,CACH,4BAA4B,EAC5B,oDAAoD,CACvD;SACA,QAAQ,CAAC,eAAe,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QACnB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,mBAAmB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;IAEP,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAI,iBAAO,CACvB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,WAAW,EAClB,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAC9C,MAAM,CAAC,QAAQ,CAClB,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,EAAE;QACf,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC;KAC7E;SAAM;QACH,IAAI,mBAAmB,EAAE;YACrB,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACjB,OAAO,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;aAC9D;iBAAM;gBACH,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;aAChD;SACJ;aAAM;YACH,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAChC;KACJ;AACL,CAAC,CAAC;AAEF,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"execucao.js","sourceRoot":"","sources":["../execucao.ts"],"names":[],"mappings":";;AAAA,8CAA2C;AAC3C,yCAAoC;AAEpC,MAAM,SAAS,GAAG,GAAG,EAAE;IACnB,MAAM,oBAAoB,GAAG,IAAI,mBAAO,EAAE,CAAC;IAC3C,IAAI,mBAA2B,CAAC;IAEhC,oBAAoB;SACf,MAAM,CACH,uBAAuB,EACvB,wBAAwB,EACxB,EAAE,CACL;SACA,MAAM,CACH,yBAAyB,EACzB,uCAAuC,EACvC,SAAS,CACZ;SACA,MAAM,CACH,iBAAiB,EACjB,4GAA4G,EAC5G,KAAK,CACR;SACA,MAAM,CACH,mBAAmB,EACnB,iEAAiE,EACjE,KAAK,CACR;SACA,MAAM,CACH,aAAa,EACb,4CAA4C,EAC5C,KAAK,CACR;SACA,MAAM,CACH,4BAA4B,EAC5B,oDAAoD,CACvD;SACA,QAAQ,CAAC,eAAe,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QACnB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,mBAAmB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;SACvC;IACL,CAAC,CAAC,CAAC;IAEP,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAE3C,MAAM,OAAO,GAAG,IAAI,iBAAO,CACvB,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,WAAW,EAClB,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAC9C,MAAM,CAAC,QAAQ,CAClB,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,EAAE;QACf,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,MAAM,IAAI,mBAAmB,CAAC,CAAC;KAC7E;SAAM;QACH,IAAI,mBAAmB,EAAE;YACrB,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACjB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACtC,OAAO,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;aAC7E;iBAAM;gBACH,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;aAChD;SACJ;aAAM;YACH,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAChC;KACJ;AACL,CAAC,CAAC;AAEF,SAAS,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { Construto, FuncaoConstruto } from '../construtos';
2
2
  import { Escreva, Expressao, Se, Enquanto, Para, Sustar, Continua, Retorna, Escolha, Importar, Tente, Fazer, Var, FuncaoDeclaracao as FuncaoDeclaracao, Classe, Declaracao, Leia } from '../declaracoes';
3
- import { AvaliadorSintaticoInterface, SimboloInterface } from '../interfaces';
3
+ import { AvaliadorSintaticoInterface, ParametroInterface, SimboloInterface } from '../interfaces';
4
4
  import { RetornoLexador, RetornoAvaliadorSintatico } from '../interfaces/retornos';
5
5
  import { ErroAvaliadorSintatico } from './erro-avaliador-sintatico';
6
6
  /**
@@ -16,6 +16,7 @@ export declare abstract class AvaliadorSintaticoBase implements AvaliadorSintati
16
16
  blocos: number;
17
17
  consumir(tipo: string, mensagemDeErro: string): SimboloInterface;
18
18
  erro(simbolo: SimboloInterface, mensagemDeErro: string): ErroAvaliadorSintatico;
19
+ simboloAnterior(): SimboloInterface;
19
20
  verificarTipoSimboloAtual(tipo: string): boolean;
20
21
  verificarTipoProximoSimbolo(tipo: string): boolean;
21
22
  estaNoFinal(): boolean;
@@ -60,6 +61,7 @@ export declare abstract class AvaliadorSintaticoBase implements AvaliadorSintati
60
61
  funcao(tipo: string): FuncaoDeclaracao;
61
62
  abstract corpoDaFuncao(tipo: string): FuncaoConstruto;
62
63
  declaracaoDeClasse(): Classe;
64
+ protected logicaComumParametros(): ParametroInterface[];
63
65
  abstract declaracao(): Declaracao;
64
66
  abstract analisar(retornoLexador: RetornoLexador, hashArquivo?: number): RetornoAvaliadorSintatico;
65
67
  }
@@ -24,6 +24,9 @@ class AvaliadorSintaticoBase {
24
24
  this.erros.push(excecao);
25
25
  return excecao;
26
26
  }
27
+ simboloAnterior() {
28
+ return this.simbolos[this.atual - 1];
29
+ }
27
30
  verificarTipoSimboloAtual(tipo) {
28
31
  if (this.estaNoFinal())
29
32
  return false;
@@ -51,7 +54,7 @@ class AvaliadorSintaticoBase {
51
54
  return false;
52
55
  }
53
56
  declaracaoLeia() {
54
- throw new Error('Method not implemented.');
57
+ throw new Error('Método não implementado.');
55
58
  }
56
59
  finalizarChamada(entidadeChamada) {
57
60
  const argumentos = [];
@@ -178,6 +181,30 @@ class AvaliadorSintaticoBase {
178
181
  declaracaoDeClasse() {
179
182
  throw new Error('Método não implementado.');
180
183
  }
184
+ logicaComumParametros() {
185
+ const parametros = [];
186
+ do {
187
+ if (parametros.length >= 255) {
188
+ this.erro(this.simbolos[this.atual], 'Não pode haver mais de 255 parâmetros');
189
+ }
190
+ const parametro = {};
191
+ if (this.simbolos[this.atual].tipo === comum_1.default.MULTIPLICACAO) {
192
+ this.consumir(comum_1.default.MULTIPLICACAO, null);
193
+ parametro.tipo = 'estrela';
194
+ }
195
+ else {
196
+ parametro.tipo = 'padrao';
197
+ }
198
+ parametro.nome = this.consumir(comum_1.default.IDENTIFICADOR, 'Esperado nome do parâmetro.');
199
+ if (this.verificarSeSimboloAtualEIgualA(comum_1.default.IGUAL)) {
200
+ parametro.valorPadrao = this.primario();
201
+ }
202
+ parametros.push(parametro);
203
+ if (parametro.tipo === 'estrela')
204
+ break;
205
+ } while (this.verificarSeSimboloAtualEIgualA(comum_1.default.VIRGULA));
206
+ return parametros;
207
+ }
181
208
  }
182
209
  exports.AvaliadorSintaticoBase = AvaliadorSintaticoBase;
183
210
  //# sourceMappingURL=avaliador-sintatico-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Construto, FuncaoConstruto } from '../../construtos';
2
- import { Escreva, Declaracao, Enquanto, Para, Escolha, Fazer, Se } from '../../declaracoes';
2
+ import { Escreva, Declaracao, Enquanto, Para, Escolha, Fazer, Se, Retorna } from '../../declaracoes';
3
3
  import { RetornoLexador, RetornoAvaliadorSintatico } from '../../interfaces/retornos';
4
4
  import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base';
5
5
  export declare class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
@@ -8,14 +8,15 @@ export declare class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
8
8
  primario(): Construto;
9
9
  chamar(): Construto;
10
10
  atribuir(): Construto;
11
- declaracaoEscreva(): Escreva;
12
11
  blocoEscopo(): Declaracao[];
13
12
  declaracaoEnquanto(): Enquanto;
14
13
  declaracaoPara(): Para;
15
14
  declaracaoEscolha(): Escolha;
15
+ declaracaoEscreva(): Escreva;
16
16
  declaracaoFazer(): Fazer;
17
+ declaracaoRetorna(): Retorna;
17
18
  declaracaoSe(): Se;
18
19
  corpoDaFuncao(tipo: string): FuncaoConstruto;
19
- declaracao(): Declaracao;
20
+ declaracao(): any;
20
21
  analisar(retornoLexador: RetornoLexador, hashArquivo?: number): RetornoAvaliadorSintatico;
21
22
  }
@@ -4,8 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AvaliadorSintaticoBirl = void 0;
7
+ const construtos_1 = require("../../construtos");
8
+ const declaracoes_1 = require("../../declaracoes");
7
9
  const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
8
- const erro_avaliador_sintatico_1 = require("../erro-avaliador-sintatico");
9
10
  const birl_1 = __importDefault(require("../../tipos-de-simbolos/birl"));
10
11
  class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
11
12
  validarSegmentoHoraDoShow() {
@@ -19,49 +20,121 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
19
20
  this.blocos -= 1;
20
21
  }
21
22
  primario() {
22
- throw new Error('Method not implemented');
23
+ const simboloAtual = this.simbolos[this.atual];
24
+ if (this.verificarSeSimboloAtualEIgualA(birl_1.default.NEGATIVO))
25
+ return new construtos_1.Literal(this.hashArquivo, Number(simboloAtual.linha), false);
26
+ if (this.verificarSeSimboloAtualEIgualA(birl_1.default.POSITIVO))
27
+ return new construtos_1.Literal(this.hashArquivo, Number(simboloAtual.linha), true);
28
+ /* if (
29
+ this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.IDENTIFICADOR, tiposDeSimbolos.METODO_BIBLIOTECA_GLOBAL)
30
+ ) {
31
+ return new Variavel(this.hashArquivo, this.simbolos[this.atual - 1]);
32
+ } */
33
+ if (this.verificarSeSimboloAtualEIgualA(birl_1.default.NUMERO, birl_1.default.FRANGAO, birl_1.default.FRANGÃO, birl_1.default.FRANGO, birl_1.default.TEXTO)) {
34
+ const simboloAnterior = this.simbolos[this.atual - 1];
35
+ return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
36
+ }
37
+ if (this.verificarSeSimboloAtualEIgualA(birl_1.default.PARENTESE_ESQUERDO)) {
38
+ const expressao = this.expressao();
39
+ this.consumir(birl_1.default.PARENTESE_DIREITO, "Esperado ')' após a expressão.");
40
+ return new construtos_1.Agrupamento(this.hashArquivo, Number(simboloAtual.linha), expressao);
41
+ }
23
42
  }
24
43
  chamar() {
25
44
  return this.primario();
26
45
  }
27
46
  atribuir() {
28
- throw new Error('Method not implemented.');
29
- }
30
- declaracaoEscreva() {
31
- throw new Error('Method not implemented.');
47
+ const expressao = this.ou();
48
+ if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
49
+ const igual = this.simboloAnterior();
50
+ const valor = this.atribuir();
51
+ if (expressao instanceof construtos_1.Variavel) {
52
+ const simbolo = expressao.simbolo;
53
+ return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
54
+ }
55
+ else if (expressao instanceof construtos_1.AcessoMetodo) {
56
+ const get = expressao;
57
+ return new construtos_1.DefinirValor(this.hashArquivo, 0, get.objeto, get.simbolo, valor);
58
+ }
59
+ else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
60
+ return new construtos_1.AtribuicaoSobrescrita(this.hashArquivo, 0, expressao.entidadeChamada, expressao.indice, valor);
61
+ }
62
+ this.erro(igual, 'Tarefa de atribuição inválida');
63
+ }
64
+ return expressao;
32
65
  }
33
66
  blocoEscopo() {
34
- throw new Error('Method not implemented.');
67
+ throw new Error('Método não implementado.');
35
68
  }
36
69
  declaracaoEnquanto() {
37
- throw new Error('Method not implemented.');
70
+ throw new Error('Método não implementado.');
38
71
  }
39
72
  declaracaoPara() {
40
- throw new Error('Method not implemented.');
73
+ throw new Error('Método não implementado.');
41
74
  }
42
75
  declaracaoEscolha() {
43
- throw new Error('Method not implemented.');
76
+ throw new Error('Método não implementado.');
77
+ }
78
+ declaracaoEscreva() {
79
+ const primeiroSimbolo = this.consumir(birl_1.default.CE, 'Esperado expressão `CE` para escrever mensagem.');
80
+ this.consumir(birl_1.default.QUER, 'Esperado expressão `QUER` após `CE` para escrever mensagem.');
81
+ this.consumir(birl_1.default.VER, 'Esperado expressão `VER` após `QUER` para escrever mensagem.');
82
+ this.consumir(birl_1.default.ESSA, 'Esperado expressão `ESSA` após `VER` para escrever mensagem.');
83
+ this.consumir(birl_1.default.PORRA, 'Esperado expressão `PORRA` após `ESSA` para escrever mensagem.');
84
+ this.consumir(birl_1.default.INTERROGACAO, 'Esperado interrogação após `PORRA` para escrever mensagem.');
85
+ this.consumir(birl_1.default.PARENTESE_ESQUERDO, 'Esperado parêntese esquerdo após interrogação para escrever mensagem.');
86
+ const argumento = this.declaracao();
87
+ this.consumir(birl_1.default.PARENTESE_DIREITO, 'Esperado parêntese direito após argumento para escrever mensagem.');
88
+ return new declaracoes_1.Escreva(Number(primeiroSimbolo.linha), this.hashArquivo, [argumento]);
44
89
  }
45
90
  declaracaoFazer() {
46
- throw new Error('Method not implemented.');
91
+ throw new Error('Método não implementado.');
92
+ }
93
+ declaracaoRetorna() {
94
+ const primeiroSimbolo = this.consumir(birl_1.default.BORA, 'Esperado expressão `BORA` para retornar valor.');
95
+ this.consumir(birl_1.default.CUMPADE, 'Esperado expressão `CUMPADE` após `BORA` para retornar valor.');
96
+ this.consumir(birl_1.default.INTERROGACAO, 'Esperado interrogação após `CUMPADE` para retornar valor.');
97
+ const valor = this.declaracao();
98
+ return new declaracoes_1.Retorna(primeiroSimbolo, valor);
47
99
  }
48
100
  declaracaoSe() {
49
- throw new Error('Method not implemented.');
101
+ throw new Error('Método não implementado.');
50
102
  }
51
103
  corpoDaFuncao(tipo) {
52
- throw new Error('Method not implemented.');
104
+ throw new Error('Método não implementado.');
53
105
  }
54
106
  declaracao() {
55
- throw new Error('Method not implemented.');
107
+ const simboloAtual = this.simbolos[this.atual];
108
+ switch (simboloAtual.tipo) {
109
+ case birl_1.default.BORA: // BORA CUMPADE?
110
+ return this.declaracaoRetorna();
111
+ case birl_1.default.CE: // "CE QUER VER ESSA PORRA?"
112
+ return this.declaracaoEscreva();
113
+ case birl_1.default.PONTO_E_VIRGULA:
114
+ case birl_1.default.QUEBRA_LINHA:
115
+ this.avancarEDevolverAnterior();
116
+ return null;
117
+ default:
118
+ return this.expressao();
119
+ }
56
120
  }
57
121
  analisar(retornoLexador, hashArquivo) {
122
+ this.erros = [];
58
123
  this.blocos = 0;
124
+ this.atual = 0;
59
125
  // 1 validação
60
- if (this.blocos > 0) {
61
- throw new erro_avaliador_sintatico_1.ErroAvaliadorSintatico(null, 'Quantidade de blocos abertos não corresponde com a quantidade de blocos fechados');
62
- }
126
+ /* if (this.blocos > 0) {
127
+ throw new ErroAvaliadorSintatico(
128
+ null,
129
+ 'Quantidade de blocos abertos não corresponde com a quantidade de blocos fechados'
130
+ );
131
+ } */
132
+ this.simbolos = retornoLexador.simbolos;
63
133
  const declaracoes = [];
64
134
  this.validarSegmentoHoraDoShow();
135
+ while (!this.estaNoFinal() && this.simbolos[this.atual].tipo !== birl_1.default.BIRL) {
136
+ declaracoes.push(this.declaracao());
137
+ }
65
138
  this.validarSegmentoBirlFinal();
66
139
  return {
67
140
  declaracoes: declaracoes.filter((d) => d),
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-birl.js","sourceRoot":"","sources":["../../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.ts"],"names":[],"mappings":";;;;;;AAGA,0EAAqE;AACrE,0EAAqE;AAErE,wEAA2D;AAE3D,MAAa,sBAAuB,SAAQ,iDAAsB;IAC9D,yBAAyB;QACrB,IAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,IAAI,EAAE,2DAA2D,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,EAAE,EAAE,2DAA2D,CAAC,CAAC;QAC/F,IAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,IAAI,EAAE,2DAA2D,CAAC,CAAC;QACjG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,wBAAwB;QACpB,IAAI,CAAC,QAAQ,CAAC,cAAe,CAAC,IAAI,EAAE,uDAAuD,CAAC,CAAC;QAC7F,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,WAAW;QACP,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,YAAY;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,IAAY;QACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,UAAU;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,cAA8B,EAAE,WAAoB;QACzD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAEhB,cAAc;QACd,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,MAAM,IAAI,iDAAsB,CAC5B,IAAI,EACJ,kFAAkF,CACrF,CAAC;SACL;QAED,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,OAAO;YACH,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;SACS,CAAC;IACnC,CAAC;CACJ;AAlFD,wDAkFC"}
1
+ {"version":3,"file":"avaliador-sintatico-birl.js","sourceRoot":"","sources":["../../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Construto, FuncaoConstruto } from "../../construtos";
2
+ import { Escreva, Declaracao, Se, Enquanto, Para, Escolha, Fazer } from "../../declaracoes";
3
+ import { RetornoLexador, RetornoAvaliadorSintatico } from "../../interfaces/retornos";
4
+ import { AvaliadorSintaticoBase } from "../avaliador-sintatico-base";
5
+ /**
6
+ * O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
7
+ * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
8
+ * Há dois grupos de estruturas de alto nível: Construtos e Declarações.
9
+ */
10
+ export declare class AvaliadorSintaticoPortugolStudio extends AvaliadorSintaticoBase {
11
+ private validarEscopoPrograma;
12
+ primario(): Construto;
13
+ chamar(): Construto;
14
+ atribuir(): Construto;
15
+ declaracaoEscreva(): Escreva;
16
+ blocoEscopo(): Declaracao[];
17
+ declaracaoSe(): Se;
18
+ declaracaoEnquanto(): Enquanto;
19
+ declaracaoPara(): Para;
20
+ declaracaoEscolha(): Escolha;
21
+ declaracaoFazer(): Fazer;
22
+ corpoDaFuncao(tipo: string): FuncaoConstruto;
23
+ expressao(): Construto;
24
+ declaracao(): Declaracao | Declaracao[] | Construto | Construto[] | any;
25
+ analisar(retornoLexador: RetornoLexador, hashArquivo?: number): RetornoAvaliadorSintatico;
26
+ }
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AvaliadorSintaticoPortugolStudio = void 0;
7
+ const construtos_1 = require("../../construtos");
8
+ const declaracoes_1 = require("../../declaracoes");
9
+ const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
10
+ const portugol_studio_1 = __importDefault(require("../../tipos-de-simbolos/portugol-studio"));
11
+ /**
12
+ * O avaliador sintático (Parser) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
13
+ * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
14
+ * Há dois grupos de estruturas de alto nível: Construtos e Declarações.
15
+ */
16
+ class AvaliadorSintaticoPortugolStudio extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
17
+ validarEscopoPrograma(declaracoes) {
18
+ this.consumir(portugol_studio_1.default.PROGRAMA, "Esperada expressão 'programa' para inicializar programa.");
19
+ this.consumir(portugol_studio_1.default.CHAVE_ESQUERDA, "Esperada chave esquerda após expressão 'programa' para inicializar programa.");
20
+ while (!this.estaNoFinal()) {
21
+ declaracoes.push(this.declaracao());
22
+ }
23
+ if (this.simbolos[this.atual - 1].tipo !== portugol_studio_1.default.CHAVE_DIREITA) {
24
+ throw this.erro(this.simbolos[this.atual - 1], "Esperado chave direita final para término do programa.");
25
+ }
26
+ const encontrarDeclaracaoInicio = declaracoes.filter(d => d instanceof declaracoes_1.FuncaoDeclaracao && d.simbolo.lexema === 'inicio');
27
+ if (encontrarDeclaracaoInicio.length <= 0) {
28
+ throw this.erro(this.simbolos[0], "Função 'inicio()' para iniciar o programa não foi definida.");
29
+ }
30
+ // A última declaração do programa deve ser uma chamada a inicio()
31
+ const declaracaoInicio = encontrarDeclaracaoInicio[0];
32
+ declaracoes.push(new declaracoes_1.Expressao(new construtos_1.Chamada(declaracaoInicio.hashArquivo, declaracaoInicio.funcao, null, [])));
33
+ }
34
+ primario() {
35
+ if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.REAL, portugol_studio_1.default.CADEIA)) {
36
+ const simboloAnterior = this.simbolos[this.atual - 1];
37
+ return new construtos_1.Literal(this.hashArquivo, Number(simboloAnterior.linha), simboloAnterior.literal);
38
+ }
39
+ }
40
+ chamar() {
41
+ let expressao = this.primario();
42
+ while (true) {
43
+ if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.PARENTESE_ESQUERDO)) {
44
+ expressao = this.finalizarChamada(expressao);
45
+ }
46
+ else if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.COLCHETE_ESQUERDO)) {
47
+ const indices = [];
48
+ do {
49
+ indices.push(this.expressao());
50
+ } while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
51
+ const indice = indices[0];
52
+ const simboloFechamento = this.consumir(portugol_studio_1.default.COLCHETE_DIREITO, "Esperado ']' após escrita do indice.");
53
+ expressao = new construtos_1.AcessoIndiceVariavel(this.hashArquivo, expressao, indice, simboloFechamento);
54
+ }
55
+ else {
56
+ break;
57
+ }
58
+ }
59
+ return expressao;
60
+ }
61
+ atribuir() {
62
+ const expressao = this.ou();
63
+ if (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.IGUAL)) {
64
+ const setaAtribuicao = this.simbolos[this.atual - 1];
65
+ const valor = this.atribuir();
66
+ if (expressao instanceof construtos_1.Variavel) {
67
+ const simbolo = expressao.simbolo;
68
+ return new construtos_1.Atribuir(this.hashArquivo, simbolo, valor);
69
+ }
70
+ else if (expressao instanceof construtos_1.AcessoIndiceVariavel) {
71
+ return new construtos_1.AtribuicaoSobrescrita(this.hashArquivo, expressao.linha, expressao.entidadeChamada, expressao.indice, valor);
72
+ }
73
+ this.erro(setaAtribuicao, 'Tarefa de atribuição inválida');
74
+ }
75
+ return expressao;
76
+ }
77
+ declaracaoEscreva() {
78
+ const simboloAtual = this.avancarEDevolverAnterior();
79
+ this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, "Esperado '(' antes dos valores em escreva.");
80
+ const argumentos = [];
81
+ do {
82
+ argumentos.push(this.expressao());
83
+ } while (this.verificarSeSimboloAtualEIgualA(portugol_studio_1.default.VIRGULA));
84
+ this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após os valores em escreva.");
85
+ return new declaracoes_1.Escreva(Number(simboloAtual.linha), simboloAtual.hashArquivo, argumentos);
86
+ }
87
+ blocoEscopo() {
88
+ const declaracoes = [];
89
+ while (!this.verificarTipoSimboloAtual(portugol_studio_1.default.CHAVE_DIREITA) && !this.estaNoFinal()) {
90
+ declaracoes.push(this.declaracao());
91
+ }
92
+ this.consumir(portugol_studio_1.default.CHAVE_DIREITA, "Esperado '}' após o bloco.");
93
+ return declaracoes;
94
+ }
95
+ declaracaoSe() {
96
+ throw new Error("Método não implementado.");
97
+ }
98
+ declaracaoEnquanto() {
99
+ throw new Error("Método não implementado.");
100
+ }
101
+ declaracaoPara() {
102
+ throw new Error("Método não implementado.");
103
+ }
104
+ declaracaoEscolha() {
105
+ throw new Error("Método não implementado.");
106
+ }
107
+ declaracaoFazer() {
108
+ throw new Error("Método não implementado.");
109
+ }
110
+ corpoDaFuncao(tipo) {
111
+ // O parêntese esquerdo é considerado o símbolo inicial para
112
+ // fins de pragma.
113
+ const parenteseEsquerdo = this.consumir(portugol_studio_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${tipo}.`);
114
+ let parametros = [];
115
+ if (!this.verificarTipoSimboloAtual(portugol_studio_1.default.PARENTESE_DIREITO)) {
116
+ parametros = this.logicaComumParametros();
117
+ }
118
+ this.consumir(portugol_studio_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
119
+ this.consumir(portugol_studio_1.default.CHAVE_ESQUERDA, `Esperado '{' antes do escopo do ${tipo}.`);
120
+ const corpo = this.blocoEscopo();
121
+ return new construtos_1.FuncaoConstruto(this.hashArquivo, Number(parenteseEsquerdo.linha), parametros, corpo);
122
+ }
123
+ expressao() {
124
+ // if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.LEIA)) return this.declaracaoLeia();
125
+ return this.atribuir();
126
+ }
127
+ declaracao() {
128
+ const simboloAtual = this.simbolos[this.atual];
129
+ switch (simboloAtual.tipo) {
130
+ case portugol_studio_1.default.ESCREVA:
131
+ return this.declaracaoEscreva();
132
+ case portugol_studio_1.default.FUNCAO:
133
+ return this.funcao('funcao');
134
+ case portugol_studio_1.default.PROGRAMA:
135
+ case portugol_studio_1.default.CHAVE_DIREITA:
136
+ this.avancarEDevolverAnterior();
137
+ return null;
138
+ default:
139
+ return this.expressao();
140
+ }
141
+ }
142
+ analisar(retornoLexador, hashArquivo) {
143
+ this.erros = [];
144
+ this.atual = 0;
145
+ this.blocos = 0;
146
+ this.hashArquivo = hashArquivo || 0;
147
+ this.simbolos = (retornoLexador === null || retornoLexador === void 0 ? void 0 : retornoLexador.simbolos) || [];
148
+ const declaracoes = [];
149
+ this.validarEscopoPrograma(declaracoes);
150
+ return {
151
+ declaracoes: declaracoes.filter(d => d),
152
+ erros: this.erros,
153
+ };
154
+ }
155
+ }
156
+ exports.AvaliadorSintaticoPortugolStudio = AvaliadorSintaticoPortugolStudio;
157
+ //# sourceMappingURL=avaliador-sintatico-portugol-studio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avaliador-sintatico-portugol-studio.js","sourceRoot":"","sources":["../../../../fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.ts"],"names":[],"mappings":"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"}
@@ -64,7 +64,7 @@ export declare class Delegua implements DeleguaInterface {
64
64
  * Se verdadeiro, os arquivos de saída são escritos no mesmo diretório
65
65
  * do arquivo passado no primeiro parâmetro.
66
66
  */
67
- traduzirArquivo(caminhoRelativoArquivo: string, gerarArquivoSaida: boolean): any;
67
+ traduzirArquivo(caminhoRelativoArquivo: string, gerarArquivoSaida: boolean, extensaoArquivoSaida: string): any;
68
68
  executarCodigoComoArgumento(codigo: string): Promise<void>;
69
69
  /**
70
70
  * Execução por arquivo.
package/fontes/delegua.js CHANGED
@@ -50,6 +50,8 @@ const avaliador_sintatico_birl_1 = require("./avaliador-sintatico/dialetos/avali
50
50
  const tradutores_1 = require("./tradutores");
51
51
  const visualg_1 = require("./interpretador/dialetos/visualg");
52
52
  const dialetos_2 = require("./interpretador/dialetos");
53
+ const lexador_portugol_studio_1 = require("./lexador/dialetos/lexador-portugol-studio");
54
+ const avaliador_sintatico_portugol_studio_1 = require("./avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio");
53
55
  /**
54
56
  * O núcleo da linguagem.
55
57
  *
@@ -62,6 +64,7 @@ class Delegua {
62
64
  delegua: 'padrão',
63
65
  egua: 'Égua',
64
66
  eguap: 'ÉguaP',
67
+ 'portugol-studio': 'Portugol Studio',
65
68
  visualg: 'VisuAlg',
66
69
  };
67
70
  this.arquivosAbertos = {};
@@ -93,6 +96,14 @@ class Delegua {
93
96
  ? new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
94
97
  : new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
95
98
  break;
99
+ case 'portugol-studio':
100
+ this.lexador = new lexador_portugol_studio_1.LexadorPortugolStudio();
101
+ this.avaliadorSintatico = new avaliador_sintatico_portugol_studio_1.AvaliadorSintaticoPortugolStudio();
102
+ this.importador = new importador_1.Importador(this.lexador, this.avaliadorSintatico, this.arquivosAbertos, this.conteudoArquivosAbertos, depurador);
103
+ this.interpretador = depurador
104
+ ? new interpretador_com_depuracao_1.InterpretadorComDepuracao(this.importador, process.cwd(), funcaoDeRetorno)
105
+ : new interpretador_1.Interpretador(this.importador, process.cwd(), performance, funcaoDeRetorno);
106
+ break;
96
107
  case 'visualg':
97
108
  this.lexador = new lexador_visualg_1.LexadorVisuAlg();
98
109
  this.avaliadorSintatico = new avaliador_sintatico_visualg_1.AvaliadorSintaticoVisuAlg();
@@ -224,7 +235,7 @@ class Delegua {
224
235
  * Se verdadeiro, os arquivos de saída são escritos no mesmo diretório
225
236
  * do arquivo passado no primeiro parâmetro.
226
237
  */
227
- traduzirArquivo(caminhoRelativoArquivo, gerarArquivoSaida) {
238
+ traduzirArquivo(caminhoRelativoArquivo, gerarArquivoSaida, extensaoArquivoSaida) {
228
239
  const caminhoAbsolutoPrimeiroArquivo = caminho.resolve(caminhoRelativoArquivo);
229
240
  const novoDiretorioBase = caminho.dirname(caminhoAbsolutoPrimeiroArquivo);
230
241
  this.importador.diretorioBase = novoDiretorioBase;
@@ -240,9 +251,9 @@ class Delegua {
240
251
  resultado = this.tradutorReversoJavascript.traduzir(retornoImportador.conteudoArquivo.join('\n'));
241
252
  }
242
253
  if (gerarArquivoSaida) {
243
- ['.delegua', '.egua'].map((extensao) => {
254
+ ['.delegua', '.js'].map((extensao) => {
244
255
  if (caminhoAbsolutoPrimeiroArquivo.includes(extensao)) {
245
- fs.writeFile(caminhoAbsolutoPrimeiroArquivo.replace(extensao, '.js'), resultado, (erro) => {
256
+ fs.writeFile(caminhoAbsolutoPrimeiroArquivo.replace(extensao, `.${extensaoArquivoSaida}`), resultado, (erro) => {
246
257
  if (erro)
247
258
  throw erro;
248
259
  });