@designliquido/delegua 0.21.6 → 0.21.8

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 (30) hide show
  1. package/bin/package.json +5 -3
  2. package/fontes/analisador-semantico/analisador-semantico.d.ts +3 -3
  3. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.d.ts +64 -0
  4. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js +190 -0
  5. package/fontes/analisador-semantico/dialetos/analisador-semantico-birl.js.map +1 -0
  6. package/fontes/analisador-semantico/dialetos/index.d.ts +1 -0
  7. package/fontes/analisador-semantico/dialetos/index.js +18 -0
  8. package/fontes/analisador-semantico/dialetos/index.js.map +1 -0
  9. package/fontes/avaliador-sintatico/avaliador-sintatico-base.d.ts +1 -0
  10. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +5 -0
  11. package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
  12. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.d.ts +3 -1
  13. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +87 -17
  14. package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
  15. package/fontes/bibliotecas/primitivas-texto.d.ts +13 -13
  16. package/fontes/bibliotecas/primitivas-texto.js +6 -1
  17. package/fontes/bibliotecas/primitivas-texto.js.map +1 -1
  18. package/fontes/bibliotecas/primitivas-vetor.js +3 -0
  19. package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
  20. package/fontes/interpretador/dialetos/birl/comum.d.ts +3 -0
  21. package/fontes/interpretador/dialetos/birl/comum.js +66 -0
  22. package/fontes/interpretador/dialetos/birl/comum.js.map +1 -0
  23. package/fontes/interpretador/dialetos/birl/interpretador-birl.d.ts +11 -6
  24. package/fontes/interpretador/dialetos/birl/interpretador-birl.js +159 -31
  25. package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
  26. package/fontes/interpretador/interpretador-base.js +20 -13
  27. package/fontes/interpretador/interpretador-base.js.map +1 -1
  28. package/fontes/tradutores/tradutor-reverso-javascript.js +23 -14
  29. package/fontes/tradutores/tradutor-reverso-javascript.js.map +1 -1
  30. package/package.json +5 -3
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designliquido/delegua",
3
- "version": "0.21.5",
3
+ "version": "0.21.7",
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": {
@@ -21,12 +21,14 @@
21
21
  "url": "git+https://github.com/DesignLiquido/delegua.git"
22
22
  },
23
23
  "keywords": [
24
+ "birl",
24
25
  "egua",
25
26
  "eguap",
26
27
  "delegua",
27
28
  "mapler",
28
- "visualg",
29
- "birl"
29
+ "português",
30
+ "portugol",
31
+ "visualg"
30
32
  ],
31
33
  "author": "Leonel Sanches da Silva",
32
34
  "contributors": [
@@ -1,9 +1,9 @@
1
- import { Literal, Atribuir, FimPara, FormatacaoEscrita, Super, TipoDe } from '../construtos';
2
- import { Declaracao, Expressao, Leia, Para, ParaCada, Se, Fazer, Escolha, Tente, Enquanto, Importar, Escreva, EscrevaMesmaLinha, Bloco, Var, Const, Continua, Sustar, Retorna, FuncaoDeclaracao, Classe } from '../declaracoes';
1
+ import { Atribuir, FimPara, FormatacaoEscrita, Literal, Super, TipoDe } from '../construtos';
2
+ import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, Para, ParaCada, Retorna, Se, Sustar, Tente, Var } from '../declaracoes';
3
3
  import { AnalisadorSemanticoInterface } from '../interfaces/analisador-semantico-interface';
4
4
  import { ErroAnalisadorSemantico } from '../interfaces/erros';
5
5
  import { RetornoAnalisadorSemantico } from '../interfaces/retornos/retorno-analisador-semantico';
6
- import { ContinuarQuebra, SustarQuebra, RetornoQuebra } from '../quebras';
6
+ import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../quebras';
7
7
  import { PilhaVariaveis } from './pilha-variaveis';
