@designliquido/delegua 0.25.8 → 0.25.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -12
- package/bin/package.json +2 -2
- package/fontes/analisador-semantico/analisador-semantico.d.ts +2 -0
- package/fontes/analisador-semantico/analisador-semantico.js +95 -2
- package/fontes/analisador-semantico/analisador-semantico.js.map +1 -1
- package/fontes/analisador-semantico/dialetos/index.d.ts +1 -1
- package/fontes/analisador-semantico/dialetos/index.js.map +1 -1
- package/fontes/analisador-semantico/pilha-variaveis.d.ts +2 -2
- package/fontes/analisador-semantico/pilha-variaveis.js.map +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.js +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico-base.js.map +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +2 -3
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +8 -93
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js +5 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-birl.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-egua-classico.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.d.ts +5 -5
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js +6 -6
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-guarani.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js +9 -9
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-mapler.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js +4 -4
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-pitugues.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.d.ts +5 -5
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js +6 -6
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-ipt.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js +9 -8
- package/fontes/avaliador-sintatico/dialetos/avaliador-sintatico-portugol-studio.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js +19 -24
- package/fontes/avaliador-sintatico/dialetos/potigol/avaliador-sintatico-potigol.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/potigol/micro-avaliador-sintatico-potigol.d.ts +5 -5
- package/fontes/avaliador-sintatico/dialetos/potigol/micro-avaliador-sintatico-potigol.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.js +21 -25
- package/fontes/avaliador-sintatico/dialetos/visualg/avaliador-sintatico-visualg.js.map +1 -1
- package/fontes/avaliador-sintatico/dialetos/visualg/parametro-visualg.d.ts +1 -1
- package/fontes/avaliador-sintatico/micro-avaliador-sintatico-base.d.ts +5 -5
- package/fontes/avaliador-sintatico/micro-avaliador-sintatico-base.js.map +1 -1
- package/fontes/avaliador-sintatico/micro-avaliador-sintatico.d.ts +6 -6
- package/fontes/avaliador-sintatico/micro-avaliador-sintatico.js.map +1 -1
- package/fontes/avaliador-sintatico/traducao/avaliador-sintatico-javascript.js +1 -1
- package/fontes/bibliotecas/dialetos/potigol/biblioteca-global.d.ts +2 -2
- package/fontes/bibliotecas/dialetos/potigol/biblioteca-global.js.map +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-numero.d.ts +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-numero.js +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-numero.js.map +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-texto.d.ts +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-texto.js +6 -6
- package/fontes/bibliotecas/dialetos/potigol/primitivas-texto.js.map +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-vetor.d.ts +1 -1
- package/fontes/bibliotecas/dialetos/potigol/primitivas-vetor.js.map +1 -1
- package/fontes/bibliotecas/dialetos/visualg/caracteres.d.ts +2 -2
- package/fontes/bibliotecas/dialetos/visualg/caracteres.js.map +1 -1
- package/fontes/bibliotecas/dialetos/visualg/numerica.d.ts +2 -2
- package/fontes/bibliotecas/dialetos/visualg/numerica.js +2 -2
- package/fontes/bibliotecas/dialetos/visualg/numerica.js.map +1 -1
- package/fontes/bibliotecas/primitivas-texto.d.ts +1 -1
- package/fontes/bibliotecas/primitivas-texto.js +2 -2
- package/fontes/bibliotecas/primitivas-texto.js.map +1 -1
- package/fontes/bibliotecas/primitivas-vetor.d.ts +2 -2
- package/fontes/bibliotecas/primitivas-vetor.js +7 -5
- package/fontes/bibliotecas/primitivas-vetor.js.map +1 -1
- package/fontes/construtos/constante-ou-variavel.js.map +1 -1
- package/fontes/construtos/funcao.js.map +1 -1
- package/fontes/construtos/tuplas/deceto.d.ts +1 -1
- package/fontes/construtos/tuplas/deceto.js.map +1 -1
- package/fontes/construtos/tuplas/dupla.d.ts +1 -1
- package/fontes/construtos/tuplas/index.js +2 -2
- package/fontes/construtos/tuplas/index.js.map +1 -1
- package/fontes/construtos/tuplas/noneto.d.ts +1 -1
- package/fontes/construtos/tuplas/noneto.js.map +1 -1
- package/fontes/construtos/tuplas/octeto.d.ts +1 -1
- package/fontes/construtos/tuplas/octeto.js.map +1 -1
- package/fontes/construtos/tuplas/quarteto.d.ts +1 -1
- package/fontes/construtos/tuplas/quinteto.d.ts +1 -1
- package/fontes/construtos/tuplas/septeto.d.ts +1 -1
- package/fontes/construtos/tuplas/sexteto.d.ts +1 -1
- package/fontes/construtos/tuplas/trio.d.ts +1 -1
- package/fontes/construtos/tuplas/tupla.d.ts +2 -2
- package/fontes/construtos/tuplas/tupla.js +1 -1
- package/fontes/construtos/tuplas/tupla.js.map +1 -1
- package/fontes/declaracoes/const-multiplo.js.map +1 -1
- package/fontes/declaracoes/const.js.map +1 -1
- package/fontes/declaracoes/para-cada.d.ts +2 -2
- package/fontes/declaracoes/para-cada.js.map +1 -1
- package/fontes/declaracoes/propriedade-classe.d.ts +2 -2
- package/fontes/estruturas/chamavel.d.ts +1 -1
- package/fontes/estruturas/delegua-funcao.js +9 -9
- package/fontes/estruturas/delegua-funcao.js.map +1 -1
- package/fontes/interfaces/erros/erro-analisador-semantico.d.ts +1 -1
- package/fontes/interfaces/parametro-interface.d.ts +6 -1
- package/fontes/interfaces/retornos/retorno-analisador-semantico.d.ts +1 -1
- package/fontes/interpretador/dialetos/birl/interpretador-birl.js +4 -4
- package/fontes/interpretador/dialetos/birl/interpretador-birl.js.map +1 -1
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js +7 -7
- package/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.js.map +1 -1
- package/fontes/interpretador/dialetos/egua-classico/resolvedor/resolvedor.js.map +1 -1
- package/fontes/interpretador/dialetos/index.js.map +1 -1
- package/fontes/interpretador/dialetos/mapler/comum.d.ts +2 -2
- package/fontes/interpretador/dialetos/mapler/comum.js +3 -9
- package/fontes/interpretador/dialetos/mapler/comum.js.map +1 -1
- package/fontes/interpretador/dialetos/mapler/interpretador-mapler-com-depuracao.js +1 -1
- package/fontes/interpretador/dialetos/mapler/interpretador-mapler.js.map +1 -1
- package/fontes/interpretador/dialetos/portugol-studio/comum.d.ts +2 -2
- package/fontes/interpretador/dialetos/portugol-studio/comum.js +3 -1
- package/fontes/interpretador/dialetos/portugol-studio/comum.js.map +1 -1
- package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio-com-depuracao.d.ts +2 -2
- package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio-com-depuracao.js.map +1 -1
- package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.d.ts +2 -2
- package/fontes/interpretador/dialetos/portugol-studio/interpretador-portugol-studio.js.map +1 -1
- package/fontes/interpretador/dialetos/potigol/comum.d.ts +11 -11
- package/fontes/interpretador/dialetos/potigol/comum.js +13 -13
- package/fontes/interpretador/dialetos/potigol/comum.js.map +1 -1
- package/fontes/interpretador/dialetos/potigol/inferenciador.js.map +1 -1
- package/fontes/interpretador/dialetos/potigol/interpretador-potigol-com-depuracao.d.ts +2 -2
- package/fontes/interpretador/dialetos/potigol/interpretador-potigol-com-depuracao.js.map +1 -1
- package/fontes/interpretador/dialetos/potigol/interpretador-potigol.d.ts +2 -2
- package/fontes/interpretador/dialetos/visualg/comum.d.ts +3 -3
- package/fontes/interpretador/dialetos/visualg/comum.js +11 -25
- package/fontes/interpretador/dialetos/visualg/comum.js.map +1 -1
- package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js +5 -3
- package/fontes/interpretador/dialetos/visualg/interpretador-visualg-com-depuracao.js.map +1 -1
- package/fontes/interpretador/dialetos/visualg/interpretador-visualg.js.map +1 -1
- package/fontes/interpretador/inferenciador.js.map +1 -1
- package/fontes/interpretador/interpretador-base.js +29 -30
- package/fontes/interpretador/interpretador-base.js.map +1 -1
- package/fontes/interpretador/interpretador-com-depuracao.js +3 -3
- package/fontes/interpretador/interpretador-com-depuracao.js.map +1 -1
- package/fontes/interpretador/pilha-escopos-execucao.js +5 -5
- package/fontes/lexador/dialetos/lexador-guarani.d.ts +3 -3
- package/fontes/lexador/dialetos/lexador-mapler.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-portugol-ipt.d.ts +3 -3
- package/fontes/lexador/dialetos/lexador-portugol-ipt.js +2 -3
- package/fontes/lexador/dialetos/lexador-portugol-ipt.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-portugol-studio.js.map +1 -1
- package/fontes/lexador/dialetos/lexador-potigol.d.ts +3 -3
- package/fontes/lexador/dialetos/lexador-potigol.js.map +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/guarani.js +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/guarani.js.map +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/portugol-ipt.js +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/portugol-studio.js.map +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/potigol.js +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/potigol.js.map +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/rantiaquin.js.map +1 -1
- package/fontes/lexador/dialetos/palavras-reservadas/visualg.js +1 -1
- package/fontes/lexador/lexador-base.js.map +1 -1
- package/fontes/lexador/lexador.js.map +1 -1
- package/fontes/lexador/micro-lexador.d.ts +3 -3
- package/fontes/lexador/palavras-reservadas.js +1 -1
- package/fontes/lexador/palavras-reservadas.js.map +1 -1
- package/fontes/lexador/traducao/lexador-javascript.d.ts +5 -5
- package/fontes/lexador/traducao/lexador-javascript.js +14 -14
- package/fontes/lexador/traducao/lexador-javascript.js.map +1 -1
- package/fontes/tipos-de-simbolos/birl.js.map +1 -1
- package/fontes/tipos-de-simbolos/guarani.js +1 -1
- package/fontes/tipos-de-simbolos/guarani.js.map +1 -1
- package/fontes/tipos-de-simbolos/portugol-studio.js +1 -1
- package/fontes/tipos-de-simbolos/potigol.js +1 -1
- package/fontes/tipos-de-simbolos/potigol.js.map +1 -1
- package/fontes/tipos-de-simbolos/rantiaquin.js.map +1 -1
- package/fontes/tipos-de-simbolos/visualg.js +1 -1
- package/fontes/tradutores/python/python3-lexer.d.ts +5 -5
- package/fontes/tradutores/python/python3-lexer.js +841 -566
- package/fontes/tradutores/python/python3-lexer.js.map +1 -1
- package/fontes/tradutores/tradutor-assemblyscript.js +1 -1
- package/fontes/tradutores/tradutor-assemblyscript.js.map +1 -1
- package/fontes/tradutores/tradutor-javascript.d.ts +1 -1
- package/fontes/tradutores/tradutor-javascript.js +12 -13
- package/fontes/tradutores/tradutor-javascript.js.map +1 -1
- package/fontes/tradutores/tradutor-portugol-ipt.d.ts +3 -3
- package/fontes/tradutores/tradutor-portugol-ipt.js +1 -1
- package/fontes/tradutores/tradutor-portugol-ipt.js.map +1 -1
- package/fontes/tradutores/tradutor-python.d.ts +3 -3
- package/fontes/tradutores/tradutor-python.js +4 -5
- package/fontes/tradutores/tradutor-python.js.map +1 -1
- package/fontes/tradutores/tradutor-reverso-python.js +1 -1
- package/fontes/tradutores/tradutor-reverso-python.js.map +1 -1
- package/fontes/tradutores/tradutor-reverso-visualg.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -47,19 +47,41 @@ Delégua é uma linguagem de programação baseada na língua portuguesa, cujo c
|
|
|
47
47
|
|
|
48
48
|
Delégua tem retrocompatibilidade com a linguagem Égua e compreende sua extensão de arquivo (`.egua`). Em outras palavras, todo programa escrito em Égua funciona em Delégua, mas Delégua tem capacidades a mais, [conforme mencionado em documentação](https://github.com/DesignLiquido/delegua/wiki).
|
|
49
49
|
|
|
50
|
+
## Vantagens de programar em português
|
|
51
|
+
|
|
52
|
+
- **Acessibilidade e Compreensão:** Programar em sua língua materna, como o português, pode tornar os conceitos de programação mais acessíveis e fáceis de entender, especialmente para iniciantes. Isso reduz a barreira de entrada para novos programadores.
|
|
53
|
+
|
|
54
|
+
- **Facilita o Aprendizado:** A programação em português permite que os aprendizes concentrem-se nos conceitos de programação em vez de lidar com a barreira do idioma. Isso pode acelerar o processo de aprendizado, especialmente para pessoas que não têm fluência em inglês.
|
|
55
|
+
|
|
56
|
+
- **Melhor Comunicação e Documentação:** Programar em seu idioma nativo pode levar a uma comunicação mais clara e eficaz com colegas e clientes locais. Além disso, a documentação em português pode ser mais fácil de compreender e seguir.
|
|
57
|
+
|
|
58
|
+
- **Contribuição para a Identidade Cultural:** Linguagens de programação em português contribuem para a preservação da identidade cultural e linguística, promovendo o uso e a adoção do idioma em contextos tecnológicos.
|
|
59
|
+
|
|
60
|
+
- **Facilita a Localização de Erros:** Programar em português pode tornar mais fácil a localização e correção de erros de código, uma vez que os desenvolvedores podem compreender rapidamente o contexto dos problemas.
|
|
61
|
+
|
|
50
62
|
## Características
|
|
63
|
+
Delégua, a linguagem de programação totalmente em português, possui uma série de características que a tornam única e atraente:
|
|
64
|
+
|
|
65
|
+
### Acessibilidade
|
|
66
|
+
- **Simples e Completa:** Delégua é projetada para ser acessível a programadores de todos os níveis, desde iniciantes até experientes. Sua simplicidade e completude facilitam a aprendizagem.
|
|
51
67
|
|
|
52
|
-
- **
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
- **Código aberto (_open source_)
|
|
56
|
-
|
|
57
|
-
- **
|
|
58
|
-
|
|
59
|
-
- **
|
|
68
|
+
- **Totalmente em Português:** Uma característica distintiva é que Delégua é desenvolvida inteiramente em português(mesmo), tornando-a acessível e amigável para aqueles que preferem programar em seu idioma nativo.
|
|
69
|
+
|
|
70
|
+
### Tecnologia Moderna
|
|
71
|
+
- **Código aberto (_open source_):** Delégua é uma linguagem de código aberto e gratuita, licenciada sob a MIT License, permitindo o uso sem restrições.
|
|
72
|
+
|
|
73
|
+
- **Modularidade:** A linguagem suporta a criação de módulos reutilizáveis, promovendo a organização e a manutenção do código.
|
|
74
|
+
|
|
75
|
+
- **Orientada a Objetos:** Delégua oferece recursos completos de programação orientada a objetos, incluindo classes, objetos e herança.
|
|
76
|
+
|
|
77
|
+
- **Multidialetos.** Execute algoritmos em [Portugol VisuAlg](https://pt.wikipedia.org/wiki/Visualg), [Portugol Studio](http://lite.acad.univali.br/portugol/), [Portugol Mapler](https://portugol.sourceforge.io/) e [Portugol IPT](http://orion.ipt.pt/~manso/Portugol/menuEsquerda.html).
|
|
78
|
+
|
|
79
|
+
### Flexibilidade e Potencial
|
|
60
80
|
- **Depurável.** Usando um editor com suporte à depuração como o [Visual Studio Code](https://code.visualstudio.com), você pode inspecionar o seu programa, suas variáveis e executar linha por linha.
|
|
61
|
-
|
|
62
|
-
- **
|
|
81
|
+
|
|
82
|
+
- **Portabilidade:** Delégua é executável em qualquer dispositivo que interprete JavaScript, tornando-a versátil e compatível com diversos sistemas operacionais e qualquer navegador de internet.
|
|
83
|
+
|
|
84
|
+
- **Traduzibilidade:** A capacidade de traduzir programas entre Delégua, Python e JavaScript aumenta a flexibilidade e as opções de desenvolvimento.
|
|
63
85
|
|
|
64
86
|
## Aplicações
|
|
65
87
|
|
|
@@ -68,12 +90,12 @@ Delégua tem retrocompatibilidade com a linguagem Égua e compreende sua extens
|
|
|
68
90
|
|
|
69
91
|
## Instalação
|
|
70
92
|
|
|
71
|
-
Delégua executa em qualquer dispositivo que interprete JavaScript, ou seja, computadores, celulares e tablets. Você não precisa instalar nada se não quiser. Utilize uma das seguintes opções:
|
|
93
|
+
Delégua executa em qualquer dispositivo que interprete JavaScript, ou seja, computadores, celulares e tablets. Você não precisa instalar nada se não quiser. Utilize uma das seguintes opções:
|
|
72
94
|
|
|
73
95
|
- [Dentro do Visual Studio Code, instale a extensão da Design Líquido](https://marketplace.visualstudio.com/items?itemName=designliquido.designliquido-vscode). [Aprenda como executar e depurar seu programa aqui](https://www.youtube.com/watch?v=TQxLekzvBv8);
|
|
74
96
|
- [Utilize nosso editor online](https://designliquido.github.io/delegua-web/).
|
|
75
97
|
|
|
76
|
-
Para instalar no seu computador, veja o projeto [@designliquido/delegua-node](https://github.com/DesignLiquido/delegua-node).
|
|
98
|
+
Para instalar no seu computador, veja o projeto [@designliquido/delegua-node](https://github.com/DesignLiquido/delegua-node).
|
|
77
99
|
|
|
78
100
|
## Documentação
|
|
79
101
|
|
package/bin/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@designliquido/delegua",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.9",
|
|
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
|
|
17
|
+
"prettier-format": "prettier --config .prettierrc --write fontes/**/*.ts"
|
|
18
18
|
},
|
|
19
19
|
"repository": {
|
|
20
20
|
"type": "git",
|
|
@@ -11,6 +11,7 @@ interface VariavelHipoteticaInterface {
|
|
|
11
11
|
tipo: TiposDadosInterface;
|
|
12
12
|
subtipo?: 'texto' | 'número' | 'inteiro' | 'longo' | 'lógico';
|
|
13
13
|
imutavel: boolean;
|
|
14
|
+
valor?: any;
|
|
14
15
|
}
|
|
15
16
|
export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface {
|
|
16
17
|
pilhaVariaveis: PilhaVariaveis;
|
|
@@ -21,6 +22,7 @@ export declare class AnalisadorSemantico implements AnalisadorSemanticoInterface
|
|
|
21
22
|
erros: ErroAnalisadorSemantico[];
|
|
22
23
|
constructor();
|
|
23
24
|
erro(simbolo: SimboloInterface, mensagemDeErro: string): void;
|
|
25
|
+
verificarTipoAtribuido(declaracao: Var | Const): void;
|
|
24
26
|
visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
|
|
25
27
|
visitarExpressaoFalhar(expressao: any): Promise<any>;
|
|
26
28
|
visitarExpressaoLiteral(expressao: Literal): Promise<any>;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AnalisadorSemantico = void 0;
|
|
4
4
|
const construtos_1 = require("../construtos");
|
|
5
|
+
const declaracoes_1 = require("../declaracoes");
|
|
5
6
|
const pilha_variaveis_1 = require("./pilha-variaveis");
|
|
6
7
|
class AnalisadorSemantico {
|
|
7
8
|
constructor() {
|
|
@@ -18,6 +19,43 @@ class AnalisadorSemantico {
|
|
|
18
19
|
linha: simbolo.linha,
|
|
19
20
|
});
|
|
20
21
|
}
|
|
22
|
+
verificarTipoAtribuido(declaracao) {
|
|
23
|
+
if (declaracao.tipo) {
|
|
24
|
+
if (['vetor', 'qualquer[]', 'inteiro[]', 'texto[]'].includes(declaracao.tipo)) {
|
|
25
|
+
if (declaracao.inicializador instanceof construtos_1.Vetor) {
|
|
26
|
+
const vetor = declaracao.inicializador;
|
|
27
|
+
if (declaracao.tipo === 'inteiro[]') {
|
|
28
|
+
const v = vetor.valores.find(v => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'number');
|
|
29
|
+
if (v) {
|
|
30
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de 'inteiros' ou 'real'.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (declaracao.tipo === 'texto[]') {
|
|
34
|
+
const v = vetor.valores.find(v => typeof (v === null || v === void 0 ? void 0 : v.valor) !== 'string');
|
|
35
|
+
if (v) {
|
|
36
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de 'texto'.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um vetor de elementos.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (declaracao.inicializador instanceof construtos_1.Literal) {
|
|
45
|
+
const literal = declaracao.inicializador;
|
|
46
|
+
if (declaracao.tipo === 'texto') {
|
|
47
|
+
if (typeof literal.valor !== 'string') {
|
|
48
|
+
this.erro(declaracao.simbolo, `Atribuição inválida para '${declaracao.simbolo.lexema}', é esperado um 'texto'.`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (['inteiro', 'real'].includes(declaracao.tipo)) {
|
|
52
|
+
if (typeof literal.valor !== 'number') {
|
|
53
|
+
this.erro(declaracao.simbolo, `Atribuição inválida '${declaracao.simbolo.lexema}', é esperado um 'número'.`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
21
59
|
visitarExpressaoTipoDe(expressao) {
|
|
22
60
|
return Promise.resolve();
|
|
23
61
|
}
|
|
@@ -75,13 +113,13 @@ class AnalisadorSemantico {
|
|
|
75
113
|
let valores = expressao.valor.valores;
|
|
76
114
|
if (!['qualquer[]'].includes(valor.tipo)) {
|
|
77
115
|
if (valor.tipo === 'texto[]') {
|
|
78
|
-
if (!valores.every(v => typeof v.valor === 'string')) {
|
|
116
|
+
if (!valores.every((v) => typeof v.valor === 'string')) {
|
|
79
117
|
this.erro(expressao.simbolo, `Esperado tipo '${valor.tipo}' na atribuição.`);
|
|
80
118
|
return Promise.resolve();
|
|
81
119
|
}
|
|
82
120
|
}
|
|
83
121
|
if (['inteiro[]', 'numero[]'].includes(valor.tipo)) {
|
|
84
|
-
if (!valores.every(v => typeof v.valor === 'number')) {
|
|
122
|
+
if (!valores.every((v) => typeof v.valor === 'number')) {
|
|
85
123
|
this.erro(expressao.simbolo, `Esperado tipo '${valor.tipo}' na atribuição.`);
|
|
86
124
|
return Promise.resolve();
|
|
87
125
|
}
|
|
@@ -128,6 +166,21 @@ class AnalisadorSemantico {
|
|
|
128
166
|
return Promise.resolve();
|
|
129
167
|
}
|
|
130
168
|
visitarDeclaracaoEscolha(declaracao) {
|
|
169
|
+
var _a, _b;
|
|
170
|
+
const identificadorOuLiteral = declaracao.identificadorOuLiteral;
|
|
171
|
+
const valor = (_b = this.variaveis[(_a = identificadorOuLiteral.simbolo) === null || _a === void 0 ? void 0 : _a.lexema]) === null || _b === void 0 ? void 0 : _b.valor;
|
|
172
|
+
const tipo = typeof valor;
|
|
173
|
+
for (let caminho of declaracao.caminhos) {
|
|
174
|
+
for (let condicao of caminho.condicoes) {
|
|
175
|
+
if (valor instanceof declaracoes_1.Leia && typeof (condicao === null || condicao === void 0 ? void 0 : condicao.valor) !== 'string') {
|
|
176
|
+
this.erro(condicao, `'caso ${condicao.valor}:' não é do mesmo tipo esperado em 'escolha'`);
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (!(valor instanceof declaracoes_1.Leia) && typeof (condicao === null || condicao === void 0 ? void 0 : condicao.valor) !== tipo) {
|
|
180
|
+
this.erro(condicao, `'caso ${condicao.valor}:' não é do mesmo tipo esperado em 'escolha'`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
131
184
|
return Promise.resolve();
|
|
132
185
|
}
|
|
133
186
|
visitarDeclaracaoTente(declaracao) {
|
|
@@ -149,6 +202,7 @@ class AnalisadorSemantico {
|
|
|
149
202
|
return Promise.resolve();
|
|
150
203
|
}
|
|
151
204
|
visitarDeclaracaoConst(declaracao) {
|
|
205
|
+
this.verificarTipoAtribuido(declaracao);
|
|
152
206
|
if (this.variaveis.hasOwnProperty(declaracao.simbolo.lexema)) {
|
|
153
207
|
this.erros.push({
|
|
154
208
|
simbolo: declaracao.simbolo,
|
|
@@ -161,6 +215,7 @@ class AnalisadorSemantico {
|
|
|
161
215
|
this.variaveis[declaracao.simbolo.lexema] = {
|
|
162
216
|
imutavel: true,
|
|
163
217
|
tipo: declaracao.tipo,
|
|
218
|
+
valor: declaracao.inicializador.valor
|
|
164
219
|
};
|
|
165
220
|
}
|
|
166
221
|
return Promise.resolve();
|
|
@@ -169,9 +224,11 @@ class AnalisadorSemantico {
|
|
|
169
224
|
return Promise.resolve();
|
|
170
225
|
}
|
|
171
226
|
visitarDeclaracaoVar(declaracao) {
|
|
227
|
+
this.verificarTipoAtribuido(declaracao);
|
|
172
228
|
this.variaveis[declaracao.simbolo.lexema] = {
|
|
173
229
|
imutavel: false,
|
|
174
230
|
tipo: declaracao.tipo,
|
|
231
|
+
valor: declaracao.inicializador.valor || declaracao.inicializador
|
|
175
232
|
};
|
|
176
233
|
return Promise.resolve();
|
|
177
234
|
}
|
|
@@ -200,6 +257,42 @@ class AnalisadorSemantico {
|
|
|
200
257
|
return Promise.resolve();
|
|
201
258
|
}
|
|
202
259
|
visitarDeclaracaoDefinicaoFuncao(declaracao) {
|
|
260
|
+
for (let parametro of declaracao.funcao.parametros) {
|
|
261
|
+
if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado.tipo) {
|
|
262
|
+
this.erro(declaracao.simbolo, `O tipo '${parametro.tipoDado.nome}' não é válido.`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
if (declaracao.funcao.tipoRetorno === undefined) {
|
|
266
|
+
this.erro(declaracao.simbolo, `Declaração de retorno da função é inválido.`);
|
|
267
|
+
}
|
|
268
|
+
let tipoRetornoFuncao = declaracao.funcao.tipoRetorno;
|
|
269
|
+
if (tipoRetornoFuncao) {
|
|
270
|
+
let funcaoContemRetorno = declaracao.funcao.corpo.find((c) => c instanceof declaracoes_1.Retorna);
|
|
271
|
+
if (funcaoContemRetorno) {
|
|
272
|
+
if (tipoRetornoFuncao === 'vazio') {
|
|
273
|
+
this.erro(declaracao.simbolo, `A função não pode ter nenhum tipo de retorno.`);
|
|
274
|
+
return Promise.resolve();
|
|
275
|
+
}
|
|
276
|
+
const tipoValor = typeof funcaoContemRetorno.valor.valor;
|
|
277
|
+
if (!['qualquer'].includes(tipoRetornoFuncao)) {
|
|
278
|
+
if (tipoValor === 'string') {
|
|
279
|
+
if (tipoRetornoFuncao != 'texto') {
|
|
280
|
+
this.erro(declaracao.simbolo, `Esperado retorno do tipo '${tipoRetornoFuncao}' dentro da função.`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (tipoValor === 'number') {
|
|
284
|
+
if (!['inteiro', 'real'].includes(tipoRetornoFuncao)) {
|
|
285
|
+
this.erro(declaracao.simbolo, `Esperado retorno do tipo '${tipoRetornoFuncao}' dentro da função.`);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
if (tipoRetornoFuncao !== 'vazio') {
|
|
292
|
+
this.erro(declaracao.simbolo, `Esperado retorno do tipo '${tipoRetornoFuncao}' dentro da função.`);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
203
296
|
return Promise.resolve();
|
|
204
297
|
}
|
|
205
298
|
visitarDeclaracaoClasse(declaracao) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analisador-semantico.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analisador-semantico.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/analisador-semantico.ts"],"names":[],"mappings":";;;AAAA,8CAAoG;AACpG,gDAyBwB;AAOxB,uDAAmD;AASnD,MAAa,mBAAmB;IAM5B;QACI,IAAI,CAAC,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,OAAyB,EAAE,cAAsB;QAClD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,cAAc;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC,CAAC;IACP,CAAC;IAED,sBAAsB,CAAC,UAAuB;QAC1C,IAAI,UAAU,CAAC,IAAI,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC3E,IAAI,UAAU,CAAC,aAAa,YAAY,kBAAK,EAAE;oBAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,aAAsB,CAAC;oBAChD,IAAI,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE;wBACjC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAA,KAAK,QAAQ,CAAC,CAAA;wBAC/D,IAAG,CAAC,EAAE;4BACF,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,iDAAiD,CAC1G,CAAC;yBACL;qBACJ;oBACD,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;wBAC/B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,KAAK,CAAA,KAAK,QAAQ,CAAC,CAAA;wBAC/D,IAAG,CAAC,EAAE;4BACF,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,oCAAoC,CAC7F,CAAC;yBACL;qBACJ;iBACJ;qBAAM;oBACH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,sCAAsC,CAAC,CAAC;iBAC/H;aACJ;YACD,IAAI,UAAU,CAAC,aAAa,YAAY,oBAAO,EAAE;gBAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,aAAwB,CAAC;gBACpD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;oBAC7B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;wBACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,6BAA6B,UAAU,CAAC,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC;qBACpH;iBACJ;gBACD,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;oBAC/C,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;wBACnC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,wBAAwB,UAAU,CAAC,OAAO,CAAC,MAAM,4BAA4B,CAAC,CAAC;qBAChH;iBACJ;aACJ;SACJ;IACL,CAAC;IAED,sBAAsB,CAAC,SAAiB;QACpC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,SAAc;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,SAAkB;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,2BAA2B,CAAC,SAAc;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,SAAc;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,SAAc;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,SAAc;QACpC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,6BAA6B,CAAC,SAAmB;QAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE;YACR,IAAI,CAAC,IAAI,CACL,SAAS,CAAC,OAAO,EACjB,YAAY,SAAS,CAAC,OAAO,CAAC,MAAM,0CAA0C,CACjF,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;QAED,IAAI,KAAK,CAAC,IAAI,EAAE;YACZ,IAAI,SAAS,CAAC,KAAK,YAAY,oBAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACjE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,uCAAuC,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAClG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC5B;YACD,IAAI,SAAS,CAAC,KAAK,YAAY,kBAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAChE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,uCAAuC,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;gBAClG,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC5B;YACD,IAAI,SAAS,CAAC,KAAK,YAAY,oBAAO,EAAE;gBACpC,IAAI,YAAY,GAAG,OAAQ,SAAS,CAAC,KAAiB,CAAC,KAAK,CAAC;gBAC7D,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACpC,IAAI,YAAY,KAAK,QAAQ,EAAE;wBAC3B,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;4BACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;yBAC5B;qBACJ;oBACD,IAAI,YAAY,KAAK,QAAQ,EAAE;wBAC3B,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;4BAC3C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;yBAC5B;qBACJ;iBACJ;aACJ;YACD,IAAI,SAAS,CAAC,KAAK,YAAY,kBAAK,EAAE;gBAClC,IAAI,OAAO,GAAI,SAAS,CAAC,KAAe,CAAC,OAAO,CAAC;gBACjD,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACtC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;wBAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE;4BACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;yBAC5B;qBACJ;oBACD,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;wBAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,EAAE;4BACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAC;4BAC7E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;yBAC5B;qBACJ;iBACJ;aACJ;SACJ;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,SAAS,CAAC,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC;YAC/F,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;SAC5B;IACL,CAAC;IAED,0BAA0B,CAAC,SAAc;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,UAAqB;QAC9C,OAAO,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,oBAAoB,CAAC,SAAe;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,SAAuB;QAChD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,SAAc;QACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAqB,CAAC,UAAgB;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,UAAoB;QAC1C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mBAAmB,CAAC,UAAc;QAC9B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,UAAmB;QACvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,UAAiB;QACpC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,iCAAiC,CAAC,UAA6B;QAC3D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,wBAAwB,CAAC,UAAmB;;QACxC,MAAM,sBAAsB,GAAG,UAAU,CAAC,sBAA6B,CAAC;QACxE,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,MAAA,sBAAsB,CAAC,OAAO,0CAAE,MAAM,CAAC,0CAAE,KAAK,CAAC;QAC5E,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC;QAC1B,KAAK,IAAI,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE;YACrC,KAAK,IAAI,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE;gBACpC,IAAI,KAAK,YAAY,kBAAI,IAAI,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;oBAC9D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC,KAAK,8CAA8C,CAAC,CAAC;oBAC3F,SAAS;iBACZ;gBACD,IAAI,CAAC,CAAC,KAAK,YAAY,kBAAI,CAAC,IAAI,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,CAAA,KAAK,IAAI,EAAE;oBAC7D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,QAAQ,CAAC,KAAK,8CAA8C,CAAC,CAAC;iBAC9F;aACJ;SACJ;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,UAAiB;QACpC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,UAAoB;QAC1C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,yBAAyB,CAAC,UAAoB;QAC1C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,wBAAwB,CAAC,UAAmB;QACxC,4BAA4B;IAChC,CAAC;IAED,iCAAiC,CAAC,UAA6B;QAC3D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAqB,CAAC,UAAiB;QACnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,UAAiB;QAEpC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,QAAQ,EAAE,mCAAmC;gBAC7C,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,KAAK,EAAE,UAAU,CAAC,KAAK;aAC1B,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;gBACxC,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK;aACxC,CAAC;SACL;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,8BAA8B,CAAC,UAAyB;QACpD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,oBAAoB,CAAC,UAAe;QAEhC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG;YACxC,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,UAAU,CAAC,aAAa;SACpE,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,UAAuB;QAChD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,wBAAwB,CAAC,UAAqB;QAC1C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,sBAAsB,CAAC,UAAmB;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,wBAAwB,CAAC,UAAmB;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,6BAA6B,CAAC,SAAc;QACxC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,mCAAmC,CAAC,SAAc;QAC9C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,oCAAoC,CAAC,SAAc;QAC/C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,SAAc;QACvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,gCAAgC,CAAC,UAA4B;QACzD,KAAK,IAAI,SAAS,IAAI,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;YAChD,IAAG,SAAS,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;gBACjE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,CAAC;aACtF;SACJ;QAED,IAAI,UAAU,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;YAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,6CAA6C,CAAC,CAAC;SAChF;QAED,IAAI,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;QACtD,IAAI,iBAAiB,EAAE;YACnB,IAAI,mBAAmB,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,qBAAO,CAAY,CAAC;YAC/F,IAAI,mBAAmB,EAAE;gBACrB,IAAI,iBAAiB,KAAK,OAAO,EAAE;oBAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,+CAA+C,CAAC,CAAC;oBAC/E,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;iBAC5B;gBAED,MAAM,SAAS,GAAG,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzD,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;oBAC3C,IAAI,SAAS,KAAK,QAAQ,EAAE;wBACxB,IAAI,iBAAiB,IAAI,OAAO,EAAE;4BAC9B,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,iBAAiB,qBAAqB,CACtE,CAAC;yBACL;qBACJ;oBACD,IAAI,SAAS,KAAK,QAAQ,EAAE;wBACxB,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;4BAClD,IAAI,CAAC,IAAI,CACL,UAAU,CAAC,OAAO,EAClB,6BAA6B,iBAAiB,qBAAqB,CACtE,CAAC;yBACL;qBACJ;iBACJ;aACJ;iBAAM;gBACH,IAAI,iBAAiB,KAAK,OAAO,EAAE;oBAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,6BAA6B,iBAAiB,qBAAqB,CAAC,CAAC;iBACtG;aACJ;SACJ;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,uBAAuB,CAAC,UAAkB;QACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,4BAA4B,CAAC,SAAc;QACvC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,oBAAoB,CAAC,SAAc;QAC/B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,0BAA0B,CAAC,SAAc;QACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAqB,CAAC,SAAc;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,qBAAqB,CAAC,SAAgB;QAClC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,WAAyB;QAC9B,8CAA8C;QAC9C,iCAAiC;QACjC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE;YACpC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;QAED,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;SACU,CAAC;IACpC,CAAC;CACJ;AAjZD,kDAiZC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './analisador-semantico-birl';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../fontes/analisador-semantico/dialetos/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { VariavelInterface } from
|
|
2
|
-
import { PilhaInterface } from
|
|
1
|
+
import { VariavelInterface } from '../interfaces';
|
|
2
|
+
import { PilhaInterface } from '../interfaces';
|
|
3
3
|
export declare class PilhaVariaveis implements PilhaInterface<{
|
|
4
4
|
[nomeVariavel: string]: VariavelInterface;
|
|
5
5
|
}> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pilha-variaveis.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/pilha-variaveis.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IAGvB;QACI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"pilha-variaveis.js","sourceRoot":"","sources":["../../../fontes/analisador-semantico/pilha-variaveis.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IAGvB;QACI,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,IAAmD;QACxD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa;QACT,IAAI,IAAI,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAC5B,CAAC;CACJ;AAxBD,wCAwBC"}
|
|
@@ -15,7 +15,7 @@ const comum_1 = __importDefault(require("../tipos-de-simbolos/comum"));
|
|
|
15
15
|
*/
|
|
16
16
|
class AvaliadorSintaticoBase {
|
|
17
17
|
declaracaoDeVariaveis() {
|
|
18
|
-
throw new Error(
|
|
18
|
+
throw new Error('Método não implementado.');
|
|
19
19
|
}
|
|
20
20
|
consumir(tipo, mensagemDeErro) {
|
|
21
21
|
if (this.verificarTipoSimboloAtual(tipo))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"avaliador-sintatico-base.js","sourceRoot":"","sources":["../../../fontes/avaliador-sintatico/avaliador-sintatico-base.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { Classe, Continua, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fa
|
|
|
5
5
|
import { RetornoAvaliadorSintatico } from '../interfaces/retornos/retorno-avaliador-sintatico';
|
|
6
6
|
import { RetornoLexador } from '../interfaces/retornos/retorno-lexador';
|
|
7
7
|
import { RetornoDeclaracao } from './retornos';
|
|
8
|
+
import { TiposDadosInterface } from '../interfaces/tipos-dados-interface';
|
|
8
9
|
/**
|
|
9
10
|
* O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
|
|
10
11
|
* Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
|
|
@@ -23,9 +24,8 @@ export declare class AvaliadorSintatico implements AvaliadorSintaticoInterface<S
|
|
|
23
24
|
consumir(tipo: string, mensagemDeErro: string): SimboloInterface;
|
|
24
25
|
verificarTipoSimboloAtual(tipo: string): boolean;
|
|
25
26
|
verificarTipoProximoSimbolo(tipo: string): boolean;
|
|
26
|
-
verificarDefinicaoTipoAtual():
|
|
27
|
+
verificarDefinicaoTipoAtual(): TiposDadosInterface;
|
|
27
28
|
simboloAtual(): SimboloInterface;
|
|
28
|
-
simboloAnterior(): SimboloInterface;
|
|
29
29
|
estaNoFinal(): boolean;
|
|
30
30
|
avancarEDevolverAnterior(): SimboloInterface;
|
|
31
31
|
verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean;
|
|
@@ -85,7 +85,6 @@ export declare class AvaliadorSintatico implements AvaliadorSintaticoInterface<S
|
|
|
85
85
|
* ocorrer em blocos de escopo elementares.
|
|
86
86
|
*/
|
|
87
87
|
resolverDeclaracao(): any;
|
|
88
|
-
verificarTipoAtribuido(tipo: string, inicializador: any): void;
|
|
89
88
|
/**
|
|
90
89
|
* Caso símbolo atual seja `var`, devolve uma declaração de variável.
|
|
91
90
|
* @returns Um Construto do tipo Var.
|
|
@@ -62,9 +62,6 @@ class AvaliadorSintatico {
|
|
|
62
62
|
simboloAtual() {
|
|
63
63
|
return this.simbolos[this.atual];
|
|
64
64
|
}
|
|
65
|
-
simboloAnterior() {
|
|
66
|
-
return this.simbolos[this.atual - 1];
|
|
67
|
-
}
|
|
68
65
|
estaNoFinal() {
|
|
69
66
|
return this.atual === this.simbolos.length;
|
|
70
67
|
}
|
|
@@ -696,45 +693,6 @@ class AvaliadorSintatico {
|
|
|
696
693
|
}
|
|
697
694
|
return this.declaracaoExpressao();
|
|
698
695
|
}
|
|
699
|
-
verificarTipoAtribuido(tipo, inicializador) {
|
|
700
|
-
if (tipo) {
|
|
701
|
-
if (['vetor', 'qualquer[]', 'inteiro[]', 'texto[]'].includes(tipo)) {
|
|
702
|
-
if (inicializador instanceof construtos_1.Vetor) {
|
|
703
|
-
const vetor = inicializador;
|
|
704
|
-
if (tipo === 'inteiro[]') {
|
|
705
|
-
for (let elemento of vetor.valores) {
|
|
706
|
-
if (typeof elemento.valor !== 'number') {
|
|
707
|
-
throw this.erro(this.simboloAtual(), "Atribuição inválida, é esperado um vetor de 'inteiros' ou 'real'.");
|
|
708
|
-
}
|
|
709
|
-
}
|
|
710
|
-
}
|
|
711
|
-
if (tipo === 'texto[]') {
|
|
712
|
-
for (let elemento of vetor.valores) {
|
|
713
|
-
if (typeof elemento.valor !== 'string') {
|
|
714
|
-
throw this.erro(this.simboloAtual(), "Atribuição inválida, é esperado um vetor de 'texto'.");
|
|
715
|
-
}
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
else {
|
|
720
|
-
throw this.erro(this.simboloAtual(), 'Atribuição inválida, é esperado um vetor de elementos.');
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
if (inicializador instanceof construtos_1.Literal) {
|
|
724
|
-
const literal = inicializador;
|
|
725
|
-
if (tipo === 'texto') {
|
|
726
|
-
if (typeof literal.valor !== 'string') {
|
|
727
|
-
throw this.erro(this.simboloAtual(), "Atribuição inválida, é esperado um 'texto'.");
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
if (['inteiro', 'real'].includes(tipo)) {
|
|
731
|
-
if (typeof literal.valor !== 'number') {
|
|
732
|
-
throw this.erro(this.simboloAtual(), "Atribuição inválida, é esperado um 'número'.");
|
|
733
|
-
}
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
696
|
/**
|
|
739
697
|
* Caso símbolo atual seja `var`, devolve uma declaração de variável.
|
|
740
698
|
* @returns Um Construto do tipo Var.
|
|
@@ -747,11 +705,7 @@ class AvaliadorSintatico {
|
|
|
747
705
|
identificadores.push(this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome da variável.'));
|
|
748
706
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
|
|
749
707
|
if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.DOIS_PONTOS)) {
|
|
750
|
-
|
|
751
|
-
if (!tipoVariavel) {
|
|
752
|
-
throw this.erro(this.simboloAtual(), 'Tipo definido na variável não é válido.');
|
|
753
|
-
}
|
|
754
|
-
tipo = tipoVariavel;
|
|
708
|
+
tipo = this.verificarDefinicaoTipoAtual();
|
|
755
709
|
this.avancarEDevolverAnterior();
|
|
756
710
|
}
|
|
757
711
|
if (!this.verificarSeSimboloAtualEIgualA(delegua_1.default.IGUAL)) {
|
|
@@ -769,9 +723,7 @@ class AvaliadorSintatico {
|
|
|
769
723
|
throw this.erro(this.simboloAtual(), 'Quantidade de identificadores à esquerda do igual é diferente da quantidade de valores à direita.');
|
|
770
724
|
}
|
|
771
725
|
for (let [indice, identificador] of identificadores.entries()) {
|
|
772
|
-
|
|
773
|
-
this.verificarTipoAtribuido(tipo, inicializador);
|
|
774
|
-
retorno.push(new declaracoes_1.Var(identificador, inicializador, tipo));
|
|
726
|
+
retorno.push(new declaracoes_1.Var(identificador, inicializadores[indice], tipo));
|
|
775
727
|
}
|
|
776
728
|
this.verificarSeSimboloAtualEIgualA(delegua_1.default.PONTO_E_VIRGULA);
|
|
777
729
|
return retorno;
|
|
@@ -787,11 +739,7 @@ class AvaliadorSintatico {
|
|
|
787
739
|
identificadores.push(this.consumir(delegua_1.default.IDENTIFICADOR, 'Esperado nome da constante.'));
|
|
788
740
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
|
|
789
741
|
if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.DOIS_PONTOS)) {
|
|
790
|
-
|
|
791
|
-
if (!tipoConstante) {
|
|
792
|
-
throw this.erro(this.simboloAtual(), 'Tipo definido na constante não é válido.');
|
|
793
|
-
}
|
|
794
|
-
tipo = tipoConstante;
|
|
742
|
+
tipo = this.verificarDefinicaoTipoAtual();
|
|
795
743
|
this.avancarEDevolverAnterior();
|
|
796
744
|
}
|
|
797
745
|
this.consumir(delegua_1.default.IGUAL, "Esperado '=' após identificador em instrução 'constante'.");
|
|
@@ -804,8 +752,6 @@ class AvaliadorSintatico {
|
|
|
804
752
|
}
|
|
805
753
|
let retorno = [];
|
|
806
754
|
for (let [indice, identificador] of identificadores.entries()) {
|
|
807
|
-
const inicializador = inicializadores[indice];
|
|
808
|
-
this.verificarTipoAtribuido(tipo, inicializador);
|
|
809
755
|
retorno.push(new declaracoes_1.Const(identificador, inicializadores[indice], tipo));
|
|
810
756
|
}
|
|
811
757
|
this.verificarSeSimboloAtualEIgualA(delegua_1.default.PONTO_E_VIRGULA);
|
|
@@ -845,13 +791,11 @@ class AvaliadorSintatico {
|
|
|
845
791
|
break;
|
|
846
792
|
if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.DOIS_PONTOS)) {
|
|
847
793
|
let tipoDadoParametro = this.verificarDefinicaoTipoAtual();
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
this.avancarEDevolverAnterior();
|
|
854
|
-
}
|
|
794
|
+
parametro.tipoDado = {
|
|
795
|
+
nome: this.simboloAtual().lexema,
|
|
796
|
+
tipo: tipoDadoParametro
|
|
797
|
+
};
|
|
798
|
+
this.avancarEDevolverAnterior();
|
|
855
799
|
}
|
|
856
800
|
parametros.push(parametro);
|
|
857
801
|
} while (this.verificarSeSimboloAtualEIgualA(delegua_1.default.VIRGULA));
|
|
@@ -869,39 +813,10 @@ class AvaliadorSintatico {
|
|
|
869
813
|
let tipoRetorno = null;
|
|
870
814
|
if (this.verificarSeSimboloAtualEIgualA(delegua_1.default.DOIS_PONTOS)) {
|
|
871
815
|
tipoRetorno = this.verificarDefinicaoTipoAtual();
|
|
872
|
-
if (!tipoRetorno) {
|
|
873
|
-
this.erro(this.simboloAtual(), `Esperado um tipo de retorno válido após ':'`);
|
|
874
|
-
}
|
|
875
816
|
this.avancarEDevolverAnterior();
|
|
876
817
|
}
|
|
877
818
|
this.consumir(delegua_1.default.CHAVE_ESQUERDA, `Esperado '{' antes do escopo do ${tipo}.`);
|
|
878
819
|
const corpo = this.blocoEscopo();
|
|
879
|
-
if (tipoRetorno) {
|
|
880
|
-
let funcaoContemRetorno = corpo.find((c) => c instanceof declaracoes_1.Retorna);
|
|
881
|
-
if (funcaoContemRetorno) {
|
|
882
|
-
if (tipoRetorno === 'vazio') {
|
|
883
|
-
throw this.erro(this.simboloAtual(), `A função não pode ter nenhum tipo de retorno.`);
|
|
884
|
-
}
|
|
885
|
-
const tipoValor = typeof funcaoContemRetorno.valor.valor;
|
|
886
|
-
if (!['qualquer'].includes(tipoRetorno)) {
|
|
887
|
-
if (tipoValor === 'string') {
|
|
888
|
-
if (tipoRetorno != 'texto') {
|
|
889
|
-
this.erro(this.simboloAtual(), `Esperado retorno do tipo '${tipoRetorno}' dentro da função.`);
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
if (tipoValor === 'number') {
|
|
893
|
-
if (!['inteiro', 'real'].includes(tipoRetorno)) {
|
|
894
|
-
this.erro(this.simboloAtual(), `Esperado retorno do tipo '${tipoRetorno}' dentro da função.`);
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
}
|
|
898
|
-
}
|
|
899
|
-
else {
|
|
900
|
-
if (tipoRetorno !== 'vazio') {
|
|
901
|
-
this.erro(this.simboloAtual(), `Esperado retorno do tipo '${tipoRetorno}' dentro da função.`);
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
820
|
return new construtos_1.FuncaoConstruto(this.hashArquivo, Number(parenteseEsquerdo.linha), parametros, corpo, tipoRetorno);
|
|
906
821
|
}
|
|
907
822
|
declaracaoDeClasse() {
|