Brevet FR2117714A1 — publié le 19720728

L'invention concerne la technique de calcul et plus précisément les dispositifs pour l'analyse syntaxique des programmes, elle peut être utilisée pour l'automation de la pro#grammation des calculatrices ou ordinateurs, pour la construction des translateurs et des traducteurs à langues à orientation problématique déterminées par des grammaires tabulées etc. On connaît des dispositifs pour l'analyse syntaxique des programmes comportant un dispositif de mémoire, un circuit comparateur, un bloc de magasins de mémoire, des enregistreurs pour le stockage de l'information auxiliaire et un bloc de commande. Cependant ces dispositifs connus ont une faible rapidité de fonctionnement, car l'analyse syntaxique de chaque symbole du programme d'entrée est réalisée en lisant consécutivement les lignes du tableau d'analyse représentant la grammaire de la langue. La présente invention a pour but l'élimination de l'inconvénient indiqué. L'invention vise la création d'un dispositif rapide pour l'analyse syntaxique des programmes. Suivant l'invention, le dispositif pour l'analyse syntaxique de programmes comportant un dispositif de mémoire dont le registre de sortie qui, selon le tableau d'analyse représentant la grammai -re de la langue, est divisé en un registre de sortie du code à former et un registre de sortie d'interruption et un bloc de commande raccordé au registre de sortie du code à former et au registre de sortie d'interruption, est caractérisé en ce que le dispositif de mémoire est réalisé sous la forme d'un dispositif de mémoire associative - dont le registre de sortie du code à former est raccordé à l'une des entrées du registre d'entrée du dispositif de mémoire assofiative Le dispositif d'analyse syntaxique de programmes peut comporter un circuit de contrôle, et le registre de sortie du dispositif de mémoire associative peut comporter un registre d'erreur de sortie raccordé à l'entrée de ce circuit et dont la# sortie est raccordée à l'une des entrées du bloc~de commande. D'autres caractéristiques de l'invention ressortiront plus particulièrement de la description suivante donnée à titre d'exemple et faite en se référant au dessin annexé, sur lequel la Fig. unique représente un schéma synoptique d'un dispositif pour l'analyse syntaxique des programmes, suivant l'invention. Ce dispositif comporte un dispositif de mémoire associatlve 1 dont le registre d'entrée 2 est divisé en un registre d'entrée 3 du code formé et un registre 4 des symboles, les sorties de ces registres étant raccordées à un bloc des indices associatifs 5 dont la sortie est raccordée à un bloc indicateur 6. La sortie du bloc indicateur 6 est raccordée à l'entrée d'un bloc de cellules de travail 7 dont la sortie est connectée à l'entrée d'un registre de sortie 8. Le registre de sortie 8 du dispositif de mémoire associative 1 est divisé en - un registre de sortie des sous-programmes compilateurs 9 dont la sortie est raccordée au bloc des sous-programmes compilateurs de la calculatrice - un registre de sortie du code à former 10 dont la sortie est raccordée à la sortie du registre d'entrée du code formé 3 et à l'entrée du bloc de commande 11 - un registre d'interruption 12 dont la sortie est raccordée à la seconde entrée du bloc de commande 11 - et un registre d'erreur de sortie 13 dont la sortie est raccordée à travers un circuit de contrôle 14 à la troisième entrée du bloc de commande. Pour illustrer le fonctionnement du dispositif, on examine des exemples de représentation de la grammaire d'une langue sous forme de tableau d'analyse. Le tableau d'analyse est l'enregistrement tabulaire d'un gra -phe orienté de la grammaire de la langue. Chaque ligne du tableau d'analyse correspondant à un symbole terminologique quelconque de la grammaire de la langue, continent l'-information suivante a) le code formé admissible, c'est-à-dire le code au sommet du#graphe, d'où sort l'arc marqué par un symbole, b) -le-code-à former, 'c'est-à-dire, -le code au sommet du gra phe::, dans lequel pénètre l'arc marqué par le symbole, c) le code du symbole, d) le code de l'adresse du sous-programme compilateur (pour transformer la partieranalysée du programme d'entrée en programme de- sortie), e) l'information concernant l'interruvption de-l'analyse syntaxique du programme d'entrée, f) l'information concernant terreur syntaxique. -Exemple d'un tableau d'analyse pour la grammaire S ----- sAt A ---- sAt A ---- abc (voir tableau ci-dessous). Le dispositif fonctionne de la maniere suivante On enregistre le symbole S du programme d'entrée à analyser dans le registre d'entrée des symboles 4 du registre d'entrée 2. Puis on recherche le code en comparant l'indice associatif, enregistré dans le registre d'entrée 2 du dispositif de mémoire assiociative 1 avec les indices associatifs enregistrés dans le bloc des indices associatifs 5. Lors de la comparaison H~q codes, il est évident que seul l'un des indicateurs du bloc d'indlcateurs 6 reste à l'état zéro" et un code de travail correspondant à l'indice associatif trouvé est tiré du bloc des cellules de travail 7 sur le registre de sortie 8 du dispositif de mémoire associative 1. Puis, le circuit de contrôle 14 procède à l'analyse du registre d'erreur de sortie 13.Etant donné qu'un certain code a été lu dans le registre de sortie 8 du dispositif de mémoire associative 1, une "unité" est enregistrée dans le registre d'erreur de sortie 13 et par conséquent le fonctionnement du dispositif continue. Si le symbole analysé A1 est enregistré incorrectement dans le programme du point de vue syntaxique (c'est-à-dire que le symbole Ai ne correspond pas au code enregistré dans le registre d'entrée du code formé 3) on ne trouvera pas l'indice associatif correspondant ; étant donné que dans le registre de mémoire associative 8 aucun code n'est lu, le registre d'erreur de sortie 13 reste à l'état "zéro". Dans ce cas le circuit de contrôle 14 débite un signal au bloc de commande, qui fait cesser le fonctionnement du dispositif entier. Après la lecture du code sur le registre de sortie et l'analyse du contenu du registre d'erreur 13, un code est formé pour l'analyse syntaxique du symbole suivant A. du programme d'entrée, le registre d'erreur de sortie 13 est remis à zéro et on procède à l'analyse du registre d'interruption 12. La formation du code pour l'analyse syntaxique du symbole suivant A. consiste à enregistrer à nouveau le contenu du-registre de sortie du code à former 10 sur le registre d'entrée 3 du code formé. L'analyse du registre d'interruption 12 consiste à vérifier le contenu de ce registre. Si le registre 12 se trouve par exemple à l'état "un", le bloc de commande 11 procède à l'interruption de l'analyse syntaxique du programme d'entrée et le passage au sousprogramme compilateur selon l'adresse enregistrée dans le registre de sortie 9. Si le registre 12 se trouve à l'état zéro, l'interruption de l'analyse du programme d'entrée n'a pas lieu. Le bloc de commande 11 interrompt le fonctionnement du dispositif lorsqu'à partir du registre de sortie 10 du code à former, le code "Fin de programme", arrive sur son entrée. Ainsi l'invention proposée permet a) de réduire sensiblement la durée de l'analyse syntaxique du programme d'entrée et de réaliser l'analyse syntaxique de chaque symbole du programme d'entrée en un seul cycle de fonctionnement du dispositif, b) d'éviter que la calculatrice effectue le -travail peu productif nécessaire pour la traduction du programme d'entrée. Lors de l'introduction d'une modification dans la langue, ainsi que pour modifier l'accord du dispositif pour son fonctionnement avec une autre langue d'entrée, il suffit de remplacer les matrices du dispositif dans lesquelles est enregistrée la grammaire de la langue. Tableau d'analyse Cellule de mémoire associative indice associatif cellule de travail code formé code en adress du code en arrêt erreur formation compilateur formation 3 4 9 10 12 13 00 + - Ol 0 1 O1 S ml 02 1 1 02 S m2 02 1 1 02 a - 03 0 1 03 b - 04 0 1 04 c m3 05 1 1 os + m4 06 1 1 06 + m4 06 1 1 06 + - fin de pro- 0 1 gramme REVENDICATIONS 1 - Dispositif d'analyse syntaxique de programmes comportant un dispositif de mémoire dont le registre de sortie qui selon le tableau d'analyse représentant la grammaire de la langue est divisé en un registre de sortie du code à former un registre de sortie d'interruption et un bloc de commande raccordé au registre de sortie du code à former et au registre de sortie d'interruption, est caractérisé en ce que le dispositif de mémoire est réalisé sous la forme d'une mémoire associative ont le registre de sortie du code à former est raccordé à l'une des entrées du registre d'entrée du dispositif de mémoire associative. 2 - Dispositif selon la revendication 1, caractérisé en ce qu'il comporte un circuit de contrôle et en ce que le registre de sortie du dispositif de mémoire associative comporte un registre de sortie d'erreur dont la sortie est raccordée à l'une des entrées du bloc de commande.