@yakuzaa/jade-compiler 0.1.9 → 0.1.11
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/dist/ast/nodes.d.ts +5 -1
- package/dist/ast/nodes.d.ts.map +1 -1
- package/dist/cli.js +35 -4
- package/dist/cli.js.map +1 -1
- package/dist/codegen/ir_generator.d.ts.map +1 -1
- package/dist/codegen/ir_generator.js +3 -0
- package/dist/codegen/ir_generator.js.map +1 -1
- package/dist/formatter/formatter.d.ts.map +1 -1
- package/dist/formatter/formatter.js +1 -0
- package/dist/formatter/formatter.js.map +1 -1
- package/dist/lexer/lexer.d.ts.map +1 -1
- package/dist/lexer/lexer.js +2 -1
- package/dist/lexer/lexer.js.map +1 -1
- package/dist/lexer/token_type.d.ts +1 -0
- package/dist/lexer/token_type.d.ts.map +1 -1
- package/dist/lexer/token_type.js +1 -0
- package/dist/lexer/token_type.js.map +1 -1
- package/dist/linter/linter.d.ts +7 -0
- package/dist/linter/linter.d.ts.map +1 -1
- package/dist/linter/linter.js +30 -2
- package/dist/linter/linter.js.map +1 -1
- package/dist/parser/parser.d.ts +1 -0
- package/dist/parser/parser.d.ts.map +1 -1
- package/dist/parser/parser.js +65 -2
- package/dist/parser/parser.js.map +1 -1
- package/dist/semantic/type_checker.d.ts +1 -0
- package/dist/semantic/type_checker.d.ts.map +1 -1
- package/dist/semantic/type_checker.js +63 -4
- package/dist/semantic/type_checker.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/linter/linter.js
CHANGED
|
@@ -11,8 +11,10 @@
|
|
|
11
11
|
* VAZIO003 Serviço sem métodos nem ouvintes
|
|
12
12
|
* PARAM001 Função com mais de 5 parâmetros
|
|
13
13
|
* VAR001 Variável declarada sem tipo nem inicializador
|
|
14
|
+
* VAR002 Variável declarada mais de uma vez no mesmo escopo (shadowing local)
|
|
14
15
|
* CONST001 Variável nunca reatribuída — sugerir 'constante'
|
|
15
16
|
* MORT001 Código morto — instrução após retornar
|
|
17
|
+
* STRUCT001 Arquivo com múltiplas estruturas sem módulo declarado
|
|
16
18
|
*/
|
|
17
19
|
export class Linter {
|
|
18
20
|
warnings = [];
|
|
@@ -21,8 +23,23 @@ export class Linter {
|
|
|
21
23
|
for (const decl of program.declaracoes) {
|
|
22
24
|
this.checkDeclaracao(decl);
|
|
23
25
|
}
|
|
26
|
+
this.checkEstruturaSemModulo(program);
|
|
24
27
|
return this.warnings;
|
|
25
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* STRUCT001 — Se o programa tem >2 declarações de estrutura (entidade, serviço, evento,
|
|
31
|
+
* classe) no nível raiz sem nenhum módulo, sugere organizar com módulos.
|
|
32
|
+
*/
|
|
33
|
+
checkEstruturaSemModulo(program) {
|
|
34
|
+
const temModulo = program.declaracoes.some(d => d.kind === 'Modulo');
|
|
35
|
+
if (temModulo)
|
|
36
|
+
return; // já organizado
|
|
37
|
+
const estruturas = program.declaracoes.filter(d => d.kind === 'Entidade' || d.kind === 'Servico' || d.kind === 'Evento' || d.kind === 'Classe');
|
|
38
|
+
if (estruturas.length > 2) {
|
|
39
|
+
const first = estruturas[0];
|
|
40
|
+
this.warn('STRUCT001', `Arquivo com ${estruturas.length} estruturas (entidades, serviços, eventos) sem módulo — considere organizar com 'modulo nomeDoModulo ... fim'`, first.line, first.column);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
26
43
|
// ── Declarações ──────────────────────────────────────────────────────────
|
|
27
44
|
checkDeclaracao(node) {
|
|
28
45
|
switch (node.kind) {
|
|
@@ -102,10 +119,12 @@ export class Linter {
|
|
|
102
119
|
checkBloco(bloco) {
|
|
103
120
|
// Pré-computar todos os nomes reatribuídos neste bloco (incluindo sub-blocos)
|
|
104
121
|
const reatribuidas = this.coletarReatribuicoes(bloco);
|
|
122
|
+
// VAR002 — rastrear variáveis declaradas neste escopo para detectar shadowing local
|
|
123
|
+
const declaradasNoEscopo = new Map(); // nome → linha da primeira declaração
|
|
105
124
|
const instrucoes = bloco.instrucoes;
|
|
106
125
|
for (let i = 0; i < instrucoes.length; i++) {
|
|
107
126
|
const instr = instrucoes[i];
|
|
108
|
-
this.checkInstrucao(instr, reatribuidas);
|
|
127
|
+
this.checkInstrucao(instr, reatribuidas, declaradasNoEscopo);
|
|
109
128
|
// MORT001 — código morto após retornar
|
|
110
129
|
if (instr.kind === 'Retorno' && i < instrucoes.length - 1) {
|
|
111
130
|
const proxima = instrucoes[i + 1];
|
|
@@ -146,13 +165,22 @@ export class Linter {
|
|
|
146
165
|
break;
|
|
147
166
|
}
|
|
148
167
|
}
|
|
149
|
-
checkInstrucao(node, reatribuidas) {
|
|
168
|
+
checkInstrucao(node, reatribuidas, declaradasNoEscopo) {
|
|
150
169
|
switch (node.kind) {
|
|
151
170
|
case 'Variavel':
|
|
152
171
|
this.assertCamelCase(node.nome, 'NOME004', 'Variável', node.line, node.column);
|
|
153
172
|
if (!node.tipo && !node.inicializador) {
|
|
154
173
|
this.warn('VAR001', `Variável '${node.nome}' declarada sem tipo nem valor inicial`, node.line, node.column);
|
|
155
174
|
}
|
|
175
|
+
// VAR002 — shadowing local: mesma variável declarada duas vezes no mesmo escopo
|
|
176
|
+
if (declaradasNoEscopo) {
|
|
177
|
+
if (declaradasNoEscopo.has(node.nome)) {
|
|
178
|
+
this.warn('VAR002', `'${node.nome}' já foi declarado neste escopo (linha ${declaradasNoEscopo.get(node.nome)}) — renomeie ou remova a declaração duplicada`, node.line, node.column);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
declaradasNoEscopo.set(node.nome, node.line);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
156
184
|
// CONST001 — sugerir 'constante' quando variável nunca é reatribuída
|
|
157
185
|
if (!node.imutavel && node.inicializador && !reatribuidas.has(node.nome)) {
|
|
158
186
|
this.warn('CONST001', `Variável '${node.nome}' nunca é reatribuída — considere usar 'constante'`, node.line, node.column);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../linter/linter.ts"],"names":[],"mappings":"AAUA
|
|
1
|
+
{"version":3,"file":"linter.js","sourceRoot":"","sources":["../../linter/linter.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/parser.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../parser/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../parser/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAkI5D,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,KAAK,EAAE;IAI3B,KAAK,IAAI,WAAW;IAgDpB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,WAAW;IAyCnB,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,iBAAiB;IAqFzB,OAAO,CAAC,UAAU;IAuGlB,4EAA4E;IAC5E,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,cAAc;IA4BtB,OAAO,CAAC,SAAS;IA+DjB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,wBAAwB;IA4GhC,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,gBAAgB;IAgCxB,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,aAAa;IA4JrB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,WAAW;CAuBpB"}
|
package/dist/parser/parser.js
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
1
|
import { TokenType } from '../lexer/token_type.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tokens que são palavras-chave da linguagem Jade DSL.
|
|
4
|
+
* Usados para gerar mensagens de erro explícitas quando um usuário
|
|
5
|
+
* tenta usar uma palavra-chave como nome de variável, função ou entidade.
|
|
6
|
+
*/
|
|
7
|
+
const KEYWORDS_JADE = new Set([
|
|
8
|
+
TokenType.MODULO, TokenType.CLASSE, TokenType.ENTIDADE, TokenType.SERVICO,
|
|
9
|
+
TokenType.FUNCAO, TokenType.EVENTO, TokenType.REGRA, TokenType.INTERFACE,
|
|
10
|
+
TokenType.ENUM, TokenType.TELA, TokenType.BANCO, TokenType.FIM,
|
|
11
|
+
TokenType.SE, TokenType.ENTAO, TokenType.SENAO, TokenType.ENQUANTO,
|
|
12
|
+
TokenType.PARA, TokenType.EM, TokenType.RETORNAR, TokenType.ERRO,
|
|
13
|
+
TokenType.IMPORTAR, TokenType.COMO, TokenType.EXTENDS, TokenType.IMPLEMENTS,
|
|
14
|
+
TokenType.EMITIR, TokenType.ESCUTAR, TokenType.QUANDO, TokenType.SALVAR,
|
|
15
|
+
TokenType.VARIAVEL, TokenType.CONSTANTE,
|
|
16
|
+
TokenType.VERDADEIRO, TokenType.FALSO,
|
|
17
|
+
TokenType.E, TokenType.OU, TokenType.NAO,
|
|
18
|
+
]);
|
|
2
19
|
/**
|
|
3
20
|
* Tabela de dicas educativas para erros de sintaxe.
|
|
4
21
|
* Mapeamento: mensagem de erro → dica de como corrigir.
|
|
@@ -770,6 +787,8 @@ export class Parser {
|
|
|
770
787
|
return this.parsePara();
|
|
771
788
|
if (this.match(TokenType.EMITIR))
|
|
772
789
|
return this.parseEmissaoEvento();
|
|
790
|
+
if (this.match(TokenType.SALVAR))
|
|
791
|
+
return this.parseSalvar();
|
|
773
792
|
if (this.match(TokenType.ERRO))
|
|
774
793
|
return this.parseErro();
|
|
775
794
|
// Atribuição ou chamada de função
|
|
@@ -797,8 +816,8 @@ export class Parser {
|
|
|
797
816
|
};
|
|
798
817
|
}
|
|
799
818
|
parseAtribuicaoOuChamada() {
|
|
800
|
-
//
|
|
801
|
-
if (!this.check(TokenType.IDENTIFICADOR)) {
|
|
819
|
+
// Age para IDENTIFICADOR ou palavras-chave de tipo usadas como variável (ex: 'id')
|
|
820
|
+
if (!this.check(TokenType.IDENTIFICADOR) && !this.check(TokenType.TIPO_ID)) {
|
|
802
821
|
return null;
|
|
803
822
|
}
|
|
804
823
|
const nomeToken = this.advance();
|
|
@@ -1012,6 +1031,15 @@ export class Parser {
|
|
|
1012
1031
|
argumentos
|
|
1013
1032
|
};
|
|
1014
1033
|
}
|
|
1034
|
+
parseSalvar() {
|
|
1035
|
+
const entidade = this.parseExpressao();
|
|
1036
|
+
return {
|
|
1037
|
+
kind: 'Salvar',
|
|
1038
|
+
line: entidade.line,
|
|
1039
|
+
column: entidade.column,
|
|
1040
|
+
entidade
|
|
1041
|
+
};
|
|
1042
|
+
}
|
|
1015
1043
|
parseErro() {
|
|
1016
1044
|
const mensagem = this.parseExpressao();
|
|
1017
1045
|
return {
|
|
@@ -1173,6 +1201,33 @@ export class Parser {
|
|
|
1173
1201
|
tipoLiteral: 'decimal'
|
|
1174
1202
|
};
|
|
1175
1203
|
}
|
|
1204
|
+
// lista() e mapa() como construtores de coleção; ou tipo usado como variável (ex: id)
|
|
1205
|
+
if (this.check(TokenType.TIPO_LISTA) || this.check(TokenType.TIPO_MAPA) || this.check(TokenType.TIPO_ID)) {
|
|
1206
|
+
const token = this.advance();
|
|
1207
|
+
if (this.match(TokenType.ABRE_PAREN)) {
|
|
1208
|
+
const argumentos = [];
|
|
1209
|
+
if (!this.check(TokenType.FECHA_PAREN)) {
|
|
1210
|
+
do {
|
|
1211
|
+
argumentos.push(this.parseExpressao());
|
|
1212
|
+
} while (this.match(TokenType.VIRGULA));
|
|
1213
|
+
}
|
|
1214
|
+
this.consume(TokenType.FECHA_PAREN, "Esperado ')' após argumentos");
|
|
1215
|
+
return {
|
|
1216
|
+
kind: 'ChamadaFuncao',
|
|
1217
|
+
line: token.line,
|
|
1218
|
+
column: token.column,
|
|
1219
|
+
nome: token.value,
|
|
1220
|
+
argumentos
|
|
1221
|
+
};
|
|
1222
|
+
}
|
|
1223
|
+
// Usado como identificador (ex: variavel com nome 'id')
|
|
1224
|
+
return {
|
|
1225
|
+
kind: 'Identificador',
|
|
1226
|
+
line: token.line,
|
|
1227
|
+
column: token.column,
|
|
1228
|
+
nome: token.value
|
|
1229
|
+
};
|
|
1230
|
+
}
|
|
1176
1231
|
if (this.match(TokenType.IDENTIFICADOR)) {
|
|
1177
1232
|
const token = this.previous();
|
|
1178
1233
|
// nome(...) — chamada de função em expressão
|
|
@@ -1268,6 +1323,14 @@ export class Parser {
|
|
|
1268
1323
|
consume(type, message, dica) {
|
|
1269
1324
|
if (this.check(type))
|
|
1270
1325
|
return this.advance();
|
|
1326
|
+
// P2: se o token atual é uma palavra-chave da linguagem e o esperado é IDENTIFICADOR,
|
|
1327
|
+
// gera mensagem explícita em vez do genérico "Esperado nome".
|
|
1328
|
+
if (type === TokenType.IDENTIFICADOR && this.peek().type !== TokenType.EOF) {
|
|
1329
|
+
const kwToken = this.peek();
|
|
1330
|
+
if (KEYWORDS_JADE.has(kwToken.type)) {
|
|
1331
|
+
throw this.error(`'${kwToken.value}' é uma palavra-chave da linguagem e não pode ser usado como nome`, kwToken, `Escolha outro nome — '${kwToken.value}' faz parte da sintaxe da Jade DSL`);
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1271
1334
|
throw this.error(message, undefined, dica);
|
|
1272
1335
|
}
|
|
1273
1336
|
consumeAny(types, message, dica) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../parser/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../parser/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,7 @@ export declare class TypeChecker {
|
|
|
38
38
|
verificarRegra(node: N.RegraNode): void;
|
|
39
39
|
verificarImportacao(_node: N.ImportacaoNode): void;
|
|
40
40
|
private verificarDeclaracao;
|
|
41
|
+
private nomeReservado;
|
|
41
42
|
verificarBloco(node: N.BlocoNode): void;
|
|
42
43
|
verificarVariavel(node: N.VariavelNode): void;
|
|
43
44
|
verificarAtribuicao(node: N.AtribuicaoNode): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type_checker.d.ts","sourceRoot":"","sources":["../../semantic/type_checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"type_checker.d.ts","sourceRoot":"","sources":["../../semantic/type_checker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,cAAc,EAAwB,MAAM,gBAAgB,CAAC;AAoBtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,YAAY,CAAuC;gBAE/C,MAAM,EAAE,cAAc;IAMlC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW3B;IAEF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAW3B;IAIF,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,aAAa,EAAE;IAoBxD,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,wBAAwB;IAqChC,OAAO,CAAC,mBAAmB;IAqC3B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,eAAe;IAcvB,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI;IA4CzC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,IAAI;IAoC7C,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI;IAc3C,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI;IAmDzC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI;IA8C3C,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI;IA2BzC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI;IAIrC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,GAAG,IAAI;IAkB/C,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI;IAmBvC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,GAAG,IAAI;IAOlD,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,aAAa;IAYrB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI;IAMvC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,IAAI;IA6D7C,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,GAAG,IAAI;IAsDjD,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,eAAe,GAAG,IAAI;IAmBnD,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,GAAG,IAAI;IAa7C,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI;IAmCrC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,GAAG,IAAI;IA2B3C,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB,GAAG,IAAI;IAyCvD,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI;IAQrC,OAAO,CAAC,kBAAkB;IAoC1B,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,GAAG,MAAM;IAsB3C,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,GAAG,MAAM;IAIhD,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB,GAAG,MAAM;IAa5D,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,GAAG,MAAM;IAgDhD,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,GAAG,MAAM;IAiB9C,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB,GAAG,MAAM;IA6BtD,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,GAAG,MAAM;IAwC1D,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,gBAAgB;IAoCxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,+BAA+B;IA+BvC,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAyNrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6E;IAE3G,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,iBAAiB;CAK1B"}
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nomes reservados pelo runtime da Jade DSL.
|
|
3
|
+
* Não podem ser usados como nomes de variáveis, constantes, funções ou entidades
|
|
4
|
+
* pelo usuário — fariam shadowing silencioso das APIs padrão.
|
|
5
|
+
*/
|
|
6
|
+
const NOMES_RESERVADOS_RUNTIME = new Set([
|
|
7
|
+
'Console',
|
|
8
|
+
'EntityManager',
|
|
9
|
+
'Matematica',
|
|
10
|
+
'Moeda',
|
|
11
|
+
'DateTime',
|
|
12
|
+
'HttpClient',
|
|
13
|
+
'Auth',
|
|
14
|
+
'Crypto',
|
|
15
|
+
'XML',
|
|
16
|
+
'SyncManager',
|
|
17
|
+
]);
|
|
1
18
|
export class TypeChecker {
|
|
2
19
|
tabela;
|
|
3
20
|
erros = [];
|
|
@@ -153,6 +170,8 @@ export class TypeChecker {
|
|
|
153
170
|
}
|
|
154
171
|
}
|
|
155
172
|
registrarClasse(node) {
|
|
173
|
+
if (this.nomeReservado(node.nome, 'classe', node.line, node.column))
|
|
174
|
+
return;
|
|
156
175
|
const simbolo = {
|
|
157
176
|
nome: node.nome,
|
|
158
177
|
kind: 'classe',
|
|
@@ -164,6 +183,8 @@ export class TypeChecker {
|
|
|
164
183
|
this.tabela.declarar(simbolo);
|
|
165
184
|
}
|
|
166
185
|
registrarEntidade(node) {
|
|
186
|
+
if (this.nomeReservado(node.nome, 'entidade', node.line, node.column))
|
|
187
|
+
return;
|
|
167
188
|
const simbolo = {
|
|
168
189
|
nome: node.nome,
|
|
169
190
|
kind: 'entidade',
|
|
@@ -175,6 +196,8 @@ export class TypeChecker {
|
|
|
175
196
|
this.tabela.declarar(simbolo);
|
|
176
197
|
}
|
|
177
198
|
registrarServico(node) {
|
|
199
|
+
if (this.nomeReservado(node.nome, 'serviço', node.line, node.column))
|
|
200
|
+
return;
|
|
178
201
|
const simbolo = {
|
|
179
202
|
nome: node.nome,
|
|
180
203
|
kind: 'servico',
|
|
@@ -231,6 +254,8 @@ export class TypeChecker {
|
|
|
231
254
|
this.tabela.declarar(simbolo);
|
|
232
255
|
}
|
|
233
256
|
registrarFuncao(node) {
|
|
257
|
+
if (this.nomeReservado(node.nome, 'função', node.line, node.column))
|
|
258
|
+
return;
|
|
234
259
|
const simbolo = {
|
|
235
260
|
nome: node.nome,
|
|
236
261
|
kind: 'funcao',
|
|
@@ -492,12 +517,23 @@ export class TypeChecker {
|
|
|
492
517
|
break;
|
|
493
518
|
}
|
|
494
519
|
}
|
|
520
|
+
nomeReservado(nome, kind, line, col) {
|
|
521
|
+
if (NOMES_RESERVADOS_RUNTIME.has(nome)) {
|
|
522
|
+
this.erro(`'${nome}' é um identificador reservado do runtime da Jade DSL e não pode ser usado como nome de ${kind}`, line, col, `Escolha outro nome para o ${kind}`);
|
|
523
|
+
return true;
|
|
524
|
+
}
|
|
525
|
+
return false;
|
|
526
|
+
}
|
|
495
527
|
verificarBloco(node) {
|
|
496
528
|
for (const instrucao of node.instrucoes) {
|
|
497
529
|
this.verificarInstrucao(instrucao);
|
|
498
530
|
}
|
|
499
531
|
}
|
|
500
532
|
verificarVariavel(node) {
|
|
533
|
+
if (NOMES_RESERVADOS_RUNTIME.has(node.nome)) {
|
|
534
|
+
this.erro(`'${node.nome}' é um identificador reservado do runtime da Jade DSL e não pode ser usado como ${node.imutavel ? 'constante' : 'variável'}`, node.line, node.column, `Escolha outro nome, por exemplo: 'meu${node.nome}' ou '${node.nome.charAt(0).toLowerCase() + node.nome.slice(1)}Local'`);
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
501
537
|
if (node.imutavel && !node.inicializador) {
|
|
502
538
|
this.erro(`Constante '${node.nome}' deve ter valor na declaração`, node.line, node.column, `Declare com valor: 'constante ${node.nome}: tipo = valor'`);
|
|
503
539
|
}
|
|
@@ -702,6 +738,9 @@ export class TypeChecker {
|
|
|
702
738
|
case 'EmissaoEvento':
|
|
703
739
|
this.verificarEmissaoEvento(instrucao);
|
|
704
740
|
break;
|
|
741
|
+
case 'Salvar':
|
|
742
|
+
this.resolverTipo(instrucao.entidade);
|
|
743
|
+
break;
|
|
705
744
|
case 'Erro':
|
|
706
745
|
this.verificarErro(instrucao);
|
|
707
746
|
break;
|
|
@@ -760,13 +799,17 @@ export class TypeChecker {
|
|
|
760
799
|
return 'decimal';
|
|
761
800
|
if (tipoEsquerda === 'numero' && tipoDireita === 'decimal')
|
|
762
801
|
return 'decimal';
|
|
763
|
-
// moeda opera com moeda ou
|
|
802
|
+
// moeda opera com moeda, numero ou decimal (escala monetária); sempre retorna moeda
|
|
764
803
|
if (tipoEsquerda === 'moeda' && tipoDireita === 'moeda')
|
|
765
804
|
return 'moeda';
|
|
766
805
|
if (tipoEsquerda === 'moeda' && tipoDireita === 'numero')
|
|
767
806
|
return 'moeda';
|
|
768
807
|
if (tipoEsquerda === 'numero' && tipoDireita === 'moeda')
|
|
769
808
|
return 'moeda';
|
|
809
|
+
if (tipoEsquerda === 'moeda' && tipoDireita === 'decimal')
|
|
810
|
+
return 'moeda';
|
|
811
|
+
if (tipoEsquerda === 'decimal' && tipoDireita === 'moeda')
|
|
812
|
+
return 'moeda';
|
|
770
813
|
if (node.operador === '+' && tipoEsquerda === 'texto' && tipoDireita === 'texto')
|
|
771
814
|
return 'texto';
|
|
772
815
|
break;
|
|
@@ -812,6 +855,11 @@ export class TypeChecker {
|
|
|
812
855
|
return 'desconhecido';
|
|
813
856
|
}
|
|
814
857
|
resolverTipoChamada(node) {
|
|
858
|
+
// Construtores de coleção embutidos
|
|
859
|
+
if (node.nome === 'lista')
|
|
860
|
+
return 'lista<qualquer>';
|
|
861
|
+
if (node.nome === 'mapa')
|
|
862
|
+
return 'mapa<qualquer,qualquer>';
|
|
815
863
|
const funcao = this.tabela.buscar(node.nome);
|
|
816
864
|
if (!funcao || funcao.kind !== 'funcao') {
|
|
817
865
|
const funcoes = this.tabela.buscarTodosNomesVisiveis();
|
|
@@ -875,12 +923,23 @@ export class TypeChecker {
|
|
|
875
923
|
// 'qualquer' é compatível com qualquer tipo (escape hatch)
|
|
876
924
|
if (baseEsperado === 'qualquer' || baseRecebido === 'qualquer')
|
|
877
925
|
return true;
|
|
926
|
+
// lista() e mapa() retornam tipo genérico — compatível com qualquer lista<T> ou mapa<K,V>
|
|
927
|
+
if (baseRecebido === 'lista<qualquer>' && baseEsperado.startsWith('lista<'))
|
|
928
|
+
return true;
|
|
929
|
+
if (baseEsperado === 'lista<qualquer>' && baseRecebido.startsWith('lista<'))
|
|
930
|
+
return true;
|
|
931
|
+
if (baseRecebido === 'mapa<qualquer,qualquer>' && baseEsperado.startsWith('mapa<'))
|
|
932
|
+
return true;
|
|
933
|
+
if (baseEsperado === 'mapa<qualquer,qualquer>' && baseRecebido.startsWith('mapa<'))
|
|
934
|
+
return true;
|
|
878
935
|
// decimal aceita numero
|
|
879
936
|
if (baseEsperado === 'decimal' && baseRecebido === 'numero')
|
|
880
937
|
return true;
|
|
881
|
-
// moeda aceita decimal (interop com valores monetários vindos de APIs)
|
|
938
|
+
// moeda aceita decimal e numero (interop com valores monetários vindos de APIs)
|
|
882
939
|
if (baseEsperado === 'moeda' && baseRecebido === 'decimal')
|
|
883
940
|
return true;
|
|
941
|
+
if (baseEsperado === 'moeda' && baseRecebido === 'numero')
|
|
942
|
+
return true;
|
|
884
943
|
// id aceita numero (IDs podem ser representados como números)
|
|
885
944
|
if (baseEsperado === 'id' && baseRecebido === 'numero')
|
|
886
945
|
return true;
|
|
@@ -1007,7 +1066,7 @@ export class TypeChecker {
|
|
|
1007
1066
|
}
|
|
1008
1067
|
verificarTela(node) {
|
|
1009
1068
|
// Tipos válidos em português — sem termos em inglês expostos na DSL
|
|
1010
|
-
const tiposElementosValidos = ['tabela', 'formulario', 'botao', 'cartao', 'modal', 'grafico', 'abas', 'lista', 'acordeao', 'navegar', 'gaveta'];
|
|
1069
|
+
const tiposElementosValidos = ['tabela', 'formulario', 'botao', 'cartao', 'modal', 'grafico', 'abas', 'lista', 'acordeao', 'navegar', 'gaveta', 'divisor', 'toolbar', 'busca'];
|
|
1011
1070
|
// Tipos válidos para grafico.tipo
|
|
1012
1071
|
const tiposGrafico = ['linha', 'barras', 'pizza'];
|
|
1013
1072
|
// Propriedades que referenciam ações (devem ser funções declaradas)
|
|
@@ -1041,7 +1100,7 @@ export class TypeChecker {
|
|
|
1041
1100
|
continue;
|
|
1042
1101
|
}
|
|
1043
1102
|
if (!tiposElementosValidos.includes(elem.tipo)) {
|
|
1044
|
-
this.erro(`Tipo de elemento '${elem.tipo}' inválido. Use: tabela, formulario, botao, cartao, modal, grafico, abas, lista ou
|
|
1103
|
+
this.erro(`Tipo de elemento '${elem.tipo}' inválido. Use: tabela, formulario, botao, cartao, modal, grafico, abas, lista, acordeao, divisor, toolbar ou busca`, elem.line, elem.column, "Tipos válidos de elementos de tela: tabela, formulario, botao, cartao, modal, grafico, abas, lista, acordeao, divisor, toolbar, busca");
|
|
1045
1104
|
continue;
|
|
1046
1105
|
}
|
|
1047
1106
|
// ── Validar propriedades com termos em inglês ────────────
|