8
8
  interface VariavelHipoteticaInterface {
9
9
  tipo: 'texto' | 'número' | 'longo' | 'vetor' | 'dicionário' | 'nulo' | 'lógico' | 'função' | 'símbolo' | 'objeto' | 'módulo';
@@ -0,0 +1,64 @@
1
+ import { Atribuir, FimPara, FormatacaoEscrita, Literal, Super, TipoDe } from '../../construtos';
2
+ import { Bloco, Classe, Const, Continua, Declaracao, Enquanto, Escolha, Escreva, EscrevaMesmaLinha, Expressao, Fazer, FuncaoDeclaracao, Importar, Leia, Para, ParaCada, Retorna, Se, Sustar, Tente, Var } from '../../declaracoes';
3
+ import { AnalisadorSemanticoInterface } from '../../interfaces/analisador-semantico-interface';
4
+ import { ErroAnalisadorSemantico } from '../../interfaces/erros';
5
+ import { RetornoAnalisadorSemantico } from '../../interfaces/retornos/retorno-analisador-semantico';
6
+ import { ContinuarQuebra, RetornoQuebra, SustarQuebra } from '../../quebras';
7
+ import { PilhaVariaveis } from '../pilha-variaveis';
8
+ interface VariavelHipoteticaInterface {
9
+ tipo: 'texto' | 'número' | 'longo' | 'vetor' | 'dicionário' | 'nulo' | 'lógico' | 'função' | 'símbolo' | 'objeto' | 'módulo';
10
+ subtipo?: 'texto' | 'número' | 'longo' | 'lógico';
11
+ imutavel: boolean;
12
+ }
13
+ export declare class AnalisadorSemanticoBirl implements AnalisadorSemanticoInterface {
14
+ pilhaVariaveis: PilhaVariaveis;
15
+ variaveis: {
16
+ [nomeVariavel: string]: VariavelHipoteticaInterface;
17
+ };
18
+ atual: number;
19
+ erros: ErroAnalisadorSemantico[];
20
+ constructor();
21
+ visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
22
+ visitarDeclaracaoClasse(declaracao: Classe): Promise<void>;
23
+ visitarDeclaracaoConst(declaracao: Const): Promise<any>;
24
+ visitarDeclaracaoDeAtribuicao(expressao: Atribuir): Promise<void>;
25
+ visitarDeclaracaoDeExpressao(declaracao: Expressao): Promise<any>;
26
+ visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): Promise<void>;
27
+ visitarDeclaracaoEnquanto(declaracao: Enquanto): Promise<void>;
28
+ visitarDeclaracaoEscolha(declaracao: Escolha): Promise<void>;
29
+ visitarDeclaracaoEscreva(declaracao: Escreva): Promise<void>;
30
+ visitarDeclaracaoFazer(declaracao: Fazer): Promise<void>;
31
+ visitarDeclaracaoImportar(declaracao: Importar): Promise<void>;
32
+ visitarDeclaracaoPara(declaracao: Para): Promise<any>;
33
+ visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
34
+ visitarDeclaracaoSe(declaracao: Se): Promise<void>;
35
+ visitarDeclaracaoTente(declaracao: Tente): Promise<void>;
36
+ visitarDeclaracaoVar(declaracao: Var): Promise<any>;
37
+ visitarExpressaoAcessoIndiceVariavel(expressao: any): Promise<void>;
38
+ visitarExpressaoAcessoMetodo(expressao: any): Promise<void>;
39
+ visitarExpressaoAgrupamento(expressao: any): Promise<any>;
40
+ visitarExpressaoAtribuicaoPorIndice(expressao: any): Promise<any>;
41
+ visitarExpressaoBinaria(expressao: any): Promise<void>;
42
+ visitarExpressaoBloco(declaracao: Bloco): Promise<any>;
43
+ visitarExpressaoContinua(declaracao?: Continua): ContinuarQuebra;
44
+ visitarExpressaoDeChamada(expressao: any): Promise<void>;
45
+ visitarExpressaoDefinirValor(expressao: any): Promise<void>;
46
+ visitarExpressaoDeleguaFuncao(expressao: any): Promise<void>;
47
+ visitarExpressaoDeVariavel(expressao: any): Promise<void>;
48
+ visitarExpressaoDicionario(expressao: any): Promise<void>;
49
+ visitarExpressaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): Promise<void>;
50
+ visitarExpressaoFalhar(expressao: any): Promise<any>;
51
+ visitarExpressaoFimPara(declaracao: FimPara): Promise<void>;
52
+ visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): Promise<void>;
53
+ visitarExpressaoIsto(expressao: any): Promise<void>;
54
+ visitarExpressaoLeia(expressao: Leia): Promise<void>;
55
+ visitarExpressaoLiteral(expressao: Literal): Promise<any>;
56
+ visitarExpressaoLogica(expressao: any): Promise<void>;
57
+ visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
58
+ visitarExpressaoSuper(expressao: Super): Promise<void>;
59
+ visitarExpressaoSustar(declaracao?: Sustar): SustarQuebra;
60
+ visitarExpressaoUnaria(expressao: any): Promise<void>;
61
+ visitarExpressaoVetor(expressao: any): Promise<void>;
62
+ analisar(declaracoes: Declaracao[]): RetornoAnalisadorSemantico;
63
+ }
64
+ export {};
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnalisadorSemanticoBirl = void 0;
4
+ const pilha_variaveis_1 = require("../pilha-variaveis");
5
+ class AnalisadorSemanticoBirl {
6
+ constructor() {
7
+ this.pilhaVariaveis = new pilha_variaveis_1.PilhaVariaveis();
8
+ this.variaveis = {};
9
+ this.atual = 0;
10
+ this.erros = [];
11
+ }
12
+ visitarExpressaoTipoDe(expressao) {
13
+ throw new Error('Method not implemented.');
14
+ }
15
+ visitarDeclaracaoClasse(declaracao) {
16
+ return Promise.resolve();
17
+ }
18
+ visitarDeclaracaoConst(declaracao) {
19
+ return Promise.resolve();
20
+ }
21
+ visitarDeclaracaoDeAtribuicao(expressao) {
22
+ if (!this.variaveis.hasOwnProperty(expressao.simbolo.lexema)) {
23
+ this.erros.push({
24
+ simbolo: expressao.simbolo,
25
+ mensagem: `A variável ${expressao.simbolo.lexema} não foi declarada.`,
26
+ hashArquivo: expressao.hashArquivo,
27
+ linha: expressao.linha,
28
+ });
29
+ return Promise.resolve();
30
+ }
31
+ if (this.variaveis[expressao.simbolo.lexema].imutavel) {
32
+ this.erros.push({
33
+ simbolo: expressao.simbolo,
34
+ mensagem: `Constante ${expressao.simbolo.lexema} não pode ser modificada.`,
35
+ hashArquivo: expressao.hashArquivo,
36
+ linha: expressao.linha,
37
+ });
38
+ return Promise.resolve();
39
+ }
40
+ }
41
+ visitarDeclaracaoDeExpressao(declaracao) {
42
+ return declaracao.expressao.aceitar(this);
43
+ }
44
+ visitarDeclaracaoDefinicaoFuncao(declaracao) {
45
+ return Promise.resolve();
46
+ }
47
+ visitarDeclaracaoEnquanto(declaracao) {
48
+ return Promise.resolve();
49
+ }
50
+ visitarDeclaracaoEscolha(declaracao) {
51
+ return Promise.resolve();
52
+ }
53
+ visitarDeclaracaoEscreva(declaracao) {
54
+ return Promise.resolve();
55
+ }
56
+ visitarDeclaracaoFazer(declaracao) {
57
+ return Promise.resolve();
58
+ }
59
+ visitarDeclaracaoImportar(declaracao) {
60
+ return Promise.resolve();
61
+ }
62
+ visitarDeclaracaoPara(declaracao) {
63
+ return Promise.resolve();
64
+ }
65
+ visitarDeclaracaoParaCada(declaracao) {
66
+ return Promise.resolve();
67
+ }
68
+ visitarDeclaracaoSe(declaracao) {
69
+ return Promise.resolve();
70
+ }
71
+ visitarDeclaracaoTente(declaracao) {
72
+ return Promise.resolve();
73
+ }
74
+ visitarDeclaracaoVar(declaracao) {
75
+ this.variaveis[declaracao.simbolo.lexema] = {
76
+ imutavel: false,
77
+ tipo: 'número',
78
+ };
79
+ return Promise.resolve();
80
+ }
81
+ visitarExpressaoAcessoIndiceVariavel(expressao) {
82
+ return Promise.resolve();
83
+ }
84
+ visitarExpressaoAcessoMetodo(expressao) {
85
+ return Promise.resolve();
86
+ }
87
+ visitarExpressaoAgrupamento(expressao) {
88
+ return Promise.resolve();
89
+ }
90
+ visitarExpressaoAtribuicaoPorIndice(expressao) {
91
+ return Promise.resolve();
92
+ }
93
+ visitarExpressaoBinaria(expressao) {
94
+ return Promise.resolve();
95
+ }
96
+ visitarExpressaoBloco(declaracao) {
97
+ return Promise.resolve();
98
+ }
99
+ visitarExpressaoContinua(declaracao) {
100
+ return Promise.resolve();
101
+ }
102
+ visitarExpressaoDeChamada(expressao) {
103
+ return Promise.resolve();
104
+ }
105
+ visitarExpressaoDefinirValor(expressao) {
106
+ return Promise.resolve();
107
+ }
108
+ visitarExpressaoDeleguaFuncao(expressao) {
109
+ return Promise.resolve();
110
+ }
111
+ visitarExpressaoDeVariavel(expressao) {
112
+ return Promise.resolve();
113
+ }
114
+ visitarExpressaoDicionario(expressao) {
115
+ return Promise.resolve();
116
+ }
117
+ visitarExpressaoEscrevaMesmaLinha(declaracao) {
118
+ return Promise.resolve();
119
+ }
120
+ visitarExpressaoFalhar(expressao) {
121
+ return Promise.resolve();
122
+ }
123
+ visitarExpressaoFimPara(declaracao) {
124
+ return Promise.resolve();
125
+ }
126
+ visitarExpressaoFormatacaoEscrita(declaracao) {
127
+ return Promise.resolve();
128
+ }
129
+ visitarExpressaoIsto(expressao) {
130
+ return Promise.resolve();
131
+ }
132
+ visitarExpressaoLeia(expressao) {
133
+ if (!this.variaveis.hasOwnProperty(expressao.argumentos[0].simbolo.lexema)) {
134
+ this.erros.push({
135
+ simbolo: expressao.argumentos[0].simbolo,
136
+ mensagem: `A variável ${expressao.argumentos[0].simbolo.lexema} não foi declarada.`,
137
+ hashArquivo: expressao.hashArquivo,
138
+ linha: expressao.linha,
139
+ });
140
+ return Promise.resolve();
141
+ }
142
+ const tipoVariavelExpressão = this.variaveis[expressao.argumentos[0].simbolo.lexema].tipo;
143
+ const tipoVariavelArgumento = expressao.argumentos[1].valor;
144
+ if (tipoVariavelExpressão !== tipoVariavelArgumento) {
145
+ this.erros.push({
146
+ simbolo: expressao.argumentos[0].simbolo,
147
+ mensagem: `A variável ${expressao.argumentos[0].simbolo.lexema} não é do tipo ${tipoVariavelArgumento}.`,
148
+ hashArquivo: expressao.hashArquivo,
149
+ linha: expressao.linha,
150
+ });
151
+ return Promise.resolve();
152
+ }
153
+ return Promise.resolve();
154
+ }
155
+ visitarExpressaoLiteral(expressao) {
156
+ return Promise.resolve();
157
+ }
158
+ visitarExpressaoLogica(expressao) {
159
+ return Promise.resolve();
160
+ }
161
+ visitarExpressaoRetornar(declaracao) {
162
+ return Promise.resolve(null);
163
+ }
164
+ visitarExpressaoSuper(expressao) {
165
+ return Promise.resolve();
166
+ }
167
+ visitarExpressaoSustar(declaracao) {
168
+ return Promise.resolve();
169
+ }
170
+ visitarExpressaoUnaria(expressao) {
171
+ return Promise.resolve();
172
+ }
173
+ visitarExpressaoVetor(expressao) {
174
+ return Promise.resolve();
175
+ }
176
+ analisar(declaracoes) {
177
+ this.variaveis = {};
178
+ this.atual = 0;
179
+ this.erros = [];
180
+ while (this.atual < declaracoes.length) {
181
+ declaracoes[this.atual].aceitar(this);
182
+ this.atual++;
183
+ }
184
+ return {
185
+ erros: this.erros,
186
+ };
187
+ }
188
+ }
189
+ exports.AnalisadorSemanticoBirl = AnalisadorSemanticoBirl;
190
+ //# sourceMappingURL=analisador-semantico-birl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analisador-semantico-birl.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/analisador-semantico-birl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./analisador-semantico-birl";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./analisador-semantico-birl"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C"}
@@ -23,6 +23,7 @@ export declare abstract class AvaliadorSintaticoBase implements AvaliadorSintati
23
23
  verificarTipoProximoSimbolo(tipo: string): boolean;
