Skip to content

Software produzido na disciplina de Linguagens Formais que deverá receber como entrada uma expressão em LISP e retornar a expressão posfixa equivalente.

License

Notifications You must be signed in to change notification settings

gabsfredes/LISPtoPOSFIX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tradutor de expressões numéricas em LISP para pós-fixada

Esse programa foi desenvolvido à fim de por em prática o conteúdo da disciplina de Linguagens Formais do curso de Engenharia de Computação da Universidade Federal do Pampa - (UNIPAMPA)

O tradutor foi criado com intúito de converter uma entrada em LISP em uma expressão numérica pós-fixada (notação polonesa reversa). A estrutura de dados da entrada é uma lista (LISP), que é representada por uma sequência de elementos entre parênteses, sendo o primeiro elemento da lista o nome da função, seguida pelo seus argumentos. Não foram utilizadas definições de funções nem manipulação de listas em LISP, somente formas de definir um valor a partir de fórmulas aritméticas básicas.

Instalação

As instruções de instalação e funcionalidades encontram-se no portfólio do seu criador David M. Beazley ou na páigna do GitHub do próprio projeto.

Arquivo de entrada (input.txt)

Nesse arquivo deve ser colocado a expressão numérica em LISP que você deseja converter.

Características do tradutor

Alfabeto

O tradutor tem como alfabeto {id, n, +, −, ∗, /}, onde id é qualquer letra do alfabeto e n é qualquer número, seja positivo ou negativo, decimal ou não.

Gramática da entrada

A gramática da entrada, baseada nas expressões LISP reduzidas é a seguinte:

E → (id)

E → (n)

E → (+ E E)

E → (− E E)

E → (∗ E E)

E → (/ E E)

Processo de tradução

O primeiro processo é a tokenização. Os tokens que foram gerados são utilizados juntos das regras de produção, conforme gramática informada acima, para que o parser possa gerar a tabela de regras da gramática e, a partir disso, analisar e garar uma AST (árvore sintática abstrata). Essa árvore então é utilizada como entrada do tradutor para que possamos converter a entrada em uma expressão numérica pós-fixada.

Utilização

Você deve informar a expressão numérica em LISP no arquivo input.txt e executar o código parser_lf.py Vale ressaltar que o caminho para encontrar o arquivo txt deve ser modificado na seguinte linha:

arquivo = open('LISPtoPOSFIX/input.txt', 'r')

Onde "LISPtoPOSFIX/input.txt" foi o caminho do criador deste proejto, mas deve ser modificado para o caminho do seu computador onde o projeto se encontra.

Autores

Contribuindo

Se desejar contribuir com este projeto, por favor, faça um fork do repositório e envie um pull request com suas alterações.

Licença

Este projeto está licenciado sob os termos da licença MIT

About

Software produzido na disciplina de Linguagens Formais que deverá receber como entrada uma expressão em LISP e retornar a expressão posfixa equivalente.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages