Micro Systèmes n°102 novembre 1989
Micro Systèmes n°102 novembre 1989
  • Prix facial : 30 F

  • Parution : n°102 de novembre 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 230

  • Taille du fichier PDF : 188 Mo

  • Dans ce numéro : technologie... laser et informatique.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 212 - 213  |  Aller à la page   OK
Pages suivantes >
212 213
TECHNIQUE Voici un exemple pour se convaincre de la facilité d'écrire un analyseur syntaxique à partir d'une BNF. L'exemple choisi est celui de l'exécution du calcul d'une expression arithmétique en notation infixée (calculette de poche quatre opérations), le retour étant le résultat de l'opération. BNF du langage (qui complète celle définie précédemment) : =*1/ =+1- =11() 11 =11 ; L'interpréteur accède à l'analyseur lexical précédent. Les différents types de « token » qu'il connaît sont : - T PLUS pour le "token" "+". - TIMOINS pour le "token" "-". - T_MULT pour le "token" "*". - T_DIV pour le "token" "/". - T_PARO pour le "token" "(". - T_PARF pour le "token" ")". - T_CONST pour une constante numérique. T_IDEN pour une variable numérique. get_expression() int resultat ; resultat = get_expr_simple() ; while(1) switch(cur_token.type) 1 T_PLUS : get_token() ; resultat += get_expr_simple() ; break ; T_MOINS : get_token() ; resultat -= get_expr_simple() ; break ; default : return(resultat) ; 1 return(resultat) ; 1 get_expr_simple() 1 int resultat ; resultat = get_membre() ; while(1) switch(cur_token.type) T_MULT : get_token() ; resultat *= get_membre() ; break ; T_DIV : get_token() ; resultat 1= get_membre() ; break ; default : return(resultat) ; 1 return(resultat) ; get_membre() 1 int resultat ; switch(cur_token.type) 1 T_CONST : resultat = cur_token.valeur ; get_token() ; return(resultat) ; T_IDEN : resultat = cur_token.var->valeur ; get_token() ; return(resultat) ; T_PARO : L default : get_token() ; resultat = get_expression() ; if(cur_token.type ! = T_PARF) error() ; get_token() ; return(resultat) ; error() ; Voilà donc décrites les procédures essentielles à la partie langage de l'interpréteur. A celles-ci, il faut ajouter la gestion de la table des symboles, qui est la structure de données la plus importante de l'interpréteur. LA TABLE DES SYMBOLES Elle sert à faire le lien entre le nom externe d'un objet du langage (procédure, variable, type) et sa représentation interne. On doit pouvoir y faire un certain nombre d'opérations. Deux éléments sont prépondérants : la vitesse d'accès depuis le nom externe à la représentation interne et l'occupation mémoire de cette table. Les fonctions obligatoires de gestion d'une telle table sont : - entrée d'un nouveau symbole ; - recherche d'un symbole donné ; auxquelles peuvent s'ajouter : - la suppression d'un symbole ; - la modification d'un symbole. La structure de la table dépend essentiellement des règles de visibilité du langage. Voici un exemple de gestion d'une table des symboles pour un langage ayant des règles de visibilité complexes et gérant un nombre important de symboles. #define ENTRY_NB 256 struct symbol 1 char *name ; struct symbol_desc data ; symbole *next ; 1 *entry_table[ENTRY_NE1] ; put_symbol(name,val) char *name ; struct symbol_desc *val ; char *p = alloc char(sizeof(name)+1) ; int h = hash(name)%ENTRY_NB ; struct symbol *cur_sy = alloc_symbol() ; strcpy(p,name) ; cur_sy->name = p ; cur_sy->data = *val ; cur_sy->next = entry_table[h] ; entry_table[h] = cur_sy ; struct symbol * get_symbol(name,type) char *name ; int type ; int h = hash(name)UNTRY_NR ; struct symbol *fnd_sy = (struct symbol *)NULL, *wrk_sy = entry_table[h] ; while(wrk_sy) 1 if (! strcmp(name,wrk_sy->name) && good_type(wrk_sy,type)) fnd_sy = sym_cmp(wrk_sy,fnd_sy) ; wrk_sy = wrk_sy->next ; 1 return(fnd_sy) ; 212 - MICRO-SYSTEMES Novembre 1 989
PROGRAMMATION On remarque l'emploi d'une fonction de hashing plus rapide qu'une recherche séquentielle. On a préféré une allocation des symboles, par la fonction « alloc-symbol() », plutôt que la gestion directe d'une table afin de pouvoir libérer éventuellement le symbole. On ne s'arrête pas lorsque le premier symbole d'un nom donné à été trouvé mais on fait jouer les règles de visibilité par la fonction « sym-cmp() ». La table des symboles des interpréteurs est généralement maintenue en mémoire pendant toute l'exécution du programme. C'est une nécessité pour beaucoup d'inter- préteurs et c'est une aide extrêmement précieuse lors de la mise au point. LA MACHINE VIRTUELLE La machine virtuelle est la partie de l'interpréteur qui exécute les actions décrites par la sémantique du programme. Il n'y a pas de règle lors de la cdnstruction d'une telle machine, mais il faut ne pas perdre de vue que l'interpréteur sera l'interface entre l'utilisateur et la machine (le système d'exploitation ou l'application) sur laquelle il tourne. Il faut donc gérer au mieux les ressources qu'il utilise. On distingue trois types de ressources : - les Entrées/Sorties ; - la mémoire ; - les Exceptions. La gestion des Entrée/Sortie comprend autant la gestion des E/S du programme interprété que celle de l'interface utilisateur. En effet, beaucoup d'interpréteurs comprennent un éditeur ligne (voire page) ou une gestion de menu avec souris. La gestion de la Mémoire est le point délicat de l'interpréteur, qui met généralement en place d'importants algorithmes de « garbage collection ». La gestion des Exceptions regroupe tous les événements asynchrones : interruption hardware, erreurs d'exécution. Lorsqu'on arrive à faire apparaître ces modules de façon relativement. indépendante, on peut penser posséder une machine virtuelle cohérente. CONCLUSION Voici donc un aperçu de la façon de construire un interpréteur. Les exemples donnés ne permettent malheureusement pas de construire un interpréteur générique sur lequel viendrait s'instancier telle ou telle occurrence. Pour mieux cerner les problèmes relatifs à certains types d'interpréteurs, nous étudierons en détail, le mois prochain, deux cas d'espèce : le LISP et le Shell d'Unix. Olivier Thery BIBLIOGRAPHIE (1) Langages de programmation. Ada. AFNOR NF Z 65-7190. (2) The C Programming Language. B.W. Kemighan D.M. Ritchie. (3) Principles of Compiler Design. A.V. Aho J.D..11111111.7VOS OUTILS DE DEVELOPPEMENT SUR PC/XT/AT LOGICIELS DE DÉVELOPPEMENT pour PC.AT CROSS ASSEMBLEURS SIMULATEURS DEBBUGGERS POUR INTEL, MOTOROLA, ZILOG Familles 6805 - 68705 - 6809 - 8048 - 8031 - 8051 6502 - 6800 - 6802 - 68HCII - 8085 - Z80 - 64180 - 32010 - 32020 - 68000 etc... CROSS COMPILATEUR C ET PASCAL UTILITAIRES SRMS Sources des versions de vos programmes AVCS. Compilation des seules files modifiées PLD Assembleur pour PAL AVDOC : La DOC de vos micros directement à l'écran PROGRAMMATEUR FULL POUR PC OU AT EPROM - EEPROM - PAL PROM BIPOLAIRE PAL - GAL - FL PA MONOCHIP TESTEUR DE RAM TESTEUR DE TTL TESTEUR CMOS Carte + PROGRAMMATEUR + LOGICIELS + MANUELS AUTRES PRODUITS EMULATEUR D'EPROM PROGRAMMATEURS AUTONOMES UNIVERSEL MULTICOPIEURS EFFACEURS reEPROMS EMULATEURS pour PC.AT Z80 8085 NCS 800 6809 68000 8086/186 V40/V50 8088/188 Z80 - 64K 8085 64 K Z180 8031/51 Analyseurs de Trace PRINCIPALES CARACTÉRISTIQUES : isolation problèmes Hard isolation problèmes Soft Sonde d'émulation parités d'arrét modification en temps réel le conseil'CI 0.0 23, AVENUE DU 8 MAI 1945 95200 SARCELLES TEL. 39.92.55.49 SERVIC E-L ECTEURS N°219



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