Você está na página 1de 8

ATIVIDADES PRTICAS SUPERVISIONADAS

8. Srie Compiladores

Cincia da Computao

A atividade prtica supervisionada (ATPS) um procedimento metodolgico de ensino-aprendizagem desenvolvido por meio de um conjunto de etapas programadas e supervisionadas e que tem por objetivos: Favorecer a aprendizagem. Estimular a corresponsabilidade do aluno pelo aprendizado eficiente e eficaz. Promover o estudo, a convivncia e o trabalho em grupo. Desenvolver os estudos independentes, sistemticos e o autoaprendizado. Oferecer diferentes ambientes de aprendizagem. Auxiliar no desenvolvimento das competncias requeridas pelas Diretrizes Curriculares Nacionais dos Cursos de Graduao. Promover a aplicao da teoria e conceitos para a soluo de problemas prticos relativos profisso. Direcionar o estudante para a busca do raciocnio crtico e a emancipao intelectual. Para atingir estes objetivos a ATPS prope um desafio e indica os passos a serem percorridos ao longo do semestre para a sua soluo. A sua participao nesta proposta essencial para que adquira as competncias e habilidades requeridas na sua atuao profissional. Aproveite esta oportunidade de estudar e aprender com desafios da vida profissional.

AUTORIA: Diego Daniel Duarte


Faculdade Anhanguera de Limeira

Cincia da Computao - 8. Srie - Compiladores

Pg. 2 de 8

COMPETNCIAS E HABILIDADES
Ao concluir as etapas propostas neste desafio, voc ter desenvolvido as competncias e habilidades que constam, nas Diretrizes Curriculares Nacionais, descritas a seguir. Viso sistmica e holstica da rea. Profundo conhecimento dos aspectos tericos, cientficos e tecnolgicos relacionados computao. Competncia para identificar, analisar, documentar e solucionar problemas e necessidades passveis de soluo via computao. Saber conciliar teoria e prtica.

Participao
Para a elaborao dessa atividade, os alunos devero previamente organizar-se em equipes de 3 a 4 participantes e entregar seus nomes, RAs e e-mails ao professor da disciplina. Essas equipes sero mantidas durante todas as etapas.

Padronizao
O material escrito solicitado nessa atividade deve ser produzido de acordo com as normas da ABNT1, com o seguinte padro: em papel branco, formato A4; com margens esquerda e superior de 3cm, direita e inferior de 2cm; fonte Times New Roman tamanho 12, cor preta; espaamento de 1,5 entre linhas; se houver citaes com mais de trs linhas, devem ser em fonte tamanho 10, com um recuo de 4cm da margem esquerda e espaamento simples entre linhas; com capa, contendo: nome de sua Unidade de Ensino, Curso e Disciplina; nome e RA de cada participante; ttulo da atividade; nome do professor da disciplina; cidade e data da entrega, apresentao ou publicao.

DESAFIO
Desde a revoluo industrial, iniciada em meados do sculo XVIII, a humanidade tem desenvolvido cada vez mais mecanismos tecnolgicos com o intuito de facilitar o dia-a-dia e otimizar tarefas rotineiras. Nesses j mais de dois sculos, a histria presenciou a criao de muitos equipamentos, desde o simples tear at as mquinas mais sofisticadas, como andrides capazes de imitar gestos humanos. Um equipamento tambm proveniente dessa revoluo e que ainda tem muita visibilidade nos dias atuais, so os robs, utilizados nas indstrias para realizarem tarefas como soldagem, pintura, aplicao de parafusos, entre outras, substituindo os trabalhadores

Consultar o Manual para Elaborao de Trabalhos Acadmicos. Unianhanguera. Disponvel em: <http://www.unianhanguera.edu.br/anhanguera/bibliotecas/normas_bibliograficas/index.html>.

Diego Daniel Duarte

Cincia da Computao - 8. Srie - Compiladores

Pg. 3 de 8

