ATIVIDADES PRÁTICAS SUPERVISIONADAS 8ª. Série Compiladores Ciência da Computação A Atividade Prática Supervisionada (ATPS) é um procedimento metodológico de ensino-aprendizagem desenvolvido por meio de etapas, acompanhadas pelo professor, e que tem por objetivos: Favorecer a autoaprendizagem do aluno. Estimular a corresponsabilidade do aluno pelo seu aprendizado. Promover o estudo, a convivência e o trabalho em grupo. Auxiliar no desenvolvimento das competências requeridas para o exercício profissional. Promover a aplicação da teoria na solução de situações que simulam a realidade. Oferecer diferenciados ambientes de aprendizagem Para atingir estes objetivos, a ATPS propõe um desafio e indica os passos a serem percorridos ao longo do semestre para a sua solução. Aproveite esta oportunidade de estudar e aprender com desafios da vida profissional. AUTORIA: Michel Abrão Faculdade Anhanguera de Bauru Ciência da Computação - 8ª. Série - Compiladores Pág. 2 de 7 COMPETÊNCIAS E HABILIDADES Ao concluir as etapas propostas neste desafio, você terá desenvolvido as competências e habilidades que constam, nas Diretrizes Curriculares Nacionais, descritas a seguir. Ter visão sistêmica e holística da área. Conhecer os aspectos teóricos, científicos e tecnológicos relacionados à computação. Identificar, analisar, documentar e solucionar problemas e necessidades passíveis de solução via computação. Saber conciliar teoria e prática. Participação Esta atividade será, em parte, desenvolvida individualmente pelo aluno e, em parte, pelo grupo. Para tanto, os alunos deverão: organizar-se, previamente, em equipes de 4 a 5 participantes; entregar seus nomes, RAs e e-mails ao professor da disciplina e observar, no decorrer das etapas, as indicações: Individual e equipe. DESAFIO É de longa data que os programas e sistemas de computação vêm sido desenvolvidos e utilizados pelo homem como ferramenta de auxílio em diversos processos operacionais de grande importância e relevância para a sociedade. Lembramos disso quando nos deparamos com os carros que possuem computador de bordo, com as torres de comando dos aeroportos que possuem programas desenvolvidos para dar garantias e segurança aos vôos, com os aparelhos celulares mais modernos que possuem inúmeras facilidades, dentre outras situações rotineiras. Um desses tipos de programa que prestam serviços á sociedade e que fazem parte do nosso dia-a-dia é o programa utilizado pelos fabricantes de eletrodomésticos, mais especificamente o programa que controla as funções dos equipamentos microondas. Trata-se de uma simples aplicação desenvolvida para controlar as funções e tempo de aquecimento dos alimentos, evitando dessa forma que o homem faça qualquer tipo de controle paralelo. Essa situação é bem visualizada quando utilizamos o aparelho de microondas para aquecer um prato de alimento, pois o pequeno programa se encarrega de receber as instruções do usuário, controlar o tempo de aquecimento e finalizar o serviço indicando mensagem em tela ou aviso sonoro. Para tal desafio, vamos considerar um aparelho de microondas que contenha os seguintes botões/funções: - 10 botões, onde cada um deles contenha um dos números: 0,1,2,3,4,5,6,7,8 e 9. Esses botões serão utilizados para digitação do tempo que o usuário deseja que o alimento seja aquecido por microondas. - 1 botão “Iniciar”. Esse botão será utilizado para que o usuário indique o momento de início do processo de aquecimento. Michel Abrão Ciência da Computação - 8ª. Série - Compiladores Pág. 3 de 7 - 1 botão “Finalizar”. Esse botão será utilizado pelo usuário para interromper a qualquer momento um aquecimento iniciado anteriormente, independente do tempo restante. - 1 botão “Potência”. Esse botão será utilizado pelo usuário para selecionar qual das 3 potências disponíveis ele deseja optar, sendo elas: baixa, média e alta. - 1 botão “Pipoca”. Esse botão indicará automaticamente um tempo de aquecimento de 3 minutos em potência do tipo alta, para estourar um pacote de pipocas. - 1 botão “Brigadeiro”. Esse botão indicará automaticamente um tempo de aquecimento de 5 minutos em potência média, para se fazer um brigadeiro. - 1 botão “Macarrão Instantâneo”. Esse botão indicará automaticamente um tempo de aquecimento de 3 minutos em potência alta, para preparo de macarrão instantâneo. Por mais simples que uma aplicação com essas características possa parecer, a projeção de uma linguagem de desenvolvimento de programas com seu respectivo programa compilador torna-se uma atividade extremamente complexa. O desafio em questão será propor ao aluno que especifique uma nova linguagem de programação para atender a essa aplicação do caso do aparelho de microondas, cujo compilador realize as tarefas básicas do processo de compilação, sendo elas a análise léxica, a análise sintática e a análise semântica. Objetivo do Desafio Projetar e desenvolver uma nova linguagem de programação que atenda ás funções do aparelho de microondas, e que contenha um mini compilador que utilize regras necessárias ao processo de compilação (análise léxica, análise sintática e análise semântica), demonstrando ao programador as mensagens que envolvam os resultados desse processo (mensagens de sucesso e/ou mensagens de erro). Livro Texto da Disciplina A produção desta ATPS é fundamentada no livro-texto da disciplina, que deverá ser utilizado para solução do desafio: AHO, Alfred V.; SETHI, Ravi; LAM, Monica S.. Compiladores: princípios, técnicas e ferramentas. 2ª. Edição. São Paulo: Pearson – Longman, 2007. ETAPA 1 (tempo para realização: 5 horas) Aula-tema: Introdução à Compiladores e ao processo de Compilação. Fases da Compilação. Esta atividade é importante para que você consiga dimensionar a nova linguagem de programação que será desenvolvida, com todos os seus recursos e funcionalidades. Para realizá-la, devem ser seguidos os passos descritos. Michel Abrão Ciência da Computação - 8ª. Série - Compiladores Pág. 4 de 7 PASSOS Passo 1 (Individual) Realizar a leitura e entendimento de todas as funções que deverão ser previstas pelo equipamento de microondas, indicadas no desafio dessa atividade. Anotar todas essas funções com seus respectivos nomes e tarefas que deverão realizar. Exemplo: botão iniciar: será utilizado pelo usuário para indicar o início da operação de aquecimento. Passo 2 (Equipe) Discutir com os demais componentes de seu grupo se todos entenderam a proposta do trabalho e o que cada função (botão do aparelho de microondas) deverá executar quando acionada. No caso de algum componente do grupo ficar em dúvida sobre o desafio proposto, sugere-se procurar orientação docente para explicitar o caso até chegarem a um consenso. Site sugerido para pesquisa LEMONE, Karen A.. Fundamentals of Compilers: An Introduction to Computer Language Translation. 1992. p.184. Disponível em: <http://compiladores.osdevbrasil.net>. Acesso em: 26 nov. 2013. Passo 3 (Equipe) Projetar a nova linguagem de programação, definindo o nome da linguagem de alto nível e criando a tabela de símbolos (tabela de tokens). Vale lembrar que essa tabela de símbolos deverá prever todas as possibilidades de comandos e palavras reservadas previstas na linguagem. Passo 4 (Equipe) Desenvolver um programa na nova linguagem de programação, utilizando a tabela de símbolos do Passo 3 dessa Etapa, de maneira que contenha as seguintes funções do microondas: - Receba um número digitado do teclado do equipamento de microondas que indique o tempo de aquecimento; - Receba um tipo de potência (baixa, média ou alta); - Faça o aquecimento do alimento pelo tempo e potência selecionados; - Emita uma informação no visor do aparelho de microondas indicando o término do processo de aquecimento. - Permita que o usuário cancele o processo de aquecimento a qualquer tempo, bastando para isso que ele aperte o botão “Finalizar”. Nota para o Professor Entregar ao professor uma mídia que contenha o nome dos participantes da sua equipe, o nome da sua linguagem de programação, a tabela de símbolos especificada no Passo 3 e o programa especificado no Passo 4. Michel Abrão Ciência da Computação - 8ª. Série - Compiladores Pág. 5 de 7 ETAPA 2 (tempo para realização: 5 horas) Aula-tema: Analisador Léxico. Estados da análise. Exemplos e exercício. Tokens. Esta atividade é importante para que você entenda de forma prática como deve ser o comportamento do compilador nos processos de análise léxica. Para realizá-la, devem ser seguidos os passos descritos. PASSOS Passo 1 (Equipe) Utilizar uma linguagem de alto nível para iniciar a criação do seu mini compilador. Seu mini compilador deverá fazer a análise léxica e utilizar a sua tabela de símbolos. Nesse passo, comece a codificar o seu mini compilador, criando uma forma de armazenar a tabela de símbolos de forma digital. Passo 2 (Equipe) Codificar as primeiras linhas do seu mini compilador, de maneira que ele faça a análise léxica do programa que você desenvolveu no Passo 4 da Etapa 1 dessa ATPS. A ideia é que o mini compilador faça o processo comparativo dos tokens encontrados no programa fonte e a sua tabela de símbolos, gerando mensagens de resultado em vídeo. Passo 3 (Equipe) Apresentar a função léxica do seu mini compilador para a equipe e discutir possíveis implementações de melhoria que a aplicação poderia ter (tabela de símbolos externa, seleção do programa-fonte através do mini compilador, dentre outras implementações possíveis). Nota para o Professor Entregar ao professor uma mídia que contenha o seu mini compilador com a função léxica em funcionamento. ETAPA 3 (tempo para realização: 5 horas) Aula-tema: Análise Sintática Top-Down Recursiva com Retrocesso: introdução. Análise Sintática Top-Down Recursiva com Retrocesso: implementação. Análise Sintática Top-Down Recursiva com Retrocesso: exercícios. Análise Sintática BottomUp. Esta atividade é importante para que você entenda de forma prática como deve ser o comportamento do compilador nos processos de análise sintática. Para realizá-la, devem ser seguidos os passos descritos. Michel Abrão Ciência da Computação - 8ª. Série - Compiladores Pág. 6 de 7 PASSOS Passo 1 (Equipe) Projetar junto com a sua equipe o esboço de qual será a tabela de regras sintáticas que o seu mini compilador deverá obedecer. Anotar todas essas regras e iniciar a codificação dessa tabela de regras sintáticas de forma digital, pois ela será utilizada em seguida pelo mini compilador para executar as tarefas sintáticas. Passo 2 (Equipe) Codificar as linhas do seu mini compilador, de maneira que ele faça a análise sintática TopDown recursiva sem retrocesso do programa que você desenvolveu no Passo 4 da Etapa 1 dessa ATPS. A ideia é que o mini compilador faça o processo comparativo dos parses encontrados no programa fonte e a sua tabela de regras sintáticas, gerando mensagens de resultado em vídeo. Passo 3 (Equipe) Apresentar a função sintática do seu mini compilador para a equipe e discutir possíveis implementações de melhoria que a sua aplicação poderia ter (tabela de regras sintáticas externas, seleção do programa-fonte através do mini compilador, dentre outras implementações possíveis). Nota para o Professor Entregar ao professor uma mídia que contenha o seu mini compilador com a função sintática em funcionamento. ETAPA 4 (tempo para realização: 5 horas) Aula-tema: Estudo de Análise Semântica. Implementação de Mecanismos Semânticos (Mini Compilador). Esta atividade é importante para que você entenda de forma prática como deve ser o comportamento do compilador nos processos de análise semântica. Para realizá-la, devem ser seguidos os passos descritos. PASSOS Passo 1 (Equipe) Projetar junto com a sua equipe o esboço de quais serão as regras semânticas que o seu mini compilador deverá obedecer. Anotar todas essas regras para futura discussão no próximo passo. Michel Abrão Ciência da Computação - 8ª. Série - Compiladores Pág. 7 de 7 Passo 2 (Equipe) Analisar em equipe as regras semânticas que foram definidas no passo anterior, verificando se há possibilidade de implementar novas melhorias semânticas ao processo. Caso existam, anotar essas melhorias para serem utilizadas no próximo passo. Passo 3 (Equipe) Codificar as linhas do seu mini compilador, de maneira que ele faça a análise semântica do programa que você desenvolveu no Passo 4 da Etapa 1 dessa ATPS. A ideia é que o mini compilador utilize as regras definidas no Passo 1 e no Passo 2 dessa Etapa, gerando mensagens de resultado em vídeo. Passo 4 (Equipe) Apresentar a função semântica do seu mini compilador para a equipe e discutir possíveis melhorias que a sua aplicação poderia ter. Nota para o Professor Entregar ao professor uma mídia que contenha o seu mini compilador com a função semântica em funcionamento. Padronização O material escrito solicitado nesta atividade deve ser produzido de acordo com as normas da ABNT, com o seguinte padrão (exceto para produções finais não textuais): 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; espaçamento de 1,5 entre linhas; se houver citações com mais de três linhas, devem ser em fonte tamanho 10, com um recuo de 4cm da margem esquerda e espaçamento simples entre linhas; com capa, contendo: nome de sua Unidade de Ensino, Curso e Disciplina; nome e RA de cada participante; título da atividade; nome do professor da disciplina; cidade e data da entrega, apresentação ou publicação. Para consulta completa das normas ABNT, acesse a Normalização de Trabalhos Acadêmicos Anhanguera. Disponível em: <http://issuu.com/normalizacao/docs/normaliza____o_de_trabalhos_acad__m>. Acesso em: 13 maio 2014. Michel Abrão