Processamento de Linguagens Mestrado e Curso de Especialização em Informática Universidade do Minho

Documentos relacionados
Existem conjuntos em todas as coisas e todas as coisas são conjuntos de outras coisas.

Análise Sintática Introdução

Identificadores Nome de variáveis, constantes, métodos, etc...

Algoritmos Fundamento e Prática

O analisador sintáctico PEN

Compiladores. Análise Léxica

Linguagens de Domínio Específico

Conceitos básicos de algoritmos

Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013

IV.2 Aspectos Léxicos Convencionais

Método para Construção de Algoritmos

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Paradigmas de Programação

Conceitos Básicos de Algoritmos

Projeto de Compiladores

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

Revisão. Fases da dacompilação

V.2 Especificação Sintática de Linguagens de Programação

PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA

Sintática: como é escrito cada elemento da linguagem de programação.

Algoritmos e Programação

Prof. Jorge Cavalcanti

Linguagens de Domínio Específico

Conceitos avançados de programação. Módulo 8 Programação e Sistemas de Informação Gestão e Programação de Sistemas Informáticos

Linguagens de Domínio Específico

Técnicas de Modelação de Dados

Algoritmos e Programação

15/03/2018. Professor Ariel da Silva Dias Aspectos sintáticos e semânticos básicos de linguagens de programação

Interpretação e Compilação de Linguagens de Programação Semântica CALCI com Ambiente

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Programação em Lógica. UCPEL/CPOLI/BCC Lógica para Ciência da Computação Luiz A M Palazzo Maio de 2010

Trabalho de Linguagens Formais e Compilação

Compiladores - Especificando Sintaxe

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Compiladores - JACC. Fabio Mascarenhas

I - CONCEITOS INICIAIS

Capítulo 1 Conceitos Básicos

Algoritmos e Programação

Algoritmos I Aula 13 Linguagem de Programação Java

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

Linguagem Técnica I. Prof. Jonatas Bastos

O código do modelo de mapeamento sintático-conceitual do sistema ConPor

BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35

Terceiro Trabalho de Inteligência Artificial / Sistemas Inteligentes. Entrega: 04/05/2015

Estrutura básica de um programa Instruções do Programa Sintaxe das instruções Diretivas apenas o contexto Variáveis e Constantes Tipos e modificadores

3. Linguagem de Programação C

Definição da Sintaxe Abstrata de Potigol em XML

Notas de aula: Cálculo e Matemática Aplicados às Notas de aula: Ciências dos Alimentos

Programação Estruturada Aula VisualG

Linguagens de Domínio Específico

Olimpíadas de Informática Aulas preparatórias Introdução a Programação em C.

Integração por Web Services

Linguagens Formais e Autômatos P. Blauth Menezes

LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO À PROGRAMAÇÃO DE COMPUTADORES

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

EA876 - Introdução a Software de Sistema

V Análise Sintática. V.1.1 Gramáticas Livres de Contexto Definições de GLC

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

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

FIC Introdução à Programação de Computadores

Linguagens de Domínio Específico

Sintaxe e Semântica. George Darmiton da Cunha Cavalcanti.

Compiladores Análise Semântica

Programação de Computadores IV

AULA 02. Lógica de Programação. Centro Educação Profissional Ezequiel Ferreira Lima CEPEF. Curso Técnico em Eletrônica.

Ficha Informativa n.º 2. Variavéis, tipos de dados e constantes em PHP

Plano da aula. Compiladores. Os erros típicos são sintáticos. Análise Sintática. Usando Gramáticas. Os erros típicos são sintáticos

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

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

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Introdução à Programação. João Manuel R. S. Tavares

2ª. Competição Tecnológica (Outubro/2010)

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Compiladores - Gramáticas

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Terceiro Trabalho de Sistemas Inteligentes. Entrega: 25/04/2014

O AMBIENTE DE DESENVOLVIMENTO

Processamento de Linguagens I LESI + LMCC (3 o ano)

2 Fluxogramas e Pseudocódigo. 18 Programação em C/C++ estrutura básica e conceitos fundamentais

Aulas preparatórias Introdução a Programação em Linguagem C

Fundamentos de Lógica e Algoritmos. Aula 3.2 IDLE, Variáveis e Tipos. Prof. Dr. Bruno Moreno

Pseudolinguagem. BC0501 Linguagens de Programação t2 Aula 11. Prof. Alysson Ferrari ufabc.edu.br

Compiladores - Gramáticas

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores - Análise Recursiva

Tokens, Padroes e Lexemas

INE5421 LINGUAGENS FORMAIS E COMPILADORES

Linguagens de Programação. Trabalhos. Carlos Bazilio

Programação. Corpo Docente Página da disciplina Funcionamento Avaliação Suporte informático. Aulas teóricas/problemas

Fundamentos de Lógica e Algoritmos. Aula 3.1 Introdução a Python. Prof. Dr. Bruno Moreno

Earley Parser. CT200 - Fundamentos de Autômatas e Linguagens Formais. Israel C.S. Rocha

Olimpíadas de Informática

Terceiro Trabalho de Inteligência Artificial / Sistemas Inteligentes. Entrega: 29/04/2016

Desenvolvimento de Aplicações Desktop

XML. Prof. Júlio Machado

Instruções, dados e expressões

CAP. VI ANÁLISE SEMÂNTICA

CP Compiladores I Prof. Msc.. Carlos de Salles

Árvores (ordenadas) Departamento de Ciência de Computadores da FCUP MC Aula 11 1

Transcrição:

Processamento de Linguagens Mestrado e Curso de Especialização em Informática Universidade do Minho Relatório do Trabalho Prático do 1 o Módulo Jorge Filipe Pereira da Cruz jcruz71@gmail.com 16 de Junho de 2007

Conteúdo 1 Enunciado do problema 2 2 Ferramenta ProGrammar 4 3 Conclusão 6 A Diapositivos da apresentação 7 1

Capítulo 1 Enunciado do problema Lavanda é uma Linguagem de Domínio Específico (DSL) que se destina a descrever as remessas de sacos de roupa que os Pontos de Recolha (PR) de uma Lavandaria enviam diariamente da Central (LC) para lavar. Cada saco tem um número de identificação e o nome do cliente que o deixou; o seu conteúdo está dividido em lotes. Cada lote corresponde a um tipo de peça (roupa-de-corpo, ou roupa-de-casa), um tipo de tinto (branco, ou cor) e um tipo de fio (algodão, lã e fibra), registandose então o número de peças entregues que pertencem a esse lote. A gramática independente de contexto G, abaixo apresentada, define a linguagem Lavanda pretendida. O Símbolo Inicial é Lavanda, os Símbolos Terminais são escritos em minúsculas (pseudoterminais), ou em maiúscula (palavras-reservadas), ou entre apostrofes (sinais de pontuação) e a string nula é denotada por &; os restantes serão os Símbolos Não-Terminais. p1: Lavanda --> Cabec Sacos p2: Cabec --> data IdPR p3: Sacos --> Saco. p4: Sacos Saco. p5: Saco --> num IdCli Lotes p6: Lotes --> Lote Outros p7: Lote --> Tipo Qt p8: Tipo --> Classe Tinto Fio p9: Outros --> & p10: ; Lotes p11: IdPR --> id p12: IdCli --> id p13: Qt --> num p14,15: Classe--> corpo casa p16,17: Tinto --> br cor p18,19,20: Fio --> alg la fib A gramática abstracta é a que está descrita a seguir. Para isso eliminaram-se todos os terminais sem carga semântica (palavras-reservadas e sinais). A gramática, independente de contexto, G será simplificada eliminando produções sem alternativas em que no lado direito só aparece um terminal - neste caso: p11, p12, p13. p1a: Lavanda --> Cabec Sacos p2a: Cabec --> data id p3a: Sacos --> Saco 2

p4a: Sacos Saco p5a: Saco --> num id Lotes p6a: Lotes --> Lote Outros p7a: Lote --> Tipo num p8a: Tipo --> Classe Tinto Fio p9a: Outros --> & p10a: Lotes p11a: Classe--> corpo p12a: casa p13a: Tinto --> br p14a: cor p15a: Fio --> alg p16a: la p17a: fib 3

Capítulo 2 Ferramenta ProGrammar Nesta ferramenta pretende-se: testar os exemplos disponíveis; usar a linguagem Lavanda. Consideremos para o teste o seguinte exemplo: 14-06-2007 ontem 1 dani (corpo-cor-la 1, casa-cor-alg 2) 2 pedro (casa-br-fib 4) 3 celina (corpo-cor-alg 2, corpo-cor-la 3, corpo-cor-fib 1, casa-cor-alg 2, casa-cor-la 3, casa-cor-fib 1) 15-06-2007 hoje 1 jorge (corpo-br-alg 1, casa-br-fib 4, corpo-cor-la 6) para a gramática Lavandaria, que implementa a linguagem Lavanda, no ProGrammar: //Gramática Lavandaria grammar Lavandaria { Lavanda ::= {LavandaList}; LavandaList ::= Cabec Sacos; Cabec ::= Data id; Sacos ::= Saco [{Saco}]; // O ProGrammar n~ao permite Left-recursion Sacos Saco Saco ::= num id "(" Lotes; Lotes ::= Lote Outros; Lote ::= Tipo num; Tipo ::= Classe "-" Tinto "-" Fio; 4

Outros ::= "," Lotes ")"; Classe ::= "corpo" "casa"; Tinto ::= "br" "cor"; Fio ::= "alg" "la" "fib"; Data ::= dia "-" mes "-" ano; num ::= numeric; id ::= alpha; dia ::= numeric<1,2>; //1 ou 2 dígitos mes ::= numeric<2>; //obrigatório 2 dígitos ano ::= numeric<4>; //obrigatório 4 dígitos }; O ProGrammar é uma ferramenta de desenvolvimento de parsers. É constituída pelos seguintes componentes: Interactive Development Environment (IDE) - Ambiente visual para criar, testar e debugging parsers. Grammar Definition Language (GDL) - Notação de alto-nível para expressar a sintaxe de dados. Parse Engine (PE) - Componente de runtime que faz o parse dos dados de entrada. Application ProGrammar Interface (API) - Interface de programação para chamar o mecanismo de parse em tempo de execução (runtime). 5

Capítulo 3 Conclusão O ProGrammar é uma ferramenta de desenvolvimento de Parser que: é de fácil utilização; possui um bom ambiente gráfico; possibilita a sua utilização em ferramentas de programação como o Visual Basic, C++ e Delphi através da sua API. A gramática lavandaria que permitiu implementar a linguagem lavanda sofreu algumas alterações de sintaxe resultantes da implementação na ferramenta ProGrammar. O seu teste para o exemplo fornecido decorreu com sucesso. 6

Apêndice A Diapositivos da apresentação 7