que ficavam nas linhas de montagem, executando tarefas repetitivas, como retrata o filme Tempos Modernos de Charles Chaplin. Esses robs, embora paream equipamentos complexos, tm um funcionamento similar aos computadores que estamos acostumados a lidar no nosso dia-a-dia. Cada rob realiza um conjunto restrito de operaes. O rob tambm disponibiliza um conjunto de instrues que servem para dizer a ele qual operao dever ser realizada. Suponha um rob simples de soldagem como o ilustrado ao lado. Esse rob teria uma base mvel com a capacidade de girar para a direita e para a esquerda, na qual estaria presa a uma haste que sustentaria um brao mvel que poderia ser acionado para se movimentar para cima e para baixo. No final desse brao haveria o aparelho de solda, que poderia girar para os lados e ser acionado para se movimentar, girando para cima e para baixo e, tambm, poderia ser acionado para aplicar a solda. Esse rob poderia ter Figura 1 - Exemplo de tambm, por ser similar a um computador, a capacidade de Brao Mecnico mensurar o tempo atravs de uma contagem dos milissegundos passados desde uma data predeterminada e poderia estar acoplado a uma balana para determinar o peso da pea com a qual ele estivesse trabalhando. Um equipamento como esse, poderia ter o seguinte conjunto de instrues de baixo nvel: RBR X: rotaciona a base para a direita; RBL X: rotaciona a base para a esquerda; RJU X: rotaciona a juno do cotovelo para cima; RJD X: rotaciona a juno do cotovelo para baixo; RHR X: rotaciona o soldador para a direita; RHL X: rotaciona o soldador para a esquerda; RHU X: rotaciona o soldador para cima; RHD X: rotaciona o soldador para baixo; WEL X: aplica solda por x milissegundos; GTM R: coloca o tempo atual no registrador R; GHG R: colocar o peso da pea atual (em miligramas) no registrador R; MOV X Y: associa o valor X ao registrador Y; ADD X Y: adiciona o valor X ao valor do registrador Y; SUB X Y: subtrai o valor X do valor do registrador Y; MUL X Y: multiplica o valor do registrador Y por X e armazena o resultado em Y; DIV X Y: divide o valor do registrador Y por X e armazena o resultado em Y; JMP X: muda o fluxo de execuo para a instruo X; IFZ X Y: salta para a instruo Y se o valor do registrador X for 0; IFP X Y: salta para a instruo Y se o valor do registrador X for positivo; IFN X Y: salta para a instruo Y se o valor do registrador X for negativo. Esse conjunto de instrues de baixo nvel, entretanto, torna o desenvolvimento de aplicaes para esse equipamento uma tarefa bastante complexa. Esse desafio consiste em projetar e especificar uma linguagem de alto nvel que possa ser utilizada para se programar um rob de solda como o apresentado, alm do desenvolvimento de um compilador capaz de realizar a traduo entre essa linguagem de alto nvel e a linguagem de baixo nvel
Diego Daniel Duarte

Cincia da Computao - 8. Srie - Compiladores

Pg. 4 de 8

utilizada pelo rob. Para tanto o aluno convidado a especificar uma linguagem de programao prpria e criar as solues de software para realizar as anlises lxicas e sintticas dessa linguagem, bem como, o gerador de cdigo para a linguagem utilizada pelo rob proposto nesse desafio.

Objetivo do Desafio
Projetar e especificar uma linguagem de alto nvel para ser utilizada na programao de um rob e solda e desenvolver um compilador para realizar a traduo da linguagem de alto nvel para baixo nvel.

ETAPA 1 (tempo para realizao: 5 horas)


Aula-tema: Introduo ao Processo de Compilao. Fases de Compilao. Analisador Lxico. Essa atividade importante para poder projetar uma linguagem de alto nvel que seja suficiente para possibilitar uma total utilizao dos recursos do equipamento proposto no desafio dessa atividade. Para realiz-la, devem ser seguidos os passos descritos.

