fb:porticula NoPaste
Noch ein Interpreter (Vorlage)
Uploader: | AndT |
Datum/Zeit: | 27.11.2007 13:44:38 |
' Vorlage zum Interpreterbau (stabil)
' Zum Programmieren muss eine eine prog.txt erstellt werden wo dann der Quellcode reingeschrieben wird.
' _____ Programmintern(erforderlich)_____
' Declarationen
dim as integer runs,dummy
const prgfile = "prog.txt" ' Datei zum Ausführen
' Function für ConsolenPrint
sub consprint (byval Text as string)
dim as integer ff = freefile
open cons for output as #ff
print #ff,Text
close #ff
end sub
' _____ Anzahl der Zeilen scannen ____
Print "Zeilen :";
open prgfile for input as #1
do
input #1,dummy
runs+=1
loop until eof (1)
close #1
print runs
Print "Code Laden.."
open prgfile for input as #1
dim shared as string cfgcode(runs) ' Programmcodespeicher Declarieren
' ____ Programm Laden ____
open prgfile for input as #1
for i as integer = 1 to runs
input #1,cfgcode(i)
next
close #1
Print "Fertig."
' ____ Programm Ausführen ____
dim as string cmd
for i as integer = 1 to runs
cmd = lcase(cfgcode(i))
select case cmd
' Ab hier können Befehle eingetragen werden
' Syntax Befehl = CMD, cfgcode(nr) = Zeile in prog.txt
' Komplexere Befehle sind auch rein Theroetisch auch möglich.
case "res"
screenres val(cfgcode(i+1)),val(cfgcode(i+2))
case "pset"
pset(val(cfgcode(i+1)),val(cfgcode(i+2))),15
case "beep"
beep
case "echo"
print cfgcode(i+1)
case "exit"
exit for
case "goto"
i=val(cfgcode(i+1))
case "escrout"
if inkey = chr(27) then exit for
end select
NEXT
color 15
consprint "Programm beendet"
Print "--- END OF PROGRAM ---"
sleep