Bonjour,
À l’occasion d'un projet, je dois coder un serveur. L'échange des données se fait principalement sous cette forme :
On a déjà une classe qui s'occupe de parser ce schéma dans un arbre. Ce que j'aimerais c'est pouvoir valider cet arbre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [balise1] id = IDENTIFIANT [info] nom = NOM [/info] [/balise1]
Par exemple avoir un schéma comme :
Ce validateur devrait pouvoir vérifier la répétition d'un champ, par exemple le champ info peut apparaitre de 0 à 2 fois. Et ceci sous d'autres formes encore comme '*', '1 .. *', ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [balise1] id = REGEX <-- requis [info] <-- {0 .. 2} nom = REGEX <-- requis [/info] [/balise1]
On controlera les types avec un regex ou éventuellement autre chose suivant.
Et il faudra que le nom des balises et des attributs soient exactement les mêmes.
Plus encore peut-être d'autre choses auxquelles je n'ai pas encore pensé.
J'étais prêt à coder ma propre solution, mais en essayant de faire un design, je me suis demandé si ce n'était pas un peu comme un lexer. Ou s'il n'existait pas des solutions pour ça, vu que ça semble assez banal.
Du coup j'ai un peu regardé Boost.Spirit.Lex mais est-ce que ça n'est pas un peu étrange d'écrire des règles de cette manière pour un protocole réseau ? Et de plus, j'ai l'impression que c'est un peu trop pour mon problème.
N'hésitez pas à me demander plus de détails.
Merci d'avance![]()
Partager