Page 5 sur 8

Re: Interpreteur

Publié : mar. 18/janv./2011 16:45
par SPH
dayvid a écrit :Pardon je n'est pas compris ?
De l'ail, ca repousse les vampire. Mais quand on a mal, on dit "aie"

Re: Interpreteur

Publié : mar. 18/janv./2011 17:30
par dayvid
Ah oui lol, pas fait expres :lol:

Bon sinon que fait t-on SPH ?

Re: Interpreteur

Publié : mar. 18/janv./2011 17:45
par SPH
dayvid a écrit :Bon sinon que fait t-on SPH ?
On ! Peut etre que TU devrais deja nous proposer une synthese de tout ce que tu as fait, non ?

Re: Interpreteur

Publié : mar. 18/janv./2011 21:31
par Warkering
Par exemple, tu nous poste le bout "principal" de ton code, et tu nous démontre un peu comment il fonctionne. :o

Re: Interpreteur

Publié : mer. 19/janv./2011 16:11
par dayvid
Ouais cool, sa marche, je vais vous faire sa, je vais travailler petit a petit, pour le momment je me suis pencher yier sur un problème
comment reperer un mot clée avec des espace:

Code : Tout sélectionner

Procedure.s EnleverlesAccents(Chaine$)
  Chaine$ = ReplaceString(Chaine$, "Œ", "OE")
  Chaine$ = ReplaceString(Chaine$, "æ", "ae")
  Chaine$ = ReplaceString(Chaine$, "œ", "oe")
  Chaine$ = ReplaceString(Chaine$, "µ", "u")
  Chaine$ = ReplaceString(Chaine$, "Ÿ", "Y")
  Chaine$ = ReplaceString(Chaine$, "À", "A")
  Chaine$ = ReplaceString(Chaine$, "Á", "A")
  Chaine$ = ReplaceString(Chaine$, "Â", "A")
  Chaine$ = ReplaceString(Chaine$, "Ã", "A")
  Chaine$ = ReplaceString(Chaine$, "Ä", "A")
  Chaine$ = ReplaceString(Chaine$, "Å", "A")
  Chaine$ = ReplaceString(Chaine$, "Æ", "AE")
  Chaine$ = ReplaceString(Chaine$, "Ç", "C")
  Chaine$ = ReplaceString(Chaine$, "È", "E")
  Chaine$ = ReplaceString(Chaine$, "É", "E")
  Chaine$ = ReplaceString(Chaine$, "Ê", "E")
  Chaine$ = ReplaceString(Chaine$, "Ë", "E")
  Chaine$ = ReplaceString(Chaine$, "Ì", "I")
  Chaine$ = ReplaceString(Chaine$, "Í", "I")
  Chaine$ = ReplaceString(Chaine$, "Î", "I")
  Chaine$ = ReplaceString(Chaine$, "Ï", "I")
  Chaine$ = ReplaceString(Chaine$, "Ò", "O")
  Chaine$ = ReplaceString(Chaine$, "Ó", "O")
  Chaine$ = ReplaceString(Chaine$, "Ô", "O")
  Chaine$ = ReplaceString(Chaine$, "Ö", "O")
  Chaine$ = ReplaceString(Chaine$, "Ù", "U")
  Chaine$ = ReplaceString(Chaine$, "Ú", "U")
  Chaine$ = ReplaceString(Chaine$, "Û", "U")
  Chaine$ = ReplaceString(Chaine$, "Ü", "U")
  Chaine$ = ReplaceString(Chaine$, "Ý", "Y")
  Chaine$ = ReplaceString(Chaine$, "Þ", "P")
  Chaine$ = ReplaceString(Chaine$, "ß", "B")
  Chaine$ = ReplaceString(Chaine$, "à", "a")
  Chaine$ = ReplaceString(Chaine$, "á", "a")
  Chaine$ = ReplaceString(Chaine$, "â", "a")
  Chaine$ = ReplaceString(Chaine$, "ä", "a")
  Chaine$ = ReplaceString(Chaine$, "å", "a")
  Chaine$ = ReplaceString(Chaine$, "ç", "c")
  Chaine$ = ReplaceString(Chaine$, "è", "e")
  Chaine$ = ReplaceString(Chaine$, "é", "e")
  Chaine$ = ReplaceString(Chaine$, "ê", "e")
  Chaine$ = ReplaceString(Chaine$, "ë", "e")
  Chaine$ = ReplaceString(Chaine$, "ì", "i")
  Chaine$ = ReplaceString(Chaine$, "í", "i")
  Chaine$ = ReplaceString(Chaine$, "î", "i")
  Chaine$ = ReplaceString(Chaine$, "ï", "i")
  Chaine$ = ReplaceString(Chaine$, "ò", "o")
  Chaine$ = ReplaceString(Chaine$, "ó", "o")
  Chaine$ = ReplaceString(Chaine$, "ô", "o")
  Chaine$ = ReplaceString(Chaine$, "ö", "o")
  Chaine$ = ReplaceString(Chaine$, "ù", "u")
  Chaine$ = ReplaceString(Chaine$, "ú", "u")
  Chaine$ = ReplaceString(Chaine$, "û", "u")
  Chaine$ = ReplaceString(Chaine$, "ü", "u")
  Chaine$ = ReplaceString(Chaine$, "ý", "y")
  Chaine$ = ReplaceString(Chaine$, "þ", "p")
  Chaine$ = ReplaceString(Chaine$, "ÿ", "y")
  
  ProcedureReturn Chaine$
