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
- 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
- Ajoutez une étape de reconnaissance des mots-clés après le découpage lexical.
- 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.