@designliquido/delegua 0.32.1 → 0.33.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 (122) hide show
  1. package/bin/package.json +2 -2
  2. package/fontes/analisador-semantico/analisador-semantico-base.d.ts +65 -0
  3. package/fontes/analisador-semantico/analisador-semantico-base.js +168 -0
  4. package/fontes/analisador-semantico/analisador-semantico-base.js.map +1 -0
  5. package/fontes/analisador-semantico/analisador-semantico.d.ts +5 -43
  6. package/fontes/analisador-semantico/analisador-semantico.js +22 -130
  7. package/fontes/analisador-semantico/analisador-semantico.js.map +1 -1
  8. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.d.ts +6 -51
  9. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js +3 -137
  10. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js.map +1 -1
  11. package/fontes/analisador-semantico/dialetos/analisador-semantico-mapler.d.ts +6 -53
  12. package/fontes/analisador-semantico/dialetos/analisador-semantico-mapler.js +10 -145
  13. package/fontes/analisador-semantico/dialetos/analisador-semantico-mapler.js.map +1 -1
  14. package/fontes/analisador-semantico/dialetos/analisador-semantico-visualg.d.ts +11 -53
  15. package/fontes/analisador-semantico/dialetos/analisador-semantico-visualg.js +22 -141
  16. package/fontes/analisador-semantico/dialetos/analisador-semantico-visualg.js.map +1 -1
  17. package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +2 -1
  18. package/fontes/avaliador-sintatico/avaliador-sintatico.js +27 -5
  19. package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
  20. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +1 -1
  21. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  22. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js.map +1 -1
  23. package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js +4 -2
  24. package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js.map +1 -1
  25. package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.d.ts +0 -7
  26. package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.js +10 -15
  27. package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.js.map +1 -1
  28. package/fontes/bibliotecas/dialetos/egua-classico/matematica.js +12 -4
  29. package/fontes/bibliotecas/dialetos/egua-classico/matematica.js.map +1 -1
  30. package/fontes/bibliotecas/primitivas-dicionario.js.map +1 -1
  31. package/fontes/bibliotecas/primitivas-numero.js.map +1 -1
  32. package/fontes/construtos/acesso-elemento-matriz.js.map +1 -1
  33. package/fontes/construtos/atribuicao-por-indices-matriz.js.map +1 -1
  34. package/fontes/construtos/decorador.js.map +1 -1
  35. package/fontes/construtos/qual-tipo.js.map +1 -1
  36. package/fontes/declaracoes/aleatorio.d.ts +3 -3
  37. package/fontes/declaracoes/aleatorio.js.map +1 -1
  38. package/fontes/declaracoes/cabecalho-programa.d.ts +2 -2
  39. package/fontes/declaracoes/classe.js.map +1 -1
  40. package/fontes/declaracoes/funcao.js.map +1 -1
  41. package/fontes/declaracoes/index.d.ts +3 -0
  42. package/fontes/declaracoes/index.js +3 -0
  43. package/fontes/declaracoes/index.js.map +1 -1
  44. package/fontes/declaracoes/inicio-algoritmo.d.ts +6 -0
  45. package/fontes/declaracoes/inicio-algoritmo.js +14 -0
  46. package/fontes/declaracoes/inicio-algoritmo.js.map +1 -0
  47. package/fontes/declaracoes/propriedade-classe.js.map +1 -1
  48. package/fontes/declaracoes/tendo-como.d.ts +16 -0
  49. package/fontes/declaracoes/tendo-como.js +22 -0
  50. package/fontes/declaracoes/tendo-como.js.map +1 -0
  51. package/fontes/estruturas/delegua-classe.js.map +1 -1
  52. package/fontes/estruturas/delegua-funcao.js +24 -1
  53. package/fontes/estruturas/delegua-funcao.js.map +1 -1
  54. package/fontes/estruturas/objeto-delegua-classe.d.ts +1 -1
  55. package/fontes/estruturas/objeto-delegua-classe.js +1 -1
  56. package/fontes/estruturas/objeto-delegua-classe.js.map +1 -1
  57. package/fontes/formatadores/formatador-delegua.d.ts +4 -1
  58. package/fontes/formatadores/formatador-delegua.js +13 -1
  59. package/fontes/formatadores/formatador-delegua.js.map +1 -1
  60. package/fontes/formatadores/formatador-portugol-studio.d.ts +7 -4
  61. package/fontes/formatadores/formatador-portugol-studio.js +55 -49
  62. package/fontes/formatadores/formatador-portugol-studio.js.map +1 -1
  63. package/fontes/formatadores/formatador-visualg.d.ts +7 -5
  64. package/fontes/formatadores/formatador-visualg.js +26 -21
  65. package/fontes/formatadores/formatador-visualg.js.map +1 -1
  66. package/fontes/interfaces/pilha-escopos-execucao-interface.d.ts +2 -2
  67. package/fontes/interfaces/resolvedor-interface.d.ts +1 -1
  68. package/fontes/interfaces/variavel-hipotetica-interface.d.ts +1 -1
  69. package/fontes/interfaces/visitante-comum-interface.d.ts +36 -39
  70. package/fontes/interpretador/dialetos/birl/interpretador-birl-com-depuracao.js.map +1 -1
  71. package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +3 -3
  72. package/fontes/interpretador/dialetos/birl/interpretador-birl.js +4 -13
  73. package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
  74. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +13 -10
  75. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +15 -8
  76. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  77. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +12 -9
  78. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +16 -10
  79. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  80. package/fontes/interpretador/dialetos/mapler/comum.js +2 -1
  81. package/fontes/interpretador/dialetos/mapler/comum.js.map +1 -1
  82. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +25 -22
  83. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +9 -6
  84. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  85. package/fontes/interpretador/dialetos/potigol/inferenciador.d.ts +1 -1
  86. package/fontes/interpretador/dialetos/potigol/interpretador-potigol.js.map +1 -1
  87. package/fontes/interpretador/dialetos/visualg/comum.d.ts +2 -0
  88. package/fontes/interpretador/dialetos/visualg/comum.js +13 -6
  89. package/fontes/interpretador/dialetos/visualg/comum.js.map +1 -1
  90. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.d.ts +1 -0
  91. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js +4 -1
  92. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js.map +1 -1
  93. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.d.ts +1 -0
  94. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js +3 -0
  95. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
  96. package/fontes/interpretador/inferenciador.d.ts +1 -1
  97. package/fontes/interpretador/interpretador-base.d.ts +9 -6
  98. package/fontes/interpretador/interpretador-base.js +57 -39
  99. package/fontes/interpretador/interpretador-base.js.map +1 -1
  100. package/fontes/interpretador/pilha-escopos-execucao.d.ts +2 -2
  101. package/fontes/interpretador/pilha-escopos-execucao.js +52 -18
  102. package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
  103. package/fontes/lexador/palavras-reservadas.d.ts +2 -0
  104. package/fontes/lexador/palavras-reservadas.js +2 -0
  105. package/fontes/lexador/palavras-reservadas.js.map +1 -1
  106. package/fontes/tipos-de-dados/delegua.d.ts +4 -0
  107. package/fontes/tipos-de-dados/delegua.js +5 -1
  108. package/fontes/tipos-de-dados/delegua.js.map +1 -1
  109. package/fontes/tipos-de-dados/listas-delegua.js +1 -1
  110. package/fontes/tipos-de-dados/listas-primitivos.js +1 -1
  111. package/fontes/tipos-de-simbolos/delegua.d.ts +2 -0
  112. package/fontes/tipos-de-simbolos/delegua.js +2 -0
  113. package/fontes/tipos-de-simbolos/delegua.js.map +1 -1
  114. package/fontes/tradutores/python/python3-lexer.js +1 -1
  115. package/fontes/tradutores/python/python3-lexer.js.map +1 -1
  116. package/fontes/tradutores/tradutor-assembly-x64.js +13 -13
  117. package/fontes/tradutores/tradutor-python.js +5 -5
  118. package/fontes/tradutores/tradutor-python.js.map +1 -1
  119. package/fontes/tradutores/tradutor-reverso-visualg.d.ts +1 -0
  120. package/fontes/tradutores/tradutor-reverso-visualg.js +2 -1
  121. package/fontes/tradutores/tradutor-reverso-visualg.js.map +1 -1
  122. package/package.json +2 -2
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designliquido/delegua",
3
- "version": "0.32.0",
3
+ "version": "0.32.2",
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": {
@@ -14,7 +14,7 @@
14
14
  "observar-testes-unitarios": "jest --watchAll",
