Antlr Java Java.g4
Antlr Java Java.g4
Antlr Java Java.g4
ANTRL es una herramienta potente para generar analizadores léxicos y sintácticos por lo cual se ha
utilizado para ver los resultados de nuestra gramática creada y aprender el uso de esta herramienta.
Objetivos
• Aprender la herramienta de ANTLR.
• Probar la herramienta ANTLR.
• Ver en ejemplo real el uso de un analizador léxico y sintáctico.
• Aplicar los conocimientos aplicados en clase.
Gramatica
grammar Java;
forloop
: 'for' '(' initialization ';' condition ';' increment ')' '{' statement* '}'
;
//sss
whileLoop: 'while' '(' expr ')' '{' (statement)* '}';
doWhileLoop: 'do' '{' (statement)* '}' 'while' '(' expr ')' ';';
initialization
: type ID '=' expr
;
condition
: expr relationalOp expr
;
increment
: ID incrementOp
;
expr
: INT // for simplicity, we will consider expressions to be integers
| ID // or variable identifiers
;
relationalOp
: '<'
| '>'
| '<='
| '>='
| '=='
| '!='
;
incrementOp
: '++'
| '--'
;
statement
: ID '=' expr ';'
| 'System.out.println' '(' expr ')' ';'
;
expresionAritmetica
: expr '*' expr # MulDiv
| expr ('+'|'-') expr # AddSub
| '(' expr ')' # Parens
| ID # id
| INT # int
;
Nuestra gramática creada desde cero de java ha sido nombrada Java con el nombre de archivo
Java.g4
La gramática acepta
a) Declaración de variables
b) Asignaciones
c) Funciones básicas de entrada/salida (print, read, println, …)
d) Expresiones aritméticas y lógicas, y e)
Estructuras Cíclicas o Repetitivas (for, while, do, etc.)
Manual
1.Abrir la aplicación de antlrworks2
Archivo:
Gramática:
Clases de java generadas por ANTRL
Archivo de entrada
Este documento
2. Debemos abrir nuestra gramática llamada Java.g4 que se encuentra en la ubicación donde
hemos descomprimido que se encuentra adjunta en el envio de la tarea.
3. Al abrir la gramática
Árbol sintáctico:
b) Asignaciones
int i = 0;
Árbol sintáctico:
Diagramas de sintaxis:
Diagramas de sintaxis:
c) Funciones básicas de entrada/salida (print, read, println, …)
System.out.println(i);
Árbol sintáctico:
Diagramas de sintaxis:
a * (b + c - 1)
Árbol sintáctico:
Diagramas de sintaxis:
For
Árbol sintáctico:
Diagramas de sintaxis:
While
Árbol sintáctico:
Diagramas de sintaxis:
Do
int count = 0;
do {
System.out.println("Count is: " + count);
count++;
} while (count < 5);
Árbol sintáctico:
Diagramas de sintaxis: