Análise léxica e sintática

Slides:



Advertisements
Apresentações semelhantes
Creating an Eclipse-based IDE for the D programming language
Advertisements

Software Básico Silvio Fernandes
Tópicos em Compiladores
Compiladores Claudio Benossi
Compiladores I Cristiano Damiani Vasconcellos
Deyvisson, Rafael M.P., Renato, Robson C.F., Rodolfo
Software Básico Silvio Fernandes
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
JavaCC e JJTree Geração de compiladores implementados em Java
YACC.
Linguagem de Prog. e Programas
Autômatos Finitos Determinísticos
Construção de Compiladores
Construção de Compiladores
Tradutores de Linguagens
Linguagens Formais e Tradutores
Introdução a Linguagem JAVA
Prof. Bruno Moreno Aula 4 – 11/03/2011
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Análise léxica e sintática
Aula prática – geração de código (.NET)
Análise léxica e sintática
Aula prática - análise contextual
Ferramentas para a Construção de Compiladores: Lex & Yacc
Compiladores, Aula Nº 9 João M. P. Cardoso
Professor: Juliano Lucas Gonçalves
Gramáticas Livres de Contexto
Compiladores Prof. Claudio Benossi.
Teoria e Implementação de Linguagens Computacionais – IF688
Estudo dos Conceitos e Paradigmas de Programação
Semântica de Linguagens de Programação
Análises léxica e sintática
SableCC José Francisco Pereira Equipe de Monitores
Augusto Sampaio e Paulo Borba Centro de Informática
Equipe: Fernando Calheiros Flavia Leite Eduardo Wagner
Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva
Análise Léxica Primeira fase de um compilador
Professor: Márcio Amador
Analise sintática aula-07-analise-sintática.pdf.
3/4/2015 Prof. Msc George Cabral Bacharelado em Sistema de Informação Ambientes de Desenvolvimento de Software.
Análises léxica e sintática
Analise Semântica aula-10-analise-semântica.pdf.
Analisador Léxico Prof. Alexandre Monteiro
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Linguagens de Programação
Análise Sintática Prof. Alexandre Monteiro
Equipe: Osias Carneiro, Anderson Soares, André Araújo
Geração de Código Equipe de Monitores Teoria e Implementação de Linguagens Computacionais – IF688.
Prof. Fábio Carneiro Mokarzel 2014
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
Back-End Compilação aula-11-back-end.pdf.
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Aula de SableCC Teoria e Implementação de Linguagens Computacionais (Compiladores) - IF688 – Artur Ribeiro de Aquino – ara Allan Jefferson – ajss.
COMPILADORES 04 Prof. Marcos.
Geradores de analisadores léxicos
Compiladores – IF688 Professor: André Santos
ANTLR ANother Tool for Language Recognition Jobson Ronan (jrjs) Renato Viana (rvf)
JavaCC.
JPortugol: Uma Ferramenta de Auxílio à Aprendizagem de Algoritmos
Sintaxe de uma Linguagem
Introdução a linguagem de Programação Java. Linguagens de Programação Linguagens de máquina(muito difíceis de usar e compreender) – Comanda ações do computador.
PLP – JavaCC Java Compiler Compiler
Sistemas Operacionais
UCB – Universidade Católica de Brasília Bacharelado em Ciência da Computação e Sistemas de Informação Trabalho de Conclusão de Curso JMBLogView ferramenta.
Desenvolvendo uma Ferramenta de Auxílio à Aprendizagem de Algoritmos Acadêmica: Andréia Cristina dos Santos Gusmão Orientador: Prof. Artur Luís Ribas Barbosa.
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
Parser LexML João Lima. Tópicos Parser  Aplicações  Tipos Ferramentas ANTLR Implementação Próximos passos.
Transcrição da apresentação:

Análise léxica e sintática Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza {ajss}@cin.ufpe.br

O que é ANTLR? ANother Tool for Language Recognition Ferramenta poderosa para o processo de construção de uma linguagem de programação Oferece um framework para desenvolvimento de compiladores, tradutores e aplicações afins ANTLR foi desenvolvida por Terence Parr, professor de Ciência da Computação da Universidade de São Francisco

Funcionamento do ANTLR Através da definição da gramática, ANTLR é responsável por gerar o analisador léxico (Lexer) e o analisador sintático (Parser)

Por que ANTLR? Ganho no tempo de desenvolvimento ANTLRWorks (IDE) - possui ferramentas para construção e depuração da gramática Dá suporte a várias linguagens como C/C++, C#, Java, Python, entre outras

ANTLRWorks

ANTLRWorks GUI do ambiente de desenvolvimento de gramáticas para o ANTLR Oferece: Editor - highligthing, auto completion; Diagrama de sintaxe - visualização das produções; Interpretador - para prototipação rápida; Debugger - isolamento de erros na gramática.

ANTLR Editor Auto-completion; syntax highlighting;

ANTLR Interpretador The interpreter allows to quickly test the grammar with a sample input;

ANTLR Debugger Used to step through the parse;

Resumindo... Construir a gramática de forma incremental torna a tarefa mais fácil O ANTLRWorks com seus recursos gráficos e de prototipação agilizarão o processo. Geração automática do Lexer e do Parser utilizando a GUI.

Exercícios

Exercícios Devem ser enviados ao e-mail da monitoria <monitoria-if688@googlegroups.com> até uma hora após o termino da aula. As resoluções devem estar em arquivos diferentes para cada exercício. Utilizem o arquivo http://www.cin.ufpe.br/~iols/compiladores /exercicio.g

Gramática ANTLR (Exemplo) grammar SimpleCalc ; tokens { PLUS = '+' ; MINUS = '-' ; } expr : term ( ( PLUS | MINUS ) term )* ';' ; term : number ; number : DIGIT+ ; DIGIT : '0'..'9' ; WHITESPACE : ( '\t' | ' ' | '\r' | '\n'| '\u000C' )+ { $channel = HIDDEN; } ;

Exercício 1 Estender a gramática exemplo para reconhecer também operações de multiplicação e divisão Obs.: a extensão deve ser feita respeitando a precedência dos operadores

Exercício 2 Estender a gramática do exercício 1 para oferecer suporte a variáveis. Ex: a + 1 - b; b - a * 4; 3 / 1 + b;

Exercício 3 Estender a gramática do exercício 2 para que reconheça comandos de atribuição. A linguagem também deve oferecer a possibilidade de comandos múltiplos (sequência de expressões e/ou atribuições)

Análise léxica e sintática Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza {ajss}@cin.ufpe.br