1 / 17

Análise léxica e sintática

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

xuxa
Download Presentation

Análise léxica e sintática

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. O que é ANTLR? • ANotherTool for Language Recognition • Ferramentapoderosapara o processo de construção de umalinguagem de programação • Oferece um frameworkparadesenvolvimento de compiladores, tradutores e aplicaçõesafins ANTLR foi desenvolvida por Terence Parr, professor de Ciência da Computação da Universidade de São Francisco

  3. 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)

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

  5. ANTLRWorks

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

  7. ANTLREditor

  8. ANTLRInterpretador

  9. ANTLRDebugger

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

  11. Exercícios

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

  13. 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; } ;

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

  15. 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;

  16. 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)

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

More Related