Git Product home page Git Product logo

trabalhodecompiladores2's Introduction

TrabalhoDeCompiladores2

Trabalho referente à disciplina de Compiladores no semestre 2023.1.

Alunas: Gabriela Pinheiro e Karina Lemos

Input

O código de entrada deverá ser inserido no arquivo entrada.txt

A pasta Exemplos possui diferentes exemplos de códigos que podem ser usados.

Este trabalho necessita o uso do Bison3

Como rodar o lex e o bison:

Linux/Mac:

make

Windows:

Este comando considera que o usuário tenha instalado o pacote WinFlexBison.

make win

Caso contrário, é possível usar o comando anterior.

Rodar somente o scanner (Depois de já ter sido gerado):

make scan

Rodar somente o scanner imprimindo a árvore no terminal (Depois de já ter sido gerado):

make scan_terminal

Output

Em caso de erros a saída é uma mensagem de erro

Erro léxico ou sintático:

  • Linha x: sintax error

Erro semântico:

Verificação de tipos
  • Linha x: Operação inválida entre os tipos "nome do tipo" e "nome do tipo"

Consideramos apenas operações inválidas entre os tipos:

  • Float e char
  • Int e char
Contexto de identificadores
  • Linha x: Identicador 'nome do identificador' nao declarado anteriormente
  • Linha x: Identificador 'nome do identificador' já declarado anteriormente

Em caso de nenhum erro a saída é uma árvore escrita no arquivo saida.txt.

Atuação de cada membro

  • Scanner + parser bottom-up -> Karina e Gabriela

  • Transformação de laços de repetição em desvios incondicionais (goto) -> Gabriela

  • Verificação de tipos -> Gabriela

  • Contexto de identificadores -> Karina

Restrições de implementação

Existem duas restrições de implementações conhecidas neste trabalho:

  • Não é feita a checagem do tipo e quantidade dos argumentos ao se usar uma função. Só se verifica se eles já foram declarados.
  • Não existe distinção entre um indentificador que delimite uma função de uma variável. Logo, ao se executar uma função não se verifica se aquele identificador representa uma função ou variável.

trabalhodecompiladores2's People

Contributors

gabrielapc avatar karinaplemos avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.