2008-11-21 9 views
0

J'utilise ANTLRWorks pour créer des grammaires ANTLR. J'ai une grammaire valide et les fichiers source de l'analyseur et du lexer sont également générés. J'ai également essayé de déboguer le code généré et la sortie est comme prévu dans la sortie du débogueur. Mais quand j'essaie d'appeler la classe __Test__ générée par le débogueur, rien ne se passe dans la console. J'ai correctement mis en place le classpath car je peux compiler avec succès le __Test__.java avec le même classpath.Compilation des fichiers de classe générés par ANTLRWorks

Quel serait le problème? Existe-t-il un tutoriel clair pour écrire et compiler un exemple d'analyseur avec antlr et antlrworks?

Répondre

1

Qu'attendez-vous de la console?

Jetez un oeil à this project. L'analyseur généré ANTLRWorks est here. Comme vous pouvez le voir à partir des dépendances dans le POM, vous devez vous assurer que antlr est dans le classpath. Ensuite, vous utilisez l'analyseur comme indiqué dans this class.

final DriftLexer lexer = new DriftLexer(new ANTLRInputStream(inputStream)); 
final CommonTokenStream tokens = new CommonTokenStream(lexer);   
final DriftParser parser = new DriftParser(tokens); 
parser.file(); 

Cela devrait suffire à faire fonctionner votre matériel.

1

ANTLRWorks génère des classes de test qui créent une connexion socket vers ANTLRWorks, elles ne sont donc pas utilisables depuis la console. Vous pouvez modifier la classe de test générée pour ne pas utiliser l'option de port de débogage (connexion de socket).

La ligne à modifier est:

FormalSpecParser g = new FormalSpecParser(tokens, 49100, null); 

Vous pouvez modifier à:

FormalSpecParser g = new FormalSpecParser(tokens, null); 

qui utilise un objet écouteur de débogage au lieu d'un port, et le « null » signifie que vous êtes ne lui donnant pas d'écouteur de débogage, la sortie de débogage est donc ignorée. Vous pouvez écrire votre propre écouteur de débogage pour imprimer des messages sur la console. Pour plus d'informations, voir la documentation ANTLR:

Questions connexes