ANTLR & ANTTLRWorks
-
Upload
juliano-flores -
Category
Documents
-
view
748 -
download
3
Transcript of ANTLR & ANTTLRWorks
![Page 1: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/1.jpg)
Tradutores
ANTLR & ANTLRWorks
Guilherme Wunsch, Isaías Rosa e Juliano Flores
Universidade do Vale do Rio dos Sinos
![Page 2: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/2.jpg)
2
Agenda
• Informações• Características• Funcionamento• ANTLRWorks– Diagramas Sintáticos– Parse Tree– AST
• Exemplo de Debug• Referências
![Page 3: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/3.jpg)
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
![Page 4: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/4.jpg)
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(*)
![Page 5: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/5.jpg)
5
Funcionamento
Requisitos:1. Gramática: Gramatica.g2. Executor: Teste.java3. Entrada (opcional): entrada.txt
![Page 6: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/6.jpg)
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
![Page 7: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/7.jpg)
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.
![Page 8: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/8.jpg)
8
ANTLRWorks
![Page 9: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/9.jpg)
9
Demonstração Debugger
![Page 10: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/10.jpg)
10
Arvore Sintatica
![Page 11: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/11.jpg)
11
Arvore Sintática Abstrata (AST)
![Page 12: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/12.jpg)
12
AST parcial
![Page 13: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/13.jpg)
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
![Page 14: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/14.jpg)
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
![Page 15: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/15.jpg)
15
Dúvidas?
![Page 16: ANTLR & ANTTLRWorks](https://reader035.fdocuments.net/reader035/viewer/2022081514/556667c3d8b42aa21e8b512f/html5/thumbnails/16.jpg)
16
Obrigado!