Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Versão da Apresentação #82

Merged
merged 178 commits into from
May 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
178 commits
Select commit Hold shift + click to select a range
def1514
Mapeando progresso dos outputs
mttorres Feb 13, 2021
3c6166c
Merge pull request #2 from frame-lab/antes-bug-critico
mttorres Feb 13, 2021
37c1b06
Criando iterator (#59)
mttorres Feb 13, 2021
f872244
Criando "merger" de estruturas em lista (#59)
mttorres Feb 13, 2021
c7d6ec6
Removendo redundâncias da gramática, TDS com definição completa ("inp…
mttorres Feb 15, 2021
9e6d078
Modificando parser e lexer para não considerar '' como tokens
mttorres Feb 15, 2021
fbd0421
Adicionando primeira estrutura de tds (#59,#60)
mttorres Feb 15, 2021
8d5a1a5
Adicionando referência a ED's e TDS (#63)
mttorres Feb 15, 2021
78bb323
Gerando a base de uma TDS, seu módulo e declaração em ports module. A…
mttorres Feb 20, 2021
cee9f8a
Mudando esquema de free para TYPE-SET
mttorres Feb 20, 2021
f276aac
Mapeando arquivo para progresso
mttorres Feb 20, 2021
0587a25
Primeira versão de TDS de lista (#59,#64)
mttorres Feb 21, 2021
72f72b3
TDS de lista de dados (seria bom depois documentar as nova funções e …
mttorres Feb 22, 2021
c7b8b63
Mapeando input e output
mttorres Feb 22, 2021
fb8eb75
Iniciando TDS relacional delayed e validaçoes (#65,#66)
mttorres Feb 22, 2021
6d2c635
Corrigindo validação de commit anterior e mais de TDS-delayed (#65,#66)
mttorres Feb 22, 2021
fff800c
Corrigindo erro em alocação de parâmetros de um módulo
mttorres Mar 14, 2021
a56842b
adicionado mudança a mais no pré processamento que é relacionada a co…
mttorres Mar 14, 2021
28e09f1
Melhorando alocação e sintetização de objetos #67 e preparando para c…
mttorres Mar 18, 2021
d0e95b3
Inciando (#68,#69) e continuando #66
mttorres Mar 18, 2021
3fec749
Melhoria do textManager para parâmetros de módulo
mttorres Mar 18, 2021
e25ee27
Adicionando o header do commit anterior
mttorres Mar 18, 2021
79d4912
Removendo métodos e type-set e generalizando o uso de hash (#66)
mttorres Mar 18, 2021
dbff7d2
Validações novas #65
mttorres Mar 18, 2021
23bf138
Melhorias no pós processamento para TDS's relacionais e type-sets (#66)
mttorres Mar 18, 2021
756c6a6
Generalizando #66 e adicionando o header de hash de commits anteriores
mttorres Mar 18, 2021
3f3a59c
Melhorando ordem de avaliação e isolando TDS's e vetores das demais e…
mttorres Mar 20, 2021
18ed565
Mapeando progresso recente e correção de erros
mttorres Mar 20, 2021
59e4517
Corrigindo problema da gramática ao fazer #66 (vale ressaltar que o p…
mttorres Mar 21, 2021
d23c6ad
Terminando TDS's realacionais sem bugs falta propagar dependências (#66)
mttorres Mar 21, 2021
d9552e2
Propagando dependências de TDS's (#66)
mttorres Mar 21, 2021
345755b
Corrigindo retorno do lineno (#70)
mttorres Mar 21, 2021
8aaa43e
Removendo dependencia de código
mttorres Mar 21, 2021
fd892d1
Resolvendo #49
mttorres Mar 21, 2021
6514e26
Separando Header de Controller
mttorres Mar 23, 2021
f82ced4
Reorganização do interpretador para fazer #69
mttorres Mar 23, 2021
6a5d7ce
Aletração do src
mttorres Mar 23, 2021
6582889
Ajustando makefile, gerador de parser e dependencias de diretorios
mttorres Mar 23, 2021
9eb0f1f
Corrigindo erro de alocação de init para TDS de DATA-LIST
mttorres Mar 24, 2021
00dc080
Mapeando progresso
mttorres Mar 24, 2021
1de5d97
melhorias da linguagem e sistema de expressões, alteração da gramatic…
mttorres Mar 24, 2021
ca3ae11
Melhoria do sistema de expressões para realizar operações com funções…
mttorres Mar 24, 2021
429ae20
Resolvendo parcialmente #69 para garantir o funcionamento de funções …
mttorres Mar 27, 2021
b563a58
Preparativos para (#48, #54 e #68 (variáveis livres)
mttorres Mar 28, 2021
ebbe438
Corrigindo erro de redefinições de variáveis introduzido no commit an…
mttorres Mar 28, 2021
67def95
Disponibilizando o utilitário hash para todos do projeto
mttorres Mar 28, 2021
f059bb5
Também disponibilizando funções de texto para todo o projeto
mttorres Mar 28, 2021
3dfdac7
Ajuste de headers
mttorres Mar 28, 2021
cf04c1c
Adicionando atualizador de dependências para módulos (#71)
mttorres Mar 28, 2021
8184eba
Atualizando Stable para refletir a função hash como utilitario
mttorres Mar 28, 2021
aedc00d
Adicionando mapeador de parâmetros de módulo para evitar erro de comp…
mttorres Mar 28, 2021
b41cf1f
Adicionando watchlist na TDS para a lista de dados onde uma variável …
mttorres Mar 28, 2021
ed9faeb
Criando equivalência de atualização da watchlist no pós processamento…
mttorres Mar 28, 2021
ba48b32
Atualizando exemplo que mapeia o progresso (#71)
mttorres Mar 28, 2021
3c25f6f
Removendo watchlist (porém não totalmente porque pode ser útil no fil…
mttorres Mar 29, 2021
f91f3af
Limpeza de código antes de #72
mttorres Mar 29, 2021
c774cba
Terminando preparações para #72 e percebemos que temos que mudar o wa…
mttorres Mar 30, 2021
a296248
Adicionando type-set encapsulado, considerando o erro #74 (ele não es…
mttorres Apr 1, 2021
82e7d50
Primeira tentativa para #74: Adicionando validação, palavras no contr…
mttorres Apr 2, 2021
a444154
Mudanças intermediarias nos arquivos que não estão diretamente relaci…
mttorres Apr 2, 2021
ce3f018
Correção minima da gramática
mttorres Apr 3, 2021
b91f540
Correção da função hash
mttorres Apr 3, 2021
d593796
Alterações também no header que usa o hash
mttorres Apr 3, 2021
2e9a0de
Implementação de #75 para min-max
mttorres Apr 4, 2021
4822eb5
Outras mudanças na tabela de simbolos considerando a mudança da funçã…
mttorres Apr 4, 2021
0750805
Ajustando a função hash (de novo)
mttorres Apr 4, 2021
5b44032
Adicionando também o header de hash novo
mttorres Apr 4, 2021
f627093
Alterações de (#75) dos últimos dias para guardar o código antes de r…
mttorres Apr 6, 2021
6f6fbac
Deixando exemplo mais recente para teste na branch original
mttorres Apr 6, 2021
d82625b
Reintroduzindo o commit aedc00d293400b08e5e75482ecedafd6e1aea848 como…
mttorres Apr 6, 2021
ad3d316
Removendo memoization
mttorres Apr 6, 2021
702399d
Reinserindo a nova função hash como código estável
mttorres Apr 6, 2021
4c04373
Reintroduzindo parte de b41cf1f8f99ecf9e31350d08d8d590584dc25655 onde…
mttorres Apr 6, 2021
1b7a269
Reintroduzindo mudanças recentes como estáveis usadas para resolver (…
mttorres Apr 6, 2021
4ed0ca4
Readicionando os type-min-max e type-set como estável
mttorres Apr 7, 2021
4282ef2
Reintroduzindo b41cf1f8f99ecf9e31350d08d8d590584dc25655 (propagação d…
mttorres Apr 7, 2021
2e3ef0c
Reintroduzindo ed9faeb
mttorres Apr 7, 2021
421e363
Reintroduzindo f91f3af
mttorres Apr 7, 2021
8602e06
Reintroduzindo c774cba (inversão de dependência entre tds's)
mttorres Apr 7, 2021
f6cdbf7
Reintroduzindo 82e7d50 como estável
mttorres Apr 7, 2021
d2f7fdc
Reintroduzindo a444154 como estável
mttorres Apr 7, 2021
5f5b39d
Reintroduzindo ce3f018 como estável
mttorres Apr 7, 2021
bbd4a7e
Reintroduzindo b91f540 (note que a correção/melhoria do hash já tinha…
mttorres Apr 7, 2021
dc9588a
Reintroduzndo como estável d593796 (NOTE QUE, o hash do possibleParam…
mttorres Apr 7, 2021
ae09734
Reintroduzindo 4822eb5
mttorres Apr 7, 2021
d926482
Reintroduzindo como estável parte de f627093fb3eb55ae2d83d2126357c6a4…
mttorres Apr 9, 2021
61b8220
Aumentando o tamanho da tabela hash simples
mttorres Apr 9, 2021
58558f6
Reintroduzindo praticamente todo o f627093fb3eb55ae2d83d2126357c6a431…
mttorres Apr 9, 2021
2a73cdd
Corrigindo bug de free de type_smv e mudando a forma que ele adiciona…
mttorres Apr 10, 2021
2b29680
Reintroduzindo tudo e sem erros (#75)
mttorres Apr 11, 2021
1e06a57
Mapeando funcionamento
mttorres Apr 11, 2021
4118ae4
Revert "Deixando exemplo mais recente para teste na branch original"
mttorres Apr 11, 2021
abbd341
Revert "Alterações de (#75) dos últimos dias para guardar o código an…
mttorres Apr 11, 2021
5103084
Revert "Adicionando também o header de hash novo"
mttorres Apr 11, 2021
4657dc6
Revert "Ajustando a função hash (de novo)"
mttorres Apr 11, 2021
a8baa38
Revert "Outras mudanças na tabela de simbolos considerando a mudança …
mttorres Apr 11, 2021
28d4508
Revert "Implementação de #75 para min-max"
mttorres Apr 11, 2021
1256c68
Revert "Alterações também no header que usa o hash"
mttorres Apr 11, 2021
2eb5d06
Revert "Correção da função hash"
mttorres Apr 11, 2021
b4dd52b
Revert "Correção minima da gramática"
mttorres Apr 11, 2021
46165df
Revert "Mudanças intermediarias nos arquivos que não estão diretament…
mttorres Apr 11, 2021
88ec6d6
Revert "Primeira tentativa para #74: Adicionando validação, palavras …
mttorres Apr 11, 2021
d0a7aea
Revert "Adicionando type-set encapsulado, considerando o erro #74 (el…
mttorres Apr 11, 2021
14b3066
Revert "Terminando preparações para #72 e percebemos que temos que mu…
mttorres Apr 11, 2021
ec61477
Revert "Limpeza de código antes de #72"
mttorres Apr 11, 2021
c4707e3
Revert "Removendo watchlist (porém não totalmente porque pode ser úti…
mttorres Apr 11, 2021
7bc202c
Revert "Atualizando exemplo que mapeia o progresso (#71)"
mttorres Apr 11, 2021
73aa86f
Revert "Criando equivalência de atualização da watchlist no pós proce…
mttorres Apr 11, 2021
e88379b
Revert "Adicionando watchlist na TDS para a lista de dados onde uma v…
mttorres Apr 11, 2021
2ce0c15
Revert "Adicionando mapeador de parâmetros de módulo para evitar erro…
mttorres Apr 11, 2021
a55bdf9
Revert "Atualizando Stable para refletir a função hash como utilitario"
mttorres Apr 11, 2021
3bd76f8
Merge pull request #3 from frame-lab/28-03-2021-versao-estavel-antes-…
mttorres Apr 11, 2021
808d9bc
Resolvendo um pequeno conflito de merge o qual a função hash antiga a…
mttorres Apr 11, 2021
1c1ec31
Salvar o nome do nosso algoritmo
mttorres Apr 11, 2021
82a07b0
Adicionando #77
mttorres Apr 11, 2021
6367995
TO para diretivas #68 e limpeza no interpretador
mttorres Apr 11, 2021
85bebd9
Preparação básica para #79
mttorres Apr 11, 2021
0d2d308
Fluxo de "extra" do pré processamento, deve também ser considerado qu…
mttorres Apr 11, 2021
cfc74aa
Adicionando informações em código necessárias para recuperar automáto…
mttorres Apr 12, 2021
64f3e24
Adicionando novo arquivo para testes do filter e terminando de guarda…
mttorres Apr 12, 2021
0098707
Melhoria no método de alocação de string (estava dando erro no caso d…
mttorres Apr 12, 2021
6ea8773
Refletindo as mudanças do commit anterior
mttorres Apr 12, 2021
9879e10
Corrigindo exemplo de filter, e adicionando função que atualizar tran…
mttorres Apr 12, 2021
ff35a6c
Básico da escrita e lógica de #79
mttorres Apr 13, 2021
54d1dc6
Terminando escrita de filter #79 (falta propagar para automato)
mttorres Apr 13, 2021
243f5f4
Terminando o filter #79
mttorres Apr 13, 2021
ef07278
Terminando (#72)
mttorres Apr 14, 2021
ccdfc9a
Corrigindo >= e > na hora de gerar assign. (dicionário)
mttorres Apr 21, 2021
1b1b8f9
Removendo todos os prints desnecessarios (o que tiver que aparecer va…
mttorres Apr 21, 2021
95b5519
Habilitando novamente o modo interativo para apresentação futura
mttorres Apr 21, 2021
aebe8c2
Ajustando o ultimo commit
mttorres Apr 21, 2021
2ac7b30
Refatoraçao de print tds
mttorres Apr 21, 2021
7d708e7
Refatoração (limpeza do interpretador) (Core)
mttorres Apr 21, 2021
5d13c22
Ajustando referencias e Makefile
mttorres Apr 21, 2021
602430f
Limpeza de diretorio
mttorres Apr 21, 2021
3058d5b
Formatando validações
mttorres Apr 21, 2021
21d5df7
Modificando esquema de validação de IO
mttorres Apr 21, 2021
0ed6a6b
Ajuste minimo em algumas validações
mttorres Apr 21, 2021
0f4e61e
Ajustando duas validações simples
mttorres Apr 21, 2021
562d26f
Ajustando validação (não printava em alguns casos)
mttorres Apr 22, 2021
266ae16
Ajustando intervalo de lazy que ficou errado depois de deixar ele pri…
mttorres Apr 22, 2021
8c19f15
Ajuste do print de F_TIME, e ajuste do mod (sintaxe errada e type-set…
mttorres Apr 22, 2021
7ad51a3
Resolvendo #68
mttorres Apr 22, 2021
7dc640c
Removendo comentario para demonstração
mttorres Apr 22, 2021
65d57ed
Ajuste do #68
mttorres Apr 22, 2021
b12d3f2
Adicionando exemplos novos (merger-fifo)
mttorres Apr 22, 2021
011d0a9
Correção mínimo para listas de TDS utilizando time = 0
mttorres May 3, 2021
ccbf710
Adicionando validação a mais para TDSs anonimas (setas)
mttorres May 3, 2021
3c84cf8
Refletindo a validação de tds anonimas para o interpretador
mttorres May 3, 2021
05fd18d
Corrigindo condicional associada a validação de FILTER (conformidade …
mttorres May 3, 2021
82b8ce7
Aumetando o tamanho da linha recebida do reo2nuXmv
mttorres May 3, 2021
3ea77f4
Pasta para colocar os scripts para apresentacao
mttorres May 3, 2021
cd1ec8b
Reorganizacao de diretorios antigos
mttorres May 3, 2021
800d4db
Outro que é antigo
mttorres May 3, 2021
0d39838
Adicionando os exemplos novos na pasta do projeto
mttorres May 3, 2021
a08fbe2
Movendo teste para nova pasta
mttorres May 3, 2021
156d024
Atualizando exemplo de proposito geral
mttorres May 3, 2021
b89ddf6
Corrigindo filter passado pelo reo2nuXmv
mttorres May 3, 2021
339542f
Corrigindo overrun de buffer (pode ser feito de forma melhor depois)
mttorres May 3, 2021
55b1c7d
Correção mínima de filter (adicionava mais parametros do que devia no…
mttorres May 3, 2021
d83f2b7
Ultimos ajustes: Habilitando #78 novamente
mttorres May 4, 2021
e20e898
Ajuste do commit anterior: removendo terminal e nao terminal inutil
mttorres May 4, 2021
5aaec8d
Habilitando de novo a parte semântica de #78
mttorres May 4, 2021
ea6adb4
Habilitando novamente a parte de geração de código de #78
mttorres May 4, 2021
8f4b1a0
Voltando com #78
mttorres May 4, 2021
ccbf5da
Colocando uma validação adicional considerando o set do nuXmv
mttorres May 4, 2021
e8bfac1
Corrigindo um pequeno erro para C_TIME = 1
mttorres May 4, 2021
0bbf51e
Atualizando exemplo do filter
mttorres May 4, 2021
1f289da
Adicionando o "output esperado" do filter junto da propriedade em CTL
mttorres May 4, 2021
63800dd
Adicionando opção SKIP para o modo interativo
mttorres May 4, 2021
1bb8a94
Corrigindo duas mensagens de validação
mttorres May 4, 2021
e5f56a6
Ajuste do último commit
mttorres May 4, 2021
f8108f1
Adicionando exemplo completo do merger-fifo com LTL e CTL
mttorres May 4, 2021
49aa229
Correção mínima do modo interativo (para quando tem muitas portas)
mttorres May 4, 2021
18dc79d
Corrigindo sequenciador gerado pelo reo2nuXmv
mttorres May 5, 2021
3f36e29
Adicionando exemplo do sequenciador com a propriedade de verificação …
mttorres May 5, 2021
b0edc86
Corrigindo erro mínimo de visualização do modo interativo (delayed)
mttorres May 5, 2021
a5a90a7
Adicionando scripts para apresentação
mttorres May 5, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
all:
bison -d src/tdsrpl.y -b src/tdsrpl
flex -o src/lex.yy.c src/tdsrpl.l
gcc src/main.c src/tdsrpl.tab.c src/lex.yy.c src/Interpreter.c src/datastructures/Node.c src/textManager.c src/langmodules/Object.c src/datastructures/STable.c src/datastructures/HeaderSmv.c src/PreProcess.c src/PostProcess.c -o tds
./tds sample/basic-main/basic.tds sample/merger-fifo/nuxmv.smv
bison -d src/flex-bison/tdsrpl.y -b src/flex-bison/tdsrpl
flex -o src/flex-bison/lex.yy.c src/flex-bison/tdsrpl.l
gcc src/datastructures/Node.c src/flex-bison/tdsrpl.tab.c src/flex-bison/lex.yy.c src/util/Hash.c src/util/textManager.c src/langmodules/TypeMinMax.c src/langmodules/TypeSet.c src/langmodules/Object.c src/langmodules/TDS.c src/datastructures/STable.c src/datastructures/HeaderSmv.c src/EnvController.c src/PreProcess.c src/PostProcess.c src/Visitor.c src/langmodules/LangCore.c src/Interpreter.c src/main.c -o tds
12 changes: 12 additions & 0 deletions execution-scripts/execution-profiles/profiles
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
merger-fifo:

./tds -int sample/merger-fifo/merger-fifo.tds sample/merger-fifo/nuxmv2.smv


filter-inte:

./tds -int sample/filter/filter.tds sample/filter/nuxmv.smv

sequenciador:

./tds -int sample/sequenciador/seq.tds sample/sequenciador/seq.smv
File renamed without changes.
2 changes: 2 additions & 0 deletions execution-scripts/flex-bison/generateparsing.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
bison -d src/flex-bison/tdsrpl.y -b src/flex-bison/tdsrpl
flex -o src/flex-bison/lex.yy.c src/flex-bison/tdsrpl.l
4 changes: 0 additions & 4 deletions generateparsing.sh

This file was deleted.

27 changes: 16 additions & 11 deletions headers/Enum.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@

typedef enum SCOPE_TYPE { GLOBAL, FUNC, LOOP, IF_BLOCK, ELSE_BLOCK, SMV_PORTS, SMV_V_MAIN, SIMPLE_HASH} SCOPE_TYPE;

typedef enum ENTRY_TYPE {NUMBER_ENTRY, LOGICAL_ENTRY, LABEL_ENTRY ,T_DIRECTIVE_ENTRY, TDS_ENTRY, NULL_ENTRY, FUNCTION_ENTRY, WRITE_SMV_INFO ,TYPE_SET } ENTRY_TYPE;
typedef enum ENTRY_TYPE {NUMBER_ENTRY, LOGICAL_ENTRY, LABEL_ENTRY ,T_DIRECTIVE_ENTRY, TDS_ENTRY, NULL_ENTRY, TIME_COMPONENT, FUNCTION_ENTRY, WRITE_SMV_INFO ,TYPE_SET } object_type;
// permitir lista de tipos diferentes? permitir lista de TDS's?
// comentado por enquanto, devemos decidir oque fazer sobre os enums do node


typedef enum smvtype {MAIN = 1, AUTOMATA = 2, PORTS = 3, FUNCTION_SMV = 4} smvtype;


typedef enum TDS_TYPE {DATA_LIST, MATH_EXPRESSION, FUNCTION_APPLY, TDS_DEPEN} TDS_TYPE;

//separar enums por: OPERAÇÃO UNÁRIA, OPERAÇÃO BINÁRIA, OPERAÇÃO ATRIBUIÇÃO, DADOS,

Expand All @@ -32,29 +32,34 @@ typedef enum EVAL_TYPE {

NUMBER, L_BOOL, STRING, D_NULL, IDVAR, TIME_DIRECTIVE,

DATA_V, PARAMS_CALL, DEFINE_INTERVAL,
DATA_V, PARAMS_CALL, PARAMS, DEFINE_INTERVAL,

AC_V, ASSIGN_TDIRECTIVE ,OTHER_ASSIGN, V_PROP, ADD_V, ADD_V_PROP, V_PROP_TDS,

AC_V, OTHER_ASSIGN, V_PROP, ADD_V, ADD_V_PROP, V_PROP_TDS,
EXPR, MINUS_EXPR, PLUS_EXPR, MULTI_EXPR, DIV_EXPR, LE_EXPR, GE_EXPR, LT_EXPR, GT_EXPR, EQUAL_EXPR, NEQUAL_EXPR,
NOT_EXPR, AND_EXPR, OR_EXPR, IMP_EXPR, BIMP_EXPR, PRI_EXPR,

EXPR, CMD_IF, TDS_DEF_COMPLETE, TD_DEF_DEPEN,
CMD_IF, TDS_DEF_COMPLETE, TDS_DEF_DEPEN, CMD_TDS_ANON,

TIME_LIST, TIME_COMP, DOMAIN_FUNCTION,
LIST_ITERATOR, TIME_COMP, V_PROP_TDS_VALUE, DOMAIN_FUNCTION,

MATCH_IF,

ASSIGN_IDVAR, ASSIGN_AC_V, ASSIGN_TDIRECTIVE,
ASSIGN_IDVAR, ASSIGN_AC_V,

DEF_EXTRAS_LINKED, DEF_EXTRAS_DELAYED,
DEF_EXTRAS_LINKED, DEF_EXTRAS_DELAYED, DEF_EXTRAS_FILTER,

HEADERS_E_PROG, PROG, FUNC_DEFS, CMD,

FUNC_DEF, PROC_DEF, OPT_RETURN, PARAMS, PARAM,
FUNC_DEF, PROC_DEF, OPT_RETURN, PARAM,

CMD_OTHER,

CMD_TDS_ANON, TDS_ANON_OP_PASS, TDS_ANON_OP_DPASS,
TDS_ANON_OP_PASS, TDS_ANON_OP_DPASS, TDS_ANON_OP_FPASS,

OTHER_LOOP, FUNC_CALL, PROC_CALL,

OTHER_LOOP, FUNC_CALL, PROC_CALL
SHOW_PRINT


} EVAL_TYPE;
Expand Down
190 changes: 190 additions & 0 deletions headers/EnvController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
// Created by mateus on 22/03/2021.
//

#ifndef TDSREPLANGUAGE_ENVCONTROLLER_H
#define TDSREPLANGUAGE_ENVCONTROLLER_H

#include "Enum.h"
#include "STable.h"
#include "textManager.h"
#include "HeaderSmv.h"
#include "TDS.h"
#include "TypeSet.h"
#include "TypeMinMax.h"

#define TYPE_SET_DIR_SIZE 9999
#define DEFAULT_HEADERS_AUX_SIZE 100



typedef struct envcontroller
{
// info
HeaderSmv* MAIN;
HeaderSmv** AUTOMATA_RELATED;
HeaderSmv** PORTS_RELATED; // ports module e as tds (vão ter referência para esse header na sua declaração, assim como tabela auxiliar)
HeaderSmv** FUNCTIONS; // as funções usadas por main e tds (vão ter referência para seu header na sua declaração, assim como tabela auxiliar)

int H_FUNCTION_CURRENT_SIZE;
int H_AUTOMATA_CURRENT_SIZE;
int H_PORTS_CURRENT_SIZE;
int PORTS_INFO_CURRENT_SIZE;

STable* mainInfo; // tabela de simbolos auxiliar para main
STable** portsInfo; // para cada tds (talvez não va precisar, a lógica vai estar TODA nas funções ou nele mesmo (de maneira constante)
STable** functionsInfo; // para cada função

char** typeSetWords; // dict para "otmização"

//contexto tds
TDS** declaredPorts;
TDS* currentTDScontext;



// validação
STable* originalPorts;
int expectedPorts;
int validPorts;
// ai ele verifica se foram usadas (não tem declarações de funções)
int declaredPortsNumber;
// avisa caso não tenha nenhuma TDS linkada uma com a outra
int IO_RELATION;
// avisa caso uma porta tenha tido declaração repetida
int multiPortDeclartion;

// validações para o filter e recuperar o header correto
int modelHasFilter;
int* automatasToChange;
int filterContext;
int F_AUTOMATAS_CHANGE_POINTER;
int modelHasFinalAutomata;
int filterUsed;
int relationRef;

// interactive
int interactiveMode;

}EnvController;


EnvController *createController(int enableInteractive);

/**
* Libera o controlador e todas as estruturas armazenadas por ele
* @SideEffects: Chama o liberar dos headers e tabelas de simbolos
* */
void letGoHeaderControl(EnvController* Hcontrol);

/**
* Printa todas os headers armazenados pelo controlador
* */
void printAllHeaders(EnvController* Hcontrol);

/**
* Considerando a refatoração do controller e header, encapsulamos o header apropriado pela estrutura, e esse deve
* ser recuperado usando o enum de smvtype e o indice.
*
* Caso o indice não seja informado o último header salvo (tanto do agrupamento main, automato, ou ports) é retornado
* Esse comportamento é usado pelo pré processamento, considerando que cada agrupamento é consultado para verificar o
* progresso de algumas alterações (ex: trocar FROZENVAR de portsModule), e otimizações da leitura
*
* @param controller o controlador de headers
* @param cat o tipo smv de parte de intesse (main, automato/modulo generico, ports)
* @param indexOfHeader a ordem de headers de cada parte de interesse (ex: 0 = portsModule, 1: função1 associada a tds)
*
* @returns o header apropriado com a parte de interesse do arquivo SMV
* */
HeaderSmv* accessHeader(EnvController* controller, smvtype cat, int indexOfHeader);

/**
* Considerando a refatoração do controller e header, encapsulamos as tabelas de simbolo auxiliares (SMV_INFO)
* ser recuperado usando o enum de smvtype.
*
* @param controller o controlador de headers
* @param cat o tipo smv de parte de intesse (main, automato/modulo generico, funções)
* @param SMV_INFO_ID o identificador daquela tabela auxiliar (usado atualmente só para as funções)
* @returns a tabela de simbolos SMV_INFO apropriada
* */
STable* accessSmvInfo(EnvController* controller, smvtype cat, int SMV_INFO_ID);

/**
* Adiciona um novo header ao controller encapsulando suas operações e categorizando apropriadamente
* @param o controller
* @param o novo header retornado por createHeader
*/
void addNewHeader(EnvController* controller, HeaderSmv* newHeader);

/**
* Adiciona uma nova tabela de simbolos auxiliar ao controller encapsulando suas operações e categorizando apropriadamente
* @param o controller
* @param a nova tabela de simbolos auxiliar retornada por retornado por createTable
*/
void addNewAuxInfo(EnvController* controller, STable* newTableInfo);

/**
* Valida a declaração de uma TDS, vendo se os nomes bateram com os que vieram do modelo de input.
* @param declarationName o nome da declaração da TDS
* @param controller o controlador
*/
void validateTdsDeclaration(char* declarationName, EnvController* controller);

/**
* Propaga um parâmetro para o mpodulo de uma TDS recuperando os headers apropriados dessa.
* @param controller o controlador de ambiente
* @param param o identificador do parametro
* @param currentTDS a tds recuperada da interpretação
*/
void addParamToTdsDeclaration(EnvController* controller, char* param, TDS* currentTDS);

/**
* Tendo um controller com o contexto e associação Header e AuxTable,
* adiciona um parâmetro (se necessário) para o header do módulo da TDS.
* Também propaga as dependências relacionadas a esse parâmetro para o portsModule
* @param controller o controlador de ambiente
* @param param o bind daquele parâmetro
* @param currentTDS a TDS corrente
* @SideEffects: Aloca uma string nova, caso esse parâmetro já não tenha sido memoizado
*/
void addParamToTds(EnvController* controller, char* param, TDS* currentTDS);

/**
* Adiciona um novo parâmetro a portModule, e resolve as depêndencias nos demais módulos main e automato.
* @param o controller
* @param o novo parâmetro
* @SideEffects: Para cada módulo (main, automato ...) é atualizada a linha com depdência a ports e essa operação chama
* o módulo textManager e seus método addParams, criando uma string nova e liberando a antiga
*/
void addParamToPortsModule(EnvController *controller, char *param);

/**
* Recupera uma palavra do dicionário de type-set do ambiente.
* @param word uma palavra já utilizada anteriomente em um type-set
* @param controller o controlador de ambiente
* @return um ponteiro para a palavra, ou NULL caso essa não exista
*/
char* getTypeSetWordFromDict(char* wordRef, EnvController* controller);

/**
* Adiciona uma palavra ao dicionário de type-set do ambiente
* @param word a palavra nova
* @param controller o controlador
* @SideEffects: Aloca uma string nova de tamanho da word +1 (deve ser liberada no final do programa)
*/
void addTypeSetWordToDict(char* word, EnvController* controller);

/**
* Atualizaa os parâmetros de todos os automatos que possam ter condição de filtro. E propaga os parâmetros
* @param controller o controlador
* @param paramName o parâmetro
*/
void addParamToAutomatasFilter(EnvController* controller, char* paramName);

/**
* Realiza diversas validações de contexto.
* @param controller o controller que contem todas as informações de necessárias
*/
void validateAfterInterPost(EnvController* controller);


#endif //TDSREPLANGUAGE_ENVCONTROLLER_H
12 changes: 12 additions & 0 deletions headers/Hash.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//
// Created by mateus on 13/03/2021.
//

#ifndef TDSREPLANGUAGE_HASH_H
#define TDSREPLANGUAGE_HASH_H

#define MAX_SIMPLE 903

int hash(char* str, int SIZE_ED);

#endif //TDSREPLANGUAGE_HASH_H
Loading