Eigene Programmiersprache machen? [ERLEDIGT]

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

mach du nur. Ist sowieso nicht meins. Bezweifel aber irgendwo, dass er
damit was anfangen kann :P.
Bild
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

Bild
AND51 hat geschrieben:...und ich würde dein Programm aus Wut zwei mal installieren, um eines genüsslicher löschen zu können, als das andere...
Benutzeravatar
Spirit
Beiträge: 174
Registriert: 13.04.2005 19:09

Beitrag von Spirit »

winduff hat geschrieben:http://data.eimex.de/Compiler_Bau.pdf

Bitte und viel Spaß :mrgreen:
Dankeschön! Nach so etwas suche ich schon seit langem. :D
DW

Beitrag von DW »

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:

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
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.
Antworten