EndProcedure

Ligne_de_code$ = "            Définir             Ma             Variable       [             La              vache             ]           Comme              Nombre              Qui              Est              =              à              {             150             }	                  "
For Position_depart = 1 To Len(Ligne_de_code$)
  
  Caractere$ = Mid(Ligne_de_code$, Position_depart, 1)
  Valeur_ASCII = Asc(Caractere$)
  
  Select Valeur_ASCII
      
    Case 0 To 32
      ; on igniore le caractère
      
    Default
      
      ; on prend en compte tous les caractères qui vont suivre jusqu'à une tabulation ou un espace
      
      Repeat
        Caractere$ = Mid(Ligne_de_code$, Position_depart, 1)
        Valeur_ASCII = Asc(Caractere$)
        
        Select Valeur_ASCII
            
          Case 0 To 32
            ; on igniore le caractère
            
          Default
            Mot$ + Caractere$
        EndSelect
        
        Position_depart + 1
      Until Caractere$ = Chr(9) Or Caractere$ = Chr(32) Or Caractere$ = "" ; tabulation ou espace ou rien
      
      Mot_clee$ + Mot$
      Mot$ = ""
  EndSelect
  
  Mot_clee$ = EnleverlesAccents(Mot_clee$)
  Mot_clee$ = LCase(Mot_clee$)
  
  If Mot_clee$ = "definirmavariable"
    Debug Mot_clee$
    Break
  EndIf
  
  
Next
Ici il sagie en faite de capturer le mot clée "Définir Ma Variable"

Oui mais pas n'importe comment car il faut bien que les mots soit correcte car par exemple:

"D é f i n i r M a V a r i a b l e" ne marchera pas
"D éfinir Ma Variable" non plus
" Définir Ma Variable [abc] Comme Vide " ici marche et capturera juste le mot clée "Définir Ma Variable"

Que penssez vous de ceci, c'est pas mal déja pour un début :D

Re: Interpreteur

Publié : mer. 19/janv./2011 17:16
par SPH
On va dire que c'est ok, bien qu'on pourrait forcer le programmeur a le pas faire d'erreurs.
Donc, on arrive a definir l'instruction.

Mais suppose que tu veuilles faire a$="épée". Tu te retrouves pour l'instant à a$="epee" non ?

Continuons. :mrgreen:

Re: Interpreteur

Publié : mer. 19/janv./2011 17:54
par dayvid
Déja sa c'est faut xce que tu fait, regarde mon éxemple pour voir de quoi je parle sur les variable mon cher amis

Re: Interpreteur

Publié : mer. 19/janv./2011 22:30
par SPH
dayvid a écrit :Déja sa c'est faut xce que tu fait, regarde mon éxemple pour voir de quoi je parle sur les variable mon cher amis
OK. Ensuite :o

Re: Interpreteur

Publié : jeu. 20/janv./2011 8:06
par Warkering
Il faudrait que EnlevenLesAccents(Ou quelque chose du genre) ne touche pas aux chaînes.

