2010-09-18 9 views
2

Je travaille sur un programme qui peut être utilisé directement à partir de la ligne de commande avec des options et des fichiers d'entrée, ou de manière entièrement interactive comme un shell. Pour l'exécution initiale, j'utilise Getopt de GNU pour analyser les options de la ligne de commande.techniques pour analyser l'entrée interactive (comme un shell)?

Lorsque j'utilise un fichier, j'utilise Flex et Bison. Cela simplifie grandement l'analyse puisque la grammaire est très simple, mais je ne suis pas entièrement sûr de la façon dont je devrais aborder l'aspect de la coquille. J'ai utilisé les bibliothèques readline et history de GNU avant, quand je l'ai fait, je me suis basé uniquement sur strtok et de nombreuses comparaisons avec les instructions switch imbriquées. Cela a fonctionné mais il a semblé un peu comme un bidouillage-travail aussi moi ...

Existe-t-il une meilleure manière d'aborder ce problème? Pour l'entrée de données que le shell permettrait, je pensais à le rediriger directement vers un fichier temporaire et en utilisant à nouveau Flex et Bison, mais pour divers paramètres (comme les options de ligne de commande que Getopt analyse pour moi maintenant) est il y a une meilleure façon? Je m'attendais à essayer de recycler mon code getopt, car il est flexible pour tout capturer et si ce n'est pas une option, je pourrais assumer ses données et les canaliser. Mais j'aimerais un 2ème avis.

Merci

Répondre

0

Il suffit de l'écrire en Python. Utilisez le module cmd pour écrire le programme shell et utilisez shlex pour l'entrée d'analyse, tout comme le shell.