Aller au contenu principal

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

  1. Modifiez la grammaire pour inclure :
    • Des instructions d'affectation : ID = expr
    • Des programmes comme séquence d'instructions
  2. Ajoutez des règles pour parser les identifiants et les affectations.
  3. 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():