Aller au contenu principal

Lexing

#Lexing (analyse lexicale)

Transformer un flux de caractères en une séquence de jetons (tokens) — chiffres, opérateurs, identifiants.

#Tokenizer (regex — expressions arithmétiques)

#Exercice : Extension du tokenizer pour identifiants et mots-clés

Étendez le tokenizer pour reconnaître des identifiants (noms de variables/fonctions) et des mots-clés.

#Instructions

  1. Modifiez l'expression régulière pour reconnaître :
    • Des identifiants : suites de lettres et chiffres commençant par une lettre
    • Des mots-clés : if, else, while, for
  2. Ajoutez une étape de reconnaissance des mots-clés après le découpage lexical.
  3. Gérez correctement les majuscules/minuscules.

#Exemple de code

pythonpython
1import re2 3# Expression régulière étendue4TOKS = re.compile(r'\s*(?:(\d+)|([a-zA-Z][a-zA-Z0-9]*)|(.))')5 6# Mots-clés7KEYWORDS = {'if', 'else', 'while', 'for', 'def', 'return'}8 9def tokenize(s):10    out = []11    for num, ident, other in TOKS.findall(s):12        if num:13            out.append(('NUM', int(num)))14        elif ident:
Espaces et commentaires

En pratique, on ignore espaces et commentaires au lexing pour simplifier le parsing.