-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathverificacoes
executable file
·40 lines (27 loc) · 1.94 KB
/
verificacoes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Verificações chatas:
(OK) Proibir a dupla verificacao
(OK) Todxs os identificadores precisam estar declarados
Nota: talvez precise verificar mais coisas nas funções, mas na dúvida VAMOS DEIXAR COMO ESTÁ E FODA-SSE
(OK!) variavel so pode ser usada SEM indexaão
Nota: atribuicao e expressao checadas! YAY :D
(OK) vetor so pode ser usado COM indexacao
Nota: checar atribuição de vetor, só foi feita a parte das expressões
(OK) Funcoes so podem ser chamadas
Nota: expressoes checadas (nao existe atribuição de funcao yay)
(OK) Vetores de bools nao sao permitidos
PS: checar se o tipo da declaração (variavel, vetor) coiseia com o tipo do(s) valor(es) de inicialização (NAO PRECISA RSRSSRS)
(OK) Colocar o datatype durante as declarações (ps terminar de criar o datatype, nos vamos precisar dele afinal AFF)
(OK) Cada chamada de funcao deve encaixar direitnho na declaração da funcao
PS1: Temos 3 naturezas dos tipos: variavel, vetor e funcao (OK)
PS2: Temos 5 datatypes (6 pq agora precisamos do BOOL >___>) byte, short, long, float, double e FUCKING BOOL (OK)
PS3: Temos 3 literais, inteiros, caracteres e strings (OK)
Mais veriicacoes chatas:
(OK) Percorrer a AST duas vezes (a primeira só com as declarações básicas)
(OK) Literais strings so podem ser usadas no comando print
(OK) literais inteiris e em ponto futuante sao intercambiaveis entre enpressoes, atribuicoes, eparametros de funcoes
(OK) Excecao, o indice do vetr PRECISA SER UM INTEIROOOO, logo expressoes que pssam resultar em algum pinto floatoante nao podem ser usadas com indice de vetores
Nota: checar atribuição e expressão
(OK) A unica incompatibilidadeque existe nos literais numericos e com os valores booleanos q NAO PODEM se misturar
Nota: checar atribuição e expressão
(OK) Verificar o retorno da funcao (só checar que o datatype da expressao do "return {expr}" coiseia com o da função que ele tá retornando)
Nota: o retorno pode ser qqlr coisa exceto bool ;)