Upload
juliano-flores
View
748
Download
3
Embed Size (px)
Citation preview
Tradutores
ANTLR & ANTLRWorks
Guilherme Wunsch, Isaías Rosa e Juliano Flores
Universidade do Vale do Rio dos Sinos
2
Agenda
• Informações• Características• Funcionamento• ANTLRWorks– Diagramas Sintáticos– Parse Tree– AST
• Exemplo de Debug• Referências
3
Informações
• ANother Tool for Language Recognition• Ferramenta de Linguagem (Gerador de Interpretadores,
Compiladores e Tradutores)• Sucessor do PCCTS (Purdue Compiler Construction Tool Set)• Versão 3.4• Software Livre• Licença BSD• Terence Parr• 1989!• University San Francisco
4
Características
• Entrada: Gramática Formal (notação EBNF)• Saída Básica (código): – Lexer – Parser
• Linguagens de Programação suportadas: Ada95, ActionScript, C, C#, Java, JavaScript, Objective-C, Perl, Python, e Ruby
• Alta Legibilidade• Tipo: LL(*)
5
Funcionamento
Requisitos:1. Gramática: Gramatica.g2. Executor: Teste.java3. Entrada (opcional): entrada.txt
6
Funcionamento
Execução:1. antlr: Gera as classes lexer e parser:
• GramaticaLexer.java• GramaticaParser.java
2. javac: Compilar estes dois e Teste.java• GramaticaLexer.class,
GramaticaParser.class• Teste.class
3. java: Executar java Teste < entrada.txt
7
ANTLRWorks
• IDE• Multiplataforma• Versão 1.4.3• Jean Bovet & Terence Parr• Conteúdo:– Editor sensível ao contexto,– Interpretador,– Compilador,– e Depurador ANTLR.
8
ANTLRWorks
9
Demonstração Debugger
10
Arvore Sintatica
11
Arvore Sintática Abstrata (AST)
12
AST parcial
13
Demonstração compilação e execução
1. Gerar código pela IDE;2. Criar classe de Testes (Teste.java);3. Compilar código incluindo antlr.jar no
CLASSPATH;– javac –classpath “.;C:\Pasta\antlr.jar” *.java
4. Executar código incluindo antlr.jar no CLASSPATH;– java –classpath “.;C:\Pasta\antlr.jar” Teste
entrada.txt
14
Referências
• http://www.antlr.org• http://en.wikipedia.org/wiki/ANTLR• http://en.wikipedia.org/wiki/LL_parser• http://en.wikipedia.org/wiki/Extended_Backus%
E2%80%93Naur_Form• http://pt.wikipedia.org/wiki/An%C3%A1lise_sint
%C3%A1tica_(computa%C3%A7%C3%A3o)• http://www.youtube.com/watch?v=9Zcfz9o5vNk• http://www2.icmc.usp.br/~gracan/teoria/SubIte
m51Teoria.html• http://supportweb.cs.bham.ac.uk/docs/tutorials
/docsystem/build/tutorials/antlr/antlr.html
15
Dúvidas?
16
Obrigado!