/home/iri/Works/devscol/scol-x11-v45/example/src/main.c

fonction example_list

Paramètres:
mmachine m
Renvoie:
0

Code interne de la fonction Scol 'example_list' Celle-ci attend trois arguments : une liste d'entiers, un entier et un drapeau. Selon la valeur du drapeau, chaque élément de la liste sera incrémenté ou décrémenté de la valeur du second argument. En retour, la fonction Scol donne la nouvelle liste d'entiers. Son prototype est donc : example_list : fun [[I r1] I I] [I r1]

Nous allons donc devoir extraire les éléments de la liste et en construire une nouvelle en sortie.

L'extraction d'une liste suit la même logique que pour un tuple sauf qu'on utilise une boucle 'while' puisqu'on ne connaît pas a priori le nombre d'éléments. WHILE (liste non vide) e = premier élément de liste SI e non vide instructions liste = suite de la liste

Si 'e' est lui-même une liste ou un tuple, on traite de la même façon. Par exemple, si le type de l'argument est [[u0 u1 u2] r1], on aura :

while (mlist != NIL) { element = MMfetch (m, mlist, 0)>>1; if (element != NIL) { mvalue0 = MMfetch (m, element, 0)>>1; mvalue1 = MMfetch (m, element, 1)>>1; mvalue2 = MMfetch (m, element, 2)>>1; ... } mlist = MMfetch(m, mlist, 1)>>1; }

Généré le Mon Nov 15 22:15:39 2010 pour example par  doxygen 1.6.3