24
24
  estaNoFinal(): boolean;
25
25
  avancarEDevolverAnterior(): SimboloInterface;
26
+ regredirEDevolverAtual(): SimboloInterface;
26
27
  verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean;
27
28
  declaracaoLeia(): Leia;
28
29
  abstract primario(): Construto;
@@ -49,6 +49,11 @@ class AvaliadorSintaticoBase {
49
49
  this.atual += 1;
50
50
  return this.simbolos[this.atual - 1];
51
51
  }
52
+ regredirEDevolverAtual() {
53
+ if (this.atual > 0)
54
+ this.atual -= 1;
55
+ return this.simbolos[this.atual];
56
+ }
52
57
  verificarSeSimboloAtualEIgualA(...argumentos) {
53
58
  for (let i = 0; i < argumentos.length; i++) {
54
59
  const tipoAtual = argumentos[i];
@@ -1 +1 @@
1
- {"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA6F;AAC7F,gDAmBwB;AAGxB,yEAAoE;AAEpE,uEAAyD;AAEzD;;;;GAIG;AACH,MAAsB,sBAAsB;IAQxC,sBAAsB;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,qBAAqB;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,cAAsB;QACzC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,OAAyB,EAAE,cAAsB;QAClD,MAAM,OAAO,GAAG,IAAI,iDAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,yBAAyB,CAAC,IAAY;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IACnD,CAAC;IAED,2BAA2B,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IACvD,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,wBAAwB;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,8BAA8B,CAAC,GAAG,UAAoB;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE;gBAC3C,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAID,gBAAgB,CAAC,eAA0B;QACvC,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE;YACpE,GAAG;gBACC,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE;oBAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,wCAAwC,CAAC,CAAC;iBACxF;gBACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACrC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;SAC1E;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,kCAAkC,CAAC,CAAC;QAE9G,OAAO,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACxF,CAAC;IAID,MAAM;QAEF,IAAI,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE;YACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,mBAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SACnE;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,aAAa;QACT,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE9B,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW;QACP,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAErC,OACI,IAAI,CAAC,8BAA8B,CAC/B,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,eAAe,EAC/B,eAAe,CAAC,aAAa,EAC7B,eAAe,CAAC,MAAM,CACzB,EACH;YACE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,iBAAiB;QACb,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE;YAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,IAAI;QACA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ;QACJ,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzC,OACI,IAAI,CAAC,8BAA8B,CAC/B,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,WAAW,EAC3B,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,WAAW,CAC9B,EACH;YACE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,mBAAmB;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE;YACvH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,EAAE;QACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,CAAC;QACG,IAAI,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3C,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,SAAS,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC1E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,EAAE;QACE,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;YAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YACzB,SAAS,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC1E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAOD,SAAS;QACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAID,mBAAmB;QACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAUD,gBAAgB;QACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,oBAAoB;QAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,IAAY;QACf,MAAM,aAAa,GAAqB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAExE,MAAM,UAAU,GAAqB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,iBAAiB,IAAI,GAAG,CAAC,CAAC;QAC5G,OAAO,IAAI,8BAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAES,qBAAqB;QAC3B,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,GAAG;YACC,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,uCAAuC,CAAC,CAAC;aACjF;YAED,MAAM,SAAS,GAAgC,EAAE,CAAC;YAElD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,aAAa,EAAE;gBAClE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACnD,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC;aACtC;iBAAM;gBACH,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;aACpC;YAED,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;YAE7F,IAAI,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC5D,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC3C;YAED,UAAU,CAAC,IAAI,CAAC,SAA+B,CAAC,CAAC;YAEjD,IAAI,SAAS,CAAC,WAAW,KAAK,UAAU;gBAAE,MAAM;SACnD,QAAQ,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACvE,OAAO,UAAU,CAAC;IACtB,CAAC;CAKJ;AAxTD,wDAwTC"}
1
+ {"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA6F;AAC7F,gDAmBwB;AAGxB,yEAAoE;AAEpE,uEAAyD;AAEzD;;;;GAIG;AACH,MAAsB,sBAAsB;IAQxC,sBAAsB;QAClB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,qBAAqB;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,cAAsB;QACzC,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACjF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,OAAyB,EAAE,cAAsB;QAClD,MAAM,OAAO,GAAG,IAAI,iDAAsB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,yBAAyB,CAAC,IAAY;QAClC,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IACnD,CAAC;IAED,2BAA2B,CAAC,IAAY;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;IACvD,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,wBAAwB;QACpB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,sBAAsB;QAClB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,8BAA8B,CAAC,GAAG,UAAoB;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE;gBAC3C,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;aACf;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,cAAc;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAID,gBAAgB,CAAC,eAA0B;QACvC,MAAM,UAAU,GAAqB,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE;YACpE,GAAG;gBACC,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE;oBAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,wCAAwC,CAAC,CAAC;iBACxF;gBACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aACrC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;SAC1E;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,iBAAiB,EAAE,kCAAkC,CAAC,CAAC;QAE9G,OAAO,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACxF,CAAC;IAID,MAAM;QAEF,IAAI,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE;YACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,mBAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SACnE;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED,aAAa;QACT,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE9B,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW;QACP,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAErC,OACI,IAAI,CAAC,8BAA8B,CAC/B,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,eAAe,EAC/B,eAAe,CAAC,aAAa,EAC7B,eAAe,CAAC,MAAM,CACzB,EACH;YACE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACrC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,iBAAiB;QACb,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE;YAC3F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,IAAI;QACA,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ;QACJ,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzC,OACI,IAAI,CAAC,8BAA8B,CAC/B,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,WAAW,EAC3B,eAAe,CAAC,KAAK,EACrB,eAAe,CAAC,WAAW,CAC9B,EACH;YACE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,mBAAmB;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhC,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,SAAS,EAAE,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,EAAE;YACvH,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,SAAS,GAAG,IAAI,oBAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC3E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,EAAE;QACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,CAAC;QACG,IAAI,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3C,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,SAAS,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC1E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,EAAE;QACE,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE;YAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YACzB,SAAS,GAAG,IAAI,mBAAM,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SAC1E;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAOD,SAAS;QACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAID,mBAAmB;QACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAUD,gBAAgB;QACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,eAAe;QACX,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,oBAAoB;QAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,IAAY;QACf,MAAM,aAAa,GAAqB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAExE,MAAM,UAAU,GAAqB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,iBAAiB,IAAI,GAAG,CAAC,CAAC;QAC5G,OAAO,IAAI,8BAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IAES,qBAAqB;QAC3B,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,GAAG;YACC,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,uCAAuC,CAAC,CAAC;aACjF;YAED,MAAM,SAAS,GAAgC,EAAE,CAAC;YAElD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,aAAa,EAAE;gBAClE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACnD,SAAS,CAAC,WAAW,GAAG,UAAU,CAAC;aACtC;iBAAM;gBACH,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;aACpC;YAED,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,6BAA6B,CAAC,CAAC;YAE7F,IAAI,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;gBAC5D,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC3C;YAED,UAAU,CAAC,IAAI,CAAC,SAA+B,CAAC,CAAC;YAEjD,IAAI,SAAS,CAAC,WAAW,KAAK,UAAU;gBAAE,MAAM;SACnD,QAAQ,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;QACvE,OAAO,UAAU,CAAC;IACtB,CAAC;CAKJ;AA7TD,wDA6TC"}
@@ -2,10 +2,11 @@ import { Chamada, FuncaoConstruto } from '../../construtos';
2
2
  import { Continua, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, FuncaoDeclaracao, Leia, Para, Retorna, Se, Sustar, Var } from '../../declaracoes';
3
3
  import { RetornoAvaliadorSintatico, RetornoLexador } from '../../interfaces/retornos';
4
4
  import { AvaliadorSintaticoBase } from '../avaliador-sintatico-base';
5
- import { ParametroInterface, SimboloInterface } from '../../interfaces';
6
5
  import { Construto } from '../../construtos/construto';
6
+ import { ParametroInterface, SimboloInterface } from '../../interfaces';
7
7
  import { TiposDadosInterface } from '../../interfaces/tipos-dados-interface';
8
8
  export declare class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
9
+ private validarEscopoPrograma;
9
10
  tratarSimbolos(simbolos: Array<SimboloInterface>): string | void;
10
11
  validarSegmentoHoraDoShow(): void;
11
12
  validarSegmentoBirlFinal(): void;
@@ -24,6 +25,7 @@ export declare class AvaliadorSintaticoBirl extends AvaliadorSintaticoBase {
24
25
  declaracaoInteiros(): Var[];
25
26
  declaracaoPontoFlutuante(): Var[];
26
27
  declaracaoRetorna(): Retorna;
28
+ protected validaTipoDeclaracaoLeia(caracteres: string): string;
27
29
  declaracaoLeia(): Leia;
28
30
  declaracaoSe(): Se;
29
31
  resolveSimboloInterfaceParaTiposDadosInterface(simbolo: SimboloInterface): TiposDadosInterface;
@@ -9,6 +9,21 @@ const declaracoes_1 = require("../../declaracoes");
9
9
  const avaliador_sintatico_base_1 = require("../avaliador-sintatico-base");
10
10
  const birl_1 = __importDefault(require("../../tipos-de-simbolos/birl"));
11
11
  class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintaticoBase {
12
+ validarEscopoPrograma() {
13
+ let declaracoes = [];
14
+ this.validarSegmentoHoraDoShow();
15
+ while (!this.estaNoFinal()) {
16
+ const declaracaoVetor = this.declaracao();
17
+ if (Array.isArray(declaracaoVetor)) {
18
+ declaracoes = declaracoes.concat(declaracaoVetor);
19
+ }
20
+ else {
21
+ declaracoes.push(declaracaoVetor);
22
+ }
23
+ }
24
+ this.validarSegmentoBirlFinal();
25
+ return declaracoes;
26
+ }
12
27
  tratarSimbolos(simbolos) {
13
28
  let identificador = 0, adicao = 0, subtracao = 0;
14
29
  for (const simbolo of simbolos) {
@@ -50,6 +65,12 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
50
65
  this.blocos += 1;
51
66
  }
52
67
  validarSegmentoBirlFinal() {
68
+ this.regredirEDevolverAtual();
69
+ while (!this.verificarTipoSimboloAtual(birl_1.default.BIRL)) {
70
+ this.consumir(birl_1.default.QUEBRA_LINHA, 'Esperado expressão `QUEBRA_LINHA` após a declaração de variáveis');
71
+ this.regredirEDevolverAtual();
72
+ this.regredirEDevolverAtual();
73
+ }
53
74
  this.consumir(birl_1.default.BIRL, 'Esperado expressão `BIRL` para fechamento do programa');
54
75
  this.blocos -= 1;
55
76
  }
@@ -129,7 +150,13 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
129
150
  declaracaoInicial = new declaracoes_1.Var(this.simbolos[this.atual], new construtos_1.Literal(this.simbolos[this.atual].linha, this.hashArquivo, valor.literal), 'numero');
130
151
  }
131
152
  else {
132
- declaracaoInicial = this.declaracao(); // inicialização da variável de controle
153
+ const declaracaoVetor = this.declaracao(); // inicialização da variável de controle
154
+ if (Array.isArray(declaracaoVetor)) {
155
+ declaracaoInicial = declaracaoVetor[0];
156
+ }
157
+ else {
158
+ declaracaoInicial = declaracaoVetor;
159
+ }
133
160
  }
134
161
  this.consumir(birl_1.default.PONTO_E_VIRGULA, 'Esperado expressão `;` após a inicialização do `PARA`.');
135
162
  const condicao = this.declaracao(); // condição de parada
@@ -168,14 +195,17 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
168
195
  }
169
196
  const simboloCaractere = this.consumir(birl_1.default.FRANGO, '');
170
197
  const inicializacoes = [];
198
+ let eLiteral = true;
171
199
  do {
172
200
  const identificador = this.consumir(birl_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'FRANGO'.");
173
201
  let valorInicializacao;
174
202
  if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
175
203
  if (this.verificarTipoSimboloAtual(birl_1.default.AJUDA)) {
204
+ eLiteral = false;
176
205
  valorInicializacao = this.declaracao();
177
206
  }
178
207
  else if (this.verificarTipoSimboloAtual(birl_1.default.IDENTIFICADOR)) {
208
+ eLiteral = false;
179
209
  valorInicializacao = this.declaracao();
180
210
  }
181
211
  else if (this.verificarTipoSimboloAtual(birl_1.default.TEXTO)) {
@@ -185,10 +215,12 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
185
215
  else {
186
216
  throw new Error('Erro ao declarar variável do tipo texto. Verifique se esta atribuindo um valor do tipo texto.');
187
217
  }
188
- inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.linha), valorInicializacao), 'texto'));
218
+ inicializacoes.push(new declaracoes_1.Var(identificador, eLiteral
219
+ ? new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.linha), valorInicializacao)
220
+ : valorInicializacao, 'texto'));
189
221
  }
