Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 10.07.2007, 19:07 Titel: EasyBasic - Meine Scriptsprache |
|
|
Dies ist mein neustes Projekt.
EasyBasic ist eine Scriptsprache welche einfach nur so aus langeweile geschrieben wurde xD.
Sie ähnelt BASIC ab hat dennoch eine kleine änderung z.B:
Was
hieß ist jetzt einfach
das gleiche gildet auch mit andreren Befehlen wie goto, screen usw.
Allerdings ist das Programm nicht dazu in der lage eigene Selbständige Programme zu erzeigen, was den Nachteil hat, das der Complier (EBC) ständig benötigt wird.
Also hier erst mal den Sourcecode
Erfolgreich getestet mit FB 0.18 CVS -lang fb
http://nopaste.freebasic.de/index.php?view=707 (EBC.exe)
und die
http://nopaste.freebasic.de/index.php?view=708 (EasyBasic.bi)
Dann noch ein paar Beispiele:
Code: |
setwert 1
wert 3
+
1
locate
1
1
printwert
3
goto
1
|
und
Code: |
screen
18
title
Demo
32bitcol
rgb
255
64
0
line
0
0
255
255
sleep
-1
|
_________________ Bis irgendwann...
Zuletzt bearbeitet von AndT am 03.12.2007, 12:37, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 10.07.2007, 19:40 Titel: Re: EasyBasic - Meine Programmierspache |
|
|
AndT hat Folgendes geschrieben: | Allerdings ist das Programm nicht dazu in der lage eigene Selbständige Programme zu erzeigen, was den Nachteil hat, das der Complier (EBC) ständig benötigt wird.
|
Dann ist das eine [u]interpretersprache[/i]
nix compiler _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 10.07.2007, 20:46 Titel: |
|
|
Und so wie's ausschaut, ist da FB für einen Anfänger doch irgendwie übersichtlicher. (Da das, was zusammengehört, auch in einer Zeile zusammengefasst wird.)
Trotzdem ganz nett geworden, vllt. wird ja noch ein richtig schöner Scriptsprachen-Interpreter draus. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.07.2007, 21:36 Titel: |
|
|
was anfänger eher verwirrt als hilft: du haltest nicht konsequent eine sprache durch. FreeBASIC z.B. ist durchgehend englisch, während man als außensteher sich wohl erstmal gedanken machen muss, was "setwert" ist... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 11.07.2007, 10:07 Titel: |
|
|
Oops Version 1.0 hat auch noch einen kleinen Bug hält, der den Interpreter zum Absturtz bringen kann..
Natürlich muss
Code: |
if cmds>maximalcode then print "Der Code ist zu Complex!":pause:system |
vor
Code: |
input #1,code(cmds) |
stehen aber nicht dahinter xD.
Natürlich will ich verraten wie der Bug ohne den Patch auszulösen ist:
1.1 wird da schon ausgereifter
Neu wird sein:
Maussuport z.B
Code: | ' Zählt ab 0 hoch
' Nur etwas (messbar) schneller als FB xD
dim as integer zahl
DO
asm
mov ebx, [zahl] ' Bringt die Zahl ins Register ebx, damit ASM was damit anfangen kann.
add ebx, 1 ' Addiert ebx um 1
mov [zahl], ebx 'Bringt ebx wieder nach "Zahl" ;)
end asm
print zahl
loop until inkey=chr(27)
|
///
Noch ein Edit:
Ich hab beschlossen alle Befehle die in der EasyBasic.bi sind in Asm umzucoden und dadurch einen netten Geschwindigkeitvorteil zu bekommen, besonders was Berechungen angeht . _________________ Bis irgendwann... |
|
Nach oben |
|
|
csde_rats
Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 11.07.2007, 15:47 Titel: |
|
|
Wenn man Teilfunktionen auf ASM auslagert, schon.
Allerdings (auch wenn FB afaik nicht großartig optimiert) wird der Unterschied auf keinen Fall spürbar sein und messbar nur unrelevant. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 11.07.2007, 16:10 Titel: |
|
|
Naja egal ich überarbeite jetzt den Code und mache ihen auchnoch OpenGL und DirectX fähig ohne das die DLLs benötigt werden wenn mann sowas nicht braucht _________________ Bis irgendwann... |
|
Nach oben |
|
|
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 28.11.2007, 16:04 Titel: |
|
|
Ich habe die Scriptengine komplett überarbeitet.
Hier schon einmal ein kleiner vorgeschmack..
Zurzeit wird noch der Befehlssatz ausgearbeitet
Code: |
' EasyBasicEngine V2 beta
' Zum Programmieren muss eine eine prog.txt erstellt werden wo dann der Quellcode reingeschrieben wird.
' _____ Programmintern(erforderlich)_____
Print "EasyBasicScriptEngine V 0.2 beta"
Print "Initalizing Programm.."
#define debug 0
#if(debug=1)
print "it works"
sleep
end
#endif
' 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 ubyte char,cmpbol
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 "screen"
screen val(cfgcode(i+1))
case "full_circle"
circle (val(cfgcode(i+1)),val(cfgcode(i+2))),val(cfgcode(i+3)),val(cfgcode(i+4)),,,,F
case "circle"
circle (val(cfgcode(i+1)),val(cfgcode(i+2))),val(cfgcode(i+3)),val(cfgcode(i+4))
case "full_line"
line(val(cfgcode(i+1)),val(cfgcode(i+2)))-(val(cfgcode(i+3)),val(cfgcode(i+4))),val(cfgcode(i+5)),bf
case "line"
line(val(cfgcode(i+1)),val(cfgcode(i+2)))-(val(cfgcode(i+3)),val(cfgcode(i+4))),val(cfgcode(i+5))
end select
NEXT
color 15
consprint "Programm beendet"
Print "--- END OF PROGRAM ---"
sleep
|
Und eine kleine prog.txt als Beispiel:
Code: | screen
18
full_line
100
100
120
120
15
full_line
150
150
200
200
4
full_line
120
120
150
150
14
line
1
1
200
200
13
|
_________________ Bis irgendwann... |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 28.11.2007, 16:13 Titel: |
|
|
weißt du, was BASIC ist...?
http://de.wikipedia.org/wiki/BASIC _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 28.11.2007, 16:26 Titel: |
|
|
Dann ist eben EB eine experimentelle Sprache für sich und fertig xD
Da ich massive probleme mit tokenizing habe. Hab ich mich dafür entschieden das dingen ganz wegzulassen .(Also parameter untereinander statt nebeneinander.) _________________ Bis irgendwann... |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 28.11.2007, 17:23 Titel: |
|
|
wenn du das nicht kannst, solltest du es IMHO gleich lassen. allein schon, weil das teil komplett instabil läuft (sehe auf den ersten blick mehrere möglichkeiten, einen buffer overflow zu erzeugen)... Wann lernst du, richtig zu coden? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.11.2007, 18:21 Titel: |
|
|
Warum "Open Cons For Output" statt einem einfachen Print? oO
Ich weiß nicht, warum jmd. alle Parameter umständlich untereinander schreiben wöllte?
Ich sag nicht, dass ich es gut kann, aber dann belass ich's bei privaten Versuchen und posaune sowas nicht hinaus. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 28.11.2007, 20:53 Titel: |
|
|
Zitat: |
Eine Sprache wird nie schneller, als die Sprache in der sie geschrieben ist.
|
er meinte ja auch umcoden, dann wird es schneller weil ja freebasic auch c-routinen in asm umsetzt und er kurzen knackigen asm-code schreibt. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.11.2007, 20:59 Titel: |
|
|
Der letztendlich dann doch wieder vom FBC begrenzt wird. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
helium
Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 28.11.2007, 21:37 Titel: |
|
|
Zitat: | Eine Sprache wird nie schneller, als die Sprache in der sie geschrieben ist. |
Wie kann denn eine Sprache schnell sein?
Mao hat Folgendes geschrieben: | Der letztendlich dann doch wieder vom FBC begrenzt wird. |
Was wird vom FBC begrenzt? _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
|
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 28.11.2007, 22:59 Titel: |
|
|
Die Ausführungsgeschwindigkeit.
Wenn der Compiler nur bis zu einer gewissen Grenze optimiert, kann es nicht schneller gehen, wenn es sich hier nur um einen banalen Interpreter handelt. _________________ Eine handvoll Glück reicht nie für zwei.
--
|
|
Nach oben |
|
|
Paul aka ICC, HV-Freak
Anmeldungsdatum: 11.09.2004 Beiträge: 588 Wohnort: Uelzen
|
Verfasst am: 29.11.2007, 11:27 Titel: |
|
|
Mal mein Statement dazu:
Das ist total bescheuert, alle Parameter in ne eigene Zeile schreiben zu müssen!
Nur weil du zu faul bist, nen ordentlichen Parser zu bauen
Gruß,
Paul _________________
|
|
Nach oben |
|
|
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 29.11.2007, 11:33 Titel: |
|
|
Inzwischen hat mein Interpreter schon 48 Befehle auf Lager und ist immernoch schnell genug um nicht die CPU auszulasten .
Der Code hat schon jetzt die 640 Zeilen Marke geknackt (erst gestern angefangen)
Und das häftigste ist, das das prog was die FBC ausspuckt schon 136kb gross ist xD.
Den Parser kann man ja später noch einbauen. Es geht mir zurzeit darum, das as Programm auch was auf den Kasten hat
Dazu müsste einfach nur der Teil 'Programm laden' etwas umgeschrieben werden.
Ich bin ja mal nicht so.. Hier ein blick auf den alten Code:
http://www.freebasic-portal.de/index.php?s=fbporticula&mode=show&id=304 _________________ Bis irgendwann... |
|
Nach oben |
|
|
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 29.11.2007, 12:17 Titel: |
|
|
warum lasst ihr ihn nicht basteln und kritisiert alles kaputt. ich finde dieses projekt zu erstellen ist eine gute fleissarbeit.
wer hat schon so etwas auf der pfanne. |
|
Nach oben |
|
|
|