7
votes

Test d'antlr grammaire

Donc, j'ai fait une grammaire dans Eclipse avec AntLR V3.4 et j'ai fait un qui fonctionne qui fonctionne et je veux m'assurer que je le modifierai toujours. Je peux entrer dans l'interprète à chaque fois, mais cela ressemble à une énorme perte de temps.

Questions: J'ai lu sur Gunit mais le lien qu'il donne à Télécharger Gunit: ( http://antlr.org/hudson/job/gunit/org.antlr $ gunit / lastsuccessfulbuild /) ne fonctionne pas. Comment puis-je obtenir Gunit. Quelle est la meilleure façon de tester les grammaires? Est-ce réellement gunit ou devrais-je juste faire des tests Java comme des tests Junit?


2 commentaires

Gunit a été inclus dans les outils anti-ANTLR pour quelques versions maintenant, non?


Comment accéder à Gunit une fois que j'ai téléchargé l'antlr-complet-3.4.jar?


4 Réponses :


1
votes

Vous pouvez télécharger Gunit Il mais je pense qu'il y a Pas de dernière version ...

Essayez Jarvana ... la dernière version Il y a 3.4: < Un href = "http://repo1.maven.org/maven2/org/antlr/gunit/3.4/gunit-3.4.jar" rel = "nofollow"> http://repo1.maven.org/maven2/org/ Antlr / Gunit / 3.4 / Gunit-3.4.jar

@Dave Newton a raison. À partir de AntLR V3.1, Gunit est inclus dans le pot d'outils d'anti-anti-anti-ANTLR, tel que indiqué .


Je ne savais pas pour Gunit jusqu'à maintenant. Il a fière allure pour les tests de grammaire, mais je pense que les tests Junit feront leur travail pour ...


0 commentaires

0
votes

C'est la première fois que j'ai entendu parler de Guinit et de la lire dessus. (Je n'utilise pas beaucoup d'antlr.) Cela semble intéressant, mais à moitié inutile.

Mon approche de validation des grammaires consiste à valider la totalité de l'analyseur entier avec des tests d'unités "normaux". La chose est que vous devriez avoir des tests unitaires en place et les tests qui vérifient la régression de la grammaire que vous venez d'y ajouter. La chose est dans mon expérience que la plupart des erreurs viennent en analyse sémantique et à la réduction et non à la grammaire.


5 commentaires

Pourriez-vous m'en dire plus sur cela ou un lieu où vous êtes allé trouver vos informations?


L'information sur Gunit était surtout un rapide Google sur le terme. L'autre est une expérience professionnelle de 10 ans d'analyse de la langue de construction et de compilateurs. La chose est que la grammaire vivra dans une application; Sauf si vous ne faites que des exemples académiques. L'application a probablement déjà des tests unitaires, pourquoi ne pas simplement l'utiliser. Surtout depuis quelle utilisation est que la grammaire est valide mais le code restant fait absurdité.


La grande raison est dû au fait que c'est une grosse inconvérence de déterminer si sa course à pied (tout en construisant une grammaire à partir de zéro) et vous devez entrer dans la grammaire Whowown pour vous assurer que tout ce que vous avez fait fonctionne. Certains code de test automatique vous diraient automatiquement ce qui a cassé chaque compilé. Nous n'avons pas de demande, car nous ne la conçons que nous-mêmes, nous devons donc nous assurer de son travail, il n'y a pas de projet global qui nous dira si son fonctionnement ou non. Je ne sais pas si cela explique beaucoup, faites-le moi savoir :)


Travaillez-vous sur un projet académique? C'est que moi ou cela sonne-t-il inutile de développer une grammatie sans une application minimale? Même un validateur de code est une forme d'application. Vous construisez un test d'unité contenant un petit fragment de code pour analyser et vérifier si le résultat est comme prévu; rincer et répéter.


L'application avec le ratio de la grammaire au plus grand grammaire, que j'ai jamais écrit, était le convertisseur EDDL au XML. (N'ayez pas Aks, il décharge l'Ast que XML.) Mais cette chose se nourrit de l'outil de certification PNO et du tokeniser PNO. Mais même là Eddl en XML out. Vous pouvez exécuter simplement l'analyseur de toute la chaîne de conversion.



5
votes

J'ai récemment terminé deux missions AntLR3 (je travaille sur ma maîtrise en informatique) en utilisant Eclipse. J'ai trouvé aucun document unique qui avait un processus d'installation, de configuration, de rédaction et de débogage d'une grammaire dans Eclipse. Ainsi, après avoir traversé divers problèmes, j'ai trouvé que la chose la plus facile à faire était de rester en éclipse pour les tests.

Pour utiliser le processus, je suis arrivé à utiliser (décrit ci-dessous), vous devez d'abord avoir l'installation d'AntLR IDE V2.1.1. Ajoutez-le de l'intérieur Eclipse Indigo: http://antlrv3ide.sourceforge.net/update . Ce site dispose également d'un document utile sur l'utilisation de l'IDE AntlR. Une fois installé, l'IDE doit être configuré. Les tutoriels vidéo sont un peu obsolètes mais serviables. Voir une marche détaillée sur Configuration de l'IDE AntlR à Eclipse . L'élément de configuration principale est le dossier de sortie Java. Faites-le dans Eclipse en allant à Windows, Préférences, AntlR, Générateur de code, Vérifiez le dossier Relative de projet et dans la zone Nom de nom de dossier de sortie Tapez un nom de dossier (le mien s'appelle «Antlr-Java», d'autres utilisent «généré»).

Processus de test / débogage pour ANTLR dans Eclipse Indigo avec l'IDE AntlR

  1. Une fois qu'un nouveau projet est créé, cliquez dessus avec le bouton droit de la souris, sélectionnez Configurer, convertir en Projet d'antlr ...
  2. Créez la grammaire dans un fichier .g et enregistrez-le. Remarque: le nom de fichier doit correspondre au nom de la grammaire.
  3. S'il y a des erreurs importantes, déboguer la grammaire. Eclipse montre l'erreur (s) d'antlr) et quelles lignes sont affectées. Au début, ces erreurs semblent difficiles à comprendre mais Ils peuvent être utilisés en utilisant diverses ressources: - la référence andlr définitive par Terence Parr le gars qui a écrit autlr - Le manuel de référence AntLR - Google l'erreur; Plusieurs fois, vous allez vous retrouver ici à Stackoverflow; notamment, Bart Kiers est à la fois informé et utile (Bart: THX pour L'aide que vous ne saviez pas que vous m'avez donné)
  4. Lors de la première sauvegarde après que les erreurs d'anti-anti-grave sont résolues, le dossier de sortie Java vous Configuré dans Eclipse sera créé et un fichier Java dans ce dossier sera également créé.
  5. Cliquez avec le bouton droit de la souris sur le dossier de sortie Java, sélectionnez Créer un chemin, utilisez comme dossier source. Cette Dites à Eclipse où chercher la source Java du projet.
  6. Il y a probablement des erreurs dans le nouveau fichier Java. Sélectionnez-le, puis recherchez en regardant pour les erreurs Java. Revenez à votre fichier de grammaire ou de java, corrigez les erreurs et sauvegardez-la. La grammaire jusqu'à ce que la grammaire et les fichiers Java soient sans erreur, puis exécutez-la.
  7. à partir de ce point, c'est le cycle habituel Modify-Run-Débug.
  8. Le seul autre changement d'éclipse dont j'avais besoin était de créer quelques configurations d'exécution pour tester Paramètres de ligne de commande.

1 commentaires

Réponse modifiée avec lien intégré.



5
votes

La question est ancienne, mais je quitte une référence pour la complétude:

Pour moi, le Gunit était inutile. J'ai donc réussi à trouver comment testez uniquement le Lexer, puis seulement l'analyseur.

J'ai répondu ici ici: https://stackoverflow.com/a/53884851/976948

Fondamentalement, il existe des liens pour 2 articles sur la façon de la tester:


1 commentaires

Merci pour l'exemple Lexer! Je l'ai transformé en Python ici ici gist.github.com/nmz787/cf98AA465A4D071A937CF74788687A54