PASSOS
Passo 1 (Aluno) Analisar as instrues bsicas disponibilizadas pelo equipamento. Fazer anotaes sobre essas instrues, indicando como elas podem ser utilizadas na elaborao de um cenrio complexo de programao. Desenvolver um programa simples para aplicar 10 miligramas de solda em uma pea. Passo 2 (Equipe) Apresentar suas anotaes para o grupo e discutir as diferenas percebidas por cada membro. Montar um esboo, contendo as indicaes de todos os membros do grupo. Discutir e decidir juntamente com o grupo sobre quais indicaes so pertinentes e quais no so. Passo 3 (Equipe) Identificar, com base nas anotaes do grupo, os seguintes componentes de uma linguagem de programao: variveis, estruturas de controle (condicional, repetio e salto), operaes aritmticas, funcionalidades especficas. Definir, de acordo com o entendimento do grupo, uma linguagem que possibilite a utilizao desses componentes.

Diego Daniel Duarte

Cincia da Computao - 8. Srie - Compiladores

Pg. 5 de 8

Sites sugeridos para pesquisa

SILVA, L. T. Desenvolvimento de um Analisador de Cdigo ANSI-C. 2006. p. 30-36. Disponvel em: <https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B5L2wBbTEIAa
MDllMDgwMTYtZmI5ZS00MGViLTkyOWYtZDEwMmFmNjFmZGI4&hl=en&authkey=CNL YvqIE>. Acesso em: 13 ago. 2011.

Passo 4 (Equipe) Elaborar um relatrio denominado Especificao de Linguagem de Alto Nvel, contendo a especificao formal da linguagem proposta, utilizando EBNF. Acrescentar nesse relatrio a tabela dos tokens que sero utilizados pela linguagem. Sites sugeridos para pesquisa

SCOWEN, R. S. Extended BNF. 1998. Disponvel em: <https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B5L2wB bTEIAaNWYyZGJhZjktNjg5Zi00ZWQ1LTg5MGYtMGZlNzViNDA0NjJj&hl=en&auth key=CMPp6tIH>. Acesso em: 13 ago. 2011.

Bibliografia complementar AHO, A.; ULLMANN, J.; REVI, S.. Compiladores: princpios, tcnicas e ferramentas. 3 ed. Rio de Janeiro: LTC, 2006.

ETAPA 2 (tempo para realizao: 5 horas)


Aula-tema: Analisador Lxico. Essa atividade importante para poder construir um analisador lxico capaz de identificar se um programa construdo na linguagem especificada no possui erros de escrita. Para realiz-la, devem ser seguidos os passos descritos.

PASSOS
Passo 1 (Equipe) Reescrever o programa para aplicar 10 miligramas de solda em uma pea, utilizando a linguagem proposta na Etapa 1 desta ATPS. Realizar, caso necessrio, adequaes na linguagem proposta para que ela possa efetivamente ser suficiente para a programao necessria. Passo 2 (Equipe) Elaborar com base na tabela de totens apresentada na Etapa 1 desta ATPS, os autmatos para reconhecimento dos tokens da linguagem proposta.

Diego Daniel Duarte

Cincia da Computao - 8. Srie - Compiladores

Pg. 6 de 8

Passo 3 (Equipe) Desenvolver um analisador lxico para processamento de programas na linguagem proposta. Tomar como base para esse analisador os autmatos elaborados no passo anterior. Lembrar de realizar primeiramente as verificaes das sequncias de maior comprimento. Sugesto Desenvolver o analisador lxico como uma funo que retorna o prximo token reconhecido. Essa abordagem permitir que esse cdigo seja facilmente reaproveitado nas etapas futuras desta ATPS. Passo 4 (Equipe) Executar o analisador lxico, usando o cdigo criado no passo 1 dessa etapa como entrada. Avalie se o analisador lxico est retornando corretamente os tokens necessrios. Realizar as correes, caso necessrio, at que todos os tokens sejam corretamente reconhecidos. Nota para o Professor No final dessa Etapa o aluno ir entregar o software do analisador lxico desenvolvido. Sugere-se que o professor viabilize a entrega do material por meios digitais, como CD ou e-mail.

ETAPA 3 (tempo para realizao: 5 horas)


