fb:porticula NoPaste
Ein versuch eines kleinen Interpreter QScript
Uploader: | MB Interactive Labs |
Datum/Zeit: | 06.11.2010 19:06:16 |
'Scriptsprache Entwickeln (Interpreter der nur 3 Aufgaben besitzt)
'Was muss der Interpreter können ?
'1. Er muss das Script einlesen können.
'2. Auf fehler prüfen. ?
'3. anschliesend alles Ausführen.
'Wie könnte ein einfaches Script mit 7 Befehle aussehen?
'1. Endung der Datei ist QScript
'1.1 Q_CLS 'Bildschirm in einer farbe Löschen. zwei parameter VGF und HGF
'1.2 Q_SCR 'mit ein Wert, der die Bildschirmauflösung einstellt.bs: 800x600x32
'1.3 Q_CMM 'Komentare die der Interpreter Ignorieren darf.
'1.4 Q_KWT 'Auf tastendruck warten.
'1.5 Q_COL 'Zwei Parameter, die vodergrundfarbe und Hintergrundfarbe einstellt.
'1.6 Q_PRT 'ein Parameter, der ein einfachen Text ausgibt.
'1.7 Q_END 'zeigt den Interpreter an, das das Script fertig ist.
'Wie kann ich die QScript datei Laden ?
'1. datei öffen zum lesen
'2. den inhalt der datei in einer variabel abspeichern
Declare Function OpenQSC(Datei As String)As Integer
Dim Shared AS INTEGER f
Dim Shared As Integer HRes
HRes = OpenQSC("test.QSC")
If HRes = 0 Then
End
EndIf
Function OpenQSC(Datei As String)As Integer
dim text as string
Dim resText As String
Dim Vari1 As String
Dim Vari2 As String
f = FreeFile
Select CASE OPEN (Datei FOR INPUT AS #f)
Case 0
Print "Datei: "&Datei+" existiert und ist bereit."
'Datei ist da, nun muss sie Analysiert werden.
'do ReadLine(f) loop until eof(f)
Do
Input #f, text
'erste If frage Q_CMM
resText = Left(text,5)
If resText = "Q_CMM" Then
'Nix machen: Ignorieren den rest
'Print "Ein Komentar gefunden."
EndIf
If resText = "Q_CLS" Then
'Der CLS Befehl mit 2 Werten
Cls
EndIf
If resText = "Q_SCR" Then
'Screen auswerten
Vari1 = Mid(text,7)
If Vari1 = "800x600x32" Then
'Screenbefehl ausführen
ScreenRes 800,600,32
EndIf
EndIf
If resText = "Q_COL" Then
Vari1 = Mid(text,7,9)
Vari2 = Mid(text,10,12)
Color ValInt(Vari1), ValInt(Vari2)
EndIf
If resText = "Q_PRT" Then
Vari1 = Mid(text,7)
Print Vari1
EndIf
If resText = "Q_KWT" Then
Sleep
EndIf
If resText = "Q_END" Then
Return 0
EndIf
Loop Until Eof(f)
Sleep
Close #f
Return 1
Case 2
Print "Datei existiert nicht!"
Return 0
Case ELSE
Print "Fehler beim Öffnen der Datei!"
Return 0
End Select
Return 0
End Function