@designliquido/delegua 1.26.2 → 1.27.1
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.
- package/README.md +7 -3
- package/avaliador-sintatico/avaliador-sintatico-base.d.ts +7 -0
- package/avaliador-sintatico/avaliador-sintatico-base.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico-base.js +16 -0
- package/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.d.ts +25 -0
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +99 -6
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.d.ts.map +1 -1
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js +4 -0
- package/avaliador-sintatico/dialetos/avaliador-sintatico-tenda.js.map +1 -1
- package/bin/package.json +1 -1
- package/interfaces/simbolo-interface.d.ts +1 -0
- package/interfaces/simbolo-interface.d.ts.map +1 -1
- package/interpretador/interpretador.d.ts +1 -1
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +12 -3
- package/interpretador/interpretador.js.map +1 -1
- package/lexador/lexador-base.d.ts +1 -1
- package/lexador/lexador-base.d.ts.map +1 -1
- package/lexador/lexador-base.js +2 -2
- package/lexador/lexador-base.js.map +1 -1
- package/lexador/lexador.d.ts +1 -1
- package/lexador/lexador.d.ts.map +1 -1
- package/lexador/lexador.js +3 -3
- package/lexador/lexador.js.map +1 -1
- package/lexador/simbolo.d.ts +2 -1
- package/lexador/simbolo.d.ts.map +1 -1
- package/lexador/simbolo.js +2 -1
- package/lexador/simbolo.js.map +1 -1
- package/package.json +1 -1
- package/tradutores/index.d.ts +0 -4
- package/tradutores/index.d.ts.map +1 -1
- package/tradutores/index.js +0 -4
- package/tradutores/index.js.map +1 -1
- package/tradutores/tradutor-elixir.d.ts +17 -0
- package/tradutores/tradutor-elixir.d.ts.map +1 -1
- package/tradutores/tradutor-elixir.js +82 -2
- package/tradutores/tradutor-elixir.js.map +1 -1
- package/tradutores/tradutor-javascript.d.ts.map +1 -1
- package/tradutores/tradutor-javascript.js +5 -0
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-python.d.ts.map +1 -1
- package/tradutores/tradutor-python.js +5 -0
- package/tradutores/tradutor-python.js.map +1 -1
- package/tradutores/tradutor-ruby.d.ts.map +1 -1
- package/tradutores/tradutor-ruby.js +5 -0
- package/tradutores/tradutor-ruby.js.map +1 -1
- package/umd/delegua.js +481 -4800
- package/tradutores/tradutor-assembly-arm.d.ts +0 -98
- package/tradutores/tradutor-assembly-arm.d.ts.map +0 -1
- package/tradutores/tradutor-assembly-arm.js +0 -711
- package/tradutores/tradutor-assembly-arm.js.map +0 -1
- package/tradutores/tradutor-assembly-risc-v.d.ts +0 -100
- package/tradutores/tradutor-assembly-risc-v.d.ts.map +0 -1
- package/tradutores/tradutor-assembly-risc-v.js +0 -688
- package/tradutores/tradutor-assembly-risc-v.js.map +0 -1
- package/tradutores/tradutor-assembly-x64.d.ts +0 -17
- package/tradutores/tradutor-assembly-x64.d.ts.map +0 -1
- package/tradutores/tradutor-assembly-x64.js +0 -38
- package/tradutores/tradutor-assembly-x64.js.map +0 -1
- package/tradutores/tradutor-webassembly.d.ts +0 -159
- package/tradutores/tradutor-webassembly.d.ts.map +0 -1
- package/tradutores/tradutor-webassembly.js +0 -886
- package/tradutores/tradutor-webassembly.js.map +0 -1
- package/tradutores/x64/alocador-registradores.d.ts +0 -29
- package/tradutores/x64/alocador-registradores.d.ts.map +0 -1
- package/tradutores/x64/alocador-registradores.js +0 -192
- package/tradutores/x64/alocador-registradores.js.map +0 -1
- package/tradutores/x64/codegen.d.ts +0 -43
- package/tradutores/x64/codegen.d.ts.map +0 -1
- package/tradutores/x64/codegen.js +0 -416
- package/tradutores/x64/codegen.js.map +0 -1
- package/tradutores/x64/dessa.d.ts +0 -9
- package/tradutores/x64/dessa.d.ts.map +0 -1
- package/tradutores/x64/dessa.js +0 -124
- package/tradutores/x64/dessa.js.map +0 -1
- package/tradutores/x64/dominancia.d.ts +0 -25
- package/tradutores/x64/dominancia.d.ts.map +0 -1
- package/tradutores/x64/dominancia.js +0 -129
- package/tradutores/x64/dominancia.js.map +0 -1
- package/tradutores/x64/ir.d.ts +0 -144
- package/tradutores/x64/ir.d.ts.map +0 -1
- package/tradutores/x64/ir.js +0 -44
- package/tradutores/x64/ir.js.map +0 -1
- package/tradutores/x64/liveness.d.ts +0 -12
- package/tradutores/x64/liveness.d.ts.map +0 -1
- package/tradutores/x64/liveness.js +0 -159
- package/tradutores/x64/liveness.js.map +0 -1
- package/tradutores/x64/lowering.d.ts +0 -7
- package/tradutores/x64/lowering.d.ts.map +0 -1
- package/tradutores/x64/lowering.js +0 -904
- package/tradutores/x64/lowering.js.map +0 -1
- package/tradutores/x64/ssa.d.ts +0 -9
- package/tradutores/x64/ssa.d.ts.map +0 -1
- package/tradutores/x64/ssa.js +0 -170
- package/tradutores/x64/ssa.js.map +0 -1
- package/tradutores/x64/tipos-x64.d.ts +0 -12
- package/tradutores/x64/tipos-x64.d.ts.map +0 -1
- package/tradutores/x64/tipos-x64.js +0 -59
- package/tradutores/x64/tipos-x64.js.map +0 -1
package/README.md
CHANGED
|
@@ -136,10 +136,14 @@ Para usar dentro de uma página de internet, entre _tags_ `<script>`, veja o pro
|
|
|
136
136
|
|
|
137
137
|
Delégua possui alguns compiladores implementados. Compiladores passam código Delégua para binário, gerando executáveis, cuja execução ocorre com a máxima performance possível.
|
|
138
138
|
|
|
139
|
-
Para este núcleo, alguns compiladores são tradutores de Delégua para certos _assemblies_ (ou representações intermediárias), e que precisam de [`delegua-node`](https://github.com/DesignLiquido/delegua) ou alguma outra interface para funcionarem, como por exemplo, nossa [extensão para VSCode e derivados](https://github.com/DesignLiquido/vscode). Os detalhes da utilização podem ser vistos nos respectivos projetos.
|
|
139
|
+
Para este núcleo, alguns compiladores são tradutores de Delégua para certos _assemblies_ (ou representações intermediárias), e que precisam de [`delegua-node`](https://github.com/DesignLiquido/delegua) ou alguma outra interface para funcionarem, como por exemplo, nossa [extensão para VSCode e derivados](https://github.com/DesignLiquido/vscode). Os detalhes da utilização podem ser vistos nos respectivos projetos.
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
Os tradutores de arquitetura de processador (ou de outros alvos de execução nativa, como WebAssembly) não vivem neste núcleo: têm implementação própria, autocontida, em pacotes separados dentro de [`delegua-llvm-completo`](https://github.com/DesignLiquido/delegua-llvm-completo/tree/main/pacotes), que dependem deste núcleo apenas para léxico/sintaxe (`Lexador`, `AvaliadorSintatico`) e para os tipos da AST:
|
|
142
|
+
|
|
143
|
+
- [`delegua-x64`](https://github.com/DesignLiquido/delegua-llvm-completo/tree/main/pacotes/delegua-x64): NASM, YASM e FASM. Pode funcionar com MASM e GAS, mas requer algumas modificações pontuais na sintaxe de macros.
|
|
144
|
+
- [`delegua-arm`](https://github.com/DesignLiquido/delegua-llvm-completo/tree/main/pacotes/delegua-arm): Linux e Android.
|
|
145
|
+
- [`delegua-risc-v`](https://github.com/DesignLiquido/delegua-llvm-completo/tree/main/pacotes/delegua-risc-v): Linux, 32 e 64 bits.
|
|
146
|
+
- [`delegua-wasm`](https://github.com/DesignLiquido/delegua-llvm-completo/tree/main/pacotes/delegua-wasm): WebAssembly via WAT e `wat2wasm`.
|
|
143
147
|
|
|
144
148
|
Já outros compiladores demandam uma infraestrutura de código mais robusta e são projetos separados, que ou usam este núcleo diretamente, ou usam a sintaxe implementada no núcleo de forma independente.
|
|
145
149
|
São eles:
|
|
@@ -23,6 +23,13 @@ export declare abstract class AvaliadorSintaticoBase implements AvaliadorSintati
|
|
|
23
23
|
protected estaNoFinal(): boolean;
|
|
24
24
|
protected avancarEDevolverAnterior(): SimboloInterface;
|
|
25
25
|
protected verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Avança o cursor por quaisquer símbolos de comentário (de linha ou
|
|
28
|
+
* multilinha) consecutivos, descartando-os. Usado em construtos onde
|
|
29
|
+
* comentários podem aparecer entre elementos, mas não fazem sentido
|
|
30
|
+
* como parte da árvore sintática resultante (ex.: dicionários).
|
|
31
|
+
*/
|
|
32
|
+
protected pularComentarios(): void;
|
|
26
33
|
/**
|
|
27
34
|
* Os métodos a seguir devem ser implementados nos seus respectivos
|
|
28
35
|
* dialetos por diferentes razões: seja porque o dialeto correspondente
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-base.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-base.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,OAAO,EACP,eAAe,EACf,IAAI,EAIP,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,EAAE,EACF,MAAM,EACN,KAAK,EACL,GAAG,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,kCAAkC,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAIpE;;;;GAIG;AACH,8BAAsB,sBAAuB,YAAW,2BAA2B,CAC/E,gBAAgB,EAChB,UAAU,CACb;IACG,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAClC,KAAK,EAAE,sBAAsB,EAAE,CAAM;IAErC,WAAW,EAAE,MAAM,CAAM;IACzB,KAAK,EAAE,MAAM,CAAK;IAClB,MAAM,EAAE,MAAM,CAAK;IAEnB,IAAI,CACA,OAAO,EAAE,gBAAgB,EACzB,cAAc,EAAE,MAAM,EACtB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,kBAAkB,CAAC,EAAE,gBAAgB,GACtC,sBAAsB;IAUzB,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,gBAAgB;IAe1E,SAAS,CAAC,eAAe,IAAI,gBAAgB;IAQ7C,SAAS,CAAC,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK1D,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAK5D,SAAS,CAAC,WAAW,IAAI,OAAO;IAIhC,SAAS,CAAC,wBAAwB,IAAI,gBAAgB;IAKtD,SAAS,CAAC,8BAA8B,CAAC,GAAG,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO;IAY1E;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAalC;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAE1D,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IACxD,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IACxE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IACxD,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,EAAE,CAAC;IAC9C,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IACjD,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAC1D,SAAS,CAAC,QAAQ,CAAC,6BAA6B,IAAI,OAAO,CACvD,UAAU,GAAG,UAAU,EAAE,GAAG,SAAS,CACxC;cAEe,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;cAYjC,gBAAgB,CAAC,eAAe,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;cAoBvE,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAYrD;;;;OAIG;cACa,aAAa,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAY5C,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAmB1C,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAchE;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAIjD,SAAS,CAAC,mBAAmB,CACzB,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,kBAAkB,GAC5B,IAAI;IAEP,SAAS,CAAC,wBAAwB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,kBAAkB,GAC5B,kBAAkB;cAIL,qBAAqB,CACjC,kBAAkB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,GACtD,OAAO,CAAC,kBAAkB,CAAC;cA4Bd,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAIvC,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAkBlD,CAAC,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAYhC,EAAE,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAYjD;;;OAGG;cACa,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAqBpC,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;cAIxC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;cAa/C,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAoCtE;;;;OAIG;IAEH,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIjD,SAAS,CAAC,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI7C,SAAS,CAAC,KAAK,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI9C,SAAS,CAAC,kBAAkB,IAAI,QAAQ;IAIxC,SAAS,CAAC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C,SAAS,CAAC,oBAAoB,IAAI,GAAG;IAIrC,SAAS,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAIrF,SAAS,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/C,SAAS,CAAC,gBAAgB,IAAI,MAAM;IAIpC,SAAS,CAAC,eAAe,IAAI,OAAO,CAAC,KAAK,CAAC;IAI3C,SAAS,CAAC,EAAE,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAI3C,SAAS,CAAC,kBAAkB;IAI5B;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,CACb,cAAc,EAAE,uBAAuB,CAAC,gBAAgB,CAAC,EACzD,WAAW,EAAE,MAAM,GACpB,OAAO,CAAC,kCAAkC,CAAC,UAAU,CAAC,CAAC;CAC7D"}
|
|
@@ -74,6 +74,22 @@ class AvaliadorSintaticoBase {
|
|
|
74
74
|
}
|
|
75
75
|
return false;
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Avança o cursor por quaisquer símbolos de comentário (de linha ou
|
|
79
|
+
* multilinha) consecutivos, descartando-os. Usado em construtos onde
|
|
80
|
+
* comentários podem aparecer entre elementos, mas não fazem sentido
|
|
81
|
+
* como parte da árvore sintática resultante (ex.: dicionários).
|
|
82
|
+
*/
|
|
83
|
+
pularComentarios() {
|
|
84
|
+
// Os tipos de símbolo de comentário não fazem parte do conjunto reduzido
|
|
85
|
+
// de `tiposDeSimbolos` importado nesta classe base, por isso são usados
|
|
86
|
+
// aqui como literais de texto (seus valores são idênticos às chaves do
|
|
87
|
+
// conjunto completo, definido em `tipos-de-simbolos/delegua.ts`).
|
|
88
|
+
while (this.simbolos[this.atual].tipo === 'COMENTARIO' ||
|
|
89
|
+
this.simbolos[this.atual].tipo === 'LINHA_COMENTARIO') {
|
|
90
|
+
this.avancarEDevolverAnterior();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
77
93
|
async declaracaoBloco() {
|
|
78
94
|
const simboloInicioBloco = this.consumir(comum_1.default.CHAVE_ESQUERDA, "Esperado '{' para abertura de bloco.");
|
|
79
95
|
return new declaracoes_1.Bloco(simboloInicioBloco.hashArquivo, Number(simboloInicioBloco.linha), await this.blocoEscopo());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":";;;;;;AAAA,8CAQuB;AACvB,gDAgBwB;AAIxB,yEAAoE;AAEpE,uEAAyD;AAEzD;;;;GAIG;AACH,MAAsB,sBAAsB;IAA5C;QAII,aAAQ,GAAuB,EAAE,CAAC;QAClC,UAAK,GAA6B,EAAE,CAAC;QAErC,gBAAW,GAAW,CAAC,CAAC,CAAC;QACzB,UAAK,GAAW,CAAC,CAAC;QAClB,WAAM,GAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,6 +112,31 @@ export declare class AvaliadorSintatico extends AvaliadorSintaticoBase implement
|
|
|
112
112
|
private obterTiposParaConsultaPrimitiva;
|
|
113
113
|
private resolverAcessoMetodoConhecido;
|
|
114
114
|
protected validarArgumentosEntidadeChamada(argumentosEntidadeChamada: InformacaoElementoSintatico[], argumentosUtilizados: ConstrutoInterface[]): string[];
|
|
115
|
+
/**
|
|
116
|
+
* `número`, `real`, `inteiro` e `longo` são todos representados internamente
|
|
117
|
+
* como números primitivos, então são intercambiáveis na validação de tipos de
|
|
118
|
+
* argumentos de chamadas de função/método.
|
|
119
|
+
* @param tipo O tipo a ser normalizado.
|
|
120
|
+
* @returns `número` quando `tipo` é um dos tipos numéricos primitivos, ou `tipo` sem alterações.
|
|
121
|
+
*/
|
|
122
|
+
private normalizarTipoNumerico;
|
|
123
|
+
/**
|
|
124
|
+
* Garante que um construto usado em um contexto explicitamente tipado como `real`
|
|
125
|
+
* (declaração de variável/constante, valor padrão de parâmetro, retorno de função ou
|
|
126
|
+
* argumento de `real()`) seja tratado como ponto flutuante na tradução, mesmo que o
|
|
127
|
+
* valor original seja um `número` inteiro-valorado:
|
|
128
|
+
* - Se for um literal numérico (ex.: `10`), apenas marca seu tipo como `real` para que
|
|
129
|
+
* os tradutores emitam `10.0` em vez de `10`.
|
|
130
|
+
* - Se for outra expressão de tipo numérico conhecido (variável, chamada, etc., ex.: `y`
|
|
131
|
+
* onde `y: número`), envolve o construto em uma chamada a `real(...)`, que os
|
|
132
|
+
* tradutores mapeiam para a conversão de ponto flutuante idiomática de cada linguagem
|
|
133
|
+
* (ex.: `float(y)` em Python, `y.to_f` em Ruby).
|
|
134
|
+
* - Se o tipo do construto já é `real`, ou é desconhecido (`qualquer`) ou não numérico,
|
|
135
|
+
* retorna o construto sem alterações — não é seguro converter estaticamente.
|
|
136
|
+
* @param construto O construto a ser garantido como `real`.
|
|
137
|
+
* @returns O construto (possivelmente envolvido em `real(...)`) a ser usado no lugar do original.
|
|
138
|
+
*/
|
|
139
|
+
private garantirTipoReal;
|
|
115
140
|
/**
|
|
116
141
|
* Diversas verificações de resolução de entidade chamada, como resolver chamada da pilha ou usar referência, argumentos, etc.
|
|
117
142
|
* @param entidadeChamada O construto da entidade chamada.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAElF,OAAO,EAIH,yBAAyB,EAGzB,kBAAkB,EAKlB,OAAO,EACP,uBAAuB,EAEvB,SAAS,EAET,UAAU,EAEV,qBAAqB,EAGrB,eAAe,EACf,qBAAqB,EAErB,IAAI,EACJ,gBAAgB,EAGhB,qBAAqB,EACrB,iBAAiB,EAMjB,KAAK,EAGL,QAAQ,EAEX,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,2BAA2B,EAI3B,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACH,sBAAsB,EACzB,MAAM,4BAA4B,CAAC;AAcpC,OAAO,EACH,KAAK,EAGL,KAAK,EACL,MAAM,EACN,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,mBAAmB,EACnB,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,EAAE,EACF,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,kCAAkC,EAAE,MAAM,8DAA8D,CAAC;AAClH,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAqC7D;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,kBACT,SAAQ,sBACR,YAAW,2BAA2B,CAAC,gBAAgB,EAAE,UAAU,CAAC;IAEpE,gBAAgB,EAAE,SAAS,EAAE,CAAM;IACnC,QAAQ,EAAE,gBAAgB,EAAE,CAAM;IAClC,KAAK,EAAE,sBAAsB,EAAE,CAAM;IACrC,sBAAsB,EAAE;QAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAA;KAAE,CAAM;IAChE,oBAAoB,EAAE;QAAE,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,CAAA;KAAE,CAAM;IAC5E,4BAA4B,EAAE;QAC1B,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAAC;KACtC,CAAM;IACP,YAAY,EAAE,YAAY,CAAC;IAC3B,0BAA0B,EAAE;QAAE,CAAC,cAAc,EAAE,MAAM,GAAG;YAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;KAAE,CAAM;IAC9F,oBAAoB,EAAE;QAClB,CAAC,kBAAkB,EAAE,MAAM,GAAG;YAAE,CAAC,aAAa,EAAE,MAAM,GAAG,2BAA2B,CAAA;SAAE,CAAC;KAC1F,CAAM;IACP,WAAW,EAAE,WAAW,CAAC;IAEzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,2BAA2B,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAC5D,qCAAqC,EAAE,OAAO,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;gBAEL,WAAW,UAAQ;IAsB/B,SAAS,CAAC,2BAA2B,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico.d.ts","sourceRoot":"","sources":["../../fontes/avaliador-sintatico/avaliador-sintatico.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,7 +112,10 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
112
112
|
return this.simbolos[this.atual].lexema;
|
|
113
113
|
}
|
|
114
114
|
const lexemaOriginal = this.simbolos[this.atual].lexema;
|
|
115
|
-
|
|
115
|
+
// `decimal` é sinônimo de `real` como nome de tipo; `real` é o nome
|
|
116
|
+
// preferido e é o único usado internamente a partir daqui.
|
|
117
|
+
const lexemaElementarBruto = lexemaOriginal.toLowerCase();
|
|
118
|
+
const lexemaElementar = lexemaElementarBruto === 'decimal' ? 'real' : lexemaElementarBruto;
|
|
116
119
|
const tipoElementarResolvido = tipos.find((tipo) => tipo === lexemaElementar);
|
|
117
120
|
if (!tipoElementarResolvido) {
|
|
118
121
|
// Mantém o avaliador sintático sincronizado mesmo com tipos não reconhecidos
|
|
@@ -261,18 +264,22 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
261
264
|
this.avancarEDevolverAnterior();
|
|
262
265
|
const chaves = [];
|
|
263
266
|
const valores = [];
|
|
267
|
+
this.pularComentarios();
|
|
264
268
|
if (this.verificarSeSimboloAtualEIgualA(delegua_2.default.CHAVE_DIREITA)) {
|
|
265
269
|
return new construtos_1.Dicionario(this.hashArquivo, Number(simboloChaveEsquerda.linha), [], []);
|
|
266
270
|
}
|
|
267
271
|
while (!this.verificarSeSimboloAtualEIgualA(delegua_2.default.CHAVE_DIREITA)) {
|
|
268
272
|
const chave = await this.obterChaveDicionario();
|
|
269
273
|
this.consumir(delegua_2.default.DOIS_PONTOS, "Esperado ':' entre chave e valor.");
|
|
274
|
+
this.pularComentarios();
|
|
270
275
|
const valor = await this.atribuir();
|
|
271
276
|
chaves.push(chave);
|
|
272
277
|
valores.push(valor);
|
|
278
|
+
this.pularComentarios();
|
|
273
279
|
if (this.simbolos[this.atual].tipo !== delegua_2.default.CHAVE_DIREITA) {
|
|
274
280
|
this.consumir(delegua_2.default.VIRGULA, 'Esperado vírgula antes da próxima expressão.');
|
|
275
281
|
}
|
|
282
|
+
this.pularComentarios();
|
|
276
283
|
}
|
|
277
284
|
return new construtos_1.Dicionario(this.hashArquivo, Number(simboloChaveEsquerda.linha), chaves, valores);
|
|
278
285
|
}
|
|
@@ -529,7 +536,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
529
536
|
case delegua_2.default.NÚMERO:
|
|
530
537
|
case delegua_2.default.TEXTO:
|
|
531
538
|
const simboloNumeroTexto = this.avancarEDevolverAnterior();
|
|
532
|
-
const tipoInferido =
|
|
539
|
+
const tipoInferido = simboloNumeroTexto.ehNumeroReal
|
|
540
|
+
? 'real'
|
|
541
|
+
: (0, inferenciador_1.inferirTipoVariavel)(simboloNumeroTexto.literal);
|
|
533
542
|
const delimitadorTexto = simboloNumeroTexto.tipo === delegua_2.default.TEXTO
|
|
534
543
|
? simboloNumeroTexto.delimitadorTexto
|
|
535
544
|
: undefined;
|
|
@@ -916,17 +925,64 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
916
925
|
argumentoUtilizado.tipo.startsWith('função') ||
|
|
917
926
|
argumentoUtilizado instanceof construtos_1.FuncaoConstruto
|
|
918
927
|
? 'função'
|
|
919
|
-
: argumentoUtilizado.tipo;
|
|
928
|
+
: this.normalizarTipoNumerico(argumentoUtilizado.tipo);
|
|
920
929
|
const tipoArgumentoEntidadeChamada = argumentoEntidadeChamada.tipo.startsWith('funcao') ||
|
|
921
930
|
argumentoEntidadeChamada.tipo.startsWith('função')
|
|
922
931
|
? 'função'
|
|
923
|
-
: argumentoEntidadeChamada.tipo;
|
|
932
|
+
: this.normalizarTipoNumerico(argumentoEntidadeChamada.tipo);
|
|
924
933
|
if (tipoArgumentoUtilizado !== tipoArgumentoEntidadeChamada) {
|
|
925
934
|
possiveisErros.push(`Argumento: ${argumentoEntidadeChamada.nome}. Tipo esperado: ${argumentoEntidadeChamada.tipo}; Tipo utilizado: ${argumentoUtilizado.tipo}`);
|
|
926
935
|
}
|
|
927
936
|
}
|
|
928
937
|
return possiveisErros;
|
|
929
938
|
}
|
|
939
|
+
/**
|
|
940
|
+
* `número`, `real`, `inteiro` e `longo` são todos representados internamente
|
|
941
|
+
* como números primitivos, então são intercambiáveis na validação de tipos de
|
|
942
|
+
* argumentos de chamadas de função/método.
|
|
943
|
+
* @param tipo O tipo a ser normalizado.
|
|
944
|
+
* @returns `número` quando `tipo` é um dos tipos numéricos primitivos, ou `tipo` sem alterações.
|
|
945
|
+
*/
|
|
946
|
+
normalizarTipoNumerico(tipo) {
|
|
947
|
+
return ['número', 'numero', 'real', 'inteiro', 'longo'].includes(tipo) ? 'número' : tipo;
|
|
948
|
+
}
|
|
949
|
+
/**
|
|
950
|
+
* Garante que um construto usado em um contexto explicitamente tipado como `real`
|
|
951
|
+
* (declaração de variável/constante, valor padrão de parâmetro, retorno de função ou
|
|
952
|
+
* argumento de `real()`) seja tratado como ponto flutuante na tradução, mesmo que o
|
|
953
|
+
* valor original seja um `número` inteiro-valorado:
|
|
954
|
+
* - Se for um literal numérico (ex.: `10`), apenas marca seu tipo como `real` para que
|
|
955
|
+
* os tradutores emitam `10.0` em vez de `10`.
|
|
956
|
+
* - Se for outra expressão de tipo numérico conhecido (variável, chamada, etc., ex.: `y`
|
|
957
|
+
* onde `y: número`), envolve o construto em uma chamada a `real(...)`, que os
|
|
958
|
+
* tradutores mapeiam para a conversão de ponto flutuante idiomática de cada linguagem
|
|
959
|
+
* (ex.: `float(y)` em Python, `y.to_f` em Ruby).
|
|
960
|
+
* - Se o tipo do construto já é `real`, ou é desconhecido (`qualquer`) ou não numérico,
|
|
961
|
+
* retorna o construto sem alterações — não é seguro converter estaticamente.
|
|
962
|
+
* @param construto O construto a ser garantido como `real`.
|
|
963
|
+
* @returns O construto (possivelmente envolvido em `real(...)`) a ser usado no lugar do original.
|
|
964
|
+
*/
|
|
965
|
+
garantirTipoReal(construto) {
|
|
966
|
+
if (!construto) {
|
|
967
|
+
return construto;
|
|
968
|
+
}
|
|
969
|
+
if (construto.constructor === construtos_1.Literal && typeof construto.valor === 'number') {
|
|
970
|
+
construto.tipo = 'real';
|
|
971
|
+
return construto;
|
|
972
|
+
}
|
|
973
|
+
if (construto.tipo === 'real') {
|
|
974
|
+
return construto;
|
|
975
|
+
}
|
|
976
|
+
const ehTipoNumericoConhecido = typeof construto.tipo === 'string' &&
|
|
977
|
+
['número', 'numero', 'inteiro', 'longo'].includes(construto.tipo);
|
|
978
|
+
if (!ehTipoNumericoConhecido) {
|
|
979
|
+
return construto;
|
|
980
|
+
}
|
|
981
|
+
const simboloReal = new simbolo_1.Simbolo(delegua_2.default.IDENTIFICADOR, 'real', null, construto.linha, construto.hashArquivo);
|
|
982
|
+
const chamadaReal = new construtos_1.Chamada(construto.hashArquivo, new construtos_1.Variavel(construto.hashArquivo, simboloReal, 'função'), [construto]);
|
|
983
|
+
chamadaReal.tipo = 'real';
|
|
984
|
+
return chamadaReal;
|
|
985
|
+
}
|
|
930
986
|
/**
|
|
931
987
|
* Diversas verificações de resolução de entidade chamada, como resolver chamada da pilha ou usar referência, argumentos, etc.
|
|
932
988
|
* @param entidadeChamada O construto da entidade chamada.
|
|
@@ -940,6 +996,18 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
940
996
|
}
|
|
941
997
|
if (entidadeChamada.constructor === construtos_1.Variavel) {
|
|
942
998
|
const entidadeChamadaResolvidaVariavel = entidadeChamada;
|
|
999
|
+
// `real(valor)` converte explicitamente para ponto flutuante, então um
|
|
1000
|
+
// literal numérico passado diretamente deve preservar a natureza real
|
|
1001
|
+
// na tradução (ex.: `real(10)` -> `real(10.0)`). Note que aqui só marcamos
|
|
1002
|
+
// literais diretamente, sem usar garantirTipoReal(): o argumento já está
|
|
1003
|
+
// dentro de uma chamada a `real(...)`, então não deve ser envolvido de novo.
|
|
1004
|
+
if (entidadeChamadaResolvidaVariavel.simbolo.lexema === 'real' && argumentos.length > 0) {
|
|
1005
|
+
const primeiroArgumento = argumentos[0];
|
|
1006
|
+
if (primeiroArgumento.constructor === construtos_1.Literal &&
|
|
1007
|
+
typeof primeiroArgumento.valor === 'number') {
|
|
1008
|
+
primeiroArgumento.tipo = 'real';
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
943
1011
|
const informacoesFuncaoBibliotecaGlobal = this.pilhaEscopos.obterBibliotecaGlobal(entidadeChamadaResolvidaVariavel.simbolo.lexema);
|
|
944
1012
|
if (informacoesFuncaoBibliotecaGlobal &&
|
|
945
1013
|
Array.isArray(informacoesFuncaoBibliotecaGlobal.subElementos) &&
|
|
@@ -2075,8 +2143,11 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2075
2143
|
throw this.erro(simboloVariavel, 'Quantidade de identificadores à esquerda do igual é diferente da quantidade de valores à direita.');
|
|
2076
2144
|
}
|
|
2077
2145
|
for (let [indice, identificador] of identificadores.entries()) {
|
|
2146
|
+
const tipoInferido = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializadores[indice], tipo) ?? tipo;
|
|
2147
|
+
if (tipoExplicito && tipo === 'real') {
|
|
2148
|
+
inicializadores[indice] = this.garantirTipoReal(inicializadores[indice]);
|
|
2149
|
+
}
|
|
2078
2150
|
const inicializador = inicializadores[indice];
|
|
2079
|
-
const tipoInferido = this.logicaComumInferenciaTiposVariaveisEConstantes(inicializador, tipo) ?? tipo;
|
|
2080
2151
|
const informacaoSintatica = tipo === 'dicionário'
|
|
2081
2152
|
? this.resolverInformacaoElementoSintaticoDeDicionario(inicializador)
|
|
2082
2153
|
: new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipoInferido);
|
|
@@ -2142,6 +2213,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2142
2213
|
// Se tipo ainda não foi definido, infere.
|
|
2143
2214
|
tipo =
|
|
2144
2215
|
this.logicaComumInferenciaTiposVariaveisEConstantes(inicializadores[indice], tipo) ?? tipo;
|
|
2216
|
+
if (tipoExplicito && tipo === 'real') {
|
|
2217
|
+
inicializadores[indice] = this.garantirTipoReal(inicializadores[indice]);
|
|
2218
|
+
}
|
|
2145
2219
|
if (tipo !== 'dicionário') {
|
|
2146
2220
|
this.pilhaEscopos.definirInformacoesVariavel(identificador.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(identificador.lexema, tipo));
|
|
2147
2221
|
}
|
|
@@ -2206,6 +2280,9 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2206
2280
|
const valorPadrao = await this.primario();
|
|
2207
2281
|
parametro.valorPadrao = valorPadrao;
|
|
2208
2282
|
}
|
|
2283
|
+
if (parametro.tipoDado === 'real') {
|
|
2284
|
+
parametro.valorPadrao = this.garantirTipoReal(parametro.valorPadrao);
|
|
2285
|
+
}
|
|
2209
2286
|
this.pilhaEscopos.definirInformacoesVariavel(parametro.nome.lexema, new informacao_elemento_sintatico_1.InformacaoElementoSintatico(parametro.nome.lexema, parametro.tipoDado || 'qualquer'));
|
|
2210
2287
|
parametros.push(parametro);
|
|
2211
2288
|
if (parametro.abrangencia === 'multiplo')
|
|
@@ -2235,6 +2312,11 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2235
2312
|
for (const declaracao of corpo) {
|
|
2236
2313
|
expressoesRetorna = expressoesRetorna.concat((0, comum_1.buscarRetornos)(declaracao));
|
|
2237
2314
|
}
|
|
2315
|
+
if (tipoRetorno === 'real') {
|
|
2316
|
+
for (const retorno of expressoesRetorna) {
|
|
2317
|
+
retorno.valor = this.garantirTipoReal(retorno.valor);
|
|
2318
|
+
}
|
|
2319
|
+
}
|
|
2238
2320
|
if (tipoRetorno === 'vazio' && expressoesRetorna.length > 0) {
|
|
2239
2321
|
// Filtra retornos que têm tipo conhecido e diferente de 'vazio'.
|
|
2240
2322
|
// 'qualquer' é excluído pois o tipo não pode ser determinado em tempo de análise sintática.
|
|
@@ -2422,6 +2504,11 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2422
2504
|
tipoRetorno = 'vazio';
|
|
2423
2505
|
}
|
|
2424
2506
|
}
|
|
2507
|
+
if (tipoRetorno === 'real') {
|
|
2508
|
+
for (const retorno of expressoesRetorna) {
|
|
2509
|
+
retorno.valor = this.garantirTipoReal(retorno.valor);
|
|
2510
|
+
}
|
|
2511
|
+
}
|
|
2425
2512
|
const corpoFuncao = new construtos_1.FuncaoConstruto(this.hashArquivo, nomeMetodo.linha, params, corpo, tipoRetorno);
|
|
2426
2513
|
const tipoDaFuncao = `função<${tipoRetorno}>`;
|
|
2427
2514
|
const metodo = new declaracoes_1.FuncaoDeclaracao(nomeMetodo, corpoFuncao, tipoDaFuncao);
|
|
@@ -2439,7 +2526,8 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2439
2526
|
const nomePropriedade = this.consumir(delegua_2.default.IDENTIFICADOR, 'Esperado identificador para nome de propriedade.');
|
|
2440
2527
|
this.consumir(delegua_2.default.DOIS_PONTOS, 'Esperado dois-pontos após nome de propriedade.');
|
|
2441
2528
|
const tipoPropriedade = this.avancarEDevolverAnterior();
|
|
2442
|
-
|
|
2529
|
+
// `decimal` é sinônimo de `real` como nome de tipo; `real` é o nome preferido.
|
|
2530
|
+
let nomeTipoPropriedade = tipoPropriedade.lexema.toLowerCase() === 'decimal' ? 'real' : tipoPropriedade.lexema;
|
|
2443
2531
|
if (this.verificarTipoSimboloAtual(delegua_2.default.COLCHETE_ESQUERDO)) {
|
|
2444
2532
|
this.avancarEDevolverAnterior();
|
|
2445
2533
|
this.consumir(delegua_2.default.COLCHETE_DIREITO, "Esperado ']' após '[' na definição do tipo de propriedade.");
|
|
@@ -2773,6 +2861,11 @@ class AvaliadorSintatico extends avaliador_sintatico_base_1.AvaliadorSintaticoBa
|
|
|
2773
2861
|
tipoRetorno = 'vazio';
|
|
2774
2862
|
}
|
|
2775
2863
|
}
|
|
2864
|
+
if (tipoRetorno === 'real') {
|
|
2865
|
+
for (const retorno of expressoesRetorna) {
|
|
2866
|
+
retorno.valor = this.garantirTipoReal(retorno.valor);
|
|
2867
|
+
}
|
|
2868
|
+
}
|
|
2776
2869
|
const corpoFuncao = new construtos_1.FuncaoConstruto(this.hashArquivo, nomeMetodo.linha, params, corpo, tipoRetorno);
|
|
2777
2870
|
const tipoDaFuncao = `função<${tipoRetorno}>`;
|
|
2778
2871
|
const metodo = new declaracoes_1.FuncaoDeclaracao(nomeMetodo, corpoFuncao, tipoDaFuncao);
|