SUP DS2
On attachera une importance à la concision, à la clarté, et à la précision de la rédaction
Si, au cours du DS, un candidat repère ce qui peut lui sembler être une erreur d’énoncé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des initiatives qu’il est amené à prendre.
Le devoir se compose de deux problèmes indépendants sur 6 pages.
Les questions non traitées peuvent être admises pour traiter des questions ultérieures. Problème 1. (20 pts)
Analyseur lexical d’un langage
Présentation. Avant son exécution, tout code source d’un programme informatique doit être traduit en un autre code appelé code machine. Cette traduction est réalisée par un compilateur dont le rôle est de transformer le code source en une suite d’instructions élémentaires directement exécutables par le processeur.
Ainsi le rôle de l’analyseur lexical est d’identifier puis supprimer les caractères superflus du code source (commentaires, espaces, ..) et de reconnaître les mots clés, les identificateurs, les opérateurs qui sont définis par un ensemble de règles.
En plus, l’analyseur lexical signale les éventuelles erreurs de syntaxe et associe à chaque erreur le numéro de ligne dans laquelle elle intervient.
Dans ce problème, on se propose de mettre en œuvre un analyseur lexical. Il s’agit d’implémenter des fonctions en langage PYTHON pour un analyseur lexical d’un langage imaginaire qu’on appellera LIM.
***
Rappel. Les fonctions et méthodes prédéfinies qui peuvent être utilisées dans ce problème :
La fonction len(seq) : renvoie le nombre d’éléments de la séquence seq.
La fonction range(deb,fin,pas) : renvoie … avec le pas
La méthode append(elem) ajoute l’élément elem à la fin d’une liste.
La méthode values( ) renvoie toutes les valeurs d’un dictionnaire.
La méthode items( ) renvoie tous les objets d’un dictionnaire.
La fonction print(msg) affiche le message msg.
***
Gestion des commentaires. Un commentaire est une