ORDRE GENERAL D'EXECUTION DES FONCTIONS

1) main.c:main(...)
Gere les options d'execution.

2) main.c:parse_file|dir|standard_input(...)
preparation a l'appel du lexer :
- ouverture des bases de donnees necessaires (suivant learning ou scoring)
- preparation des fichiers : en cas de parsing de fichier (option -f) ou de rpertoire (option -d)
- appel de tokenize.l:init_parsing(...)
- fermeture des base de donnees en fin de traitement

2BIS) main.c:display_help()
- affiche l'aide sur les options d'excution (option -h)

2TER) main.c:main(...)
Dans le cas de l'option d'affichage de la base de donnees (option -q)
- ouvre la base de donnees
- appelle la fonction d'affichage des tokens (store.c:store_displayTokens(...))
- ferme la base de donnees

3) tokenize.l:init_parsing(...)
- si learning incremente de 1 le nombre de pages (en porn ou non porn)
	sinon initialise les variables pour le scoring (score.c:score_initScoring(...))
- transforme le pointeur de fichier (FILE *) en chaine de caracteres
- lance le lexer (yylex)
- enfin de traitement :
	si learning stocke tous les tokens de la base temporaire vers la base permanente (store_storeAll(...))
	sinon appelle la fonction de scoring (score_getProbability(...))

4) tokenize.l: le lexer
Etat INITIAL :
- recherche les tags de fin </*> et les supprime
- recherche les styles <style * /style> et les supprime
- recherche les script <script * /script> et les supprime
- recherche les commentaires <!-- * --> et les supprime
- recherche les tags 
- recherche les mots

Recherche des tags :
- detection, mise en etat TAG
- appelle cut_tags(...)
- se met dans l'etat DOMAINST
- change de buffer a parser (parse le tag trouve)

Recherche des mots :
- detection
- mise en etat ACCENT
- change de buffer a parser (parle le mot trouve)

Etat ACCENT :
- recherche les accents codes (&eacute; etc.)
- les remplace par le caractere correspondant (e etc.)
- supprime les espacements codes (&nbsp; &lt; &gt; etc.)
- en fin de traitement appelle cut_words(...)
- se met dans l'etat DOMAINST
- change de buffer a parser (parse le mot trouve)

Etat DOMAINST :
- recherche les noms de domaines
- stocke le token trouve en base temporaire (de scoring ou learning)
- se replace dans l'etat INITIAL
- change de buffer et revient au buffer initial

5) cut.c:cut_tags(...)
- decoupe les tags suivant une liste de separateurs
- stocke les tokens trouves en base temporaire (de scoring ou learning)

5BIS) cut.c:vut_words(...)
- decoupe les mots suivant une liste de separateurs
- stocke les tokens trouves (mots et bi-mots) en base temporaire (de scoring ou learning)

LEARNING
6) store.c:store_storeTempToken(...)
- Lors du parsing, stocke les tokens en base temporaire de learning  
- ajoute devant son type (tag, word, biword ou domaine) 
- ne compte pas les tokens (lors du learning un token n'est compte qu'une seule fois par page)

7) store.c:store_storeAll(...)
- parse tous les elements de la base de donnees temporaire
- appelle store_storeToken(...) au fur et a mesure
- supprime les tokens de la base temporaire au fur et a mesure

8) store.c:store_storeToken
- code le score du token en hexadecimal 
- stocke le token en base permanente en incrementant son score si il est deja present

SCORING
6) score.c:score_storeToken(...)
- Stoke un token en base temporaire de scoring, 
- ajoute devant son type (tag, word, biword ou domaine)
- prend en compte le nombre d'apparitions du token dans la page

7) score.c:score_getProbability()
- parse la base temporaire
- calcule les scores individuels de chaque token
- suivant le niveau de verbose stocke des donnees et les affiche en les traitant (triRapide(...))
- appelle score_getChi2(...)
- en fin de traitement affiche le resultat trouve
