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
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
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)
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
ANTLRWORKSANTLRWORKS
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.
ANTLRANTLREditorEditor
ANTLRANTLRInterpretadorInterpretador
ANTLRANTLRDebuggerDebugger
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.
EXERCÍCIOSEXERCÍCIOS
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
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; } ;
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
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;
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)
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
Top Related