Bonjour,
je suis amené à créer un projet où je dois analyser beaucoup de différents fichiers de configurations sous linux.
pour se faire, j'aimerai réaliser un "parser" plus ou moins universel qui va me retourner un ensemble de valeurs sous une forme comme un arbre binaire.
pour le petit exemple, imaginons la syntaxe suivante (de /etc/dhcp3/dhcpd.conf)
je ne vais expliquer le fichier, il faut juste savoir que "subnet" est la base, "10.5.5.0" est un attribut, "netmask" aussi et "255.255.255.224" aussi. Puis le "{" signifie qu'il va passer un à block suivant pour refaire la même analyse plus tard. Petit graphique en mode texte donne ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 subnet 10.5.5.0 netmask 255.255.255.224 { range 10.5.5.26 10.5.5.30; option domain-name-servers ns1.internal.example.org; option domain-name "internal.example.org"; option routers 10.5.5.1; option broadcast-address 10.5.5.31; default-lease-time 600; max-lease-time 7200; }et on imagine bien que s'il y a un nouveau block ça crée une nouvelle branche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [subnet]___________ | \ \ | \ \ [range] [option] [option]
Si la logique en elle même ne me pose pas de problème, c'est au niveau du PHP que ça coince!
Comment peut-on définir une sorte de pointeur? Le passage par référence suffit-il?
j'aimerai avoir une classe avec une structure dans le genre:vous voyez ce que je veux dire? Je me demande comment je peux utiliser une référence concrètement ou un pointeur vers un élément. Comment savoir si je récupère bien le pointeur et non la valeur? est-ce que ce que je veux faire est réalisable en php?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Noeud { var $nom; var $attributs; var &$pere; var $fils; function __construct($nom, &$pere) { $this->pere = $pere; $attributs = array(); $fils = array(); } function ajouterFils((Noeud)&$fils) { $fils[] = $fils } [...] }
merci de m'aider
Partager