190
222
  else {
191
- inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.hashArquivo), 0), 'texto'));
223
+ inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloCaractere.hashArquivo), ''), 'texto'));
192
224
  }
193
225
  } while (this.verificarSeSimboloAtualEIgualA(birl_1.default.VIRGULA));
194
226
  return inicializacoes;
@@ -209,15 +241,18 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
209
241
  }
210
242
  declaracaoInteiros() {
211
243
  let simboloInteiro = this.validarTipoDeclaracaoInteiro();
244
+ let eLiteral = true;
212
245
  const inicializacoes = [];
213
246
  do {
214
247
  const identificador = this.consumir(birl_1.default.IDENTIFICADOR, `Esperado identificador após palavra reservada '${simboloInteiro.lexema}'.`);
215
248
  let valorInicializacao = 0x00;
216
249
  if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
217
250
  if (this.verificarTipoSimboloAtual(birl_1.default.AJUDA)) {
251
+ eLiteral = false;
218
252
  valorInicializacao = this.declaracao();
219
253
  }
220
254
  else if (this.verificarTipoSimboloAtual(birl_1.default.IDENTIFICADOR)) {
255
+ eLiteral = false;
221
256
  valorInicializacao = this.declaracao();
222
257
  }
223
258
  else if (this.verificarTipoSimboloAtual(birl_1.default.NUMERO)) {
@@ -227,7 +262,9 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
227
262
  else {
228
263
  throw new Error(`Simbolo passado para inicialização de variável do tipo ${simboloInteiro.lexema} não é válido.`);
229
264
  }
230
- inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), valorInicializacao), 'numero'));
265
+ inicializacoes.push(new declaracoes_1.Var(identificador, eLiteral
266
+ ? new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), valorInicializacao)
267
+ : valorInicializacao, 'numero'));
231
268
  }
