Dobro a écrit :et ton system ça marche ?
oui

mais j'ai pas encore implémenté la gestion des expressions
Dobro a écrit :tu peux mettre un exemple ?

le code :
Code : Tout sélectionner
; DEBUG : en attendant mieux !
code(0) = "Let pouet = 3"
code(1) = "Print Entrez la valeur de B : "
code(2) = "Get B"
code(3) = "While B = 1"
code(4) = "PrintN ceci est un bug : B"
code(5) = "Wend"
code(6) = "PrintN blablabla"
code(7) = "Get c"
; END
Et la fonction :
Code : Tout sélectionner
; exécution !
Procedure.l Exec(start.l)
Shared code()
current.l = start
While current < 500
line.s = code(current)
Select(StringField(line.s,1," "))
Case "Let"
vname.s = StringField(line.s,2," ")
vvalue.s = ""
If FindString(line,"=",1)
k.l = 3
While StringField(line,k," ") <> "="
k+1
Wend
k+1
While StringField(line,k," ") = ""
k+1
Wend
vvalue = StringField(line,k-1," ")
If VarExists(vvalue)
vvalue = GetVarValue(vvalue)
EndIf
EndIf
AddVar(vname,vvalue)
Case "Print"
k.l = 2
While StringField(line,k," ")
vvalue = StringField(line,k," ")
If VarExists(vvalue)
vvalue = GetVarValue(vvalue)
EndIf
Print(vvalue)
Print(" ")
k+1
Wend
Case "PrintN"
k.l = 2
While StringField(line,k," ")
vvalue = StringField(line,k," ")
If VarExists(vvalue)
vvalue = GetVarValue(vvalue)
EndIf
Print(vvalue)
Print(" ")
k+1
Wend
PrintN("")
Case "Get"
vname.s = StringField(line,2," ")
vvalue.s = Input()
AddVar(vname,vvalue)
Case "If"
If IsTrue(Right(line,FindString(line," ",1)))
current = Exec(current+1)
Else
pile.l = 0
current+1
While code(current) <> "EndIf" Or pile > 0
If Left(code(current),2) = "If"
pile+1
ElseIf Left(code(current),5) = "EndIf"
pile-1
EndIf
current+1
Wend
EndIf
Case "EndIf"
ProcedureReturn current
Case "While"
If IsTrue(Right(line,FindString(line," ",1)))
Exec(current+1)
current-1
Else
pile.l = 0
current+1
While code(current) <> "Wend" Or pile > 0
If Left(code(current),5) = "While"
pile+1
ElseIf Left(code(current),4) = "Wend"
pile-1
EndIf
current+1
Wend
EndIf
Case "Wend"
ProcedureReturn
EndSelect
current+1
Wend
EndProcedure
suffit de l'appeller en mettant "0" en paramètre pour la lancer.
++