Re: Interpreteur

Publié : ven. 21/janv./2011 17:01
par dayvid
Tu veut dire ne la modifie pas c'est ça ?
Pourquoi dit-moi, en quoi c'est génant :)

Dit moi ce que tu veut que je face
Aller, dit moi tous mon ami, je suis tout'oui :D

Re: Interpreteur

Publié : ven. 21/janv./2011 17:23
par SPH
On veux que tu reussisses a faire une instruction comme a$="chaine" et on te montrera ou il y aura une erreur :idea:

Re: Interpreteur

Publié : ven. 21/janv./2011 17:30
par dayvid
Mais pour quoi faire puisque c'est pas ce que je veut faire moi

Moi je veut faire:

Défiri Ma Variable [ une variable ] Comme *

* Vide, Texte, Nombre

Puis:

Ma Variable [ une variable ] est = à *

* {"une chaine"} ou {100}

Vous avez pas lus ou quoi ?! :lol:

Re: Interpreteur

Publié : ven. 21/janv./2011 20:19
par SPH
dayvid a écrit :Mais pour quoi faire puisque c'est pas ce que je veut faire moi

Moi je veut faire:

Défiri Ma Variable [ une variable ] Comme *

* Vide, Texte, Nombre

Puis:

Ma Variable [ une variable ] est = à *

* {"une chaine"} ou {100}

Vous avez pas lus ou quoi ?! :lol:
Tu veux faire :
a.l
b.s
?
Ok ok, commencons par ca.

Re: Interpreteur

Publié : ven. 21/janv./2011 22:00
par Ar-S
J'ai pas trop suivi mais m'entrainant aux "expressions régulières", je me dit que cela doit correspondre à ce que j'ai lu plus haut.
Pour l'exemple de "définir ma variable"

Tu peux trouver combien de fois cette expression a été utilisée dans un texte, et cela même si elle est écrit une fois
en majuscule, une fois sans accent, une fois avec des espaces en trop...

Du code vaut mieux qu'un long discours. Cette exemple ne s'applique que pour cette suite de mot "Définir ma variable"
Lancez le avec le debug

Code : Tout sélectionner

; Exemple d'extraction de mots avec tolérance
; utilisant les expressions régulières
; Par Ar-S / janvier 2010 - P.B 4.51

; Texte exemple contenant "Définir Ma Variable" marqué 3 fois de façon différentes (accent, espace, majuscule..)
t$="Définir Ma Variable est une expression qui Definir Mes Variables en poussant le vice de mettre des espaces pour D é f i n i r  M a  V a r i a b l e et la"
t$+"même sans accent avec des espaces inégaux : d e f i n i r  m a  Va riabl e." 


;-////////////////////////////////////////////////////////////////////////////////////////
; Cette expression permet de chercher la suite de mot :" Définir Ma Variable "
; la suite peut être trouvée avec ou sans majuscule ou accent. 
; même si l'espacement diffère entre les lettres, ça marche ^^.
expr$="[Dd][ ]*[EÉée][ ]?([a-zA-Z][ ]*){5}[ ]*[mM][ ]*a[ ]*[Vv][ ]*([a-zA-Z][ ]*){7}" ; formule magique by Ar-S ;) /
;-////////////////////////////////////////////////////////////////////////////////////////

Dim result$(0)
If CreateRegularExpression(0,expr$)
  
  NbrMots = ExtractRegularExpression(0, t$ , result$()) ;Compte les resultat et les place dans result()
  
  If NbrMots>0
    message$="'Définir Ma Variable' a été trouvé "+ Str(NbrMots) +" fois."
    Resultat$+message$
    Debug message$
    Debug " "

    For k = 0 To NbrMots-1
      Terme$=result$(k)
      Debug "Terme "+Str(k+1)+" : "+Terme$
    Next 
 
  Else
    message$= "Aucun lien n'a été trouvé :'( "
    Debug message$
  EndIf

Else
   Debug RegularExpressionError()
EndIf



Re: Interpreteur

Publié : sam. 22/janv./2011 11:04
par SPH
Haaaa, je ne connaissais pas CreateRegularExpression(0,expr$) :!: