Parsing
#Parsing (analyse syntaxique)
Construire une structure (AST) à partir des tokens en appliquant une grammaire. Les parseurs à descente récursive suivent directement les règles de la grammaire (expr, terme, facteur) et construisent un arbre.
#Descente récursive minimale
#Exercice : Extension du parseur pour les affectations
Étendez le parseur pour gérer des affectations de variables et des instructions simples.
#Instructions
- Modifiez la grammaire pour inclure :
- Des instructions d'affectation :
ID = expr
- Des programmes comme séquence d'instructions
- Des instructions d'affectation :
- Ajoutez des règles pour parser les identifiants et les affectations.
- Le parseur doit retourner un AST représentant un programme avec des instructions.
#Exemple de code
pythonpython
1import re2 3# Expression régulière étendue pour les identifiants4TOKS = re.compile(r'\s*(?:(\d+)|([a-zA-Z][a-zA-Z0-9]*)|(.))')5 6def tokenize(s):7 for num, ident, other in TOKS.findall(s):8 if num:9 yield ('NUM', int(num))10 elif ident:11 yield ('ID', ident)12 elif other in '+-*/()=;':13 yield (other, other)14 elif other.strip():