Giter Club home page Giter Club logo

pucrs_tf-comp-gercod's Introduction

Geração de Código

A partir do exemplo de geração de código (especificação ByaccJ) disponibilizado na página da disciplina, complementar esta especificação com as seguintes estruturas (com a respectiva geração de código). Note que os primeiros 3 item são obrigatórios (e relativamente triviais) e obrigatórios para poder testar os casos disponibilizados para o comando “for”.

  1. transformar o “comando” de atribuição em uma “expressão” de atribuição
  2. acrescentar operadores de pré e pós-incremento e atribuição por adição (+=)
  3. acrescentar os comandos “break” e “continue”
  4. acrescentar o comando “for”

Integrantes



Ambiente-de-Teste

  • SO: Windows 11/Ubuntu 22.04

Execucao

chmod +x ./yacc.linux
chmod +x ./run.x

compile flex

  • java -jar JFlex.jar <file_name>.flex

compile yacc

  • ./yacc.linux -tv -J <file_name>.y

compile Parser

  • javac Parser.java
  • java Parser <file_example>.cmm

Os passos anteriores podem ser subtituídos pelo Makefile disponibilizado, através do comando Make.

generate binary using assembly file

  • sh run.x <file_example>.cmm
  • ./<file_example>

Testes

Observação1: Os arquivos de teste além de sua descrição '.cmm' estarão com seu assembly '.s' e o binário '.s'. Para recompilar, basta remover os arquivos '.s' e '.o', rodando novamento o script ./run.x.

Observação2: Além dos arquivos .cmm (na pasta testes) também estarão disponíveis os arquivos de exemplo original do projeto na pasta 'testes'.

  • arquivo TESTE.cmm: este programa tem um laço aninhado com um comando 'break'. O objetivo é demonstrar o funcionamento do break de forma que a variável 'b' que é incrementada no laço mais de dentro deve terminar com o mesmo valor de 'a'. 'a' é uma variável incrementada no laço mais de forma.
  • arquivo TESTE2.cmm: este programa tem um 'for' com atribuição 'a+=1' que imprime todos os valores de 'a', menos quando 'a' é igual a 2. Se a variável 'a' é igual a 2 o programa cai na comando 'continue' o que impede o mesmo de imprimir o valor de 'a' e assinala como 'skipped'. No final do 'for', a variável 'a' deve ser igual à condição de saída do laço; neste caso 5.
  • arquivo TESTE3.cmm: calculo de fatorial com um while com condicional sempre 'true'. Para sair do laço deve cair no condicional if para N<1 usando 'break'.

pucrs_tf-comp-gercod's People

Contributors

guilhermehiago avatar pedrowxavier avatar schererl avatar

Forkers

guilhermehiago

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.