Un programme a un répertoire de travail courant (mémorisé dans une
variable système cwd
) à partir duquel sont résolus les chemins
relatifs, mais le chemin absolu de ce répertoire n'est pas
mémorisé.
Pour reconstruire ce chemin, on remonte pas à pas dans la hiérarchie. Un
noeud sera désigné par un chemin relatif p par rapport au répertoire de
travail courant noté n(p). Un noeud n(p) est la racine s'il est égal
à son parent n(../p); dans ce cas le chemin cherché est /. Sinon,
il suffit de concaténer le chemin menant au parent (appel récursif) avec
l'arc menant du parent au fils (qui doit exister, sauf peut-être si la
hiérarchie a été modifiée pendant le calcul). Pour trouver celui-ci, il
suffit de rechercher parmi les f arcs issus du parent n(../p) un
arc menant au fils, c'est-à-dire tel que n(../p/f) et n(p) sont
égaux.