Documentos relacionados
Compiladores. Transformações de GLCs. Plano da aula. Análise Top-Down. Análise Top-Down Exemplo. Gramáticas Livres de Contexto.

Um Tradutor Dirigido por Sintaxe

Análise Léxica. Sumário

Gramáticas Livres de Contexto

Compiladores - JACC. Fabio Mascarenhas

Orientação a Objetos

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Análise Sintática. Análise Sintática. Tipos de Analisadores Gramáticais: PARSERS

BC-0505 Processamento da Informação

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 31. Instituto de C

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

LINGUAGEM JAVA - RESUMO

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Função, interação com o compilador Especificação e reconhecimento de tokens Implementação Tratamento de erros. Prof. Thiago A. S.

Familiarização com a ferramenta JavaCC

Trabalho de Implementação de Analisador Léxico Parte 1

Manual do Usuário SISCOLE - Sistema de Cadastro de Organismos e Laboratórios Estrangeiros

Árvores de Derivação para GLC Ambigüidade nas GLC Precedência, Prioridade e Associatividade de operadores

Elabore um algoritmo na Linguagem de Programação do VisuAlg usando a estrutura de repetição PARA que satisfaça as seguintes condições:

Introdução ao reconhecimento de padrões e expressões regulares; Aprendizagem dos conceitos através da realização de alguns exercícios;

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Compiladores. Prof. Bruno Moreno Aula 11 20/05/2011

Estruturas de Repetição

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Análise Sintática - Final

Tokens, Padroes e Lexemas

Como construir um compilador utilizando ferramentas Java

Sistema de Controle de Biblioteca Manual do Usuário

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 30. Instituto de C

ESPECIFICAÇÕES TÉCNICAS SISTEMA DE DETECÇÃO VEICULAR OVERHEAD

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

VIA FÁCIL - BOMBEIROS

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Sistema de Cadastro de Pessoa Jurídica

Processamento Estatístico da Linguagem Natural

Compiladores - Autômatos

EQUIPLANO SISTEMAS. Nota Fiscal de Serviços Eletrônica Manual de Utilização Web Services

Compiladores. Conceitos Básicos

Um Compilador Simples. Definição de uma Linguagem. Estrutura de Vanguarda. Gramática Livre de Contexto. Exemplo 1

Estrutura geral de um compilador programa-fonte

Teoria de Jogos. Algoritmo Minimax e Alfa-Beta AED

País(es) : Brasil Banco(s) de Dados : Progress/Oracle

Perguntas e Respostas Nota Fiscal Avulsa eletrônica (NFAe)

Como Gerar Boletos? FS132

Manual de Usuário Perfil Operador e Responsável Técnico e-crv Módulo Desmonte Cadastro de Veículo e Classificação de Peças

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Aplicativo da Cultura

MANUAL DO USUÁRIO PROGRAMA OSCILOS. Osciloscópio digital. Versão 2.3

Montadores e Compiladores

Compiladores - Análise Preditiva

Programação Orientada a Objeto Java

M A N U A L D O ADMINISTRADOR DO PORTAL

Exercícios: comandos de repetição

Astra LX Computadores e Impressoras Guia para o processo de Configuração de Computadores e Impressoras conectadas ao Programa AstraLX.

Orientações gerais. Apresentação

Informação-Prova de Equivalência à disciplina de: Aplicações Informáticas B. 1. Introdução. Ensino Secundário. Ano letivo de 2011/12

Informativo de Versão 19.10

Cálculo proposicional

p. 2 Trechos de Material Didático (Apostila) e Conteúdo do Livro Texto, de autoria de Marcus Ramos, João José Neto e Ítalo Vega i <= 1

03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral.

Compiladores Análise Semântica

Análise Sintática I. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 42

A ICP Brasil... 3 Cadeia de Certificação ICP-Brasil CertiSign... 4 Instalando os Certificados a partir do CD-ROM de Drivers CertiSign...

Análise Sintática Bottom-up

Termo genérico que se aplica a vários tipos de diagramas que enfatizam interações de objetos.

Diário Oficial Digital. Sistema web para pesquisa de mátérias Manual do usuário

Nota Fiscal Alagoana. Manual para Envio de Arquivo de Cupons Fiscais via Webservice

País(es) : Todos Banco(s) de Dados : Banco(s) de dados

MANUAL DE UTILIZAÇÃO DO AUTO ATENDIMENTO SETOR PÚBLICO DO BANCO DO BRASIL

( d02938a95683&displaylang=pt-br)

Manual Escrituração Fiscal Digital

MANUAL PEDIDO ONLINE

Análise do Ambiente II: segmentação, seleção e posicionamento

Projeto de Compiladores

Compiladores. Análise Léxica

Programação. Folha Prática 4. Lab. 4. Departamento de Informática Universidade da Beira Interior Portugal Copyright 2010 All rights reserved.