15
15
  "observar-testes-unitarios-com-coverage": "jest --coverage --watchAll",
16
16
  "lint": "eslint . --ext .ts",
17
- "prettier-format": "prettier --config .prettierrc --write fontes/**/*.ts"
17
+ "deixar-codigo-bonito": "prettier --config .prettierrc --write fontes/**/*.ts"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",
@@ -0,0 +1,65 @@
1
+ import { Atribuir, AcessoIndiceVariavel, AcessoElementoMatriz, AcessoMetodoOuPropriedade, Agrupamento, AtribuicaoPorIndice, AtribuicaoPorIndicesMatriz, Binario, Chamada, DefinirValor, FuncaoConstruto, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, Isto, Literal, Logico, Super, Tupla, TipoDe, Unario, Vetor } from '../construtos';
2
+ import { Declaracao, TendoComo, InicioAlgoritmo, Aleatorio, CabecalhoPrograma, Classe, Const, ConstMultiplo, Expressao, FuncaoDeclaracao, Enquanto, Escolha, Escreva, Fazer, Importar, Para, ParaCada, Se, Tente, Var, VarMultiplo, Bloco, Continua, EscrevaMesmaLinha, Falhar, Leia, LeiaMultiplo, Retorna, Sustar } from '../declaracoes';
3
+ import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface';
4
+ import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
5
+ import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
6
+ /**
7
+ * Essa classe só existe para eliminar redundância entre todos os analisadores
8
+ * sintáticos. Por padrão, quando um método não é implementado, ao invés de dar erro,
9
+ * simplesmente passa por ele (`return Promise.resolve()`).
10
+ */
11
+ export declare abstract class AnalisadorSemanticoBase implements AnalisadorSemanticoInterface {
12
+ abstract analisar(declaracoes: Declaracao[]): RetornoAnalisadorSemantico;
13
+ visitarDeclaracaoTendoComo(declaracao: TendoComo): Promise<any>;
14
+ visitarDeclaracaoInicioAlgoritmo(declaracao: InicioAlgoritmo): Promise<any>;
15
+ visitarDeclaracaoAleatorio(declaracao: Aleatorio): Promise<any>;
16
+ visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any>;
17
+ visitarDeclaracaoClasse(declaracao: Classe): Promise<any>;
18
+ visitarDeclaracaoConst(declaracao: Const): Promise<any>;
19
+ visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any>;
20
+ visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>;
21
+ visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>;
22
+ visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
23
+ visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<any>;
24
+ visitarDeclaracaoEscolha(declaracao: Escolha): Promise<any>;
25
+ visitarDeclaracaoEscreva(declaracao: Escreva): Promise<any>;
26
+ visitarDeclaracaoFazer(declaracao: Fazer): Promise<any>;
27
+ visitarDeclaracaoImportar(declaracao: Importar): Promise<any>;
28
+ visitarDeclaracaoPara(declaracao: Para): Promise<any>;
29
+ visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
30
+ visitarDeclaracaoSe(declaracao: Se): Promise<any>;
31
+ visitarDeclaracaoTente(declaracao: Tente): Promise<any>;
32
+ visitarDeclaracaoVar(declaracao: Var): Promise<any>;
33
+ visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<any>;
34
+ visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>;
35
+ visitarExpressaoAcessoElementoMatriz(expressao: AcessoElementoMatriz): Promise<any>;
36
+ visitarExpressaoAcessoMetodo(expressao: AcessoMetodoOuPropriedade): Promise<any>;
37
+ visitarExpressaoAgrupamento(expressao: Agrupamento): Promise<any>;
38
+ visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<any>;
39
+ visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: AtribuicaoPorIndicesMatriz): Promise<any>;
40
+ visitarExpressaoBinaria(expressao: Binario): Promise<any>;
41
+ visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
42
+ visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra;
43
+ visitarExpressaoDeChamada(expressao: Chamada): Promise<any>;
44
+ visitarExpressaoDefinirValor(expressao: DefinirValor): Promise<any>;
45
+ visitarExpressaoDeleguaFuncao(expressao: FuncaoConstruto): Promise<any>;
46
+ visitarExpressaoDeVariavel(expressao: Var): Promise<any>;
47
+ visitarExpressaoDicionario(expressao: Dicionario): Promise<any>;
48
+ visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<RegExp>;
49
+ visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<any>;
50
+ visitarExpressaoFalhar(expressao: Falhar): Promise<any>;
51
+ visitarExpressaoFimPara(declaracao: FimPara): Promise<any>;
52
+ visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<any>;
53
+ visitarExpressaoIsto(expressao: Isto): Promise<any>;
54
+ visitarExpressaoLeia(expressao: Leia): Promise<any>;
55
+ visitarExpressaoLeiaMultiplo(expressao: LeiaMultiplo): Promise<any>;
56
+ visitarExpressaoLiteral(expressao: Literal): Promise<any>;
57
+ visitarExpressaoLogica(expressao: Logico): Promise<any>;
58
+ visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
59
+ visitarExpressaoSuper(expressao: Super): Promise<any>;
60
+ visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
61
+ visitarExpressaoTupla(expressao: Tupla): Promise<any>;
62
+ visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
63
+ visitarExpressaoUnaria(expressao: Unario): Promise<any>;
64
+ visitarExpressaoVetor(expressao: Vetor): Promise<any>;
65
+ }
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalisadorSemanticoBase = void 0;
4
+ /**
5
+ * Essa classe só existe para eliminar redundância entre todos os analisadores
6
+ * sintáticos. Por padrão, quando um método não é implementado, ao invés de dar erro,
7
+ * simplesmente passa por ele (`return Promise.resolve()`).
8
+ */
9
+ class AnalisadorSemanticoBase {
10
+ visitarDeclaracaoTendoComo(declaracao) {
11
+ return Promise.resolve();
12
+ }
13
+ visitarDeclaracaoInicioAlgoritmo(declaracao) {
14
+ return Promise.resolve();
15
+ }
16
+ visitarDeclaracaoAleatorio(declaracao) {
17
+ return Promise.resolve();
18
+ }
19
+ visitarDeclaracaoCabecalhoPrograma(declaracao) {
20
+ return Promise.resolve();
21
+ }
22
+ visitarDeclaracaoClasse(declaracao) {
23
+ return Promise.resolve();
24
+ }
25
+ visitarDeclaracaoConst(declaracao) {
26
+ return Promise.resolve();
27
+ }
28
+ visitarDeclaracaoConstMultiplo(declaracao) {
29
+ return Promise.resolve();
30
+ }
31
+ visitarExpressaoDeAtribuicao(expressao) {
32
+ return Promise.resolve();
33
+ }
34
+ visitarDeclaracaoDeExpressao(declaracao) {
35
+ return Promise.resolve();
36
+ }
37
+ visitarDeclaracaoDefinicaoFuncao(declaracao) {
38
+ // Nada acontece.
39
+ }
40
+ visitarDeclaracaoEnquanto(declaracao) {
41
+ return Promise.resolve();
42
+ }
43
+ visitarDeclaracaoEscolha(declaracao) {
44
+ return Promise.resolve();
45
+ }
46
+ visitarDeclaracaoEscreva(declaracao) {
47
+ return Promise.resolve();
48
+ }
49
+ visitarDeclaracaoFazer(declaracao) {
50
+ return Promise.resolve();
51
+ }
52
+ visitarDeclaracaoImportar(declaracao) {
53
+ return Promise.resolve();
54
+ }
55
+ visitarDeclaracaoPara(declaracao) {
56
+ return Promise.resolve();
57
+ }
58
+ visitarDeclaracaoParaCada(declaracao) {
59
+ return Promise.resolve();
60
+ }
61
+ visitarDeclaracaoSe(declaracao) {
62
+ return Promise.resolve();
63
+ }
64
+ visitarDeclaracaoTente(declaracao) {
65
+ return Promise.resolve();
66
+ }
67
+ visitarDeclaracaoVar(declaracao) {
68
+ return Promise.resolve();
69
+ }
70
+ visitarDeclaracaoVarMultiplo(declaracao) {
71
+ return Promise.resolve();
72
+ }
73
+ visitarExpressaoAcessoIndiceVariavel(expressao) {
74
+ return Promise.resolve();
75
+ }
76
+ visitarExpressaoAcessoElementoMatriz(expressao) {
77
+ return Promise.resolve();
78
+ }
79
+ visitarExpressaoAcessoMetodo(expressao) {
80
+ return Promise.resolve();
81
+ }
82
+ visitarExpressaoAgrupamento(expressao) {
83
+ return Promise.resolve();
84
+ }
85
+ visitarExpressaoAtribuicaoPorIndice(expressao) {
86
+ return Promise.resolve();
87
+ }
88
+ visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
89
+ return Promise.resolve();
90
+ }
91
+ visitarExpressaoBinaria(expressao) {
92
+ return Promise.resolve();
93
+ }
94
+ visitarExpressaoBloco(declaracao) {
95
+ return Promise.resolve();
96
+ }
97
+ visitarExpressaoContinua(declaracao) {
98
+ return Promise.resolve();
99
+ }
100
+ visitarExpressaoDeChamada(expressao) {
101
+ return Promise.resolve();
102
+ }
103
+ visitarExpressaoDefinirValor(expressao) {
104
+ return Promise.resolve();
105
+ }
106
+ visitarExpressaoDeleguaFuncao(expressao) {
107
+ return Promise.resolve();
108
+ }
109
+ visitarExpressaoDeVariavel(expressao) {
110
+ return Promise.resolve();
111
+ }
112
+ visitarExpressaoDicionario(expressao) {
113
+ return Promise.resolve();
114
+ }
115
+ visitarExpressaoExpressaoRegular(expressao) {
116
+ return;
117
+ }
118
+ visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
119
+ return Promise.resolve();
120
+ }
121
+ visitarExpressaoFalhar(expressao) {
122
+ return Promise.resolve();
123
+ }
124
+ visitarExpressaoFimPara(declaracao) {
125
+ return Promise.resolve();
126
+ }
127
+ visitarExpressaoFormatacaoEscrita(declaracao) {
128
+ return Promise.resolve();
129
+ }
130
+ visitarExpressaoIsto(expressao) {
131
+ return Promise.resolve();
132
+ }
133
+ visitarExpressaoLeia(expressao) {
134
+ return Promise.resolve();
135
+ }
136
+ visitarExpressaoLeiaMultiplo(expressao) {
137
+ return Promise.resolve();
138
+ }
139
+ visitarExpressaoLiteral(expressao) {
140
+ return Promise.resolve();
141
+ }
142
+ visitarExpressaoLogica(expressao) {
143
+ return Promise.resolve();
144
+ }
145
+ visitarExpressaoRetornar(declaracao) {
146
+ return;
147
+ }
148
+ visitarExpressaoSuper(expressao) {
149
+ return Promise.resolve();
150
+ }
151
+ visitarExpressaoSustar(declaracao) {
152
+ return Promise.resolve();
153
+ }
154
+ visitarExpressaoTupla(expressao) {
155
+ return Promise.resolve();
156
+ }
157
+ visitarExpressaoTipoDe(expressao) {
158
+ return Promise.resolve();
159
+ }
160
+ visitarExpressaoUnaria(expressao) {
161
+ return Promise.resolve();
162
+ }
163
+ visitarExpressaoVetor(expressao) {
164
+ return Promise.resolve();
165
+ }
166
+ }
167
+ exports.AnalisadorSemanticoBase = AnalisadorSemanticoBase;
168
+ //# sourceMappingURL=analisador-semantico-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analisador-semantico-base.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/analisador-semantico-base.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { Atribuir, Chamada, ExpressaoRegular, FimPara, FormatacaoEscrita, Literal, Super, TipoDe, Tupla } from '../construtos';
2
- import { Aleatorio, Bloco, CabecalhoPrograma, Classe, Const, ConstMultiplo, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Falhar, Fazer, FuncaoDeclaracao, Importar, Leia, LeiaMultiplo, Para, ParaCada, Retorna, Se, Sustar, Tente, Var, VarMultiplo } from '../declaracoes';
1
+ import { Atribuir, Chamada, TipoDe } from '../construtos';
2
+ import { Const, Declaracao, Enquanto, Escolha, Escreva, Expressao, Falhar, FuncaoDeclaracao, Retorna, Var } from '../declaracoes';
3
3
  import { SimboloInterface } from '../interfaces';
