Giter Site home page Giter Site logo

cooklang_compiler's Introduction

Cook Language


Descrição

Linguagem de programação desenvolvida para a disciplina de Lógica da Computação do curso de Engenharia de Computação do Insper. A linguagem foi desenvolvida para para ler e interpretar receitas de culinária como instruções para um robô de cozinha.

Desenvolvido por

Sarah Pimenta


EBNF:

para o robô, facilitando a automação do processo de cozimento.

RECIPE = HEADER, BREAKLINE, INGREDIENT_LIST, BREAKLINE, STEP_LIST;

HEADER = COMENTARIO, SPACE, TITLE_LINE;

TITLE_LINE = TITLE, {SPACE, TITLE};

TITLE = WORD;

INGREDIENT_LIST = INGREDIENT, {BREAKLINE, INGREDIENT};

INGREDIENT = INGREDIENTE, SPACE, WORD, SPACE, NUMBER, SPACE, UNIDADE;

STEP_LIST = {STEP_LIST, BREAKLINE, STEP};

STEP = PASSO, SPACE, ACTION;

ACTION = PRE_AQUECER_FORNO, LEFT_PARENTHESIS, NUMBER, COMMA, NUMBER, RIGHT_PARENTHESIS
       | MISTURAR, LEFT_PARENTHESIS, INGREDIENTS, RIGHT_PARENTHESIS
       | ADICIONAR, LEFT_PARENTHESIS, INGREDIENTS, RIGHT_PARENTHESIS
       | ASSAR, LEFT_PARENTHESIS, NUMBER, COMMA, NUMBER, RIGHT_PARENTHESIS;

INGREDIENTS = WORD, {COMMA, [SPACE], WORD};

Exemplo de Programa

# Bolo de Chocolate
@ farinha 2 xicara
@ acucar 1 xicara
@ manteiga 1 coler_cha

% PRE-AQUECER-FORNO(250,15)
% MISTURAR(farinha, manteiga, acucar)

Flex e Bison

Para fazer a análise sintática e léxica da linguagem, foram utilizados o Flex e o Bison.

Para compilar o programa, é necessário ter o Flex e o Bison instalados. Assim, para fazer as análises, basta rodar os seguintes comandos no terminal:

cd Flex_Bison
flex -l cook.l
bison -dv parser.y
gcc -o analyzer parser.tab.c lex.yy.c -lfl
./analyzer < ../receita.txt

Compilador

O compilador da COOK Language utiliza como base o compilador desenvolvido na disciplina para GO. Ele faz todas as etapas de análise (léxica, sintática e semântica) e simula o preparo da receita no terminal.

Para compilar o programa de testes é necessário ter o python instalado. Para rodar, utilize o senguinte comando no terminal:

python compilador.py receita.txt

Apresentação

A apresentação da linguagem está disponível em pdf no arquivo COOKLanguagePresentation.pdf

cooklang_compiler's People

Contributors

sarahp31 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.