Arbre de la syntaxe abstraite
En informatique, un arbre de la syntaxe abstraite ou ASA (abstract syntax tree, ou AST, en anglais) est un arbre dont les nœuds internes sont marqués par des opérateurs et dont les feuilles (ou nœuds externes) représentent les opérandes de ces opérateurs. Autrement dit, généralement, une feuille est une variable ou une constante.
Un arbre de la syntaxe abstraite est utilisé par un analyseur syntaxique comme un intermédiaire entre un arbre d'analyse et une structure de données. Il est utilisé comme la représentation intermédiaire interne d'un programme informatique pendant qu'il est optimisé et à partir duquel la génération de code est effectuée.
Un AST diffère d'un arbre d'analyse par l'omission des nœuds et des branches qui n'affectent pas la sémantique d'un programme. Un exemple classique est l'omission des parenthèses de groupement puisque, dans un AST, le groupement des opérandes est explicité par la structure de l'arbre.
La création d'un arbre de la syntaxe abstraite pour un langage décrit par sa grammaire est généralement facile : la plupart des règles de la grammaire créent un nouveau nœud dont les branches sont les symboles de la règle. Les seules règles qui n'ajoutent pas de symboles à l'arbre sont les règles de groupement, représentées par un nœud (parenthèses, par exemple). Un analyseur syntaxique peut aussi créer un arbre complet, et faire une passe ultérieure pour supprimer les nœuds non utilisés par l'arbre de la syntaxe abstraite. Le schéma représente le code ci-dessous, écrit en Python (calcul d'un PGCD).
while b != 0:
if a > b:
a = a - b
else:
b = b - a
return a
Utilisation
modifierEn PHP, l'AST a été introduit depuis la version 7 (en 2016) à la compilation entre le code source et le code machine[1].
Voir aussi
modifierRéférences
modifier- « Optimisations de performances avec PHP 7 · alter way blog », sur alterway.fr via Wikiwix, (consulté le ).
- (en) Cet article contient des extraits de la Free On-line Dictionary of Computing qui autorise l'utilisation de son contenu sous licence GFDL.