@designliquido/delegua 0.0.2 → 0.1.3

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 (146) hide show
  1. package/README.md +9 -1
  2. package/bin/delegua +1 -1
  3. package/bin/delegua.cmd +1 -1
  4. package/bin/package.json +51 -0
  5. package/index.js +27 -0
  6. package/index.js.map +1 -0
  7. package/package.json +10 -5
  8. package/src/ambiente.js +34 -38
  9. package/src/ambiente.js.map +1 -0
  10. package/src/avaliador-sintatico/dialetos/egua-classico.js +635 -0
  11. package/src/avaliador-sintatico/dialetos/egua-classico.js.map +1 -0
  12. package/src/avaliador-sintatico/dialetos/index.js +14 -0
  13. package/src/avaliador-sintatico/dialetos/index.js.map +1 -0
  14. package/src/avaliador-sintatico/index.js +635 -0
  15. package/src/avaliador-sintatico/index.js.map +1 -0
  16. package/src/avaliador-sintatico/parser-error.js +27 -0
  17. package/src/avaliador-sintatico/parser-error.js.map +1 -0
  18. package/src/bibliotecas/bibliotecaGlobal.js +97 -0
  19. package/src/bibliotecas/bibliotecaGlobal.js.map +1 -0
  20. package/src/bibliotecas/importarBiblioteca.js +32 -0
  21. package/src/bibliotecas/importarBiblioteca.js.map +1 -0
  22. package/src/construtos/assign-subscript.js +35 -0
  23. package/src/construtos/assign-subscript.js.map +1 -0
  24. package/src/construtos/atribuir.js +34 -0
  25. package/src/construtos/atribuir.js.map +1 -0
  26. package/src/construtos/binario.js +35 -0
  27. package/src/construtos/binario.js.map +1 -0
  28. package/src/construtos/call.js +35 -0
  29. package/src/construtos/call.js.map +1 -0
  30. package/src/construtos/conjunto.js +35 -0
  31. package/src/construtos/conjunto.js.map +1 -0
  32. package/src/construtos/dicionario.js +34 -0
  33. package/src/construtos/dicionario.js.map +1 -0
  34. package/src/construtos/expr.js +11 -0
  35. package/src/construtos/expr.js.map +1 -0
  36. package/src/construtos/funcao.js +34 -0
  37. package/src/construtos/funcao.js.map +1 -0
  38. package/src/construtos/get.js +34 -0
  39. package/src/construtos/get.js.map +1 -0
  40. package/src/construtos/grouping.js +33 -0
  41. package/src/construtos/grouping.js.map +1 -0
  42. package/src/construtos/index.js +31 -0
  43. package/src/construtos/index.js.map +1 -0
  44. package/src/construtos/isto.js +33 -0
  45. package/src/construtos/isto.js.map +1 -0
  46. package/src/construtos/literal.js +33 -0
  47. package/src/construtos/literal.js.map +1 -0
  48. package/src/construtos/logical.js +35 -0
  49. package/src/construtos/logical.js.map +1 -0
  50. package/src/construtos/subscript.js +35 -0
  51. package/src/construtos/subscript.js.map +1 -0
  52. package/src/construtos/super.js +34 -0
  53. package/src/construtos/super.js.map +1 -0
  54. package/src/construtos/unario.js +34 -0
  55. package/src/construtos/unario.js.map +1 -0
  56. package/src/construtos/variavel.js +33 -0
  57. package/src/construtos/variavel.js.map +1 -0
  58. package/src/construtos/vetor.js +33 -0
  59. package/src/construtos/vetor.js.map +1 -0
  60. package/src/declaracoes/index.js +249 -0
  61. package/src/declaracoes/index.js.map +1 -0
  62. package/src/delegua.js +110 -83
  63. package/src/delegua.js.map +1 -0
  64. package/src/estruturas/callable.js +15 -4
  65. package/src/estruturas/callable.js.map +1 -0
  66. package/src/estruturas/classe.js +44 -30
  67. package/src/estruturas/classe.js.map +1 -0
  68. package/src/estruturas/funcao-padrao.js +38 -0
  69. package/src/estruturas/funcao-padrao.js.map +1 -0
  70. package/src/estruturas/funcao.js +71 -52
  71. package/src/estruturas/funcao.js.map +1 -0
  72. package/src/estruturas/index.js +19 -0
  73. package/src/estruturas/index.js.map +1 -0
  74. package/src/estruturas/instancia.js +23 -22
  75. package/src/estruturas/instancia.js.map +1 -0
  76. package/src/estruturas/modulo.js +14 -8
  77. package/src/estruturas/modulo.js.map +1 -0
  78. package/src/excecoes/break-exception.js +27 -0
  79. package/src/excecoes/break-exception.js.map +1 -0
  80. package/src/excecoes/continue-exception.js +27 -0
  81. package/src/excecoes/continue-exception.js.map +1 -0
  82. package/src/excecoes/erro-em-tempo-de-execucao.js +31 -0
  83. package/src/excecoes/erro-em-tempo-de-execucao.js.map +1 -0
  84. package/src/excecoes/index.js +17 -0
  85. package/src/excecoes/index.js.map +1 -0
  86. package/src/excecoes/return-exception.js +30 -0
  87. package/src/excecoes/return-exception.js.map +1 -0
  88. package/src/interfaces/avaliador-sintatico-interface.js +3 -0
  89. package/src/interfaces/avaliador-sintatico-interface.js.map +1 -0
  90. package/src/interfaces/index.js +19 -0
  91. package/src/interfaces/index.js.map +1 -0
  92. package/src/interfaces/interpretador-interface.js +3 -0
  93. package/src/interfaces/interpretador-interface.js.map +1 -0
  94. package/src/interfaces/lexador-interface.js +3 -0
  95. package/src/interfaces/lexador-interface.js.map +1 -0
  96. package/src/interfaces/pilha-interface.js +3 -0
  97. package/src/interfaces/pilha-interface.js.map +1 -0
  98. package/src/interfaces/resolvedor-interface.js +3 -0
  99. package/src/interfaces/resolvedor-interface.js.map +1 -0
  100. package/src/interfaces/simbolo-interface.js +3 -0
  101. package/src/interfaces/simbolo-interface.js.map +1 -0
  102. package/src/interpretador/dialetos/egua-classico.js +656 -0
  103. package/src/interpretador/dialetos/egua-classico.js.map +1 -0
  104. package/src/interpretador/dialetos/index.js +14 -0
  105. package/src/interpretador/dialetos/index.js.map +1 -0
  106. package/src/interpretador/index.js +665 -0
  107. package/src/interpretador/index.js.map +1 -0
  108. package/src/lexador/dialetos/egua-classico.js +287 -0
  109. package/src/lexador/dialetos/egua-classico.js.map +1 -0
  110. package/src/lexador/dialetos/index.js +14 -0
  111. package/src/lexador/dialetos/index.js.map +1 -0
  112. package/src/lexador/index.js +287 -0
  113. package/src/lexador/index.js.map +1 -0
  114. package/src/resolvedor/Pilha.js +27 -0
  115. package/src/resolvedor/Pilha.js.map +1 -0
  116. package/src/resolvedor/ResolverError.js +29 -0
  117. package/src/resolvedor/ResolverError.js.map +1 -0
  118. package/src/resolvedor/dialetos/egua-classico.js +331 -0
  119. package/src/resolvedor/dialetos/egua-classico.js.map +1 -0
  120. package/src/resolvedor/dialetos/index.js +14 -0
  121. package/src/resolvedor/dialetos/index.js.map +1 -0
  122. package/src/resolvedor/index.js +331 -0
  123. package/src/resolvedor/index.js.map +1 -0
  124. package/src/tiposDeSimbolos.js +25 -23
  125. package/src/tiposDeSimbolos.js.map +1 -0
  126. package/src/web.js +64 -68
  127. package/src/web.js.map +1 -0
  128. package/.github/CONTRIBUTING.md +0 -0
  129. package/.github/workflows/principal.yml +0 -20
  130. package/.release-it.json +0 -8
  131. package/.vscode/launch.json +0 -29
  132. package/.vscode/settings.json +0 -3
  133. package/LICENSE +0 -21
  134. package/babel.config.js +0 -1
  135. package/indice.js +0 -14
  136. package/src/erro.js +0 -18
  137. package/src/estruturas/funcaoPadrao.js +0 -18
  138. package/src/expr.js +0 -228
  139. package/src/interpretador.js +0 -802
  140. package/src/lexer.js +0 -316
  141. package/src/lib/globalLib.js +0 -171
  142. package/src/lib/importStdlib.js +0 -32
  143. package/src/parser.js +0 -822
  144. package/src/resolver.js +0 -425
  145. package/src/stmt.js +0 -215
  146. package/testes/testes.egua +0 -630
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Resolver = void 0;
4
+ var Pilha_1 = require("./Pilha");
5
+ var ResolverError_1 = require("./ResolverError");
6
+ var TipoFuncao = {
7
+ NENHUM: "NENHUM",
8
+ FUNCAO: "FUNCAO",
9
+ CONSTRUTOR: "CONSTRUTOR",
10
+ METODO: "METODO"
11
+ };
12
+ var TipoClasse = {
13
+ NENHUM: "NENHUM",
14
+ CLASSE: "CLASSE",
15
+ SUBCLASSE: "SUBCLASSE"
16
+ };
17
+ var LoopType = {
18
+ NENHUM: "NENHUM",
19
+ ENQUANTO: "ENQUANTO",
20
+ ESCOLHA: "ESCOLHA",
21
+ PARA: "PARA",
22
+ FAZER: "FAZER"
23
+ };
24
+ /**
25
+ * O Resolvedor (Resolver) é responsável por catalogar todos os identificadores complexos, como por exemplo: funções, classes, variáveis,
26
+ * e delimitar os escopos onde esses identificadores existem.
27
+ * Exemplo: uma classe A declara dois métodos chamados M e N. Todas as variáveis declaradas dentro de M não podem ser vistas por N, e vice-versa.
28
+ * No entanto, todas as variáveis declaradas dentro da classe A podem ser vistas tanto por M quanto por N.
29
+ */
30
+ var Resolver = /** @class */ (function () {
31
+ function Resolver(Delegua, interpretador) {
32
+ this.interpretador = interpretador;
33
+ this.Delegua = Delegua;
34
+ this.escopos = new Pilha_1.Pilha();
35
+ this.FuncaoAtual = TipoFuncao.NENHUM;
36
+ this.ClasseAtual = TipoClasse.NENHUM;
37
+ this.cicloAtual = TipoClasse.NENHUM;
38
+ }
39
+ Resolver.prototype.definir = function (nome) {
40
+ if (this.escopos.eVazio())
41
+ return;
42
+ this.escopos.peek()[nome.lexema] = true;
43
+ };
44
+ Resolver.prototype.declarar = function (nome) {
45
+ if (this.escopos.eVazio())
46
+ return;
47
+ var escopo = this.escopos.peek();
48
+ if (escopo.hasOwnProperty(nome.lexema))
49
+ this.Delegua.erro(nome, "Variável com esse nome já declarada neste escopo.");
50
+ escopo[nome.lexema] = false;
51
+ };
52
+ Resolver.prototype.inicioDoEscopo = function () {
53
+ this.escopos.empilhar({});
54
+ };
55
+ Resolver.prototype.finalDoEscopo = function () {
56
+ this.escopos.removerUltimo();
57
+ };
58
+ Resolver.prototype.resolver = function (declaracoes) {
59
+ if (Array.isArray(declaracoes)) {
60
+ for (var i = 0; i < declaracoes.length; i++) {
61
+ if (declaracoes[i] && declaracoes[i].aceitar) {
62
+ declaracoes[i].aceitar(this);
63
+ }
64
+ }
65
+ }
66
+ else if (declaracoes) {
67
+ declaracoes.aceitar(this);
68
+ }
69
+ };
70
+ Resolver.prototype.resolverLocal = function (expr, nome) {
71
+ for (var i = this.escopos.pilha.length - 1; i >= 0; i--) {
72
+ if (this.escopos.pilha[i].hasOwnProperty(nome.lexema)) {
73
+ this.interpretador.resolver(expr, this.escopos.pilha.length - 1 - i);
74
+ }
75
+ }
76
+ };
77
+ Resolver.prototype.visitBlockStmt = function (stmt) {
78
+ this.inicioDoEscopo();
79
+ this.resolver(stmt.declaracoes);
80
+ this.finalDoEscopo();
81
+ return null;
82
+ };
83
+ Resolver.prototype.visitVariableExpr = function (expr) {
84
+ if (!this.escopos.eVazio() &&
85
+ this.escopos.peek()[expr.nome.lexema] === false) {
86
+ throw new ResolverError_1.ResolverError("Não é possível ler a variável local em seu próprio inicializador.");
87
+ }
88
+ this.resolverLocal(expr, expr.nome);
89
+ return null;
90
+ };
91
+ Resolver.prototype.visitVarStmt = function (stmt) {
92
+ this.declarar(stmt.nome);
93
+ if (stmt.inicializador !== null) {
94
+ this.resolver(stmt.inicializador);
95
+ }
96
+ this.definir(stmt.nome);
97
+ return null;
98
+ };
99
+ Resolver.prototype.visitAssignExpr = function (expr) {
100
+ this.resolver(expr.valor);
101
+ this.resolverLocal(expr, expr.nome);
102
+ return null;
103
+ };
104
+ Resolver.prototype.resolverFuncao = function (funcao, funcType) {
105
+ var enclosingFunc = this.FuncaoAtual;
106
+ this.FuncaoAtual = funcType;
107
+ this.inicioDoEscopo();
108
+ var parametros = funcao.parametros;
109
+ if (parametros && parametros.length > 0) {
110
+ for (var i = 0; i < parametros.length; i++) {
111
+ this.declarar(parametros[i]["nome"]);
112
+ this.definir(parametros[i]["nome"]);
113
+ }
114
+ }
115
+ this.resolver(funcao.funcao);
116
+ this.finalDoEscopo();
117
+ this.FuncaoAtual = enclosingFunc;
118
+ };
119
+ Resolver.prototype.visitFunctionStmt = function (stmt) {
120
+ this.declarar(stmt.nome);
121
+ this.definir(stmt.nome);
122
+ this.resolverFuncao(stmt.funcao, TipoFuncao.FUNCAO);
123
+ return null;
124
+ };
125
+ Resolver.prototype.visitFunctionExpr = function (stmt) {
126
+ this.resolverFuncao(stmt, TipoFuncao.FUNCAO);
127
+ return null;
128
+ };
129
+ Resolver.prototype.visitTryStmt = function (stmt) {
130
+ this.resolver(stmt.tryBranch);
131
+ if (stmt.catchBranch !== null)
132
+ this.resolver(stmt.catchBranch);
133
+ if (stmt.elseBranch !== null)
134
+ this.resolver(stmt.elseBranch);
135
+ if (stmt.finallyBranch !== null)
136
+ this.resolver(stmt.finallyBranch);
137
+ };
138
+ Resolver.prototype.visitClassStmt = function (stmt) {
139
+ var enclosingClass = this.ClasseAtual;
140
+ this.ClasseAtual = TipoClasse.CLASSE;
141
+ this.declarar(stmt.nome);
142
+ this.definir(stmt.nome);
143
+ if (stmt.superClasse !== null &&
144
+ stmt.nome.lexema === stmt.superClasse.nome.lexema) {
145
+ this.Delegua.error("Uma classe não pode herdar de si mesma.");
146
+ }
147
+ if (stmt.superClasse !== null) {
148
+ this.ClasseAtual = TipoClasse.SUBCLASSE;
149
+ this.resolver(stmt.superClasse);
150
+ }
151
+ if (stmt.superClasse !== null) {
152
+ this.inicioDoEscopo();
153
+ this.escopos.peek()["super"] = true;
154
+ }
155
+ this.inicioDoEscopo();
156
+ this.escopos.peek()["isto"] = true;
157
+ var metodos = stmt.metodos;
158
+ for (var i = 0; i < metodos.length; i++) {
159
+ var declaracao = TipoFuncao.METODO;
160
+ if (metodos[i].nome.lexema === "isto") {
161
+ declaracao = TipoFuncao.CONSTRUTOR;
162
+ }
163
+ this.resolverFuncao(metodos[i].funcao, declaracao);
164
+ }
165
+ this.finalDoEscopo();
166
+ if (stmt.superClasse !== null)
167
+ this.finalDoEscopo();
168
+ this.ClasseAtual = enclosingClass;
169
+ return null;
170
+ };
171
+ Resolver.prototype.visitSuperExpr = function (expr) {
172
+ if (this.ClasseAtual === TipoClasse.NENHUM) {
173
+ this.Delegua.error(expr.palavraChave, "Não pode usar 'super' fora de uma classe.");
174
+ }
175
+ else if (this.ClasseAtual !== TipoClasse.SUBCLASSE) {
176
+ this.Delegua.error(expr.palavraChave, "Não se usa 'super' numa classe sem SuperClasse.");
177
+ }
178
+ this.resolverLocal(expr, expr.palavraChave);
179
+ return null;
180
+ };
181
+ Resolver.prototype.visitGetExpr = function (expr) {
182
+ this.resolver(expr.objeto);
183
+ return null;
184
+ };
185
+ Resolver.prototype.visitExpressionStmt = function (stmt) {
186
+ this.resolver(stmt.expressao);
187
+ return null;
188
+ };
189
+ Resolver.prototype.visitIfStmt = function (stmt) {
190
+ this.resolver(stmt.condicao);
191
+ this.resolver(stmt.thenBranch);
192
+ for (var i = 0; i < stmt.elifBranches.length; i++) {
193
+ this.resolver(stmt.elifBranches[i].condicao);
194
+ this.resolver(stmt.elifBranches[i].branch);
195
+ }
196
+ if (stmt.elseBranch !== null)
197
+ this.resolver(stmt.elseBranch);
198
+ return null;
199
+ };
200
+ Resolver.prototype.visitImportStmt = function (stmt) {
201
+ this.resolver(stmt.caminho);
202
+ };
203
+ Resolver.prototype.visitPrintStmt = function (stmt) {
204
+ this.resolver(stmt.expressao);
205
+ };
206
+ Resolver.prototype.visitReturnStmt = function (stmt) {
207
+ if (this.FuncaoAtual === TipoFuncao.NENHUM) {
208
+ this.Delegua.error(stmt.palavraChave, "Não é possível retornar do código do escopo superior.");
209
+ }
210
+ if (stmt.valor !== null) {
211
+ if (this.FuncaoAtual === TipoFuncao.CONSTRUTOR) {
212
+ this.Delegua.error(stmt.palavraChave, "Não pode retornar o valor do construtor.");
213
+ }
214
+ this.resolver(stmt.valor);
215
+ }
216
+ return null;
217
+ };
218
+ Resolver.prototype.visitSwitchStmt = function (stmt) {
219
+ var enclosingType = this.cicloAtual;
220
+ this.cicloAtual = LoopType.ESCOLHA;
221
+ var branches = stmt.branches;
222
+ var defaultBranch = stmt.defaultBranch;
223
+ for (var i = 0; i < branches.length; i++) {
224
+ this.resolver(branches[i]["stmts"]);
225
+ }
226
+ if (defaultBranch !== null)
227
+ this.resolver(defaultBranch["stmts"]);
228
+ this.cicloAtual = enclosingType;
229
+ };
230
+ Resolver.prototype.visitWhileStmt = function (stmt) {
231
+ this.resolver(stmt.condicao);
232
+ this.resolver(stmt.corpo);
233
+ return null;
234
+ };
235
+ Resolver.prototype.visitForStmt = function (stmt) {
236
+ if (stmt.inicializador !== null) {
237
+ this.resolver(stmt.inicializador);
238
+ }
239
+ if (stmt.condicao !== null) {
240
+ this.resolver(stmt.condicao);
241
+ }
242
+ if (stmt.incrementar !== null) {
243
+ this.resolver(stmt.incrementar);
244
+ }
245
+ var enclosingType = this.cicloAtual;
246
+ this.cicloAtual = LoopType.ENQUANTO;
247
+ this.resolver(stmt.corpo);
248
+ this.cicloAtual = enclosingType;
249
+ return null;
250
+ };
251
+ Resolver.prototype.visitDoStmt = function (stmt) {
252
+ this.resolver(stmt.whileCondition);
253
+ var enclosingType = this.cicloAtual;
254
+ this.cicloAtual = LoopType.FAZER;
255
+ this.resolver(stmt.doBranch);
256
+ this.cicloAtual = enclosingType;
257
+ return null;
258
+ };
259
+ Resolver.prototype.visitBinaryExpr = function (expr) {
260
+ this.resolver(expr.esquerda);
261
+ this.resolver(expr.direita);
262
+ return null;
263
+ };
264
+ Resolver.prototype.visitCallExpr = function (expr) {
265
+ this.resolver(expr.callee);
266
+ var argumentos = expr.argumentos;
267
+ for (var i = 0; i < argumentos.length; i++) {
268
+ this.resolver(argumentos[i]);
269
+ }
270
+ return null;
271
+ };
272
+ Resolver.prototype.visitGroupingExpr = function (expr) {
273
+ this.resolver(expr.expressao);
274
+ return null;
275
+ };
276
+ Resolver.prototype.visitDictionaryExpr = function (expr) {
277
+ for (var i = 0; i < expr.chaves.length; i++) {
278
+ this.resolver(expr.chaves[i]);
279
+ this.resolver(expr.valores[i]);
280
+ }
281
+ return null;
282
+ };
283
+ Resolver.prototype.visitArrayExpr = function (expr) {
284
+ for (var i = 0; i < expr.valores.length; i++) {
285
+ this.resolver(expr.valores[i]);
286
+ }
287
+ return null;
288
+ };
289
+ Resolver.prototype.visitSubscriptExpr = function (expr) {
290
+ this.resolver(expr.callee);
291
+ this.resolver(expr.indice);
292
+ return null;
293
+ };
294
+ Resolver.prototype.visitContinueStmt = function (stmt) {
295
+ return null;
296
+ };
297
+ Resolver.prototype.visitBreakStmt = function (stmt) {
298
+ return null;
299
+ };
300
+ Resolver.prototype.visitAssignsubscriptExpr = function (expr) {
301
+ return null;
302
+ };
303
+ Resolver.prototype.visitLiteralExpr = function (expr) {
304
+ return null;
305
+ };
306
+ Resolver.prototype.visitLogicalExpr = function (expr) {
307
+ this.resolver(expr.esquerda);
308
+ this.resolver(expr.direita);
309
+ return null;
310
+ };
311
+ Resolver.prototype.visitUnaryExpr = function (expr) {
312
+ this.resolver(expr.direita);
313
+ return null;
314
+ };
315
+ Resolver.prototype.visitSetExpr = function (expr) {
316
+ this.resolver(expr.valor);
317
+ this.resolver(expr.objeto);
318
+ return null;
319
+ };
320
+ Resolver.prototype.visitThisExpr = function (expr) {
321
+ if (this.ClasseAtual == TipoClasse.NENHUM) {
322
+ this.Delegua.error(expr.palavraChave, "Não pode usar 'isto' fora da classe.");
323
+ }
324
+ this.resolverLocal(expr, expr.palavraChave);
325
+ return null;
326
+ };
327
+ return Resolver;
328
+ }());
329
+ exports.Resolver = Resolver;
330
+ ;
331
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolvedor/index.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,32 @@
1
- module.exports = {
2
- NEGACAO: "NEGACAO",
3
- DIFERENTE: "DIFERENTE",
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ ADICAO: "ADICAO",
4
5
  BIT_AND: "BIT_AND",
5
6
  BIT_OR: "BIT_OR",
6
7
  BIT_XOR: "BIT_XOR",
7
8
  BIT_NOT: "BIT_NOT",
8
9
  CASO: "CASO",
10
+ CHAVE_DIREITA: "CHAVE_DIREITA",
11
+ CHAVE_ESQUERDA: "CHAVE_ESQUERDA",
9
12
  CLASSE: "CLASSE",
10
- COLON: "COLON",
13
+ COLCHETE_DIREITO: "COLCHETE_DIREITO",
14
+ COLCHETE_ESQUERDO: "COLCHETE_ESQUERDO",
11
15
  COMMA: "COMMA",
12
16
  CONTINUA: "CONTINUA",
17
+ DIFERENTE: "DIFERENTE",
18
+ DIVISAO: "DIVISAO",
19
+ DOIS_PONTOS: "DOIS_PONTOS",
13
20
  DOT: "DOT",
14
21
  E: "E",
15
22
  EM: "EM",
16
23
  ENQUANTO: "ENQUANTO",
17
24
  EOF: "EOF",
18
- IGUAL: "IGUAL",
19
- IGUAL_IGUAL: "IGUAL_IGUAL",
20
25
  ESCOLHA: "ESCOLHA",
21
26
  ESCREVA: "ESCREVA",
27
+ EXPONENCIACAO: "EXPONENCIACAO",
28
+ IGUAL: "IGUAL",
29
+ IGUAL_IGUAL: "IGUAL_IGUAL",
22
30
  FALSO: "FALSO",
23
31
  FAZER: "FAZER",
24
32
  FINALMENTE: "FINALMENTE",
@@ -30,38 +38,32 @@ module.exports = {
30
38
  IDENTIFICADOR: "IDENTIFICADOR",
31
39
  IMPORTAR: "IMPORTAR",
32
40
  ISTO: "ISTO",
33
- CHAVE_ESQUERDA: "CHAVE_ESQUERDA",
34
- PARENTESE_ESQUERDO: "PARENTESE_ESQUERDO",
35
- COLCHETE_ESQUERDO: "COLCHETE_ESQUERDO",
36
41
  MENOR: "MENOR",
37
42
  MENOR_IGUAL: "MENOR_IGUAL",
38
43
  MENOR_MENOR: "MENOR_MENOR",
39
44
  MAIS_IGUAL: "MAIS_IGUAL",
40
- MENOR_IGUAL: "MENOR_IGUAL",
41
- SUBTRACAO: "SUBTRACAO",
42
- MODULUS: "MODULUS",
45
+ MODULO: "MODULO",
46
+ MULTIPLICACAO: "MULTIPLICACAO",
47
+ NEGACAO: "NEGACAO",
43
48
  NULO: "NULO",
44
49
  NUMERO: "NUMERO",
45
50
  OU: "OU",
46
51
  PADRAO: "PADRAO",
47
52
  PARA: "PARA",
53
+ PARENTESE_DIREITO: "PARENTESE_DIREITO",
54
+ PARENTESE_ESQUERDO: "PARENTESE_ESQUERDO",
48
55
  PAUSA: "PAUSA",
49
56
  PEGUE: "PEGUE",
50
- ADICAO: "ADICAO",
57
+ PONTO_E_VIRGULA: "PONTO_E_VIRGULA",
51
58
  RETORNA: "RETORNA",
52
- PARENTESE_DIREITO: "PARENTESE_DIREITO",
53
- CHAVE_DIREITA: "CHAVE_DIREITA",
54
- COLCHETE_DIREITO: "COLCHETE_DIREITO",
55
- SEMICOLON: "SEMICOLON",
56
- SLASH: "SLASH",
57
- STAR: "STAR",
58
- STAR_STAR: "STAR_STAR",
59
- TEXTO: "TEXTO",
59
+ SUBTRACAO: "SUBTRACAO",
60
60
  SE: "SE",
61
61
  SENAO: "SENAO",
62
62
  SENAOSE: "SENAOSE",
63
63
  SUPER: "SUPER",
64
- TENTE: "TENTE",
64
+ TENTE: "TENTE",
65
+ TEXTO: "TEXTO",
65
66
  VAR: "VAR",
66
67
  VERDADEIRO: "VERDADEIRO"
67
- };
68
+ };
69
+ //# sourceMappingURL=tiposDeSimbolos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiposDeSimbolos.js","sourceRoot":"","sources":["../../src/tiposDeSimbolos.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACX,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,KAAK;IACV,CAAC,EAAE,GAAG;IACN,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,eAAe;IAC9B,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,iBAAiB;IAClC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,UAAU,EAAE,YAAY;CAC3B,CAAC"}
package/src/web.js CHANGED
@@ -1,70 +1,66 @@
1
- const Lexer = require("./lexer.js");
2
- const Parser = require("./parser.js");
3
- const Resolver = require("./resolver.js");
4
- const Interpretador = require("./interpretador.js");
5
- const tokenTypes = require("./tokenTypes.js");
6
-
7
- module.exports.Delegua = class Delegua {
8
- constructor(nomeArquivo) {
9
- this.nomeArquivo = nomeArquivo;
10
-
11
- this.teveErro = false;
12
- this.teveErroEmTempoDeExecucao = false;
13
- }
14
-
15
- runBlock(codigo) {
16
- const interpretador = new Interpretador(this, process.cwd());
17
-
18
- const lexer = new Lexer(codigo, this);
19
- const simbolos = lexer.scan();
20
-
21
- if (this.teveErro === true) return;
22
-
23
- const analisar = new Parser(simbolos, this);
24
- const declaracoes = analisar.analisar();
25
-
26
- if (this.teveErro === true) return;
27
-
28
- const resolver = new Resolver(interpretador, this);
29
- resolver.resolve(declaracoes);
30
-
31
- if (this.teveErro === true) return;
32
-
33
- interpretador.interpretar(declaracoes);
34
- }
35
-
36
- reportar(linha, onde, mensagem) {
37
- if (this.nomeArquivo)
38
- console.error(
39
- `[Arquivo: ${this.nomeArquivo}] [Linha: ${linha}] Erro${onde}: ${mensagem}`
40
- );
41
- else console.error(`[Linha: ${linha}] Erro${onde}: ${mensagem}`);
42
- this.teveErro = true;
43
- }
44
-
45
- erro(simbolo, mensagemDeErro) {
46
- if (simbolo.tipo === tokenTypes.EOF) {
47
- this.reportar(simbolo.line, " no final", mensagemDeErro);
48
- } else {
49
- this.reportar(simbolo.line, ` no '${simbolo.lexeme}'`, mensagemDeErro);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Delegua = void 0;
4
+ var lexador_1 = require("./lexador");
5
+ var avaliador_sintatico_1 = require("./avaliador-sintatico");
6
+ var resolvedor_1 = require("./resolvedor");
7
+ var interpretador_1 = require("./interpretador");
8
+ var tiposDeSimbolos_1 = require("./tiposDeSimbolos");
9
+ var Delegua = /** @class */ (function () {
10
+ function Delegua(nomeArquivo) {
11
+ this.nomeArquivo = nomeArquivo;
12
+ this.teveErro = false;
13
+ this.teveErroEmTempoDeExecucao = false;
50
14
  }
51
- }
52
-
53
- lexerError(linha, caractere, mensagem) {
54
- this.reportar(linha, ` no '${caractere}'`, mensagem);
55
- }
56
-
57
- erroEmTempoDeExecucao(erro) {
58
- const linha = erro.simbolo.linha;
59
- if (erro.simbolo && linha) {
15
+ Delegua.prototype.runBlock = function (codigo) {
16
+ var interpretador = new interpretador_1.Interpretador(this, process.cwd());
17
+ var lexer = new lexador_1.Lexer(this);
18
+ var simbolos = lexer.scan(codigo);
19
+ if (this.teveErro === true)
20
+ return;
21
+ var analisar = new avaliador_sintatico_1.Parser(this);
22
+ var declaracoes = analisar.analisar(simbolos);
23
+ if (this.teveErro === true)
24
+ return;
25
+ var resolver = new resolvedor_1.Resolver(this, interpretador);
26
+ resolver.resolver(declaracoes);
27
+ if (this.teveErro === true)
28
+ return;
29
+ interpretador.interpretar(declaracoes);
30
+ };
31
+ Delegua.prototype.reportar = function (linha, onde, mensagem) {
60
32
  if (this.nomeArquivo)
61
- console.error(
62
- `Erro: [Arquivo: ${this.nomeArquivo}] [Linha: ${erro.simbolo.linha}] ${erro.mensagem}`
63
- );
64
- else console.error(`Erro: [Linha: ${erro.simbolo.linha}] ${erro.mensagem}`);
65
- } else {
66
- console.error(`Erro: ${erro.mensagem}`);
67
- }
68
- this.teveErroEmTempoDeExecucao = true;
69
- }
70
- };
33
+ console.error("[Arquivo: ".concat(this.nomeArquivo, "] [Linha: ").concat(linha, "] Erro").concat(onde, ": ").concat(mensagem));
34
+ else
35
+ console.error("[Linha: ".concat(linha, "] Erro").concat(onde, ": ").concat(mensagem));
36
+ this.teveErro = true;
37
+ };
38
+ Delegua.prototype.erro = function (simbolo, mensagemDeErro) {
39
+ if (simbolo.tipo === tiposDeSimbolos_1.default.EOF) {
40
+ this.reportar(simbolo.line, " no final", mensagemDeErro);
41
+ }
42
+ else {
43
+ this.reportar(simbolo.line, " no '".concat(simbolo.lexema, "'"), mensagemDeErro);
44
+ }
45
+ };
46
+ Delegua.prototype.lexerError = function (linha, caractere, mensagem) {
47
+ this.reportar(linha, " no '".concat(caractere, "'"), mensagem);
48
+ };
49
+ Delegua.prototype.erroEmTempoDeExecucao = function (erro) {
50
+ var linha = erro.simbolo.linha;
51
+ if (erro.simbolo && linha) {
52
+ if (this.nomeArquivo)
53
+ console.error("Erro: [Arquivo: ".concat(this.nomeArquivo, "] [Linha: ").concat(erro.simbolo.linha, "] ").concat(erro.mensagem));
54
+ else
55
+ console.error("Erro: [Linha: ".concat(erro.simbolo.linha, "] ").concat(erro.mensagem));
56
+ }
57
+ else {
58
+ console.error("Erro: ".concat(erro.mensagem));
59
+ }
60
+ this.teveErroEmTempoDeExecucao = true;
61
+ };
62
+ return Delegua;
63
+ }());
64
+ exports.Delegua = Delegua;
65
+ ;
66
+ //# sourceMappingURL=web.js.map
package/src/web.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
File without changes
@@ -1,20 +0,0 @@
1
- name: Commit e PR - Principal
2
-
3
- on:
4
- pull_request:
5
- branches: [ principal ]
6
-
7
- jobs:
8
- teste_desenvolvimento:
9
- runs-on: ubuntu-latest
10
-
11
- steps:
12
- - uses: actions/checkout@v2
13
- - uses: actions/setup-node@v2-beta
14
- with:
15
- node-version: '16'
16
-
17
- - name: Testes da Linguagem
18
- run: |
19
- sudo chmod +x ./bin/delegua
20
- sudo npm run testes
package/.release-it.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "git": {
3
- "commitMessage": "Lançamento da versão v${version}"
4
- },
5
- "github": {
6
- "release": true
7
- }
8
- }
@@ -1,29 +0,0 @@
1
- {
2
- // Use IntelliSense to learn about possible attributes.
3
- // Hover to view descriptions of existing attributes.
4
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
- "version": "0.2.0",
6
- "configurations": [
7
- {
8
- "type": "node",
9
- "request": "launch",
10
- "name": "REPL",
11
- "skipFiles": [
12
- "<node_internals>/**"
13
- ],
14
- "console": "integratedTerminal",
15
- "program": "${workspaceFolder}\\indice.js"
16
- },
17
- {
18
- "type": "node",
19
- "request": "launch",
20
- "name": "Testes",
21
- "skipFiles": [
22
- "<node_internals>/**"
23
- ],
24
- "args": ["${workspaceFolder}\\tests\\tests.egua"],
25
- "console": "integratedTerminal",
26
- "program": "${workspaceFolder}\\indice.js"
27
- }
28
- ]
29
- }
@@ -1,3 +0,0 @@
1
- {
2
- "liveServer.settings.port": 5501
3
- }