J'ai un format de configuration similaire au format * .sln, prenez donc ce qui suit comme un exemple:Comment analyser les "nœuds" multiniveaux dans le texte?
DCOM Productions Configuration File, Format Version 1.0
BeginSection:Global
GlobalKeyA = AnswerOne
.: Stores the global configuration key
:: for the application. This key is used
:: to save the current state of the app.
:: as well as prevent lockups
GlobalKey3 = AnswerTwo
.: Secondary Key. See above setting
GlobalKeyC = AnswerThree
BeginSection: UpdateSystem
NestedKeyA = One
NestedKeyB = Two
NestedKeyC = { A set of multiline data
where we will show how
to write a multiline
paragraph }
NestedKeyD = System.Int32, 100
EndSection
EndSection
BeginSection:Application
InstallPath = C:\Program Files\DCOM Productions\BitFlex
EndSection
Je sais que je vais avoir besoin d'une fonction récursive probablement que prend un segment de texte en tant que paramètre ainsi, Par exemple, passez-y une section entière et analysez-la récursivement de cette façon. Je n'arrive pas à comprendre comment faire cela. Chaque section peut potentiellement avoir plus de sections enfants. C'est comme un document Xml .. Je ne demande pas vraiment de code ici, juste une méthodologie sur la façon de procéder pour analyser un document comme celui-ci.
Je pensais à utiliser les onglets (spécifie l'index) pour déterminer avec quelle section je travaille, mais cela échouerait si le document n'était pas correctement formaté. De meilleures pensées?
Ouais, Begin et de EndSection sont essentiellement des noeuds commencent d'arrêt de fin, mais comment pourrais-je faire la différence entre ce qui appartient à EndSection qui beginsection? Je ne pouvais pas saisir le premier, car il pourrait s'agir de la fin d'un nœud imbriqué et non du premier analysé. –
Ecrivez un analyseur qui analyse un objet BeginSection et, s'il rencontre un objet BeginSection dans BeginSection, appelle lui-même le début de la nouvelle sous-section. Passer le résultat en tant que réf de hachage, qui peut être ajouté au hachage dans la fonction d'appel – Sorantis
Bon, merci pour la perspicacité. Je pense que je sais comment y aller maintenant et je suppose que je posterai si j'ai d'autres questions surgissent. Merci! –