ANTLR com Java
Este guia descreve como criar, analisar e visualizar uma árvore de análise para uma gramática simples de "AF1" utilizando ANTLR para gerar os analisadores e Java para executar a análise e a visualização.
Este guia passo a passo descreve como criar uma simples gramática usando ANTLR, gerar o analisador em Java, e visualizar a árvore de análise sintática.
- Java (para executar o ANTLR).
- ANTLR4 (baixe
antlr-4.x-complete.jar
do site oficial do ANTLR).
Codigo
Definimos a gramática no arquivo Expr.g4
:
java
: Este é o comando para executar aplicações Java.cp
: A opçãocp
ouclasspath
especifica a lista de diretórios, JAR archives, e ZIP archives para procurar classes e recursos./Users/ivobaptista/www/COMPILAR/antlr4/lib/antlr-4.7.2-complete.jar
: Este é o caminho para o arquivo JAR do ANTLR. Este arquivo contém todas as classes necessárias para executar a ferramenta ANTLR.org.antlr.v4.Tool
: Este é o nome qualificado da classe principal do ANTLR que executa a ferramenta.Expr.g4
: Este é o nome do arquivo de gramática ANTLR. ANTLR gera código Java a partir desta gramática que pode analisar e construir uma árvore de análise para o linguagem definida pela gramática.
java -cp /Users/ivobaptista/www/COMPILAR/AF1/lib/antlr-4.7.2-complete.jar org.antlr.v4.Tool Expr.g4
java -cp "/Users/ivobaptista/Documents/GitHub/ivobass.github.io/AF1-Java/lib/antlr-4.7.2-complete.jar" org.antlr.v4.Tool -visitor -o . Expr.g4
Certifique-se de substituir /caminho/para/antlr-4.x-complete.jar pelo caminho real onde o arquivo antlr-4.x-complete.jar está localizado no seu sistema.
javac
: Este é o compilador Java, usado para compilar arquivos.java
em bytecode.class
.cp
: Novamente, especifica o caminho de busca para classes e recursos. Neste caso, inclui tanto o JAR do ANTLR quanto o diretório atual (representado por.
) para que o compilador possa encontrar tanto as classes do ANTLR quanto os arquivos.java
gerados anteriormente.Expr*.java
: Este padrão seleciona todos os arquivos Java no diretório atual que começam com "Expr". Estes são os arquivos gerados pelo comando anterior.
javac -cp /Users/ivobaptista/www/COMPILAR/AF1/lib/antlr-4.7.2-complete.jar:. Expr*.java
javac -cp ".:/Users/ivobaptista/Documents/GitHub/ivobass.github.io/AF1-Java/lib/antlr-4.7.2-complete.jar" *.java
java
: Executa aplicações Java.cp
: Especifica o caminho para as classes e recursos, semelhante aos comandos anteriores.org.antlr.v4.gui.TestRig
: Esta é a classe do ANTLR que fornece uma interface gráfica para testar gramáticas. É uma ferramenta útil para visualizar árvores de análise geradas a partir de entrada específica.Expr
: Este é o nome da gramática a ser testada. Deve corresponder ao nome dado no arquivo.g4
.expr
: Este é o nome da regra dentro da gramáticaExpr.g4
que você deseja testar. A ferramentaTestRig
irá analisar a entrada conforme esta regra.-gui
indica aoTestRig
para abrir uma interface gráfica mostrando a árvore de análise.
java -cp "/Users/ivobaptista/www/COMPILAR/AF1/lib/antlr-4.7.2-complete.jar:." org.antlr.v4.gui.TestRig Expr expr -gui
Deve aparecer a visualização da árvore de análise sintática
Atividade Formativa 1
-
Escreva um programa que dada uma expressão com número inteiros sem sinal e apenas com os operadores '+' e '-' reescreva essa expressão na notação pós-fixa.
-
Acrescente ao programa anterior os operadores '*' e ´/', com a habitual precedência, a possibilidade de os números terem sinal '+' ou '-' e os parênteses.
-
Implemente os programas anteriores usando a ferramenta ANTLR.
Compilar o ficheiro MyInfixToPostfixConverter.java que lee o ficheiro input.txt
javac MyInfixToPostfixConverter.java
java MyInfixToPostfixConverter.java
Resultado: Expressão Infixa: 2 + 3 Expressão Pós-fixa: 23+ Expressão Infixa: 8 - 4 + 1 Expressão Pós-fixa: 84-1+ Expressão Infixa: 7 * 2 + 5 Expressão Pós-fixa: 725+ Expressão Infixa: (1 + 2) * 4 Expressão Pós-fixa: 124+ Expressão Infixa: 10 / (5 - 3) Expressão Pós-fixa: 105/3-
O projeto foi feito em Java com ANTLR
The project was done with Java with ANTLR
- ANTLR
- VS code