Index: trunk/zoo-project/zoo-kernel/main_conf_read.y
===================================================================
--- trunk/zoo-project/zoo-kernel/main_conf_read.y	(revision 607)
+++ trunk/zoo-project/zoo-kernel/main_conf_read.y	(revision 621)
@@ -1,6 +1,28 @@
-%{
 /*
  * Zoo main configuration file parser
+ *
+ * Author : Gérald FENOY
+ *
+ * Copyright (c) 209-2015 GeoLabs SARL
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
  */
+%{
 #include <service.h>
 
@@ -28,30 +50,10 @@
 %}
 
+%union { char* s;char* chaine; char* key;char* val;}
 
-
-//======================================================
-/* le type des lval des jetons et des elements non terminaux bison */
-//======================================================
-%union { char* s;char* chaine; char* key;char* val;}
-//======================================================
-
-// jetons //
-//======================================================
-/* les jetons que l on retrouve dans FLEX */
-//======================================================
-/* texte on a besoin de récupérer une valeur char* pour la comparer */
 %token <s> ID
 %token <s> CHAINE
-/* STARTXMLDECL et ENDXMLDECL qui sont <?xml et ?>*/
-%token STARTXMLDECL ENDXMLDECL
-//======================================================
-/* version="xxx" et encoding="xxx" */
-%token VERSIONDECL ENCODINGDECL SDDECL
-//======================================================
-/* < et > */
-%token INFCAR SUPCAR 
-//======================================================
-/* / = a1  texte "texte" */
-%token SLASH Eq CHARDATA ATTVALUE PAIR SPAIR EPAIR EPAIRS ANID
+
+%token PAIR SPAIR EPAIR EPAIRS ANID
 %type <chaine> PAIR
 %type <chaine> EPAIRS
@@ -59,185 +61,31 @@
 %type <chaine> SPAIR
 
-//======================================================
-/* <!-- xxx -> <? xxx yyy ?> */
-%token PI PIERROR /** COMMENT **/
-//======================================================
-/* <!-- xxx -> <? xxx yyy ?> */
-%token ERREURGENERALE CDATA WHITESPACE NEWLINE
-//======================================================
-// non terminaux typés
-//======================================================
-/* elements non terminaux de type char *     */
-/* uniquement ceux qui devrons etre comparés */
-//======================================================
-%type <s> STag
-%type <s> ETag
+%token WHITESPACE NEWLINE
+
 %type <s> ANID
-//======================================================
-// %start
-//======================================================
 
 %%
-// document <//===
-//======================================================
-// regle 1
-// on est a la racine du fichier xml
-//======================================================
+
 document
- : miscetoile element miscetoile {}
+ : miscetoile miscetoile {}
  | contentetoile processid contentetoile document {}
  ;
 
 miscetoile
- : miscetoile PIERROR {crerror("processing instruction begining with <?xml ?> impossible\n");}
- | miscetoile PI {}
- | {}
+ : {}
  ;
-// element
-//======================================================
-// regle 39
-// OUVRANTE CONTENU FERMANTE obligatoirement
-// ou neutre
-// on ne peut pas avoir Epsilon
-// un fichier xml ne peut pas etre vide ou seulement avec un prolog
-//======================================================
-element
- : STag contentetoile ETag	
-{
-  /* les non terminaux rendent les valeurs de leur identifiants de balise */
-  /* en char*, donc on peut comparer ces valeurs avec la fonction C++ strcmp(const char*;const char*) */
-  /* de string */
-  if (strcmp($1,$3) != 0)
-    {
-      crerror("Opening and ending tag mismatch");
-      printf("\n  ::details : tag '%s' et '%s' \n",$1,$3);
-      return 1;
-      // on retourne different de 0
-      // sinon yyparse rendra 0
-      // et dans le main on croira a le fichier xml est valide !
-    }
-}
-// pour neutre
-// on a rien a faire, meme pas renvoyer l identificateur de balise
-// vu qu'il n y a pas de comparaison d'identificateurs avec un balise jumelle .
- | EmptyElemTag          {}
- ;
-//======================================================
-// STag
-//======================================================
-// regle 40
-// BALISE OUVRANTE
-// on est obligé de faire appel a infcar et supcar
-// pour acceder aux start conditions DANSBALISE et INITIAL
-//======================================================
-STag
- : INFCAR ID Attributeetoile SUPCAR
-{	
 
-#ifdef DEBUG
-	printf("* Identifiant : %s\n",$2);
-#endif
-	
-	$$ = $2 ;
-}
- ;
-//======================================================
-// Attributeetoile
-//======================================================
-// regle 41
-// une liste qui peut etre vide d'attributs
-// utiliser la récursivité a gauche
-//======================================================
 Attributeetoile
- : Attributeetoile attribute  {}
+ : Attributeetoile  {}
  | 	                          {/* Epsilon */}
  ;
-//======================================================
-// attribute
-//======================================================
-// regle 41
-// un attribut est compose d'un identifiant
-// d'un "="
-// et d'une définition de chaine de caractere
-// ( "xxx" ou 'xxx' )
-//======================================================
-attribute
- : ID Eq ATTVALUE		
-{
-	// on verifie que les attributst ne sont pas en double
-	// sinon on ajoute au vector
-}
- ;
-//======================================================
-// EmptyElemTag
-//======================================================
-// regle 44
-// ICI ON DEFINIT NEUTRE
-// on ne renvoie pas de char*
-// parce qu'il n'y a pas de comparaisons a faire
-// avec un identifiant d'une balise jumelle
-//======================================================
-EmptyElemTag
- : INFCAR ID Attributeetoile SLASH SUPCAR	{}
- ;
-//======================================================
-// ETag
-//======================================================
-// regle 42
-// BALISE FERMANTE
-// les separateurs après ID sont filtrés
-//======================================================
-ETag
- : INFCAR SLASH ID SUPCAR
-{
-  /* on renvoie l'identifiant de la balise pour pouvoir comparer les 2 */
-  /* /!\ une balise fermante n'a pas d'attributs (c.f. : W3C) */
-  $$ = $3;
-}
- ;
-//======================================================
-// contentetoile
-//======================================================
-// regle 43
-// ENTRE 2 BALISES
-// entre 2 balises, on peut avoir :
-// --- OUVRANTE CONTENU FERMANTE (recursivement !)
-// --- DU TEXTE quelconque
-// --- COMMENTS 
-// --- DES PROCESSES INSTRUCTIONS
-// --- /!\ il peut y avoir une processing instruction invalide ! <?xml
-// --- EPSILON
-// ### et/ou tout ca a la suite en nombre indeterminé
-// ### donc c'est un operateur etoile (*)
-//======================================================
+
 contentetoile
-: contentetoile element	          {}
- | contentetoile PIERROR	          {crerror("processing instruction <?xml ?> impossible\n");}
- | contentetoile PI	                  {}
-///// on filtre les commentaires | contentetoile comment              {} 
- | contentetoile NEWLINE {/*printf("NEWLINE FOUND !!");*/}
+: contentetoile NEWLINE {}
  | contentetoile pair {}
- | contentetoile processid {}
- | contentetoile texteinterbalise	  {}
- | contentetoile CDATA {}  
  | {/* Epsilon */}
  ;
-//======================================================
-// texteinterbalise
-//======================================================
-// regle 14
-// DU TEXTE quelconque
-// c'est du CHARDATA
-// il y a eut un probleme avec ID,
-// on a mis des starts conditions,
-// maintenant on croise les ID dans les dbalises
-// et des CHARDATA hors des balises
-//======================================================
-texteinterbalise
- : CHARDATA		{}
- ;
-//======================================================
 
-pair: PAIR {curr_key=zStrdup($1);/*printf("START 0 PAIR FOUND !! \n [%s]\n",$1);*/}
+pair: PAIR {curr_key=zStrdup($1);}
 | EPAIR {
   if(current_content==NULL) 
