mach du nur. Ist sowieso nicht meins. Bezweifel aber irgendwo, dass er
damit was anfangen kann :P.
Eigene Programmiersprache machen? [ERLEDIGT]
Ich arbeite auch an einer Scriptsprache, oder Interpretierer:
http://www.purebasic.fr/german/viewtopi ... 778#107778
in BB.
Die einzigen Funktionen, die man eigentlich für einen parser braucht, sind :
Schleifen
Entscheidungen
File System
Stringfunktionen
Ich gebe mal ein BEispiel für eine If Entscheidung in BB:
Was da passiert? lin$ ist eine Variable, indem ein string mit readline gespeichert ist. Nun, mit dem for next Befehl geh ich jeden Buchstaben der line durch. Wenn nun ein Wort namens "if(" inder line auftaucht, so...und so weiter. Mehr ist da erstmal nicht.
http://www.purebasic.fr/german/viewtopi ... 778#107778
in BB.
Die einzigen Funktionen, die man eigentlich für einen parser braucht, sind :
Schleifen
Entscheidungen
File System
Stringfunktionen
Ich gebe mal ein BEispiel für eine If Entscheidung in BB:
Code: Alles auswählen
For a=1 To Len(lin$)
If Mid(lin$,a,3)="if(" Then
pl.pl=New pl
Repeat
pl\p=pl\p+1
Until Mid(lin$,a+3+pl\p,2)="==" Or Mid(lin$,a+3+pl\p,2)="!=" Or Mid(lin$,a+3+pl\p,2)=">>" Or Mid(lin$,a+3+pl\p,2)="<<" Or Mid(lin$,a+3+pl\p,2)="<=" Or Mid(lin$,a+3+pl\p,2)=">="
op$=Mid(lin$,a+3+pl\p,2)
Repeat
pl\p1=pl\p1+1
Until Mid(lin$,a+3+pl\p+pl\p1,2)="){"
If Mid(lin$,a+3,1)="$" Then
For var.var=Each var
If var\n$=Mid(lin$,a+1+3,pl\p-1) Then value$=var\v$
Next
Else
value$=Mid(lin$,a+3,pl\p)
EndIf
If Mid(lin$,a+3+pl\p+2,1)="$" Then
For var.var=Each var
If var\n$=Mid(lin$,a+3+pl\p+2+1,pl\p1-3) Then value1$=var\v$
Next
Else
value1$=Mid(lin$,a+3+pl\p+2,pl\p1-2)
EndIf
If op$="==" Then
If(value$=value1$) Then
Repeat
linif$=ReadLine(file)
For a=1 To Len(linif$)
commands(linif$,num,pname$,filn$)
Next
Until linif$="}"
Else
Repeat
linif$=ReadLine(file)
Until linif$="}"
EndIf
ElseIf op$="!="
If(value$<>value1$) Then
Repeat
linif$=ReadLine(file)
For a=1 To Len(linif$)
commands(linif$,num,pname$,filn$)
Next
Until linif$="}"
Else
Repeat
linif$=ReadLine(file)
Until linif$="}"
EndIf
ElseIf op$=">>"
If(value$>value1$) Then
Repeat
linif$=ReadLine(file)
For a=1 To Len(linif$)
commands(linif$,num,pname$,filn$)
Next
Until linif$="}"
Else
Repeat
linif$=ReadLine(file)
Until linif$="}"
EndIf
ElseIf op$="<<"
If(value$<value1$) Then
Repeat
linif$=ReadLine(file)
For a=1 To Len(linif$)
commands(linif$,num,pname$,filn$)
Next
Until linif$="}"
Else
Repeat
linif$=ReadLine(file)
Until linif$="}"
EndIf
ElseIf op$="<="
If(value$<=value1$) Then
Repeat
linif$=ReadLine(file)
For a=1 To Len(linif$)
commands(linif$,num,pname$,filn$)
Next
Until linif$="}"
Else
Repeat
linif$=ReadLine(file)
Until linif$="}"
EndIf
ElseIf op$=">="
If(value$>=value1$) Then
Repeat
linif$=ReadLine(file)
For a=1 To Len(linif$)
commands(linif$,num,pname$,filn$)
Next
Until linif$="}"
Else
Repeat
linif$=ReadLine(file)
Until linif$="}"
EndIf
EndIf
EndIf
next