232
269
  else {
233
270
  inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloInteiro.linha), 0), 'numero'));
@@ -240,15 +277,18 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
240
277
  if (this.verificarTipoSimboloAtual(birl_1.default.DESCENDENTE)) {
241
278
  this.consumir(birl_1.default.DESCENDENTE, '');
242
279
  }
280
+ let eLiteral = true;
243
281
  const inicializacoes = [];
244
282
  do {
245
283
  const identificador = this.consumir(birl_1.default.IDENTIFICADOR, "Esperado identificador após palavra reservada 'TRAPEZIO'.");
246
284
  let valorInicializacao = 0x00;
247
285
  if (this.verificarSeSimboloAtualEIgualA(birl_1.default.IGUAL)) {
248
286
  if (this.verificarTipoSimboloAtual(birl_1.default.AJUDA)) {
287
+ eLiteral = false;
249
288
  valorInicializacao = this.declaracao();
250
289
  }
251
290
  else if (this.verificarTipoSimboloAtual(birl_1.default.IDENTIFICADOR)) {
291
+ eLiteral = false;
252
292
  valorInicializacao = this.declaracao();
253
293
  }
254
294
  else if (this.verificarTipoSimboloAtual(birl_1.default.NUMERO)) {
@@ -258,7 +298,9 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
258
298
  else {
259
299
  throw new Error(`Simbolo passado para inicialização de variável do tipo 'TRAPEZIO' não é válido.`);
260
300
  }
261
- inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloFloat.linha), valorInicializacao), 'numero'));
301
+ inicializacoes.push(new declaracoes_1.Var(identificador, eLiteral
302
+ ? new construtos_1.Literal(this.hashArquivo, Number(simboloFloat.linha), valorInicializacao)
303
+ : valorInicializacao, 'numero'));
262
304
  }
