J'ai besoin pour analyser l'interpréteur de commandes telles que:shell de commande de chemin d'analyseur antlr3
cp /home/test /home/test2
Mon problème est dans l'analyse syntaxique de chemin correct.
Je défini une règle (je ne peux pas utiliser un jeton comme chemin mais je dois définir dans l'analyseur):
path : ('/' ID)+;
avec
ID: (A.. Z | a.. z) +;
WS: (' ') {$channel = HIDDEN;};
Je dois garder le WS jeton caché, mais cela me donne le problème que les 2 chemins dans cet exemple sont considérés comme un seul chemin.
Comment puis-je résoudre ce problème?
Merci
Je pense que vous souhaitez étendre la règle de commande maintenant, quelque chose comme: commande: 'cp' premier = chemin d'accès second = chemin '\ n' {...} | 'del' chemin {... vous N'avez qu'un seul chemin pour cette règle à utiliser dans votre action} | 'compare' first = chemin second = chemin third = chemin {placez ici votre code pour comparer le premier avec le second et le lieu dans le troisième}; Bien sûr, cela rendrait également inutile la règle de lexeur CMD (non requise). Mais il pourrait y avoir d'autres façons de faire fonctionner ces travaux. – WayneH
ok, j'apprécie la réponse rapide, mais dans mon cas cela ne fonctionne pas, puisque d'autres règles m'imposent de ne pas définir le chemin comme un jeton (FICHIER). À partir de mon code (avec le chemin NON défini comme un seul jeton), il est possible d'utiliser l'espace (le jeton caché) comme séparateur? – Nio