Aula-tema: Anlise Sinttica Top-Down Recursiva com Retrocesso. Anlise Sinttica Bottom-Up. Mtodos e Tcnicas de Construo de Analisadores Sintticos. Essa atividade importante para poder analisar sintaticamente os programas desenvolvidos na linguagem proposta pelo seu grupo e identificar eventuais erros de programao. Para realiz-la, devem ser seguidos os passos descritos.

PASSOS
Passo 1 (Equipe) Elaborar a tabela de anlise sinttica preditiva para a linguagem projetada pelo grupo. Passo 2 (Equipe) Desenvolver um analisador sinttico para a linguagem projetada pelo grupo. Utilizar a tabela de anlise sinttica preditiva para definio de quais procedimentos devem ser executados. Sugesto Utilizar o analisador lxico desenvolvido na Etapa anterior desta ATPS para retornar os tokens que devem ser analisados. Passo 3 (Equipe) Alterar a tabela de anlise sinttica preditiva com a indicao dos tokens de sincronizao. Adicionar a funcionalidade de reporte de erros ao analisador sinttico projetado, realizando
Diego Daniel Duarte

Cincia da Computao - 8. Srie - Compiladores

Pg. 7 de 8

o descarte de smbolos de entrada quando um erro for encontrado at que um token de sincronizao seja identificado. Passo 4 (Equipe) Executar o analisador sinttico, usando o cdigo criado no Passo 1 da Etapa 2 desta ATPS como entrada. Avaliar se o analisador sinttico est sendo executado corretamente. Inserir alguns erros propositais no cdigo e avaliar se esses erros esto sendo reportados corretamente. Realizar as correes, caso necessrio. Nota para o Professor No final dessa Etapa o aluno ir entregar o software do analisador sinttico desenvolvido. Sugere-se que o professor viabilize a entrega do material por meios digitais, como CD ou e-mail.

ETAPA 4 (tempo para realizao: 5 horas)


Aula-tema: Anlise Semntica. Implementao de Mecanismos Semnticos (Mini Compilador). Otimizador de Cdigo. Linguagem Assembly e Gerao de Cdigo. Essa atividade importante para poder produzir um tradutor que seja capaz de converter programas criados na linguagem definida para a linguagem utilizada pelo equipamento especificado nesta ATPS. Para realiz-la, devem ser seguidos os passos descritos.

PASSOS
Passo 1 (Equipe) Desenvolver um gerador de cdigo intermedirio que realize a traduo dos programas criados na linguagem definida para uma linguagem intermediria. Sugesto Utilizar como linguagem intermediria um cdigo de trs endereos, pois esse cdigo pode ser facilmente convertido para o cdigo do rob. Passo 2 (Equipe) Desenvolver mecanismos para otimizao de cdigo e aplicar esses mecanismo ao gerador de cdigo intermedirio projetado no Passo 1 dessa Etapa. Passo 3 (Equipe) Desenvolver um tradutor que processe o cdigo intermedirio utilizado e gere um programa equivalente na linguagem apresentada para o equipamento proposto nesta ATPS. Passo 4 (Equipe) Integrar todos os processos criados nesta ATPS de forma a construir um compilador para a linguagem definida pelo grupo. Executar o compilador, tendo como entrada o programa definido no passo 1 da Etapa 1 desta ATPS. Verificar se o programa gerado est correto.
Diego Daniel Duarte

Cincia da Computao - 8. Srie - Compiladores

Pg. 8 de 8

Realizar as correes, caso necessrio, at que o compilador final esteja gerando corretamente a traduo para a linguagem de baixo nvel do rob de solda. Nota para o Professor No final dessa Etapa o aluno ir entregar o software do compilador desenvolvido. Sugere-se que o professor viabilize a entrega do material por meios digitais, como CD ou e-mail.

Livro Texto da Disciplina


MENEZES, Paulo Fernando Blauth. Linguagens Formais e Automatos. 5 ed. Porto Alegre: Sagra Luzzatto, 2005.

Diego Daniel Duarte

Você também pode gostar