263
305
  else {
264
306
  inicializacoes.push(new declaracoes_1.Var(identificador, new construtos_1.Literal(this.hashArquivo, Number(simboloFloat.linha), 0), 'numero'));
@@ -275,6 +317,27 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
275
317
  const valor = this.declaracao();
276
318
  return new declaracoes_1.Retorna(primeiroSimbolo, valor);
277
319
  }
320
+ validaTipoDeclaracaoLeia(caracteres) {
321
+ const tipoCaractere = caracteres.charAt(1);
322
+ const tipos = {
323
+ d: 'número',
324
+ i: 'número',
325
+ u: 'número',
326
+ f: 'número',
327
+ F: 'número',
328
+ e: 'número',
329
+ E: 'número',
330
+ g: 'número',
331
+ G: 'número',
332
+ x: 'número',
333
+ X: 'número',
334
+ o: 'número',
335
+ c: 'texto',
336
+ s: 'texto',
337
+ p: 'texto',
338
+ };
339
+ return tipos[tipoCaractere] || 'desconhecido';
340
+ }
278
341
  declaracaoLeia() {
279
342
  const primeiroSimbolo = this.consumir(birl_1.default.QUE, 'Esperado expressão `QUE` para ler valor.');
280
343
  this.consumir(birl_1.default.QUE, 'Esperado expressão `QUE` após `QUE` para ler valor.');
@@ -283,11 +346,16 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
283
346
  this.consumir(birl_1.default.MONSTRAO, 'Esperado expressão `MONSTRAO` após `QUER` para ler valor.');
284
347
  this.consumir(birl_1.default.INTERROGACAO, 'Esperado interrogação após `MONSTRAO` para ler valor.');
285
348
  this.consumir(birl_1.default.PARENTESE_ESQUERDO, 'Esperado parêntese esquerdo após interrogação para ler valor.');
286
- const simbolo = this.consumir(birl_1.default.TEXTO, 'Esperado texto após parêntese esquerdo para ler valor.');
287
- const ponteiro = this.consumir(birl_1.default.IDENTIFICADOR, 'Esperado identificador após texto para ler valor.');
349
+ const textoOuSimbolo = this.consumir(birl_1.default.TEXTO, 'Esperado texto após parêntese esquerdo para ler valor.');
350
+ this.consumir(birl_1.default.VIRGULA, 'Esperado vírgula após texto para ler valor.');
351
+ this.consumir(birl_1.default.PONTEIRO, 'Esperado expressão `&` após texto para ler valor.');
352
+ const variavel = this.consumir(birl_1.default.IDENTIFICADOR, 'Esperado identificador após `&` para ler valor.');
353
+ const tipo = this.validaTipoDeclaracaoLeia(textoOuSimbolo.literal);
288
354
  this.consumir(birl_1.default.PARENTESE_DIREITO, 'Esperado parêntese direito após identificador para ler valor.');
289
- this.consumir(birl_1.default.PONTO_E_VIRGULA, 'Esperado ponto e vírgula após parêntese direito para ler valor.');
290
- return new declaracoes_1.Leia(Number(primeiroSimbolo.linha), this.hashArquivo, []);
355
+ return new declaracoes_1.Leia(Number(primeiroSimbolo.linha), this.hashArquivo, [
356
+ new construtos_1.Variavel(this.hashArquivo, variavel),
357
+ new construtos_1.Literal(this.hashArquivo, Number(textoOuSimbolo.linha), tipo),
358
+ ]);
291
359
  }
