Micro Systèmes n°103 décembre 1989
Micro Systèmes n°103 décembre 1989
  • Prix facial : 30 F

  • Parution : n°103 de décembre 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 222

  • Taille du fichier PDF : 182 Mo

  • Dans ce numéro : la recherche française en informatique.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 198 - 199  |  Aller à la page   OK
Pages suivantes >
198 199
TECHNIQUE else ERRLIA ; else if (sYmBoLP(i_var)) ((ptsymbol)1_var)->cval =1_val ; else return ; liens (CAR(1 var),CAR(l_val)) ; liens (CDR(1=var),CDR(1_val)) ; Les fonctions de manipulation d'atomes Ces fonctions permettent d'affecter les différents champs de la structure symbole ou d'effectuer des opérations arithmétiques. Voici les exemples les plus courants de ces fonctions : objet f_de(obj) objet obj ; if ( ! VARIABLEP (CAR I obj)) ) ERRLIA ; ((ptsymbol) (CAR (obj)) ->f type=EXPR ; ((ptsymbol) (CAR (obj I) -> f val. expr..CDR (obj) ; return (CAR (obj)) ; objet f_set(sy,val) objet sy ; objet val ; if(IVARIABLEP(sy)) ERRLIA ; return(((ptsymbol)sy)->cval=val) ; objet f_plus(list) objet list ; entier resultat ; objet memo ; memo = f_eval(CAR(list)) ; if (IENTIERP(memo)) ERRLIA ; resultat = TOINT(memo) ; list = CDR(list) ; do I memo = f_eval(CAR(list)) ; if (IENTIERP(memo)) ERRLIA ; resultat += TOINT(memo) ; list = CDR(list) ; I while (INULL(list)) ; return(FROM/NT(resultat)) ; La macro VARIABLEP est vraie si l'objet est un symbole. Les fonctions d'Entrée/Sortie Ce sont ces fonctions qui vont en fait jouer le rôle des analyseurs lexicaux et syntaxiques. Elles vont convertir la représentation externe de liste en un format interne utilisant les strutures de données décrites précédemment. La visibilité interne va être la fonction "f_readQ" qui correspond à la fonction LISP "READ". La construction d'un analyseur syntaxique pour LISP se fait très facilement à partir de la BNF. Les types des caractères d'entrée sont donnés par un tableau "alpha". Il y a neuf catégories : INTERDIT, NOR- MAL, PAR_O ("("), PAR(")"), POINT ("."), SPECIAL ("+", "-"), SEPARATEUR, CHIFFRE. La macro ENLEVE_BLANC sert à supprimer les séparateurs. La fonction de lecture d'un caractère s'appelle "lit_char()" et retourne son résultat dans la variable globale "csuiv" objet lit_obj() ENLEVE_BLANC ; switcha lpha[csuiv]) case PAR_O lit_char() ; return(lit_list()) ; case NORMAL case CHIFFRE : case SPECIAL : return(lit_atom()) ; default ERRSAI ; objet lit_list() objet_tempo ; ENLEVE_BLANC ; switch(alpha:csuiv:) case PAR_O lit_char() ; tempo = lit_list() ; break ; case PAR_F lit_char() ; return(NILI ; case NORMAL case SPECIAL : case CHIFFRE tempo = lit_atom() ; break ; default ERRSAI ; ENLEVE_BLANC ; if (alpha[csuivj==POINT) lit_char() ; tempo = f_cons(tempo,lit_atom()) ; if (! NULL(lit list())) ERRSAI ; return (tempo) ; return (f_cons(tempo,lit_list())) ; La fonction "lit_atom()" se construit de façon similaire. La gestion de la mémoire Les fonctions de gestion de la mémoire jouent un rôle particulier dans un interpréteur LISP du fait de la grande consommation mémoire de celui-ci. La ressource mémoire critique dans un interpréteur LISP est celle des doublets. Les doublets représentent l'élément le phis utilisé du langage et, s'il existe une fonction d'allocation (CONS), il n'existe pas de fonction de restitution. La restitution des doublets à la liste des doublets disponibles ne peut se faire qu'en considérant l'ensemble des doublets utilisés dans l'interpréteur et en rendant les autres à cette liste. Pour déterminer les doublets utilisés, il faut parcourir toutes les listes encore atteignables dans l'interpréteur et garder une marque pour chaque doublet, puis refaire une passe pour mettre tous les doublets non marqués dans la table des doublets vides. La gestion des symboles est beaucoup plus simple. Il suffit d'utiliser une table de taille fixe dont les éléments sont atteints par hash-code. Les autres fonctions Ce sont des fonctions initialement écrites en LISP et recodées en C pour des raisons de performance. On voit 198 - MICRO-SYSTEMES Décembre 1989
PROGRAMMATION qu'étant donné la similitude entre la structure de l'interpréteur et celle du langage LISP, le recodage peut s'avérer très simple. (DE FACT (N) (IF (= N 1) 1 (. N (FACT (- N 1))))) peut se coder : objet f_fact(n) objet n ; entier N ; if (! ENTIERP(n)) return(NIL) ; N = TOINT(n) ; return FROMINT((N == 1) : (N TOINT(f_fact(N-1)))) ; ou encore, en optimisant : objet f_fact(n) objet n ; entier N=1 ; for (; n==1 ; n) N *= n ; Conclusion Voilà donc décrit un interpréteur LISP. On retrouve les grands éléments de la théorie des langages : analyseur syntaxique, machine virtuelle. Mais la spécificité du langage que l'on interprète a modifié la structure de l'interpréteur. Pour l'écriture d'un interpréteur d'un autre langage, tel Prolog ou Basic, il faudrait probablement trouver une tout autre structure. L'avantage de posséder le source de son interpréteur apparaît tout à fait évident dans le cas de LISP : on peut très facilement l'enrichir de façon efficace en ajoutant de nouvelles fonctions. On comprend alors les difficultés de normalisation et de stabilisation des langages interprétés. Lors de toute la description de l'interpréteur LISP, nulle part n'est apparue la notion de machine cible, ce qui est bien la preuve de la portabilité de tels interpréteurs. Nous détaillerons le mois prochain un exemple d'interpréteur, le Shell d'Unix, pour lequel c'est l'adhérence à la machine qui est une qualité. Olivier Théry Décembre 1989 MICRO-SYSTEMES — 199



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 103 décembre 1989 Page 1Micro Systèmes numéro 103 décembre 1989 Page 2-3Micro Systèmes numéro 103 décembre 1989 Page 4-5Micro Systèmes numéro 103 décembre 1989 Page 6-7Micro Systèmes numéro 103 décembre 1989 Page 8-9Micro Systèmes numéro 103 décembre 1989 Page 10-11Micro Systèmes numéro 103 décembre 1989 Page 12-13Micro Systèmes numéro 103 décembre 1989 Page 14-15Micro Systèmes numéro 103 décembre 1989 Page 16-17Micro Systèmes numéro 103 décembre 1989 Page 18-19Micro Systèmes numéro 103 décembre 1989 Page 20-21Micro Systèmes numéro 103 décembre 1989 Page 22-23Micro Systèmes numéro 103 décembre 1989 Page 24-25Micro Systèmes numéro 103 décembre 1989 Page 26-27Micro Systèmes numéro 103 décembre 1989 Page 28-29Micro Systèmes numéro 103 décembre 1989 Page 30-31Micro Systèmes numéro 103 décembre 1989 Page 32-33Micro Systèmes numéro 103 décembre 1989 Page 34-35Micro Systèmes numéro 103 décembre 1989 Page 36-37Micro Systèmes numéro 103 décembre 1989 Page 38-39Micro Systèmes numéro 103 décembre 1989 Page 40-41Micro Systèmes numéro 103 décembre 1989 Page 42-43Micro Systèmes numéro 103 décembre 1989 Page 44-45Micro Systèmes numéro 103 décembre 1989 Page 46-47Micro Systèmes numéro 103 décembre 1989 Page 48-49Micro Systèmes numéro 103 décembre 1989 Page 50-51Micro Systèmes numéro 103 décembre 1989 Page 52-53Micro Systèmes numéro 103 décembre 1989 Page 54-55Micro Systèmes numéro 103 décembre 1989 Page 56-57Micro Systèmes numéro 103 décembre 1989 Page 58-59Micro Systèmes numéro 103 décembre 1989 Page 60-61Micro Systèmes numéro 103 décembre 1989 Page 62-63Micro Systèmes numéro 103 décembre 1989 Page 64-65Micro Systèmes numéro 103 décembre 1989 Page 66-67Micro Systèmes numéro 103 décembre 1989 Page 68-69Micro Systèmes numéro 103 décembre 1989 Page 70-71Micro Systèmes numéro 103 décembre 1989 Page 72-73Micro Systèmes numéro 103 décembre 1989 Page 74-75Micro Systèmes numéro 103 décembre 1989 Page 76-77Micro Systèmes numéro 103 décembre 1989 Page 78-79Micro Systèmes numéro 103 décembre 1989 Page 80-81Micro Systèmes numéro 103 décembre 1989 Page 82-83Micro Systèmes numéro 103 décembre 1989 Page 84-85Micro Systèmes numéro 103 décembre 1989 Page 86-87Micro Systèmes numéro 103 décembre 1989 Page 88-89Micro Systèmes numéro 103 décembre 1989 Page 90-91Micro Systèmes numéro 103 décembre 1989 Page 92-93Micro Systèmes numéro 103 décembre 1989 Page 94-95Micro Systèmes numéro 103 décembre 1989 Page 96-97Micro Systèmes numéro 103 décembre 1989 Page 98-99Micro Systèmes numéro 103 décembre 1989 Page 100-101Micro Systèmes numéro 103 décembre 1989 Page 102-103Micro Systèmes numéro 103 décembre 1989 Page 104-105Micro Systèmes numéro 103 décembre 1989 Page 106-107Micro Systèmes numéro 103 décembre 1989 Page 108-109Micro Systèmes numéro 103 décembre 1989 Page 110-111Micro Systèmes numéro 103 décembre 1989 Page 112-113Micro Systèmes numéro 103 décembre 1989 Page 114-115Micro Systèmes numéro 103 décembre 1989 Page 116-117Micro Systèmes numéro 103 décembre 1989 Page 118-119Micro Systèmes numéro 103 décembre 1989 Page 120-121Micro Systèmes numéro 103 décembre 1989 Page 122-123Micro Systèmes numéro 103 décembre 1989 Page 124-125Micro Systèmes numéro 103 décembre 1989 Page 126-127Micro Systèmes numéro 103 décembre 1989 Page 128-129Micro Systèmes numéro 103 décembre 1989 Page 130-131Micro Systèmes numéro 103 décembre 1989 Page 132-133Micro Systèmes numéro 103 décembre 1989 Page 134-135Micro Systèmes numéro 103 décembre 1989 Page 136-137Micro Systèmes numéro 103 décembre 1989 Page 138-139Micro Systèmes numéro 103 décembre 1989 Page 140-141Micro Systèmes numéro 103 décembre 1989 Page 142-143Micro Systèmes numéro 103 décembre 1989 Page 144-145Micro Systèmes numéro 103 décembre 1989 Page 146-147Micro Systèmes numéro 103 décembre 1989 Page 148-149Micro Systèmes numéro 103 décembre 1989 Page 150-151Micro Systèmes numéro 103 décembre 1989 Page 152-153Micro Systèmes numéro 103 décembre 1989 Page 154-155Micro Systèmes numéro 103 décembre 1989 Page 156-157Micro Systèmes numéro 103 décembre 1989 Page 158-159Micro Systèmes numéro 103 décembre 1989 Page 160-161Micro Systèmes numéro 103 décembre 1989 Page 162-163Micro Systèmes numéro 103 décembre 1989 Page 164-165Micro Systèmes numéro 103 décembre 1989 Page 166-167Micro Systèmes numéro 103 décembre 1989 Page 168-169Micro Systèmes numéro 103 décembre 1989 Page 170-171Micro Systèmes numéro 103 décembre 1989 Page 172-173Micro Systèmes numéro 103 décembre 1989 Page 174-175Micro Systèmes numéro 103 décembre 1989 Page 176-177Micro Systèmes numéro 103 décembre 1989 Page 178-179Micro Systèmes numéro 103 décembre 1989 Page 180-181Micro Systèmes numéro 103 décembre 1989 Page 182-183Micro Systèmes numéro 103 décembre 1989 Page 184-185Micro Systèmes numéro 103 décembre 1989 Page 186-187Micro Systèmes numéro 103 décembre 1989 Page 188-189Micro Systèmes numéro 103 décembre 1989 Page 190-191Micro Systèmes numéro 103 décembre 1989 Page 192-193Micro Systèmes numéro 103 décembre 1989 Page 194-195Micro Systèmes numéro 103 décembre 1989 Page 196-197Micro Systèmes numéro 103 décembre 1989 Page 198-199Micro Systèmes numéro 103 décembre 1989 Page 200-201Micro Systèmes numéro 103 décembre 1989 Page 202-203Micro Systèmes numéro 103 décembre 1989 Page 204-205Micro Systèmes numéro 103 décembre 1989 Page 206-207Micro Systèmes numéro 103 décembre 1989 Page 208-209Micro Systèmes numéro 103 décembre 1989 Page 210-211Micro Systèmes numéro 103 décembre 1989 Page 212-213Micro Systèmes numéro 103 décembre 1989 Page 214-215Micro Systèmes numéro 103 décembre 1989 Page 216-217Micro Systèmes numéro 103 décembre 1989 Page 218-219Micro Systèmes numéro 103 décembre 1989 Page 220-221Micro Systèmes numéro 103 décembre 1989 Page 222