mercredi, février 01, 2006

XSLT Debugger

J'ai reflechi a propos d'un debugger XSLT pour Emacs. Voici les quelques idees sur son architecture et la maniere de continuer l'investigation.

J'ai poste un email sur la ML Saxon, afin de voir les possibilites du cote Saxon. Au pire, il devrait toujours etre possible de detourner 'TraceListener', se servant de sa nature de hook dans tous les moments clefs du traitement. Il faudrait alors voir les infos disponibles depuis ce mecanisme, et celles qu'il faudra cacher dans Emacs. 'AbstractTraceListener' est evidemment un exemple d'utilisation de 'TraceListener'.

Cote architecture, un programme autonome en ligne de commande. Ce sera l'interface utilisee depuis Emacs (et avec une lib genre ReadLine, ce sera utilisable comme un shell).

Pour les breakpoints, il devrait etre simple de poser des breakpoints sur des lignes de l'arbre source, ou des instructions XSLT. A chaque appel de 'enter()', on verifie s'il y a un BP sur cette instruction. A chaque appel de 'startCurrentItem()', on verifie s'il y a un BP sur le nouveau noeud (si un noeud).

Et lorsque l'on rencontre un BP, on appelle une fonction qui boucle sur des entres (genre ReadLine), permettant un ensemble de commandes. Dans un premier temps, supporter quelques affichages simples. Sur un 'quit', la fonction retourne et le traitement continue (si l'on utilise 'step', il faut bien sur faire en sorte que le prochain appel a 'enter()' et/ou 'startCurrentItem()' fasse ce qu'il faut [concept de mode d'execution : stepping or running or stopped or ...]).

Comme premier test, realiser un tel petit programme qui permet de poser des breakpoints et afficher quelques infos interessantes.

Tags:

Aucun commentaire: