Antlr Java Java.g4

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

Introducción

La creación de un procesador de lenguaje es una tarea esencial en la computación. Ya sea para


interpretar comandos en un terminal, analizar y comprender código escrito en un lenguaje de
programación, o para entender y responder a consultas escritas en lenguaje natural, la capacidad de
procesar y entender lenguajes es fundamental por lo cual se desarrolla una gramática para java que
acepte cierto tipos de subconjunto de producciones.
Justificación

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;

program: forloop EOF;

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
;

type: 'int' | 'float' | 'bool' | 'String';

expr
: INT // for simplicity, we will consider expressions to be integers
| ID // or variable identifiers
;

variableDeclaration: type ID ('=' expr)? ';';

relationalOp
: '<'
| '>'
| '<='
| '>='
| '=='
| '!='
;

incrementOp
: '++'
| '--'
;

statement
: ID '=' expr ';'
| 'System.out.println' '(' expr ')' ';'
;

expresionAritmetica
: expr '*' expr # MulDiv
| expr ('+'|'-') expr # AddSub
| '(' expr ')' # Parens
| ID # id
| INT # int
;

ID : [a-zA-Z]+ ; // match lower-case identifiers


INT : [0-9]+ ; // match integers
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines

Análisis y Desarrollo de la aplicación

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

Nos permitirá ver los diagramas de sintaxis y poder probar la gramatica.

Ejecución de subconjunto de producciones:


a) Declaración de variables

Á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:

d) Expresiones aritméticas y lógicas

a * (b + c - 1)

Árbol sintáctico:
Diagramas de sintaxis:

e) Estructuras Cíclicas o Repetitivas (for, while, do, etc.)

For

for (int i = 0; i < 10; i++) {


System.out.println(i);
}

Árbol sintáctico:
Diagramas de sintaxis:

While

while (x < 10) {


System.out.println(x);
x++;
}

Á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:

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy