@designliquido/delegua 0.32.2 → 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 (112) 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 -45
  6. package/fontes/analisador-semantico/analisador-semantico.js +22 -133
  7. package/fontes/analisador-semantico/analisador-semantico.js.map +1 -1
  8. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.d.ts +6 -53
  9. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js +3 -140
  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 -55
  12. package/fontes/analisador-semantico/dialetos/analisador-semantico-mapler.js +10 -148
  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 -55
  15. package/fontes/analisador-semantico/dialetos/analisador-semantico-visualg.js +22 -144
  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 +5 -12
  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 +2 -0
  42. package/fontes/declaracoes/index.js +2 -0
  43. package/fontes/declaracoes/index.js.map +1 -1
  44. package/fontes/declaracoes/inicio-algoritmo.d.ts +2 -2
  45. package/fontes/declaracoes/inicio-algoritmo.js.map +1 -1
  46. package/fontes/declaracoes/propriedade-classe.js.map +1 -1
  47. package/fontes/declaracoes/tendo-como.d.ts +16 -0
  48. package/fontes/declaracoes/tendo-como.js +22 -0
  49. package/fontes/declaracoes/tendo-como.js.map +1 -0
  50. package/fontes/estruturas/delegua-classe.js.map +1 -1
  51. package/fontes/estruturas/delegua-funcao.js +1 -1
  52. package/fontes/estruturas/delegua-funcao.js.map +1 -1
  53. package/fontes/estruturas/objeto-delegua-classe.js.map +1 -1
  54. package/fontes/formatadores/formatador-delegua.d.ts +2 -1
  55. package/fontes/formatadores/formatador-delegua.js +10 -1
  56. package/fontes/formatadores/formatador-delegua.js.map +1 -1
  57. package/fontes/formatadores/formatador-portugol-studio.d.ts +6 -5
  58. package/fontes/formatadores/formatador-portugol-studio.js +53 -50
  59. package/fontes/formatadores/formatador-portugol-studio.js.map +1 -1
  60. package/fontes/formatadores/formatador-visualg.d.ts +5 -4
  61. package/fontes/formatadores/formatador-visualg.js +20 -14
  62. package/fontes/formatadores/formatador-visualg.js.map +1 -1
  63. package/fontes/interfaces/pilha-escopos-execucao-interface.d.ts +2 -2
  64. package/fontes/interfaces/resolvedor-interface.d.ts +1 -1
  65. package/fontes/interfaces/variavel-hipotetica-interface.d.ts +1 -1
  66. package/fontes/interfaces/visitante-comum-interface.d.ts +36 -41
  67. package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +3 -3
  68. package/fontes/interpretador/dialetos/birl/interpretador-birl.js +4 -13
  69. package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
  70. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.d.ts +11 -10
  71. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +11 -7
  72. package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
  73. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.d.ts +10 -9
  74. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js +13 -10
  75. package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
  76. package/fontes/interpretador/dialetos/mapler/comum.js +2 -1
  77. package/fontes/interpretador/dialetos/mapler/comum.js.map +1 -1
  78. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.d.ts +23 -22
  79. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js +6 -6
  80. package/fontes/interpretador/dialetos/portugol-ipt/interpretador-portugol-ipt.js.map +1 -1
  81. package/fontes/interpretador/dialetos/potigol/inferenciador.d.ts +1 -1
  82. package/fontes/interpretador/dialetos/potigol/interpretador-potigol.js.map +1 -1
  83. package/fontes/interpretador/dialetos/visualg/comum.js +8 -5
  84. package/fontes/interpretador/dialetos/visualg/comum.js.map +1 -1
  85. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js +1 -1
  86. package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js.map +1 -1
  87. package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
  88. package/fontes/interpretador/inferenciador.d.ts +1 -1
  89. package/fontes/interpretador/interpretador-base.d.ts +8 -7
  90. package/fontes/interpretador/interpretador-base.js +53 -38
  91. package/fontes/interpretador/interpretador-base.js.map +1 -1
  92. package/fontes/interpretador/pilha-escopos-execucao.d.ts +2 -2
  93. package/fontes/interpretador/pilha-escopos-execucao.js +52 -18
  94. package/fontes/interpretador/pilha-escopos-execucao.js.map +1 -1
  95. package/fontes/lexador/palavras-reservadas.d.ts +2 -0
  96. package/fontes/lexador/palavras-reservadas.js +2 -0
  97. package/fontes/lexador/palavras-reservadas.js.map +1 -1
  98. package/fontes/tipos-de-dados/delegua.d.ts +4 -0
  99. package/fontes/tipos-de-dados/delegua.js +5 -1
  100. package/fontes/tipos-de-dados/delegua.js.map +1 -1
  101. package/fontes/tipos-de-dados/listas-delegua.js +1 -1
  102. package/fontes/tipos-de-dados/listas-primitivos.js +1 -1
  103. package/fontes/tipos-de-simbolos/delegua.d.ts +2 -0
  104. package/fontes/tipos-de-simbolos/delegua.js +2 -0
  105. package/fontes/tipos-de-simbolos/delegua.js.map +1 -1
  106. package/fontes/tradutores/python/python3-lexer.js +1 -1
  107. package/fontes/tradutores/python/python3-lexer.js.map +1 -1
  108. package/fontes/tradutores/tradutor-assembly-x64.js +13 -13
  109. package/fontes/tradutores/tradutor-python.js +5 -5
  110. package/fontes/tradutores/tradutor-python.js.map +1 -1
  111. package/fontes/tradutores/tradutor-reverso-visualg.js +2 -2
  112. 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.1",
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,12 +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';
3
- import { InicioAlgoritmo } from '../declaracoes/inicio-algoritmo';
1
+ import { Atribuir, Chamada, TipoDe } from '../construtos';
2
+ import { Const, Declaracao, Enquanto, Escolha, Escreva, Expressao, Falhar, FuncaoDeclaracao, Retorna, Var } from '../declaracoes';
4
3
  import { SimboloInterface } from '../interfaces';
5
- import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface';
6
4
  import { DiagnosticoAnalisadorSemantico } from '../interfaces/erros';
7
5
  import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
8
6
  import { TiposDadosInterface } from '../interfaces/tipos-dados-interface';
9
- import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
7
+ import { RetornoQuebra } from '../quebras';
8
+ import { AnalisadorSemanticoBase } from './analisador-semantico-base';
10
9
  import { PilhaVariaveis } from './pilha-variaveis';
11
10
  interface VariavelHipoteticaInterface {
12
11
  tipo: TiposDadosInterface;
@@ -17,7 +16,7 @@ interface VariavelHipoteticaInterface {
17
16
  interface FuncaoHipoteticaInterface {
18
17
  valor: any;
19
18
  }
20
- export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface {
19
+ export declare class AnalisadorSemantico extends AnalisadorSemanticoBase {
21
20
  pilhaVariaveis: PilhaVariaveis;
22
21
  variaveis: {
23
22
  [nomeVariavel: string]: VariavelHipoteticaInterface;
@@ -28,13 +27,6 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
28
27
  atual: number;
29
28
  diagnosticos: DiagnosticoAnalisadorSemantico[];
30
29
  constructor();
31
- visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any>;
32
- visitarExpressaoTupla(expressao: Tupla): Promise<any>;
33
- visitarDeclaracaoAleatorio(declaracao: Aleatorio): Promise<any>;
34
- visitarExpressaoAcessoElementoMatriz(expressao: any): Promise<void>;
35
- visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: any): Promise<any>;
36
- visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): Promise<any>;
37
- visitarDeclaracaoInicioAlgoritmo(declaracao: InicioAlgoritmo): Promise<any>;
38
30
  erro(simbolo: SimboloInterface, mensagem: string): void;
39
31
  aviso(simbolo: SimboloInterface, mensagem: string): void;
40
32
  verificarTipoAtribuido(declaracao: Var | Const): void;
@@ -42,25 +34,10 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
42
34
  private verificarTipoDe;
43
35
  visitarExpressaoFalhar(expressao: Falhar): Promise<any>;
44
36
  private verificarFalhar;
45
- visitarExpressaoLiteral(expressao: Literal): Promise<any>;
46
- visitarExpressaoAgrupamento(expressao: any): Promise<any>;
47
- visitarExpressaoUnaria(expressao: any): Promise<void>;
48
- visitarExpressaoBinaria(expressao: any): Promise<void>;
49
37
  visitarExpressaoDeChamada(expressao: Chamada): Promise<void>;
50
38
  visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<void>;
51
- visitarExpressaoDeVariavel(expressao: any): Promise<void>;
52
39
  visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>;
53
- visitarExpressaoLeia(expressao: Leia): Promise<void>;
54
- visitarExpressaoLeiaMultiplo(expressao: LeiaMultiplo): Promise<void>;
55
- visitarExpressaoLogica(expressao: any): Promise<void>;
56
- visitarDeclaracaoPara(declaracao: Para): Promise<any>;
57
- visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
58
- visitarDeclaracaoSe(declaracao: Se): Promise<void>;
59
- visitarExpressaoFimPara(declaracao: FimPara): Promise<void>;
60
- visitarDeclaracaoFazer(declaracao: Fazer): Promise<void>;
61
- visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<void>;
62
40
  visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>;
63
- visitarDeclaracaoTente(declaracao: Tente): Promise<void>;
64
41
  visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<void>;
65
42
  private verificarCondicao;
66
43
  private verificarVariavelBinaria;
@@ -71,29 +48,12 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
71
48
  private verificarLogico;
72
49
  private verificarChamada;
73
50
  private verificarLadoLogico;
74
- visitarDeclaracaoImportar(declaracao: Importar): Promise<void>;
75
51
  visitarDeclaracaoEscreva(declaracao: Escreva): Promise<void>;
76
- visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<void>;
77
- visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
78
52
  visitarDeclaracaoConst(declaracao: Const): Promise<any>;
79
53
  virificarTipoDeclaracaoConst(declaracao: Const): Promise<any>;
80
- visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): Promise<any>;
81
54
  visitarDeclaracaoVar(declaracao: Var): Promise<any>;
82
- visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): Promise<any>;
83
- visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra;
84
- visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
85
55
  visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
86
- visitarExpressaoDeleguaFuncao(expressao: any): Promise<void>;
87
- visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
88
- visitarExpressaoAcessoIndiceVariavel(expressao: any): Promise<void>;
89
- visitarExpressaoDefinirValor(expressao: any): Promise<void>;
90
56
  visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<void>;
91
- visitarDeclaracaoClasse(declaracao: Classe): Promise<void>;
92
- visitarExpressaoAcessoMetodo(expressao: any): Promise<void>;
93
- visitarExpressaoIsto(expressao: any): Promise<void>;
94
- visitarExpressaoDicionario(expressao: any): Promise<void>;
95
- visitarExpressaoVetor(expressao: any): Promise<void>;
96
- visitarExpressaoSuper(expressao: Super): Promise<void>;
97
57
  analisar(declaracoes: Declaracao[]): RetornoAnalisadorSemantico;
98
58
  }
