Skip to content

Commit

Permalink
Criação da pasta "tests" e atualização da README
Browse files Browse the repository at this point in the history
Co-Authored-By: Ryan Auder <39887414+ryan-fauder@users.noreply.github.com>
  • Loading branch information
PedroASB and ryan-fauder committed Mar 15, 2023
1 parent c53fbfd commit aedb829
Show file tree
Hide file tree
Showing 9 changed files with 84 additions and 17 deletions.
101 changes: 84 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,104 @@
# BOL Interpreter

## Como executar
<img src="https://img.shields.io/badge/Lua-2C2D72?style=for-the-badge&logo=lua&logoColor=white" /> <img src="https://img.shields.io/github/commit-status/PedroASB/bol-interpreter/main/c53fbfdf418d514adddbf65736bc11350b17ddf7?style=for-the-badge"> <img src="https://img.shields.io/github/license/PedroASB/bol-interpreter?color=blue&style=for-the-badge"> <img src="https://img.shields.io/badge/TOPICS-INTERPRETER%20--%20PARSE%20TREE%20--%20LEXICAL%20ANALYSIS%20--%20PARSER-red?style=for-the-badge&logo=acclaim" />

Execute o comando abaixo:
## Descrição

- Trabalho desenvolvido em grupo durante a disciplina de Linguagens e Paradigmas de Programação (curso de Ciência da Computação da Universidade Federal de Goiás - UFG)
- O programa consiste em um interpretador da linguagem BOL (Bruno's Object-Oriented Language)
- Linguagem utilizada para a implementação do interpretador: Lua 5.4

---

## Desenvolvedores

- <a href="https://github.com/luizfernandofo">Luiz Fernando de Freitas Oliveira (luizfernandofo)</a>
- <a href="https://github.com/PedroASB">Pedro Augusto Serafim Belo (PedroASB)</a>
- <a href="https://github.com/ryan-fauder">Ryan Fernandes Auder Lopes (ryan-fauder)</a>

---

## Como Executar

Faça um clone do repositório em sua máquina e entre na pasta `src` do projeto:

```bash
git clone https://github.com/PedroASB/BOL-Interpreter.git && cd ./BOL-Interpreter/src/
```
lua interpreter.lua program.bol

Em seguida, execute o comando abaixo para executar um exemplo de código em BOL:

```bash
lua interpreter.lua ../examples/program1.bol
```

Na pasta `examples`, estão disponíveis 4 (quatro) exemplos de códigos para teste. Para testá-los, substitua o arquivo na linha de comando.

## Desenvolvedores
---

- Luiz Fernando de Freitas Oliveira
- Pedro Augusto Serafim Belo
- Ryan Fernandes Auder Lopes
## Sobre a Linguagem BOL

## Descrição
### Funcionalidades

- Trabalho desenvolvido em grupo durante a disciplina de Linguagens e Paradigmas de Programação (6º período do curso de Ciência da Computação)
- O programa consiste em um interpretador da linguagem fictícia BOL (Bruno's Object-Oriented Language)
- Linguagem utilizada para a implementação do interpretador: Lua 5.4
O interpretador suporta as principais funcionalidades de uma linguagem, incluindo:
- Declaração de variáveis
- Operações matemáticas
- Estruturas de controle de fluxo (if/else)
- Definição de classes e métodos
- Herança entre objetos
- Instanciação de objetos com atributos
- Impressão de variáveis e de classes
- Meta-ação

## Detalhes de Implementação
### Retorno de métodos

### Sobre o retorno de métodos
Todo método por padrão tem o retorno de um valor númerico igual a 0.

Todo método por padrão tem o retorno de um valor númerico igual a 0
### Herança

### Sobre a meta-ação
Todo objeto possui um atributo especial chamado “_prototype”, que pode apontar para um outro objeto, mas não para o próprio objeto.

Todo método possui um variável implícita chamada “self” que aponta para o objeto em que o
método foi chamado.

### Meta-ação

A meta-ação é um expressão que realiza a sobrescrita na implementação do método de uma classe em tempo de execução.

A meta-ação somente tem efeito na função quando é realizada uma chamada nova sobre ela.

### Sobre referências
### Referências

Os objetos sempre são enviados na atribuição por referência.
Os valores númericos são enviados por valor.
Os valores númericos são enviados por valor.

---
## Estrutura do Interpretador

Os principais módulos desenvolvidos para o interpretador:
- **Reader:** Realiza a leitura das linhas no arquivo de entrada.
- **Describer:** Descreve a estrutura das classes existentes em tabelas.
- **Executor:** Gerencia a execução de um bloco de código.
- **Env:** Armazena o ambiente de variáveis existentes no escopo de um bloco, como em métodos.
- **Parser:** Cria a estrutura ```ast``` que descreve os elementos de uma linha de código.
- **Eval:** Realiza a execução da estrutura ```ast``` gerada pela parser.

Um diagrama foi construído na plataforma Whimsical para representar graficamente a estrutura do interpretador. Para acessá-lo, clique <a href="https://whimsical.com/interpreter-TZg5aNNApiQZ9gXATLeqXu@7YNFXnKbYkRkMK52NJU7L">aqui</a>.

---

## Testes

Na pasta `tests`, estão presentes códigos criados para a realização de testes unitários sobre os principais módulos do interpretador.

---

## Contribuições

Contribuições são sempre bem-vindas! Para contribuir com o projeto, basta criar uma nova branch, realizar as alterações desejadas e submeter um pull request.

---

## Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para mais detalhes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit aedb829

Please sign in to comment.