Anlise lxica e sinttica Teoria e Implementao de

  • Slides: 17
Download presentation
Análise léxica e sintática Teoria e Implementação de Linguagens Computacionais - IF 688 Allan

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

O que é ANTLR? ANother Tool for Language Recognition Ferramenta poderosa para o processo

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

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

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

ANTLRWorks GUI do ambiente de desenvolvimento de gramáticas para o ANTLR Oferece: ◦ Editor

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

ANTLR Editor

ANTLR Interpretador

ANTLR Interpretador

ANTLR Debugger

ANTLR Debugger

Resumindo. . . Construir a gramática de forma incremental torna a tarefa mais fácil

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

Exercícios Devem ser enviados ao e-mail da monitoria <monitoria-if 688@googlegroups. com> até uma hora

Exercícios Devem ser enviados ao e-mail da monitoria <monitoria-if 688@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/compilado res/exercicio. g

Gramática ANTLR (Exemplo) grammar Simple. Calc ; tokens { PLUS MINUS } expr term

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

Exercício 1 Estender a gramática exemplo para reconhecer também operações de multiplicação e divisão

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. ◦

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.

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 - IF 688 Allan

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