99
59
  export {};
@@ -4,43 +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
- visitarDeclaracaoInicioAlgoritmo(declaracao) {
35
- return Promise.resolve();
36
- }
37
18
  erro(simbolo, mensagem) {
38
19
  this.diagnosticos.push({
39
20
  simbolo: simbolo,
40
21
  mensagem: mensagem,
41
22
  hashArquivo: simbolo.hashArquivo,
42
23
  linha: simbolo.linha,
43
- severidade: erros_1.DiagnosticoSeveridade.ERRO
24
+ severidade: erros_1.DiagnosticoSeveridade.ERRO,
44
25
  });
45
26
  }
46
27
  aviso(simbolo, mensagem) {
@@ -49,7 +30,7 @@ class AnalisadorSemantico {
49
30
  mensagem: mensagem,
50
31
  hashArquivo: simbolo.hashArquivo,
51
32
  linha: simbolo.linha,
52
- severidade: erros_1.DiagnosticoSeveridade.AVISO
33
+ severidade: erros_1.DiagnosticoSeveridade.AVISO,
53
34
  });
54
35
  }
55
36
  verificarTipoAtribuido(declaracao) {
@@ -58,13 +39,13 @@ class AnalisadorSemantico {
58
39
  if (declaracao.inicializador instanceof construtos_1.Vetor) {
59
40
  const vetor = declaracao.inicializador;
60
41
  if (declaracao.tipo === 'inteiro[]') {
61
- 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');
62
43
  if (v) {
63
44
  this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de 'inteiros' ou 'real'.`);
64
45
  }
65
46
  }
66
47
  if (declaracao.tipo === 'texto[]') {
67
- 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');
68
49
  if (v) {
69
50
  this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de 'texto'.`);
70
51
  }
@@ -126,18 +107,6 @@ class AnalisadorSemantico {
126
107
  }
127
108
  return Promise.resolve();
128
109
  }
129
- visitarExpressaoLiteral(expressao) {
130
- return Promise.resolve();
131
- }
132
- visitarExpressaoAgrupamento(expressao) {
133
- return Promise.resolve();
134
- }
135
- visitarExpressaoUnaria(expressao) {
136
- return Promise.resolve();
137
- }
138
- visitarExpressaoBinaria(expressao) {
139
- return Promise.resolve();
140
- }
141
110
  visitarExpressaoDeChamada(expressao) {
142
111
  var _a, _b;
143
112
  if (expressao.entidadeChamada instanceof construtos_1.Variavel) {
@@ -157,8 +126,7 @@ class AnalisadorSemantico {
157
126
  if (((_a = arg0.tipoDado) === null || _a === void 0 ? void 0 : _a.tipo) === 'texto' && typeof arg1.valor !== 'string') {
158
127
  this.erro(expressao.entidadeChamada.simbolo, `O valor passado para o parâmetro '${arg0.tipoDado.nome}' é diferente do esperado pela função.`);
159
128
  }
160
- else if (['inteiro', 'real'].includes((_b = arg0.tipoDado) === null || _b === void 0 ? void 0 : _b.tipo)
161
- && 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') {
162
130
  this.erro(expressao.entidadeChamada.simbolo, `O valor passado para o parâmetro '${arg0.tipoDado.nome}' é diferente do esperado pela função.`);
163
131
  }
164
132
  }
@@ -226,38 +194,8 @@ class AnalisadorSemantico {
226
194
  }
227
195
  }
228
196
  }
229
- visitarExpressaoDeVariavel(expressao) {
230
- return Promise.resolve();
231
- }
232
- visitarDeclaracaoDeExpressao(declaracao) {
233
- return declaracao.expressao.aceitar(this);
234
- }
235
- visitarExpressaoLeia(expressao) {
236
- return Promise.resolve();
237
- }
238
- visitarExpressaoLeiaMultiplo(expressao) {
239
- return Promise.resolve();
240
- }
241
- visitarExpressaoLogica(expressao) {
242
- return Promise.resolve();
243
- }
244
- visitarDeclaracaoPara(declaracao) {
245
- return Promise.resolve();
246
- }
247
- visitarDeclaracaoParaCada(declaracao) {
248
- return Promise.resolve();
249
- }
250
- visitarDeclaracaoSe(declaracao) {
251
- return Promise.resolve();
252
- }
253
- visitarExpressaoFimPara(declaracao) {
254
- return Promise.resolve();
255
- }
256
- visitarDeclaracaoFazer(declaracao) {
257
- return Promise.resolve();
258
- }
259
- visitarExpressaoFormatacaoEscrita(declaracao) {
260
- return Promise.resolve();
197
+ async visitarDeclaracaoDeExpressao(declaracao) {
198
+ return await declaracao.expressao.aceitar(this);
261
199
  }
262
200
  visitarDeclaracaoEscolha(declaracao) {
263
201
  var _a, _b;
@@ -277,9 +215,6 @@ class AnalisadorSemantico {
277
215
  }
278
216
  return Promise.resolve();
279
217
  }
280
- visitarDeclaracaoTente(declaracao) {
281
- return Promise.resolve();
282
- }
283
218
  visitarDeclaracaoEnquanto(declaracao) {
284
219
  return this.verificarCondicao(declaracao.condicao);
285
220
  }
@@ -304,7 +239,9 @@ class AnalisadorSemantico {
304
239
  verificarVariavelBinaria(variavel) {
305
240
  this.verificarVariavel(variavel);
306
241
  const variavelHipotetica = this.variaveis[variavel.simbolo.lexema];
307
- 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') {
308
245
  this.erro(variavel.simbolo, `Esperado tipo 'lógico' na condição do 'enquanto'.`);
309
246
  }
310
247
  return Promise.resolve();
@@ -354,7 +291,6 @@ class AnalisadorSemantico {
354
291
  this.verificarBinario(lado);
355
292
  return;
356
293
  }
357
- return;
358
294
  }
359
295
  verificarLogico(logio) {
360
296
  this.verificarLadoLogico(logio.direita);
@@ -365,8 +301,8 @@ class AnalisadorSemantico {
365
301
  let funcaoChamada = chamada.entidadeChamada;
366
302
  if (!this.funcoes[funcaoChamada.simbolo.lexema]) {
367
303
  this.erro(funcaoChamada.simbolo, `Chamada da função '${funcaoChamada.simbolo.lexema}' não existe.`);
368
- return Promise.resolve();
369
304
  }
305
+ return Promise.resolve();
370
306
  }
371
307
  verificarLadoLogico(lado) {
372
308
  if (lado instanceof construtos_1.Variavel) {
@@ -374,12 +310,9 @@ class AnalisadorSemantico {
374
310
  this.verificarVariavelBinaria(variavel);
375
311
  }
376
312
  }
377
- visitarDeclaracaoImportar(declaracao) {
378
- return Promise.resolve();
379
- }
380
313
  visitarDeclaracaoEscreva(declaracao) {
381
314
  var _a;
382
- const variaveis = declaracao.argumentos.filter(arg => arg instanceof construtos_1.Variavel);
315
+ const variaveis = declaracao.argumentos.filter((arg) => arg instanceof construtos_1.Variavel);
383
316
  for (let variavel of variaveis) {
384
317
  if (!this.variaveis[variavel.simbolo.lexema]) {
385
318
  this.erro(variavel.simbolo, `Variável '${variavel.simbolo.lexema}' não existe.`);
@@ -390,12 +323,6 @@ class AnalisadorSemantico {
390
323
  }
391
324
  return Promise.resolve();
392
325
  }
393
- visitarDeclaracaoEscrevaMesmaLinha(declaracao) {
394
- return Promise.resolve();
395
- }
396
- visitarExpressaoBloco(declaracao) {
397
- return Promise.resolve();
398
- }
399
326
  visitarDeclaracaoConst(declaracao) {
400
327
  this.verificarTipoAtribuido(declaracao);
401
328
  if (this.variaveis.hasOwnProperty(declaracao.simbolo.lexema)) {
@@ -405,7 +332,7 @@ class AnalisadorSemantico {
405
332
  this.variaveis[declaracao.simbolo.lexema] = {
406
333
  imutavel: true,
407
334
  tipo: declaracao.tipo,
408
- valor: declaracao.inicializador.valor
335
+ valor: declaracao.inicializador.valor,
409
336
  };
410
337
  }
411
338
  this.virificarTipoDeclaracaoConst(declaracao);
@@ -425,9 +352,6 @@ class AnalisadorSemantico {
425
352
  }
426
353
  return Promise.resolve();
427
354
  }
428
- visitarDeclaracaoConstMultiplo(declaracao) {
429
- return Promise.resolve();
430
- }
431
355
  visitarDeclaracaoVar(declaracao) {
432
356
  this.verificarTipoAtribuido(declaracao);
433
357
  if (declaracao.inicializador instanceof construtos_1.FuncaoConstruto) {
@@ -439,34 +363,17 @@ class AnalisadorSemantico {
439
363
  this.variaveis[declaracao.simbolo.lexema] = {
440
364
  imutavel: false,
441
365
  tipo: declaracao.tipo,
442
- 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,
443
371
  };
444
372
  return Promise.resolve();
445
373
  }
446
- visitarDeclaracaoVarMultiplo(declaracao) {
447
- return Promise.resolve();
448
- }
449
- visitarExpressaoContinua(declaracao) {
450
- return Promise.resolve();
451
- }
452
- visitarExpressaoSustar(declaracao) {
453
- return Promise.resolve();
454
- }
455
374
  visitarExpressaoRetornar(declaracao) {
456
375
  return Promise.resolve(null);
457
376
  }
458
- visitarExpressaoDeleguaFuncao(expressao) {
459
- return Promise.resolve();
460
- }
461
- visitarExpressaoAtribuicaoPorIndice(expressao) {
462
- return Promise.resolve();
463
- }
464
- visitarExpressaoAcessoIndiceVariavel(expressao) {
465
- return Promise.resolve();
466
- }
467
- visitarExpressaoDefinirValor(expressao) {
468
- return Promise.resolve();
469
- }
470
377
  visitarDeclaracaoDefinicaoFuncao(declaracao) {
471
378
  for (let parametro of declaracao.funcao.parametros) {
472
379
  if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado.tipo) {
@@ -507,28 +414,10 @@ class AnalisadorSemantico {
507
414
  }
508
415
  }
509
416
  this.funcoes[declaracao.simbolo.lexema] = {
510
- valor: declaracao.funcao
417
+ valor: declaracao.funcao,
511
418
  };
512
419
  return Promise.resolve();
513
420
  }
514
- visitarDeclaracaoClasse(declaracao) {
515
- return Promise.resolve();
516
- }
517
- visitarExpressaoAcessoMetodo(expressao) {
518
- return Promise.resolve();
519
- }
520
- visitarExpressaoIsto(expressao) {
521
- return Promise.resolve();
522
- }
523
- visitarExpressaoDicionario(expressao) {
524
- return Promise.resolve();
525
- }
526
- visitarExpressaoVetor(expressao) {
527
- return Promise.resolve();
528
- }
529
- visitarExpressaoSuper(expressao) {
530
- return Promise.resolve();
531
- }
532
421
  analisar(declaracoes) {
533
422
  // this.pilhaVariaveis = new PilhaVariaveis();
534
423
  // this.pilhaVariaveis.empilhar()