2010-08-24 4 views

Répondre

1

Le chapitre «Arbres ANTLR contre arbres personnalisés» sur this web page montre un exemple de grammaire antlr, une entrée et la sortie formatée de l'AST pour l'entrée donnée. Le chapitre contient un lien vers un programme C++ pour produire cette sortie formatée.

Ce n'est pas du XML mais assez proche et peut être une bonne base pour commencer.

1

Marchez AST de manière récursive en commençant à la racine.

En descendant à un noeud de type X, imprimer une étiquette d'ouverture:

<X> 

descendent ensuite dans les enfants de gauche à droite et à imprimer leur contenu. Après le traitement de tous les childen, imprimer une balise de fermeture:

</X> 

à un noeud de feuille de type L, impression

<L value="abc"/> 

avec éventuellement attribuer des valeurs d'intérêt.

Terminé.

Si vous garder une trace de nidification de récursivité, vous pouvez imprimer le début de l'étiquette et se termine avec les principaux recursion_depth espaces et suivre avec un saut de ligne. Ensuite, votre XML sera bien imbriqué.