PLNC 2010

Site pédagogique de l'unité d'enseignement INF355 (Paradigmes et Langages Non Classiques) de Télécom ParisTech.

Factor : TD 2

Aujourd’hui, nous allons nous intéresser au client IRC de Factor ainsi qu’à ses possibilités d’analyser des expressions selon une grammaire EBNF.

Client IRC

En s’inspirant de la documentation du client de chat IRC, créez un client qui :

  • se connecte sur le serveur « irc.freenode.net » et rejoins le channel « #inf355″ ;
  • récupère les messages envoyés sur le channel et puisse réagir à ces messages ;
  • salue les gens qui rejoignent le channel en envoyant « Bienvenue XXX » où XXX est le pseudonyme (nickname) du nouvel arrivant ;
  • répondre « Pong XXX » à celui qui envoie « Ping » sur le channel.

Vous éviterez d’utiliser des variables nommées (qu’elles soient locales ou dynamiquement scopées). La pile est largement suffisante pour cette utilisation.

Vérifiez que vous pouvez ajouter des fonctionalités au client connecté au serveur sans couper la connexion. Idéalement, un client ne devrait jamais se déconnecter une fois connecté. Vous pourrez notamment intercepter les exceptions liées au traitement des messages (s’il y en a) et afficher un message d’erreur sur le terminal et continuer le traitement plutôt que de laisser le client se déconnecter.

Pour dialoguer avec votre robot, vous devrez également vous connecter sur IRC. Vous pouvez utiliser un de ces clients (j’utilise WeeChat pour ma part).

Grammaire EBNF

En vous inspirant de la documentation des grammaires EBNF disponibles en Factor, créez une grammaire permettant à votre robot IRC de répondre à certaines requêtes provenant du channel IRC.
Votre robot devra notamment être en mesure de répondre aux questions suivantes :

  • « Quelle est la factorielle de NNN ? » où NNN est un nombre.
  • « Comment t’appelles-tu ? »
  • « Quel est mon pseudo ? » ou « Quel est mon nick ? »
  • « Quelle est la somme de MMM et NNN multipliée par OOO ? » où MMM, NNN et OOO sont des nombres. On reconnaître également « le produit de », « ajouté à », « à laquelle on soustrait », « auquel on soustrait », etc.
  • « Calcule 1+2*3-(7+10) » ou n’importe quelle expression mathématique parenthésée

Toutes ces fonctionalités devront être implémentées dans un vocabulaire séparé et testées avec des tests unitaires.

Comments are closed.