Universidade Federal de Santa Catarina (UFSC)

Departamento de Informática e Estatística (INE)

Integrantes:

Maria Eduarda Hang
Thiago Sant' Helena

25 Novembro de 2019

Sobre a linguagem utilizada

Utilizamos Python para o desenvolvimento dos algoritmos. A linguagem peca pela velocidade, porém é muito eficiente no sentido de facilidade com que se programa com ela, e para os fins didáticos deste trabalho essa facilidade foi relevante.

Nenhuma biblioteca externa foi utilizada, toda leitura de arquivos e processamentos dos objetos trabalhados foram criados do zero.

Estruturas utilizadas

As estruturas utilizadas foram basicamente listas (list), com comportamento de pilhas ou listas ordenadas, dicionários (dict) e conjuntos (set) de Python. As listas foram utilizadas para implementação explícita de pilhas e quando a ordem dos objetos era releante, os dicionários para fazer ligações entre símbolos e suas produções, enquanto os conjuntos foram utilizados para lidar com algoritmos em que a utilização de lógica de grupos tornava-os mais simples.

Implementações

Para rodar cada teste, basta entrada na pasta Aplicacao e executar

python <arquivo_de_teste>

Onde cada arquivo de teste na psta se relaciona com um aspecto solicitado pelo enunciado do trabalho.

TODO list

[X] a) Leitura, gravação e edição de AF, GR e ER (0,25pt)

[X] b) Conversão de AFND (com e semε) para AFD (0,5pt)

[X] c) Conversão de AFD para GR e de GR para AFND (0,5pt)

[X] d) Reconhecimento de sentenças em AF (0,5pt)

[X] e) Minimização de AFD (1,0pt)

[X] f) União e interseção de AFD (1,0pt)

[X] g) Conversão de ER para AFD (usando o algoritmo baseado em árvore sintática - LivroAho - seção 3.9) (1,5pt)

[X] h) Leitura, gravação e edição de GLC. (0,5pt)

[X] i) Transformação de GLC para uma GLC na forma normal de Chomsky (0,5pt)

[X] j) Eliminação de recursão a esquerda (1,0pt)

[X] k) Fatoração (1,0pt)

[X] l) Reconhecimento de sentenças em AP (via implementação de alguma tabela de aná-lise) (1,75pt)

[X] m) Separar as operações em dois grupos: Automatos e Gramáticas (0,0 pt)