170 likes | 259 Views
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
E N D
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? • 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 foidesenvolvidapor Terence Parr, professor de CiênciadaComputaçãodaUniversidade de São Francisco
Funcionamento do ANTLR • Atravésdadefiniçãodagramática, ANTLR é responsávelporgerar o analisadorléxico (Lexer) e o AnalisadorSintatico (Parser)
Por que ANTLR? • Ganho no tempo de desenvolvimento • ANTLRWorks (IDE) - possuiferramentasparaconstrução e depuraçãodagramática • Dásuporte a váriaslinguagenscomo C/C++, C#, Java, Python, entre outras
ANTLRWorks • GUI do ambiente de desenvolvimento de gramáticaspara o ANTLR • Oferece: • Editor - highligthing, auto completion; • Diagrama de sintaxe - visualização das produções; • Interpretador - paraprototipaçãorápida; • Debugger - isolamento de errosnagramática.
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; } ;
Resumindo... • Construir a gramática de forma incremental torna a tarefamaisfácil • O ANTLRWorks com seusrecursosgráficos e de prototipaçãoagilizarão o processo. • Geraçãoautomática do Parser e do AnalisadorSintáticoutilizando a GUI.
Exercício 1 • Estender a gramáticaexemploparareconhecertambémoperações de multiplicação e divisão • Obs.: a extensãodeve ser feitarespeitando a precedência dos operadores
Exercício 2 • Estender a gramática do exercício 1 paraoferecersuporte a variáveis. • Ex: • a + 1 - b; • b - a * 4; • 3 / 1 + b;
Exercício 3 • Estender a gramática do exercício 2 paraquereconheçacomandos de atribuição. A linguagemtambémdeveoferecer a possibilidade de comandosmúltiplos (sequência de expressões e/ouatribuições)
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.
Análise léxica e sintática Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza{ajss}@cin.ufpe.br