Análise léxica e sintática

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

description

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?. AN other T ool for L anguage R ecognition Ferramenta poderosa para o processo de construção de uma linguagem de programação - PowerPoint PPT Presentation

Transcript of Análise léxica e sintática

Page 1: Análise léxica e sintática

Análise léxica e sintáticaAnálise léxica e sintáticaTeoria e Implementação de Linguagens Computacionais - IF688

Allan J. Souza{ajss}@cin.ufpe.br

Page 2: Análise léxica e sintática

O que é ANTLR?O que é ANTLR?ANother Tool for Language RecognitionFerramenta 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

Page 3: Análise léxica e sintática

Funcionamento do ANTLRFuncionamento do ANTLRAtravés da definição da gramática,

ANTLR é responsável por gerar o analisador léxico (Lexer) e o analisador sintático (Parser)

Page 4: Análise léxica e sintática

Por que ANTLR?Por que ANTLR?Ganho no tempo de desenvolvimentoANTLRWorks (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

Page 5: Análise léxica e sintática

ANTLRWORKSANTLRWORKS

Page 6: Análise léxica e sintática

ANTLRWorksANTLRWorksGUI do ambiente de desenvolvimento

de gramáticas para o ANTLROferece:

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

Page 7: Análise léxica e sintática

ANTLRANTLREditorEditor

Page 8: Análise léxica e sintática

ANTLRANTLRInterpretadorInterpretador

Page 9: Análise léxica e sintática

ANTLRANTLRDebuggerDebugger

Page 10: Análise léxica e sintática

Resumindo...Resumindo...Construir a gramática de forma

incremental torna a tarefa mais fácilO 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.

Page 11: Análise léxica e sintática

EXERCÍCIOSEXERCÍCIOS

Page 12: Análise léxica e sintática

ExercíciosExercíciosDevem ser enviados ao e-mail da

monitoria <monitoria-

[email protected]> 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

Page 13: Análise léxica e sintática

Gramática ANTLR (Exemplo)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; } ;

Page 14: Análise léxica e sintática

Exercício 1Exercício 1Estender 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

Page 15: Análise léxica e sintática

Exercício 2Exercício 2Estender a gramática do exercício 1

para oferecer suporte a variáveis.◦Ex:

a + 1 - b;

b - a * 4; 3 / 1 + b;

Page 16: Análise léxica e sintática

Exercício 3Exercício 3Estender 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)

Page 17: Análise léxica e sintática

Análise léxica e sintáticaAnálise léxica e sintáticaTeoria e Implementação de Linguagens Computacionais - IF688

Allan J. Souza{ajss}@cin.ufpe.br