292
360
  declaracaoSe() {
293
361
  const simboloSe = this.consumir(birl_1.default.ELE, 'Esperado expressão `ELE` para condição.');
@@ -362,13 +430,19 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
362
430
  const parenteseEsquerdo = this.consumir(birl_1.default.PARENTESE_ESQUERDO, `Esperado '(' após o nome ${tipo}`);
363
431
  let paramentros = [];
364
432
  if (!this.verificarTipoSimboloAtual(birl_1.default.PARENTESE_DIREITO)) {
365
- paramentros.push(this.logicaComumParamentros());
433
+ paramentros = this.logicaComumParamentros();
366
434
  }
367
435
  this.consumir(birl_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
368
436
  this.consumir(birl_1.default.PARENTESE_DIREITO, "Esperado ')' após parâmetros.");
369
437
  let corpo = [];
370
438
  do {
371
- corpo.push(this.declaracao());
439
+ const declaracaoVetor = this.declaracao();
440
+ if (Array.isArray(declaracaoVetor)) {
441
+ corpo = corpo.concat(declaracaoVetor);
442
+ }
443
+ else {
444
+ corpo.push(declaracaoVetor);
445
+ }
372
446
  } while (![birl_1.default.BIRL].includes(this.simbolos[this.atual].tipo));
373
447
  return new construtos_1.FuncaoConstruto(this.hashArquivo, Number(parenteseEsquerdo.linha), paramentros, corpo.filter((c) => c));
374
448
  }
@@ -488,6 +562,7 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
488
562
  return this.declaracaoEscreva();
489
563
  case birl_1.default.PONTO_E_VIRGULA:
490
564
  case birl_1.default.QUEBRA_LINHA:
565
+ case birl_1.default.BIRL:
491
566
  this.avancarEDevolverAnterior();
492
567
  return null;
493
568
  case birl_1.default.IDENTIFICADOR:
@@ -510,12 +585,7 @@ class AvaliadorSintaticoBirl extends avaliador_sintatico_base_1.AvaliadorSintati
510
585
  this.blocos = 0;
511
586
  this.atual = 0;
512
587
  this.simbolos = retornoLexador.simbolos;
513
- const declaracoes = [];
514
- this.validarSegmentoHoraDoShow();
515
- while (!this.estaNoFinal() && this.simbolos[this.atual].tipo !== birl_1.default.BIRL) {
516
- declaracoes.push(this.declaracao());
517
- }
518
- this.validarSegmentoBirlFinal();
588
+ const declaracoes = this.validarEscopoPrograma();
519
589
  return {
520
590
  declaracoes: declaracoes.filter((d) => d),
521
591
  erros: this.erros,