Chapitre 6 : Les tokens



Le logiciel mirc prévoit la possibilité de traiter des listes de mots. Ceci grâce aux fonctions relatives aux tokens. Les tokens présentent de plus une alternative intéressante à l'absence de tableaux.

Une liste est en fait une série de tokens (mots) séparés par un caractère spécial appelé séparateur de token. Le séparateur le plus connu est la virgule, mais on peut aussi utiliser le point-virgule ; les deux points : ou l'espacement simple.

La fonction permettant d'aller chercher un token dans toute une liste où les mots sont séparés par un caractère séparateur est:
$gettok(<liste>,<Numéro du token>,<Valeur ascii du séparateur>)
Par exemple, mettons que %tokens contiennent les mots suivants:
Donald Picsou Riri Fifi Loulou
Alors $gettok(%tokens,2,32) fournit: Picsou, et $gettok(%tokens,0,32) fournit 5.

Le séparateur est en effet l'espace, de code ascii 32.

Les codes ascii les plus courants sont:

  • 44 pour la virgule
  • 46 pour le point
  • 59 pour le point virgule
  • 58 pour les deux points
  • 32 pour l'espace
  • 33 pour le point d'exclamation


  • A noter que $gettok(<tokens>,0,32) retourne le nombre de mots qu'il y a dans la liste.

    Il existe tout un jeu de fonctions permettant de manipuler les tokens. Parmi eux:

  • $findtok(texte,token,N,C) : Cherche la position du N ième mot égale à token dans texte. Ex:

    $findtok(a.b.c.d,c,1,46) retourne 3
    $findtok(a.b.c.d,e,1,46) retourne la chaîne vide ($null)

    $deltok(texte,N,C) : supprime le N ième token dans texte. Ex:

    $deltok(a.b.c.d,3,46) retourne a.b.d

    Ces trois fonction $gettok, $deltok et $findtok sont celles que j'utilise le plus couramment. Pour avoir des détails sur les autres, faire /help tokens dans mirc.

    On peut voir tout de suite l'intérêt d'utiliser les tokens pour gérer des tableaux de valeurs. En effet, je le rappelle, il n'existe pas sous mirc de moyen simple de créer des tableaux référençables par une expression du genre table[i].

    Le moyen consiste à créer une liste de valeurs (de mots), séparées par un espace ou par une virgule. Par exemple:
    %Nicks = Donald Picsou Riri Fifi Loulou Mickey Dingo Minnie Gontran Popop Pluto Flairsou Rapetou Joe Jack  William  LuckyLuke Rantanpla GeoTrouve Filament
    
    Pour accéder au ième nick, on pourra faire:
    %LeNick = $gettok(%Nicks,%i,32)
    
    Pour obtenir la dimension du tableau, ce sera:
    %dimension = $gettok(%Nicks,0,32)
    
    D'autres moyens existent pour simuler des tableaux, comme par exemple créer une variable terminée par un nombre, comme présenté dans cet alias:
    essai {
    %i = 0
    :boucle
    set %Lettre $+ %i $rand(A,Z)
    inc %i
    if ( %i < 20 ) goto boucle
    %N = $?="Numéro de la lettre que voulez vous voir"
    %temp = % $+ Lettre $+ %N | %temp = [ [ %temp ] ]  <---- /!\On a besoin de deux double crochets d'évaluation
    echo 1 -a La %N eme lettre aléatoire est %temp
    unset %Lettre*
    }
    
    La première partie de l'alias fabrique 20 variables appelées %Lettre1, %Lettre2, %Lettre3 ... %Lettre20 et leur assigne une lettre de l'alphabet aléatoire. La seconde partie de l'alias vous permet d'afficher la n ième lettre du tableau de lettres ainsi construit.

    La dernière instruction unset efface le tableau lettre, c'est a dire qu'elle commande à mirc d'oublier toutes les variables commençant par %Lettre.

    Précédent: Les sockets serveur   Suivant: Les fichiers   Début de page   Sommaire