Compiladores - Análise Léxica

6 CONCEPÇÃO BÁSICA DO SISTEMA DE APOIO À DECISÃO

COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:

TUTORIAL MATLAB Victor Breder 2016

Procedimentos para realização de backup

4. Álgebra Booleana e Simplificação Lógica. 4. Álgebra Booleana e Simplificação Lógica 1. Operações e Expressões Booleanas. Objetivos.

Transcrição:

Dada uma gramática GLC G: Obter G tal que L(G )=L(G) e G seja LL(1); Conforme a conveniência, efetuar eliminação de regras e de recursões à direita, usando a notação EBNF; Criar, para cada símbolo não-terminal N um método parsen() {...} cujo corpo será determinado pela definição do mesmo; Criar uma classe Parser composta pela variável currenttoken (símbolo corrente), métodos auxiliares e métodos parse; todos privativos; Criar um método público parse para inicializar a operação e servir como interface para outros módulos do compilador.

Exercício Considere a linguagem definida pela gramática: R SNE S + - N I.I I..I I di d E esi sobre o alfabeto ={d,e,+,-,.}. Pede-se: 1. Verificar se a gramática é LL(1) e converter se necessário; 2. Um conjunto de métodos parse para essa linguagem; 3. Obter uma única expressão regular que gere essa linguagem; 4. Um método parse baseado nessa expressão regular.

(+ - )(dd*.dd* dd*..dd*)(e(+ - )dd* ) (+ - )(dd*.d*.dd*)(e(+ - )dd* )

void parser() { switch ct { case + : case - : acceptit(); break; } switch ct { case d : acceptit(); while ct= d acceptit(); accept (. ); while ct= d acceptit(); break; case. : acceptit(); accept ( d ); while ct= d acceptit(); break; default: ERRO(); } if ct= e { acceptit(); switch ct { case + : case - : acceptit(); break; } accept( d ); while ct= d acceptit(); } if ct!=eof ERRO();

ANÁLISE LÉXICA 1. Relacionar os tokens da linguagem; 2. Construir uma gramática léxica; 3. Manipular a gramática léxica, para satisfazer a condição LL(1); 4. Aplicar o método recursivo descendente; 5. Reconhecer e classificar os tokens; 6. Retornar um objeto da classe Token; 7. Em caso de erro, consumir o caracter corrente e retornar o token ERRO; 8. Consumir separadores antes de cada token; 9. Retornar o token EOF quando atingir o final do arquivo; 10. Embutir todos os detalhes de acesso ao arquivo no meio externo.

Sintático class Parser currenttoken parse...() accept(...) acceptit() Léxico class Scanner currentchar scan...() take(...) takeit()

PROJETO Observações gerais: A documentação deverá ser entregue sempre em versão impressa; a entrega da mesma em versão digital é opcional; Os arquivos-fonte dos programas deverão ser entregues apenas em formato digital; eles não deverão ser entregues em formato impresso; O projeto é incremental: todo material (documentação e arquivos) elaborado para uma fase pode e deve ser revisto, corrigido e melhorado para as etapas seguintes; Devem ser observados os prazos publicados na página da disciplina.

PROJETO Etapa 1 - MANIPULAÇÃO GRAMATICAL Criar, a partir da gramática fornecida, uma relação dos tokens da linguagem. Verificar se a gramática da linguagem é LL(1). Justificar a sua resposta. Obter uma gramática equivalente que seja LL(1). Demonstrar, através do cálculo dos conjuntos first e follow, que a nova gramática é LL(1). Obter, a partir da nova gramática, uma gramática léxica e uma gramática sintática para a linguagem.

PROJETO Etapa 2 - ANÁLISE SINTÁTICA Implementar, através do método recursivo descendente, um analisador léxico para a linguagem; Implementar, através do método recursivo descendente, um analisador sintático para a linguagem; Integrar os analisadores léxico e sintático; Projetar e implementar uma interface com o usuário (linha de comando ou janela); Desenvolver os casos de teste; Documentar o trabalho (sintaxe da linguagem-fonte, estrutura léxica, estrutura sintática, exemplos de programas-fonte, transformações gramaticais efetuadas, técnicas de análise empregadas, estruturas de dados e algoritmos utilizados, descrição da interface com o usuário, mensagens de erro emitidas, exemplos de entradas e saídas, testes efetuados, manual de instalação e manual de operação).

PROJETO Etapa 3: MONTAGEM DA AST Construir uma estrutura de dados que represente a estrutura sintática do programa-fonte (AST); para isso, deverão ser especificadas as classes abstratas e concretas que serão utilizadas para representar os nós da árvore. Depois, os métodos de análise sintática deverão ser adaptados para construir a árvore durante o fluxo de processamento do programa-fonte. O programa deverá prever uma opção que permita ao usuário visualizar a árvore depois de montada. Utilizar o padrão de projeto VISITOR.