4
- import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface';
5
4
  import { DiagnosticoAnalisadorSemantico } from '../interfaces/erros';
6
5
  import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
7
6
  import { TiposDadosInterface } from '../interfaces/tipos-dados-interface';
8
- import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
7
+ import { RetornoQuebra } from '../quebras';
8
+ import { AnalisadorSemanticoBase } from './analisador-semantico-base';
9
9
  import { PilhaVariaveis } from './pilha-variaveis';
10
10
  interface VariavelHipoteticaInterface {
11
11
  tipo: TiposDadosInterface;
@@ -16,7 +16,7 @@ interface VariavelHipoteticaInterface {
16
16
  interface FuncaoHipoteticaInterface {
17
17
  valor: any;
18
18
  }
19
- export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface {
19
+ export declare class AnalisadorSemantico extends AnalisadorSemanticoBase {
20
20
  pilhaVariaveis: PilhaVariaveis;
21
21
  variaveis: {
22
22
  [nomeVariavel: string]: VariavelHipoteticaInterface;
@@ -27,12 +27,6 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
27
27
  atual: number;
28
28
  diagnosticos: DiagnosticoAnalisadorSemantico[];
29
29
  constructor();
30
- visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any>;
31
- visitarExpressaoTupla(expressao: Tupla): Promise<any>;
32
- visitarDeclaracaoAleatorio(declaracao: Aleatorio): Promise<any>;
33
- visitarExpressaoAcessoElementoMatriz(expressao: any): Promise<void>;
34
- visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: any): Promise<any>;
35
- visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<any>;
36
30
  erro(simbolo: SimboloInterface, mensagem: string): void;
37
31
  aviso(simbolo: SimboloInterface, mensagem: string): void;
38
32
  verificarTipoAtribuido(declaracao: Var | Const): void;
@@ -40,25 +34,10 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
40
34
  private verificarTipoDe;
41
35
  visitarExpressaoFalhar(expressao: Falhar): Promise<any>;
42
36
  private verificarFalhar;
43
- visitarExpressaoLiteral(expressao: Literal): Promise<any>;
44
- visitarExpressaoAgrupamento(expressao: any): Promise<any>;
45
- visitarExpressaoUnaria(expressao: any): Promise<void>;
46
- visitarExpressaoBinaria(expressao: any): Promise<void>;
47
37
  visitarExpressaoDeChamada(expressao: Chamada): Promise<void>;
48
38
  visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<void>;
49
- visitarExpressaoDeVariavel(expressao: any): Promise<void>;
50
39
  visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>;
51
- visitarExpressaoLeia(expressao: Leia): Promise<void>;
52
- visitarExpressaoLeiaMultiplo(expressao: LeiaMultiplo): Promise<void>;
53
- visitarExpressaoLogica(expressao: any): Promise<void>;
54
- visitarDeclaracaoPara(declaracao: Para): Promise<any>;
55
- visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
56
- visitarDeclaracaoSe(declaracao: Se): Promise<void>;
57
- visitarExpressaoFimPara(declaracao: FimPara): Promise<void>;
58
- visitarDeclaracaoFazer(declaracao: Fazer): Promise<void>;
59
- visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<void>;
60
40
  visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>;
61
- visitarDeclaracaoTente(declaracao: Tente): Promise<void>;
62
41
  visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<void>;
63
42
  private verificarCondicao;
64
43
  private verificarVariavelBinaria;
@@ -69,29 +48,12 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
69
48
  private verificarLogico;
70
49
  private verificarChamada;
71
50
  private verificarLadoLogico;
72
- visitarDeclaracaoImportar(declaracao: Importar): Promise<void>;
73
51
  visitarDeclaracaoEscreva(declaracao: Escreva): Promise<void>;
74
- visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<void>;
75
- visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
76
52
  visitarDeclaracaoConst(declaracao: Const): Promise<any>;
77
53
  virificarTipoDeclaracaoConst(declaracao: Const): Promise<any>;
78
- visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any>;
79
54
  visitarDeclaracaoVar(declaracao: Var): Promise<any>;
80
- visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<any>;
81
- visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra;
82
- visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
83
55
  visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
84
- visitarExpressaoDeleguaFuncao(expressao: any): Promise<void>;
85
- visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
86
- visitarExpressaoAcessoIndiceVariavel(expressao: any): Promise<void>;
87
- visitarExpressaoDefinirValor(expressao: any): Promise<void>;
88
56
  visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<void>;
89
- visitarDeclaracaoClasse(declaracao: Classe): Promise<void>;
90
- visitarExpressaoAcessoMetodo(expressao: any): Promise<void>;
91
- visitarExpressaoIsto(expressao: any): Promise<void>;
92
- visitarExpressaoDicionario(expressao: any): Promise<void>;
93
- visitarExpressaoVetor(expressao: any): Promise<void>;
94
- visitarExpressaoSuper(expressao: Super): Promise<void>;
95
57
  analisar(declaracoes: Declaracao[]): RetornoAnalisadorSemantico;
96
58
  }
97
59
  export {};
@@ -4,40 +4,24 @@ exports.AnalisadorSemantico = void 0;
4
4
  const construtos_1 = require("../construtos");
5
5
  const declaracoes_1 = require("../declaracoes");
6
6
  const erros_1 = require("../interfaces/erros");
7
+ const analisador_semantico_base_1 = require("./analisador-semantico-base");
7
8
  const pilha_variaveis_1 = require("./pilha-variaveis");
8
- class AnalisadorSemantico {
9
+ class AnalisadorSemantico extends analisador_semantico_base_1.AnalisadorSemanticoBase {
9
10
  constructor() {
11
+ super();
10
12
  this.pilhaVariaveis = new pilha_variaveis_1.PilhaVariaveis();
11
13
  this.variaveis = {};
12
14
  this.funcoes = {};
13
15
  this.atual = 0;
14
16
  this.diagnosticos = [];
15
17
  }
16
- visitarDeclaracaoCabecalhoPrograma(declaracao) {
17
- return Promise.resolve();
18
- }
19
- visitarExpressaoTupla(expressao) {
20
- return Promise.resolve();
21
- }
22
- visitarDeclaracaoAleatorio(declaracao) {
23
- return Promise.resolve();
24
- }
25
- visitarExpressaoAcessoElementoMatriz(expressao) {
26
- return Promise.resolve();
27
- }
28
- visitarExpressaoAtribuicaoPorIndicesMatriz(expressao) {
29
- return Promise.resolve();
30
- }
31
- visitarExpressaoExpressaoRegular(expressao) {
32
- return Promise.resolve();
33
- }
34
18
  erro(simbolo, mensagem) {
35
19
  this.diagnosticos.push({
36
20
  simbolo: simbolo,
37
21
  mensagem: mensagem,
38
22
  hashArquivo: simbolo.hashArquivo,
39
23
  linha: simbolo.linha,
40
- severidade: erros_1.DiagnosticoSeveridade.ERRO
24
+ severidade: erros_1.DiagnosticoSeveridade.ERRO,
41
25
  });
42
26
  }
43
27
  aviso(simbolo, mensagem) {
@@ -46,7 +30,7 @@ class AnalisadorSemantico {
46
30
  mensagem: mensagem,
47
31
  hashArquivo: simbolo.hashArquivo,
48
32
  linha: simbolo.linha,
49
- severidade: erros_1.DiagnosticoSeveridade.AVISO
33
+ severidade: erros_1.DiagnosticoSeveridade.AVISO,
50
34
  });
51
35
  }
52
36
  verificarTipoAtribuido(declaracao) {
@@ -55,13 +39,13 @@ class AnalisadorSemantico {
55
39
  if (declaracao.inicializador instanceof construtos_1.Vetor) {
56
40
  const vetor = declaracao.inicializador;
57
41
  if (declaracao.tipo === 'inteiro[]') {
58
- const v = vetor.valores.find(v => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'number');
42
+ const v = vetor.valores.find((v) => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'number');
59
43
  if (v) {
60
44
  this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de 'inteiros' ou 'real'.`);
61
45
  }
62
46
  }
63
47
  if (declaracao.tipo === 'texto[]') {
64
- const v = vetor.valores.find(v => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'string');
48
+ const v = vetor.valores.find((v) => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'string');
65
49
  if (v) {
66
50
  this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de 'texto'.`);
67
51
  }
@@ -123,18 +107,6 @@ class AnalisadorSemantico {
123
107
  }
124
108
  return Promise.resolve();
125
109
  }
126
- visitarExpressaoLiteral(expressao) {
127
- return Promise.resolve();
128
- }
129
- visitarExpressaoAgrupamento(expressao) {
130
- return Promise.resolve();
131
- }
132
- visitarExpressaoUnaria(expressao) {
133
- return Promise.resolve();
134
- }
135
- visitarExpressaoBinaria(expressao) {
136
- return Promise.resolve();
137
- }
138
110
  visitarExpressaoDeChamada(expressao) {
139
111
  var _a, _b;
140
112
  if (expressao.entidadeChamada instanceof construtos_1.Variavel) {
@@ -154,8 +126,7 @@ class AnalisadorSemantico {
154
126
  if (((_a = arg0.tipoDado) === null || _a === void 0 ? void 0 : _a.tipo) === 'texto' && typeof arg1.valor !== 'string') {
155
127
  this.erro(expressao.entidadeChamada.simbolo, `O valor passado para o parâmetro '${arg0.tipoDado.nome}' é diferente do esperado pela função.`);
156
128
  }
157
- else if (['inteiro', 'real'].includes((_b = arg0.tipoDado) === null || _b === void 0 ? void 0 : _b.tipo)
158
- && typeof arg1.valor !== 'number') {
129
+ else if (['inteiro', 'real'].includes((_b = arg0.tipoDado) === null || _b === void 0 ? void 0 : _b.tipo) && typeof arg1.valor !== 'number') {
159
130
  this.erro(expressao.entidadeChamada.simbolo, `O valor passado para o parâmetro '${arg0.tipoDado.nome}' é diferente do esperado pela função.`);
160
131
  }
161
132
  }
@@ -223,38 +194,8 @@ class AnalisadorSemantico {
223
194
  }
224
195
  }
225
196
  }
226
- visitarExpressaoDeVariavel(expressao) {
227
- return Promise.resolve();
228
- }
229
- visitarDeclaracaoDeExpressao(declaracao) {
230
- return declaracao.expressao.aceitar(this);
231
- }
232
- visitarExpressaoLeia(expressao) {
233
- return Promise.resolve();
234
- }
235
- visitarExpressaoLeiaMultiplo(expressao) {
236
- return Promise.resolve();
237
- }
238
- visitarExpressaoLogica(expressao) {
239
- return Promise.resolve();
240
- }
241
- visitarDeclaracaoPara(declaracao) {
242
- return Promise.resolve();
243
- }
244
- visitarDeclaracaoParaCada(declaracao) {
245
- return Promise.resolve();
246
- }
247
- visitarDeclaracaoSe(declaracao) {
248
- return Promise.resolve();
249
- }
250
- visitarExpressaoFimPara(declaracao) {
251
- return Promise.resolve();
252
- }
253
- visitarDeclaracaoFazer(declaracao) {
254
- return Promise.resolve();
255
- }
256
- visitarExpressaoFormatacaoEscrita(declaracao) {
257
- return Promise.resolve();
197
+ async visitarDeclaracaoDeExpressao(declaracao) {
198
+ return await declaracao.expressao.aceitar(this);
258
199
  }
259
200
  visitarDeclaracaoEscolha(declaracao) {
260
201
  var _a, _b;
@@ -274,9 +215,6 @@ class AnalisadorSemantico {
274
215
  }
275
216
  return Promise.resolve();
276
217
  }
277
- visitarDeclaracaoTente(declaracao) {
278
- return Promise.resolve();
279
- }
280
218
  visitarDeclaracaoEnquanto(declaracao) {
281
219
  return this.verificarCondicao(declaracao.condicao);
282
220
  }
@@ -301,7 +239,9 @@ class AnalisadorSemantico {
301
239
  verificarVariavelBinaria(variavel) {
302
240
  this.verificarVariavel(variavel);
303
241
  const variavelHipotetica = this.variaveis[variavel.simbolo.lexema];
304
- if (variavelHipotetica && !(variavelHipotetica.valor instanceof construtos_1.Binario) && (typeof variavelHipotetica.valor !== 'boolean')) {
242
+ if (variavelHipotetica &&
243
+ !(variavelHipotetica.valor instanceof construtos_1.Binario) &&
244
+ typeof variavelHipotetica.valor !== 'boolean') {
305
245
  this.erro(variavel.simbolo, `Esperado tipo 'lógico' na condição do 'enquanto'.`);
306
246
  }
307
247
  return Promise.resolve();
@@ -351,7 +291,6 @@ class AnalisadorSemantico {
351
291
  this.verificarBinario(lado);
352
292
  return;
353
293
  }
354
- return;
355
294
  }
356
295
  verificarLogico(logio) {
357
296
  this.verificarLadoLogico(logio.direita);
@@ -362,8 +301,8 @@ class AnalisadorSemantico {
362
301
  let funcaoChamada = chamada.entidadeChamada;
363
302
  if (!this.funcoes[funcaoChamada.simbolo.lexema]) {
364
303
  this.erro(funcaoChamada.simbolo, `Chamada da função '${funcaoChamada.simbolo.lexema}' não existe.`);
365
- return Promise.resolve();
366
304
  }
305
+ return Promise.resolve();
367
306
  }
368
307
  verificarLadoLogico(lado) {
369
308
  if (lado instanceof construtos_1.Variavel) {
@@ -371,12 +310,9 @@ class AnalisadorSemantico {
371
310
  this.verificarVariavelBinaria(variavel);
372
311
  }
373
312
  }
374
- visitarDeclaracaoImportar(declaracao) {
375
- return Promise.resolve();
376
- }
377
313
  visitarDeclaracaoEscreva(declaracao) {
378
314
  var _a;
379
- const variaveis = declaracao.argumentos.filter(arg => arg instanceof construtos_1.Variavel);
315
+ const variaveis = declaracao.argumentos.filter((arg) => arg instanceof construtos_1.Variavel);
380
316
  for (let variavel of variaveis) {
381
317
  if (!this.variaveis[variavel.simbolo.lexema]) {
382
318
  this.erro(variavel.simbolo, `Variável '${variavel.simbolo.lexema}' não existe.`);
@@ -387,12 +323,6 @@ class AnalisadorSemantico {
387
323
  }
388
324
  return Promise.resolve();
389
325
  }
390
- visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
391
- return Promise.resolve();
392
- }
393
- visitarExpressaoBloco(declaracao) {
394
- return Promise.resolve();
395
- }
396
326
  visitarDeclaracaoConst(declaracao) {
397
327
  this.verificarTipoAtribuido(declaracao);
398
328
  if (this.variaveis.hasOwnProperty(declaracao.simbolo.lexema)) {
@@ -402,7 +332,7 @@ class AnalisadorSemantico {
402
332
  this.variaveis[declaracao.simbolo.lexema] = {
403
333
  imutavel: true,
404
334
  tipo: declaracao.tipo,
405
- valor: declaracao.inicializador.valor
335
+ valor: declaracao.inicializador.valor,
406
336
  };
407
337
  }
408
338
  this.virificarTipoDeclaracaoConst(declaracao);
@@ -422,9 +352,6 @@ class AnalisadorSemantico {
422
352
  }
423
353
  return Promise.resolve();
424
354
  }
425
- visitarDeclaracaoConstMultiplo(declaracao) {
426
- return Promise.resolve();
427
- }
428
355
  visitarDeclaracaoVar(declaracao) {
429
356
  this.verificarTipoAtribuido(declaracao);
430
357
  if (declaracao.inicializador instanceof construtos_1.FuncaoConstruto) {
@@ -436,34 +363,17 @@ class AnalisadorSemantico {
436
363
  this.variaveis[declaracao.simbolo.lexema] = {
437
364
  imutavel: false,
438
365
  tipo: declaracao.tipo,
439
- valor: declaracao.inicializador !== null ? declaracao.inicializador.valor !== undefined ? declaracao.inicializador.valor : declaracao.inicializador : undefined
366
+ valor: declaracao.inicializador !== null
367
+ ? declaracao.inicializador.valor !== undefined
368
+ ? declaracao.inicializador.valor
369
+ : declaracao.inicializador
370
+ : undefined,
440
371
  };
441
372
  return Promise.resolve();
442
373
  }
443
- visitarDeclaracaoVarMultiplo(declaracao) {
444
- return Promise.resolve();
445
- }
446
- visitarExpressaoContinua(declaracao) {
447
- return Promise.resolve();
448
- }
449
- visitarExpressaoSustar(declaracao) {
450
- return Promise.resolve();
451
- }
452
374
  visitarExpressaoRetornar(declaracao) {
453
375
  return Promise.resolve(null);
454
376
  }
455
- visitarExpressaoDeleguaFuncao(expressao) {
456
- return Promise.resolve();
457
- }
458
- visitarExpressaoAtribuicaoPorIndice(expressao) {
459
- return Promise.resolve();
460
- }
461
- visitarExpressaoAcessoIndiceVariavel(expressao) {
462
- return Promise.resolve();
463
- }
464
- visitarExpressaoDefinirValor(expressao) {
465
- return Promise.resolve();
466
- }
467
377
  visitarDeclaracaoDefinicaoFuncao(declaracao) {
468
378
  for (let parametro of declaracao.funcao.parametros) {
469
379
  if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado.tipo) {
@@ -504,28 +414,10 @@ class AnalisadorSemantico {
504
414
  }
505
415
  }
506
416
  this.funcoes[declaracao.simbolo.lexema] = {
507
- valor: declaracao.funcao
417
+ valor: declaracao.funcao,
508
418
  };
509
419
  return Promise.resolve();
510
420
  }
511
- visitarDeclaracaoClasse(declaracao) {
512
- return Promise.resolve();
513
- }
514
- visitarExpressaoAcessoMetodo(expressao) {
515
- return Promise.resolve();
516
- }
517
- visitarExpressaoIsto(expressao) {
518
- return Promise.resolve();
519
- }
520
- visitarExpressaoDicionario(expressao) {
521
- return Promise.resolve();
522
- }
523
- visitarExpressaoVetor(expressao) {
524
- return Promise.resolve();
525
- }
526
- visitarExpressaoSuper(expressao) {
527
- return Promise.resolve();
528
- }
529
421
  analisar(declaracoes) {
530
422
  // this.pilhaVariaveis = new PilhaVariaveis();
531
423
  // this.pilhaVariaveis.empilhar()