SlideShare une entreprise Scribd logo
1  sur  16
Tradutores

 ANTLR & ANTLRWorks



Guilherme Wunsch, Isaías Rosa e Juliano Flores
    Universidade do Vale do Rio dos Sinos
Agenda
•   Informações
•   Características
•   Funcionamento
•   ANTLRWorks
    – Diagramas Sintáticos
    – Parse Tree
    – AST
• Exemplo de Debug
• Referências

                                2
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
                                                              3
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, Objec
  tive-C, Perl, Python, e Ruby
• Alta Legibilidade
• Tipo: LL(*)

                                                        4
Funcionamento
Requisitos:
  1. Gramática: Gramatica.g
  2. Executor: Teste.java
  3. Entrada (opcional): entrada.txt




                                       5
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   6
ANTLRWorks
•   IDE
•   Multiplataforma
•   Versão 1.4.3
•   Jean Bovet & Terence Parr
•   Conteúdo:
    –   Editor sensível ao contexto,
    –   Interpretador,
    –   Compilador,
    –   e Depurador ANTLR.

                                       7
ANTLRWorks




             8
Demonstração Debugger




                        9
Arvore Sintatica




                   10
Arvore Sintática Abstrata (AST)




                                  11
AST parcial




              12
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:Pastaantlr.jar” *.java
4. Executar código incluindo antlr.jar no
   CLASSPATH;
  – java –classpath “.;C:Pastaantlr.jar” Teste
    entrada.txt

                                                     13
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%93
    Naur_Form
•   http://pt.wikipedia.org/wiki/An%C3%A1lise_sint%C3%A1tic
    a_(computa%C3%A7%C3%A3o)
•   http://www.youtube.com/watch?v=9Zcfz9o5vNk
•   http://www2.icmc.usp.br/~gracan/teoria/SubItem51Teoria.
    html
•   http://supportweb.cs.bham.ac.uk/docs/tutorials/docsyste
    m/build/tutorials/antlr/antlr.html

                                                         14
Dúvidas?




           15
Obrigado!




            16

Contenu connexe

Similaire à ANTLR & ANTLRWorks tradutores

Swift na linha de comando
Swift na linha de comandoSwift na linha de comando
Swift na linha de comandoTales Andrade
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Otávio Santana
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Análise estática de código Python
Análise estática de código PythonAnálise estática de código Python
Análise estática de código PythonGuilherme Vierno
 
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoRuby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoWeverton Timoteo
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_ImplementaçãoWagner Zaparoli
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05t34m0nana
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptxbrayankedroksi
 

Similaire à ANTLR & ANTLRWorks tradutores (20)

Swift na linha de comando
Swift na linha de comandoSwift na linha de comando
Swift na linha de comando
 
Java 8 e futuro
Java 8 e futuroJava 8 e futuro
Java 8 e futuro
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Aula 1 pc - slides
Aula 1   pc - slidesAula 1   pc - slides
Aula 1 pc - slides
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Automatizando Nmap com NSE
Automatizando Nmap com NSEAutomatizando Nmap com NSE
Automatizando Nmap com NSE
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
JavaCC
JavaCCJavaCC
JavaCC
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Análise estática de código Python
Análise estática de código PythonAnálise estática de código Python
Análise estática de código Python
 
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso códigoRuby 3 e Análise estática - O que esperar e o que significa para o nosso código
Ruby 3 e Análise estática - O que esperar e o que significa para o nosso código
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptx
 

ANTLR & ANTLRWorks tradutores

  • 1. 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 2
  • 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 3
  • 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, Objec tive-C, Perl, Python, e Ruby • Alta Legibilidade • Tipo: LL(*) 4
  • 5. Funcionamento Requisitos: 1. Gramática: Gramatica.g 2. Executor: Teste.java 3. Entrada (opcional): entrada.txt 5
  • 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 6
  • 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. 7
  • 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:Pastaantlr.jar” *.java 4. Executar código incluindo antlr.jar no CLASSPATH; – java –classpath “.;C:Pastaantlr.jar” Teste entrada.txt 13
  • 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%93 Naur_Form • http://pt.wikipedia.org/wiki/An%C3%A1lise_sint%C3%A1tic a_(computa%C3%A7%C3%A3o) • http://www.youtube.com/watch?v=9Zcfz9o5vNk • http://www2.icmc.usp.br/~gracan/teoria/SubItem51Teoria. html • http://supportweb.cs.bham.ac.uk/docs/tutorials/docsyste m/build/tutorials/antlr/antlr.html 14
  • 15. Dúvidas? 15
  • 16. Obrigado! 16