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 : 210 - 211  |  Aller à la page   OK
Pages suivantes >
210 211
TECHNIQUE - Diminution du temps de cycle Test/Correction par l'exécution immédiate du programme sans attendre les phases de compilation, optimisation, assemblage, édition de lien, chargement. - Mise au point facilitée puisque l'erreur d'exécution intervient sur le code évolué directement, et non pas sur du code machine qu'il est parfois difficile de mettre en rapport avec le code de haut niveau correspondant (nécessité d'outils de mise au point). L'inconvénient majeur est la lenteur d'exécution des programmes interprétés puisque ceux-ci doivent être constamment retraduits en requêtes pour la machine cible. Pour un compilateur, le programme est directement exécuté par la machine cible. La comparaison compilateur/interpréteur met en évidence les caractéristiques qui sont communes à tous les interpréteurs : facilité de mise en oeuvre et d'utilisation, lenteur d'exécution. DIFFERENTS TYPES D'INTERPRETEURS On a vu que l'interpréteur est une machine virtuelle pour un langage évolué, ce qui implique deux parties dans celui-ci : la partie langage et la partie système (ou machine virtuelle). Ce découpage fait apparaître deux types d'interpréteurs : - Les interpréteurs de commandes comme le JCL ou le Shell (Unix) pour lesquels c'est l'utilisation optimale des ressources de la machine qui est primordiale. Ils sont développés pour une machine ou un système d'exploitation et ne sont généralement pas portables. - Les interpréteurs de langage évolué comme LISP ou Prolog pour lesquels la partie de l'interpréteur gérant la conformité au langage sera plus développée. Ils peuvent être portables d'une machine sur l'autre. Cette distinction est parfois obscure. Le Basic, par exemple, était à l'origine autant un interpréteur de commandes qu'un langage. Il est, depuis la généralisation de MS-DOS, devenu un langage à 100%, le rôle de l'interpréteur de commandes étant rempli par COMMAND.COM. Mais, quel que soit le type d'un interpréteur, sa structure sera la même, la différence se situant au niveau de l'importance respective de ses divers composants. DEFINITION DU LANGAGE Dans tous les cas, la première étape lors du développement d'un interpréteur est la spécification du langage. Cette étape est essentielle puisque l'interpréteur va devoir « comprendre » celui-ci. Il aura donc une structure interne extrêmement liée au langage qu'il interprète. Trois cas peuvent se presenter : la définition est préexistante, floue ou inexistante. Le cas de la définition préexistante est celui des interpréteurs de langage évolué comme LISP ou Prolog. C'est le cas qui simplifie le plus cette phase du développement ; il n'est malheureusement pas le plus fréquent. En effet, il apparaît que les langages interprétés ne sont pas facilement standardisables, puisque la facilité d'écrire un interpréteur a souvent fait fleurir plusieurs souches pour un même langage (LE-LISP, FranzLISP, MacLISP). Leurs interpréteurs n'étant pas utilisés de façon intensive dans l'industrie, il n'y a pas eu jusqu'à très récemment d'efforts notables de normalisation. Le cas courant pour les interpréteurs de langages évolués est le cas flou dont Basic est l'exemple type pour ces dix dernières années. Le langage est défini à 70 ou 80% ; il 210 - MICRO-SYSTEMES reste au concepteur une marge qu'il utilise en fonction des capacités de la machine et d'une normalisation qu'il pense pouvoir imposer. Pour les autres interpréteurs, c'est-à-dire les interpréteurs de commandes, le développeur est libre d'inventer le langage qui lui plaît. La seule restriction est que le résultat permette d'utiliser complètement le système qu'il frontalise. C'est pour cela qu'une définition précise du langage s'impose. Elle permet aussi de vérifier la cohérence et l'orthogonalité de l'ensemble, c'est-à-dire qu'il n'y ait pas de « double emploi » dans le langage et que les possibilités élémentaires de celui-ci soient simples et complètement indépendantes. La spécification du langage est double : syntaxique et sémantique. La syntaxe définit les règles d'écriture du langage. Une grande partie de la syntaxe peut être décrite par un « meta-langage », le plus courant de ceux-ci étant la BNF (Backus-Naur Form) qui a été initialement utilisée pour la spécification d'Algol. Voici un exemple de BNF pour quelques éléments de base d'un langage. = 0111213141516171819 = AIBICIDIEIFIGIHIIIJIK1LIMINIOIPIQIRISITIUIVIWIXIYIZ = alblcldlelflglhliljlklllminlolplglrlsltlulvlwlxlylz = : = = (I I = 1[]1 Cette séquence définit un langage dans lequel les identificateurs commencent obligatoirement par une lettre, sont formés de caractères alphanumériques et de sous-lignés, avec l'obligation pour tout sous-ligné d'être suivi d'un caractère alphanumérique. Les éléments entre « < > » sont les éléments non terminaux du langage, le « » étant le « ou exclusif », les « { } » dé-. finissent 0, 1 ou plusieurs occurrences de ce qu'ils entourent, les « [1 » définissent 0 ou 1 occurrence, le « = » signifie « est défini par ». Une telle définition ne permet pas de spécifier complètement la syntaxe, par exemple elle ne permet pas de dire que les identificateurs sont, limités à 255 caractères. Elle doit être accompagnée d'un texte qui définira les compléments syntaxiques. La sémantique définit le sens du langage : c'est-à-dire les actions qu'auront les structures syntaxiques du langage. On ne peut la décrire d'une manière formelle, elle fait donc l'objet d'un document d'explication. Le document constitué de la BNF et de la description syntaxique et sémantique du langage formeront le manuel de référence qui servira de base de travail à l'utilisateur. Pour ceux qui seraient intéressés par un exemple de définition de langage, se reporter à (1). CHOIX D'UN LANGAGE DE REALISATION Le langage de réalisation de l'interpréteur n'est pas un élément déterminant. Il ne doit pas intervenir dans la phase de conception mais doit faire l'objet d'un choix attentif. Parmi tous les critères qui servent au choix du langage de programmation, deux paraissent essentiels : la disponibilité du langage et l'existence d'outils de mise au point. Viennent ensuite les problèmes de performance Novembre 1 989
r(OGRAMMAIION (utilisation d'un « bon compilateur ») et de portabilité (existence d'une norme). La connaissance du langage n'est pas un facteur décisif étant donné la similitude des langages courants qui sont généralement impératifs et procéduraux. Pour cet article, le langage C a été choisi pour l'écriture des exemples. Les critères ont été : - Large disponibilité dans le monde Unix d'une part et sur les micros : LatticeC, MicrosoftC, TurboC... - Existence de metteurs au point : sdb sur Unix, Code- View et Turbo Debug sur micros. - Standardisation de fait autour de « The C programming language » (2). - Existence d'une bibliothèque de fonctions qui, sur micros, est un sous-ensemble des fonctions standards Unix. Mais tout autre langage peut aussi bien convenir en fonction des nécessités en matière de portage et de performance. STRUCTURE DE L'INTERPRETEUR Une fois le travail de spécification du langage effectué commence la conception/réalisation de l'interpréteur. Un interpréteur se compose de trois modules (voir fig. 1) : - L'analyseur lexical (ou « scanner ») qui lit le programme caractère par caractère et extrait les éléments de langage. - L'analyseur syntaxique (ou « parser ») qui reçoit les éléments de langage qui lui sont fournis par l'analyseur lexical, reconnaît la structure que l'on est en train de traiter et la traduit en format interne. - La machine virtuelle qui reçoit le format interne de l'analyseur syntaxique et l'exécute. Le « scanner » et le « parser » correspondent à la partie syntaxique du langage, tandis que la machine virtuelle traite sa sémantique. C'est le découpage théorique qui est très proche de celui du compilateur (fig. 2), mais qui apparaît rarement ainsi dans la réalité. L'ANALYSEUR LEXICAL Le rôle de l'analyseur lexical est de reconnaître les éléments de base du langage appelés « tokens » (identificateurs, constantes, mots réservés, opérateurs...) et de les traduire en un format interne exploitable par l'analyseur syntaxique. Un analyseur lexical est un automate à états finis, les transitions étant définies par les types des caractères d'entrée. Voici un exemple d'analyseur lexical basé sur la BNF définie précédemment, la fonction de lecture caractère par caractère est « get-char() », la fonction « unget-char() » permet de « reculer » d'un caractère dans le fichier source, le résultat de « get-token() » est mis dans la variable globale « cur-token ». get_token() I int c ; c = get_char() switch(type_of _char[c]) I C_LETTRE : char iden_name[256] ; int len = 0 ; int type ; whil e(1) I iden_name[len++] = C ; if(len == 255) break ; c = get_char() ; if(c =='_') f if(len == 254) break ; c = get_char() ; if(type_of_char[c] ! = C_CHIFFRE && type_of_char[c] ! = C_LETTRE) I unget_char(c) ; unget_char('_') ; break ; iden_name[len++] ='_' ; if(type_of_char[c] ! = C_CHIFFRE && type_of_char[c] ! = C_LETTRE) I unget_char(c) ; break ; iden_name[len] ='\0' ; type = get_mot_reserve(iden_name) if(type ! = NULL) I cur_token.type = type ; return ; cur_token.type = T_IDEN ; cur_token.var = get_var(iden_name) ; C_CHIFFRE : I int resultat ; resultat = c-'0' ; while(1) I c = get_char() ; if (type_of_char[c] ! = C_CHIFFRE) I unget_char(c) ; break ; resultat = resultat=10+c-'0' ; cur_token.type = T_CONST ; cur_token.valeur = resultat ; return ; C_OPERATEUR : cur_token.type = type_of_operator[c] ; return ; default : error() ; On peut donc coder soi-même son analyseur lexical ou le construire avec un utilitaire ; la référence en ce domaine est l'outil standard d'Unix : lex. Lex ne fonctionne pas avec une BNF mais avec des expressions régulières qui sont largement répandues parmi les utilitaires Unix. Il permet de générer un analyseur lexical écrit enC. L'ANALYSEUR SYNTAXIQUE C'est le coeur de l'interpréteur. La théorie des analyseurs syntaxiques est intimement liée à la théorie des graphes et reste d'une complexité dépassant le cadre de cet article. On va se contenter de donner un aperçu global et un exemple d'analyseur syntaxique. Pour plus d'information, se reporter au « dragon book » (3). Le rôle de l'analyseur syntaxique va être, en lisant les « tokens » du programme un par un et de gauche à droite, de fabriquer un arbre qui sera ensuite exécuté pour un interpréteur (ou servira au générateur de code d'un compilateur). En fait, la construction de l'arbre n'est généralement pas indispensable pour les interpréteurs, l'exécution immédiate des instructions peut s'y substituer. Une grande partie de l'analyseur syntaxique peut être générée de façon quasi automatique à partir de la forme BNF du langage ou d'un autre métalangage comme le fait yacc (yet another compiler-compiler) fourni sous Unix. Novembre 1989 MICRO-SYSTEMES - 211



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