2016-02-04 1 views
1

Je commence à utiliser JFlex et je veux essayer d'écrire un lexer en premier, puis passer à l'analyseur. Cependant, il semble qu'il n'y ait aucun moyen de tester votre lexeur JFlex sans écrire un analyseur dans CUP. Tout ce que je veux faire est d'écrire un lexer, lui donner un fichier d'entrée et ensuite sortir les lexèmes pour vérifier qu'il a tout lu correctement. Plus tard, je voudrais sortir les jetons, mais lexèmes serait un bon début.Est-il possible de tester un lexer fait en JFlex sans écrire un analyseur?

+0

Avez-vous regardé la directive '% debug'? – rici

Répondre

0

Oui Il est possible d'écrire un scanner autonome. Vous pouvez lire les détails sur la page this. Si vous spécifiez la directive %standalone, la méthode main sera ajoutée à la classe générée. Vous pouvez mentionner les fichiers d'entrée en tant qu'arguments de ligne de commande pour exécuter ce programme. jflex tar est livré avec un répertoire d'exemples, vous pouvez trouver un exemple autonome dans le répertoire examples/standalone-maven/src/main/jflex. Pour référence rapide, je poste un exemple de code ici

/** 
    This is a small example of a standalone text substitution scanner 
    It reads a name after the keyword name and substitutes all occurences 
    of "hello" with "hello <name>!". There is a sample input file 
    "sample.inp" provided in this directory 
*/ 
package de.jflex.example.standalone; 

%% 

%public 
%class Subst 
%standalone 

%unicode 

%{ 
    String name; 
%} 

%% 

"name " [a-zA-Z]+ { name = yytext().substring(5); } 
[Hh] "ello"  { System.out.print(yytext()+" "+name+"!"); }