Mini Parser Java con JavaCC
JavaCC (Java Compiler Compiler) permette di creare Parser, ma anche veri e propri compilatori di linguaggi, in Java. E’ uno strumento accessorio a Jdk che può essere scaricato da questo link.
Si parte dalla grammatica formale del nostro linguaggio, per poi scrivere un file di specifica in formato .jj che, una volta “compilato” tramite il comando javacc, genera tutti i file sorgenti java relativi al parser del linguaggio.
Per un esame universitario ho realizzato un parser di una parte del linguaggio Java. In particolare, il mio parser valida la sintassi della definizione di un singolo metodo java di tipo void che accetta solo parametri di tipo intero e al suo interno il ciclo for oltre a dichiarazioni di variabili intere. Inoltre, la specifica della tesina richiedeva che nel corso del parsing, per ogni ciclo for incontrato andava stampata a video una stringa contenente il nome della variabile di ciclo e la condizione booleana relativa. Esempi di stringhe validate dal parser:
void metodo(int a, int b, int c) { int j; int k; int i,r,t; k = 5 + 4; j = k + x + y; for (i=k+1; i<j; j--) { int res; for (int x,t,h,k; j<-54; k=k+5) int k; j = k + h + i + -1; for (x=500, y=100; ; x--) { } } }
Ovviamente questi programmi non hanno senso dal punto di vista semantico, ma il mio parser deve semplicemente verificare che la sintassi del linguaggio sia stata rispettata. Non importa se uso variabili non dichiarate o cose del genere, perchè questi non sono errori di sintassi.
Codice Sorgente: MiniJava.jj (234)
Una volta scaricato il file jj, i passi per compilare ed eseguire il parser sono i seguenti (sempre una volta installato JavaCC):
javacc miniJava.jj javac *.java java MyJavaParser < file.txt
Dentro file.txt (o qualsiasi altro file di testo) scriveremo il codice da parsare. Se questo contiene degli errori sintattici, si genereranno a video i messaggi di errore
Recent Comments