PsC reloaded
soo still? nein nein das täuscht..

die letzten tage wars augenscheinlich sehr still um psc was aber nur bedingt stimmt..
nun ich hab nicht sehr viel gemacht aber war nicht faul.
der len,instr ,replace, chr, asc und const befehl wurde eingebaut..
werde vermutlich den anfang der woche mit verbringen den compiler nochmal etwas umzustellen, was aber nur für meine erleichterung dient..
ich habe mich am freitag schon etwas mit writefile
,writeline
und closefile
auseinandergesetzt jedoch bin ich dort noch zu keinem festern ergebniss gekommen. wobei datein wohl mein nächstes thema sein werden.
nun ich hab nicht sehr viel gemacht aber war nicht faul.
der len,instr ,replace, chr, asc und const befehl wurde eingebaut..
werde vermutlich den anfang der woche mit verbringen den compiler nochmal etwas umzustellen, was aber nur für meine erleichterung dient..
ich habe mich am freitag schon etwas mit writefile



Befehle über Befehle

Heute fand ich endlich die lust alle befehle mal nieder zu schreiben und etwas zu sortieren.
sound und netzwerk befehle sind noch nicht aufgefüht werde ich morgen aber nach editieren.
Bereits eingebaut
Als nächstes geplant
Noch nicht begonnen
hier mal alle befehle aufgelistet:
Zitat:
PsC.Entscheidungen
If, Else, ElseIf, EndIf
Select, Case, Default, EndSelect
PsC.Schleifen
While, Wend
For, Next
Repeat, Until
PsC.Zeit/Zufall
CreateTimer, FreeTimer, Waittimer
CurrentDate,CurrentTime
Delay, Millisec
Rand, Rnd
PsC.String
Asc, Chr, Instr, Left
Len, Lower, Mid, Replace
Right, Trim, Upper
PsC.Eingabe
FlushMouse, GetMouse, MouseHit
MouseX, MouseY, MouseXSpeed, MouseYSpeed
MouseZ, MouseZSpeed, SetMouse
FlushKey, GetKey
KeyDown, KeyHit, WaitKey
PsC.Dateien
ChangeDir, CloseDir, CloseFile, CopyFile
CreateDir, CurrentDir, DeleteDir, Eof
DeleteFile, ExecFile, FileSize, FileType
OpenFile, FilePos, MoreFiles, NextFile
CountBytes, ReadDir, Seekfile
WriteByte, ReadByte, WriteFile, ReadFile
WriteFloat, ReadFloat, WriteInt, ReadInt
WriteString, ReadString
PsC.OOP
After, Before, Delete, Each, EndType
Field, List, First, Handle, Insert
Last, New, Null, Object, Type
PsC.Grafik
BackBuffer, Cls, Color, Flip, Line, Oval
Rect, SetBuffer, Plot, LoadFont, Print
SetFont, Text, DrawBlock, DrawBlockRect
DrawImage, DrawImageRect, FreeImage
HandleImage, MidHandle, ImageHeight
ImageWidth, LoadImage, MaskImage, RectsOverlap
ImageRectCollide, ImageRectOverlap
ImageCollide, ImageOverlap
PsC.Sonstiges
Const, AppTitle, End, Break
Func, EndFunc, Return
Int, String, Float, Bool
True, False
soo wie ihr alle seht viele befehle...
ich werde versuchen diesen thread regelmäßig nach zu editieren das erkennbar bleibt wie weit psc nun im moment ist.
vorschläge zu den befehlen, lob kritik usw.. bitte als kommentar.
sound und netzwerk befehle sind noch nicht aufgefüht werde ich morgen aber nach editieren.
Bereits eingebaut
Als nächstes geplant
Noch nicht begonnen
hier mal alle befehle aufgelistet:
Zitat:
PsC.Entscheidungen
If, Else, ElseIf, EndIf
Select, Case, Default, EndSelect
PsC.Schleifen
While, Wend
For, Next
Repeat, Until
PsC.Zeit/Zufall
CreateTimer, FreeTimer, Waittimer
CurrentDate,CurrentTime
Delay, Millisec
Rand, Rnd
PsC.String
Asc, Chr, Instr, Left
Len, Lower, Mid, Replace
Right, Trim, Upper
PsC.Eingabe
FlushMouse, GetMouse, MouseHit
MouseX, MouseY, MouseXSpeed, MouseYSpeed
MouseZ, MouseZSpeed, SetMouse
FlushKey, GetKey
KeyDown, KeyHit, WaitKey
PsC.Dateien
ChangeDir, CloseDir, CloseFile, CopyFile
CreateDir, CurrentDir, DeleteDir, Eof
DeleteFile, ExecFile, FileSize, FileType
OpenFile, FilePos, MoreFiles, NextFile
CountBytes, ReadDir, Seekfile
WriteByte, ReadByte, WriteFile, ReadFile
WriteFloat, ReadFloat, WriteInt, ReadInt
WriteString, ReadString
PsC.OOP
After, Before, Delete, Each, EndType
Field, List, First, Handle, Insert
Last, New, Null, Object, Type
PsC.Grafik
BackBuffer, Cls, Color, Flip, Line, Oval
Rect, SetBuffer, Plot, LoadFont, Print
SetFont, Text, DrawBlock, DrawBlockRect
DrawImage, DrawImageRect, FreeImage
HandleImage, MidHandle, ImageHeight
ImageWidth, LoadImage, MaskImage, RectsOverlap
ImageRectCollide, ImageRectOverlap
ImageCollide, ImageOverlap
PsC.Sonstiges
Const, AppTitle, End, Break
Func, EndFunc, Return
Int, String, Float, Bool
True, False
soo wie ihr alle seht viele befehle...
ich werde versuchen diesen thread regelmäßig nach zu editieren das erkennbar bleibt wie weit psc nun im moment ist.
vorschläge zu den befehlen, lob kritik usw.. bitte als kommentar.
compiler V1 am laufen

sooo das we ist rum und der compiler tut nun auch was er soll.. folgende programme z.b. werden fehlerfrei übersetzt und funktionieren ohne probleme:
#1Code: [AUSKLAPPEN]
Int zahl=4
Int zahll=6
Int ergebnis
Float zahlll=3.14
String jaja="hallowelt"
bool test=0
print left(jaja,1)
print left(jaja,3)
print right(jaja,1)
print right(jaja,3)
print mid(jaja,3,3)
print mid(jaja,5,2)
Int c
While c<10
c++
If c>5
Print "groß"
ElseIf c==0
Print "nulll"
Else
Print "irgendwas"
EndIf
select c
Case 3
Print "c 3"
Break
Case 9
Print "c9"
break
Default
Print "c nix"
endselect
Wend
For(int y,0,4)
For(int x,0,4)
print x+y
Next
Next
Int f
int a
Repeat
f++
a=myfuncc(f,2)
Print a
Until f<10
End
int func myfunc(int f,int ff,int fff=3)
Return (f+ff)-fff
endfunc
int func myfuncc(int f,int ff)
Return f*ff
endfunc
int func myfunccc(int fff=3)
Return fff
endfunc
#2Code: [AUSKLAPPEN]
int b=4
int c=2
print mal(2,4)
waitkey
End
int func mal(int lh,int rh)
return lh*rh
endfunc
#3Code: [AUSKLAPPEN]
int b=4
int c=2
string lol=" welt"
print mal(2,4)
print "hallo"+lol
waitkey
End
int func mal(int lh,int rh)
return lh*rh
endfunc
und die compile zeiten dafür liegen:
#1:243ms
#2:39ms
#3:47ms
nunja für diese kurzen programme eventuell nicht grad die rekord zeiten aber hab auch noch keinerlei gedanken an die optimierung verschwendet.. bin ja shcon froh das der source einigermaßen gut auskommentiert ist..
als zwischencode verwende ich nun c++(wobei ich meißt prozedural arbeite und oop nur im notfall verwende..) später wird sich das evtl noch ändern.. der compiler ist im moment so aufgebaut das sich psc funktionen sehr leich verändern lassen..
sooo die nächsten tage werd ich mich dran machen eine keyword liste zu schreiben und diese auch möglichst vollständig in psc zu integrieren..
fragen kritik lob usw wie immer gerne gesehen als kommentar(über beispielprogramme in psc freu ich mich natürlich auch somit kann ich den compiler gleich mal testen)
so viel zu heute.. naja screen? muss ned sein oder? alle wissen ja wie die "cmd" aussieht
#1Code: [AUSKLAPPEN]
Int zahl=4
Int zahll=6
Int ergebnis
Float zahlll=3.14
String jaja="hallowelt"
bool test=0
print left(jaja,1)
print left(jaja,3)
print right(jaja,1)
print right(jaja,3)
print mid(jaja,3,3)
print mid(jaja,5,2)
Int c
While c<10
c++
If c>5
Print "groß"
ElseIf c==0
Print "nulll"
Else
Print "irgendwas"
EndIf
select c
Case 3
Print "c 3"
Break
Case 9
Print "c9"
break
Default
Print "c nix"
endselect
Wend
For(int y,0,4)
For(int x,0,4)
print x+y
Next
Next
Int f
int a
Repeat
f++
a=myfuncc(f,2)
Print a
Until f<10
End
int func myfunc(int f,int ff,int fff=3)
Return (f+ff)-fff
endfunc
int func myfuncc(int f,int ff)
Return f*ff
endfunc
int func myfunccc(int fff=3)
Return fff
endfunc
#2Code: [AUSKLAPPEN]
int b=4
int c=2
print mal(2,4)
waitkey
End
int func mal(int lh,int rh)
return lh*rh
endfunc
#3Code: [AUSKLAPPEN]
int b=4
int c=2
string lol=" welt"
print mal(2,4)
print "hallo"+lol
waitkey
End
int func mal(int lh,int rh)
return lh*rh
endfunc
und die compile zeiten dafür liegen:
#1:243ms
#2:39ms
#3:47ms
nunja für diese kurzen programme eventuell nicht grad die rekord zeiten aber hab auch noch keinerlei gedanken an die optimierung verschwendet.. bin ja shcon froh das der source einigermaßen gut auskommentiert ist..
als zwischencode verwende ich nun c++(wobei ich meißt prozedural arbeite und oop nur im notfall verwende..) später wird sich das evtl noch ändern.. der compiler ist im moment so aufgebaut das sich psc funktionen sehr leich verändern lassen..
sooo die nächsten tage werd ich mich dran machen eine keyword liste zu schreiben und diese auch möglichst vollständig in psc zu integrieren..
fragen kritik lob usw wie immer gerne gesehen als kommentar(über beispielprogramme in psc freu ich mich natürlich auch somit kann ich den compiler gleich mal testen)
so viel zu heute.. naja screen? muss ned sein oder? alle wissen ja wie die "cmd" aussieht

parser fertig

soo nach einigen kleinen bugs ist der parser nun fertig..
demnach wird das PsC-programm nun zuerst in tokens zerlegt, anschließend analysiert(alle tokens zuordenbar?.. funktionen... etc.)
nun steht die entscheidung an in WELCHE sprache psc nun als zwischencode kompilieren soll..
einige vorschläge anderer user leuchten mir ein hier kurz eine gegenüberstellung:
c:
vorteil: schnell
nachteil: kein oop
c++:
vorteil: OOP
nachteil: nicht so schnell wie c oder assembler
assembler:
vorteil: extrem schnell
nachteil: sehr lowlvl und daher schwer
nun was ich genau verwenden werde werd ich übers we entscheiden wärend ich eine befehlsliste und einen plan schreibe was im detail nun alles rein kommen soll/muss/könnte...
eure tipps oder vorschläge zur verwendeten "zwischensprache" BITTE per komment oder PM!!
demnach wird das PsC-programm nun zuerst in tokens zerlegt, anschließend analysiert(alle tokens zuordenbar?.. funktionen... etc.)
nun steht die entscheidung an in WELCHE sprache psc nun als zwischencode kompilieren soll..
einige vorschläge anderer user leuchten mir ein hier kurz eine gegenüberstellung:
c:
vorteil: schnell
nachteil: kein oop
c++:
vorteil: OOP
nachteil: nicht so schnell wie c oder assembler
assembler:
vorteil: extrem schnell
nachteil: sehr lowlvl und daher schwer
nun was ich genau verwenden werde werd ich übers we entscheiden wärend ich eine befehlsliste und einen plan schreibe was im detail nun alles rein kommen soll/muss/könnte...
eure tipps oder vorschläge zur verwendeten "zwischensprache" BITTE per komment oder PM!!
neuer parser

soo hab die letzten tage den neuen parser angefangen und bin zwar noch nicht so weit das ich ein fertiges programm ausgeben kann.. ABER.. der gesammte code wird nun sauber in tokens zerlegt und auf fehler überprüft..
hier ein beispiel(man beachte die leicht veränderte syntax)
Code: [AUSKLAPPEN]
wird in:
Code: [AUSKLAPPEN]
wie zu finden ist bei der ausgabe von strings noch ein kleines problem(print " ") wie es bei variablen aussieht mussi hc ncoh sehen jedoch bin ich recht zufrieden mit dem aktuellen ergebniss..
mitlerweile stehen 3 sprachen als zwischencode vor DER EXE zur debatte:
c++
c
assembler
wobei assembler zu 90% schon vor dem recall ausscheidet..
was ich alles mit c so anstellen kann muss ich erst noch rausfinden
dazu aber dann mehr wenn ich mir selber sicher bin
soviel zum aktuellen fortschritt..
an dieser stelle einen dank an coolo der mir be den anfängen des token-generators sehr geholfen hat!
hier ein beispiel(man beachte die leicht veränderte syntax)
Code: [AUSKLAPPEN]
Int zahl=4
Int zahll=6
Int ergebnis
Float zahlll=3.14
String jaja="hallowelt"
bool test=0
print left(jaja,1)
print left(jaja,3)
print right(jaja,1)
print right(jaja,3)
print mid(jaja,3,3)
print mid(jaja,5,2)
Int c
While c<10
c++
If c>5
Print "groß"
ElseIf c==0
Print "nulll"
Else
Print "irgendwas"
EndIf
select c
Case 3
Print "c 3"
Break
Case 9
Print "c9"
break
Default
Print "c nix"
endselect
Wend
For(int y,0,4)
For(int x,0,4)
print x+y
Next
Next
Int f
int a
Repeat
f++
a=myfuncc(f,2)
Print a
Until f<10
End
int func myfunc(int f,int ff,int fff=3)
Return (f+ff)-fff
endfunc
int func myfuncc(int f,int ff)
Return f*ff
endfunc
int func myfuncc(int fff=3)
Return fff
endfunc
Int zahll=6
Int ergebnis
Float zahlll=3.14
String jaja="hallowelt"
bool test=0
print left(jaja,1)
print left(jaja,3)
print right(jaja,1)
print right(jaja,3)
print mid(jaja,3,3)
print mid(jaja,5,2)
Int c
While c<10
c++
If c>5
Print "groß"
ElseIf c==0
Print "nulll"
Else
Print "irgendwas"
EndIf
select c
Case 3
Print "c 3"
Break
Case 9
Print "c9"
break
Default
Print "c nix"
endselect
Wend
For(int y,0,4)
For(int x,0,4)
print x+y
Next
Next
Int f
int a
Repeat
f++
a=myfuncc(f,2)
Print a
Until f<10
End
int func myfunc(int f,int ff,int fff=3)
Return (f+ff)-fff
endfunc
int func myfuncc(int f,int ff)
Return f*ff
endfunc
int func myfuncc(int fff=3)
Return fff
endfunc
wird in:
Code: [AUSKLAPPEN]
Befehl ::int
Variable::zahl
Operator::=
Zahl ::4
NONE::NEWLINE!!!
Befehl ::int
Variable::zahll
Operator::=
Zahl ::6
NONE::NEWLINE!!!
Befehl ::int
Variable::ergebnis
NONE::NEWLINE!!!
Befehl ::float
Variable::zahlll
Operator::=
Zahl ::3.14
NONE::NEWLINE!!!
Befehl ::string
Variable::jaja
Operator::=
Operator::"
String ::hallowelt
Operator::"
NONE::NEWLINE!!!
Befehl ::bool
Variable::test
Operator::=
Zahl ::0
NONE::NEWLINE!!!
Befehl ::print
Befehl ::left
Operator::(
Variable::jaja
Operator::,
Zahl ::1
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::left
Operator::(
Variable::jaja
Operator::,
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::right
Operator::(
Variable::jaja
Operator::,
Zahl ::1
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::right
Operator::(
Variable::jaja
Operator::,
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::mid
Operator::(
Variable::jaja
Operator::,
Zahl ::3
Operator::,
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::mid
Operator::(
Variable::jaja
Operator::,
Zahl ::5
Operator::,
Zahl ::2
Operator::)
NONE::NEWLINE!!!
Befehl ::int
Variable::c
NONE::NEWLINE!!!
Befehl ::while
Variable::c
Operator::<
Zahl ::10
NONE::NEWLINE!!!
Variable::c
Operator::+
Operator::+
NONE::NEWLINE!!!
Befehl ::if
Variable::c
Operator::>
Zahl ::5
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::groß
Operator::"
NONE::NEWLINE!!!
Befehl ::else
Befehl ::if
Variable::c
Operator::=
Operator::=
Zahl ::0
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::nulll
Operator::"
NONE::NEWLINE!!!
Befehl ::else
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::irgendwas
Operator::"
NONE::NEWLINE!!!
Befehl ::end
Befehl ::if
NONE::NEWLINE!!!
Befehl ::select
Variable::c
NONE::NEWLINE!!!
Befehl ::case
Zahl ::3
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
Zahl ::3
Operator::"
NONE::NEWLINE!!!
Befehl ::break
NONE::NEWLINE!!!
Befehl ::case
Zahl ::9
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
Zahl ::9
Operator::"
NONE::NEWLINE!!!
Befehl ::break
NONE::NEWLINE!!!
Befehl ::default
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::c nix
Operator::"
NONE::NEWLINE!!!
Befehl ::end
Befehl ::select
NONE::NEWLINE!!!
Befehl ::wend
NONE::NEWLINE!!!
Befehl ::for
Operator::(
Befehl ::int
Variable::y
Operator::,
Zahl ::0
Operator::,
Zahl ::4
Operator::)
NONE::NEWLINE!!!
Befehl ::for
Operator::(
Befehl ::int
Variable::x
Operator::,
Zahl ::0
Operator::,
Zahl ::4
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Variable::x
Operator::+
Variable::y
NONE::NEWLINE!!!
Befehl ::next
NONE::NEWLINE!!!
Befehl ::next
NONE::NEWLINE!!!
Befehl ::int
Variable::f
NONE::NEWLINE!!!
Befehl ::int
Variable::a
NONE::NEWLINE!!!
Befehl ::repeat
NONE::NEWLINE!!!
Variable::f
Operator::+
Operator::+
NONE::NEWLINE!!!
Variable::a
Operator::=
Funktion::myfuncc
Operator::(
Variable::f
Operator::,
Zahl ::2
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Variable::a
NONE::NEWLINE!!!
Befehl ::until
Variable::f
Operator::<
Zahl ::10
NONE::NEWLINE!!!
Befehl ::end
NONE::NEWLINE!!!
Befehl ::int
Befehl ::func
Function::myfunc
Operator::(
Befehl ::int
Variable::f
Operator::,
Befehl ::int
Variable::ff
Operator::,
Befehl ::int
Variable::fff
Operator::=
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::return
NOT detected::
Operator::(
Variable::f
Operator::+
Variable::ff
Operator::)
Operator::-
Variable::fff
NONE::NEWLINE!!!
Befehl ::end
Befehl ::func
NONE::NEWLINE!!!
Befehl ::int
Befehl ::func
Function::myfuncc
Operator::(
Befehl ::int
Variable::f
Operator::,
Befehl ::int
Variable::ff
Operator::)
NONE::NEWLINE!!!
Befehl ::return
Variable::f
Operator::*
Variable::ff
NONE::NEWLINE!!!
Befehl ::end
Befehl ::func
NONE::NEWLINE!!!
Befehl ::int
Befehl ::func
Function::myfuncc
Operator::(
Befehl ::int
Variable::fff
Operator::=
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::return
Variable::fff
NONE::NEWLINE!!!
Befehl ::end
Befehl ::func
NONE::NEWLINE!!!
Variable::zahl
Operator::=
Zahl ::4
NONE::NEWLINE!!!
Befehl ::int
Variable::zahll
Operator::=
Zahl ::6
NONE::NEWLINE!!!
Befehl ::int
Variable::ergebnis
NONE::NEWLINE!!!
Befehl ::float
Variable::zahlll
Operator::=
Zahl ::3.14
NONE::NEWLINE!!!
Befehl ::string
Variable::jaja
Operator::=
Operator::"
String ::hallowelt
Operator::"
NONE::NEWLINE!!!
Befehl ::bool
Variable::test
Operator::=
Zahl ::0
NONE::NEWLINE!!!
Befehl ::print
Befehl ::left
Operator::(
Variable::jaja
Operator::,
Zahl ::1
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::left
Operator::(
Variable::jaja
Operator::,
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::right
Operator::(
Variable::jaja
Operator::,
Zahl ::1
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::right
Operator::(
Variable::jaja
Operator::,
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::mid
Operator::(
Variable::jaja
Operator::,
Zahl ::3
Operator::,
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Befehl ::mid
Operator::(
Variable::jaja
Operator::,
Zahl ::5
Operator::,
Zahl ::2
Operator::)
NONE::NEWLINE!!!
Befehl ::int
Variable::c
NONE::NEWLINE!!!
Befehl ::while
Variable::c
Operator::<
Zahl ::10
NONE::NEWLINE!!!
Variable::c
Operator::+
Operator::+
NONE::NEWLINE!!!
Befehl ::if
Variable::c
Operator::>
Zahl ::5
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::groß
Operator::"
NONE::NEWLINE!!!
Befehl ::else
Befehl ::if
Variable::c
Operator::=
Operator::=
Zahl ::0
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::nulll
Operator::"
NONE::NEWLINE!!!
Befehl ::else
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::irgendwas
Operator::"
NONE::NEWLINE!!!
Befehl ::end
Befehl ::if
NONE::NEWLINE!!!
Befehl ::select
Variable::c
NONE::NEWLINE!!!
Befehl ::case
Zahl ::3
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
Zahl ::3
Operator::"
NONE::NEWLINE!!!
Befehl ::break
NONE::NEWLINE!!!
Befehl ::case
Zahl ::9
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
Zahl ::9
Operator::"
NONE::NEWLINE!!!
Befehl ::break
NONE::NEWLINE!!!
Befehl ::default
NONE::NEWLINE!!!
Befehl ::print
NOT detected::
Operator::"
String ::c nix
Operator::"
NONE::NEWLINE!!!
Befehl ::end
Befehl ::select
NONE::NEWLINE!!!
Befehl ::wend
NONE::NEWLINE!!!
Befehl ::for
Operator::(
Befehl ::int
Variable::y
Operator::,
Zahl ::0
Operator::,
Zahl ::4
Operator::)
NONE::NEWLINE!!!
Befehl ::for
Operator::(
Befehl ::int
Variable::x
Operator::,
Zahl ::0
Operator::,
Zahl ::4
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Variable::x
Operator::+
Variable::y
NONE::NEWLINE!!!
Befehl ::next
NONE::NEWLINE!!!
Befehl ::next
NONE::NEWLINE!!!
Befehl ::int
Variable::f
NONE::NEWLINE!!!
Befehl ::int
Variable::a
NONE::NEWLINE!!!
Befehl ::repeat
NONE::NEWLINE!!!
Variable::f
Operator::+
Operator::+
NONE::NEWLINE!!!
Variable::a
Operator::=
Funktion::myfuncc
Operator::(
Variable::f
Operator::,
Zahl ::2
Operator::)
NONE::NEWLINE!!!
Befehl ::print
Variable::a
NONE::NEWLINE!!!
Befehl ::until
Variable::f
Operator::<
Zahl ::10
NONE::NEWLINE!!!
Befehl ::end
NONE::NEWLINE!!!
Befehl ::int
Befehl ::func
Function::myfunc
Operator::(
Befehl ::int
Variable::f
Operator::,
Befehl ::int
Variable::ff
Operator::,
Befehl ::int
Variable::fff
Operator::=
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::return
NOT detected::
Operator::(
Variable::f
Operator::+
Variable::ff
Operator::)
Operator::-
Variable::fff
NONE::NEWLINE!!!
Befehl ::end
Befehl ::func
NONE::NEWLINE!!!
Befehl ::int
Befehl ::func
Function::myfuncc
Operator::(
Befehl ::int
Variable::f
Operator::,
Befehl ::int
Variable::ff
Operator::)
NONE::NEWLINE!!!
Befehl ::return
Variable::f
Operator::*
Variable::ff
NONE::NEWLINE!!!
Befehl ::end
Befehl ::func
NONE::NEWLINE!!!
Befehl ::int
Befehl ::func
Function::myfuncc
Operator::(
Befehl ::int
Variable::fff
Operator::=
Zahl ::3
Operator::)
NONE::NEWLINE!!!
Befehl ::return
Variable::fff
NONE::NEWLINE!!!
Befehl ::end
Befehl ::func
NONE::NEWLINE!!!
wie zu finden ist bei der ausgabe von strings noch ein kleines problem(print " ") wie es bei variablen aussieht mussi hc ncoh sehen jedoch bin ich recht zufrieden mit dem aktuellen ergebniss..
mitlerweile stehen 3 sprachen als zwischencode vor DER EXE zur debatte:
c++
c
assembler
wobei assembler zu 90% schon vor dem recall ausscheidet..
was ich alles mit c so anstellen kann muss ich erst noch rausfinden
dazu aber dann mehr wenn ich mir selber sicher bin

soviel zum aktuellen fortschritt..
an dieser stelle einen dank an coolo der mir be den anfängen des token-generators sehr geholfen hat!
Left Mid Right

soo heute haben es die 3 string befehle "left", "mid" und "right" in psc geschafft:
left(string$,anzahl)
mid(string$,start,anzahl)
right(string$,anzahl)
die c++ funktionen dazu werden natürlich nur eingebungen sofern sie auch wirklich benötigt werden..
morgen werd ich mir sofern zeit ist(das wetter nicht schön ist) mir folgende befehle vornehmen:
Trim
lower
upper
instr
replace
vornehmen
und aus einer spontanen entscheidung die arbeitsweise des parsers neu überdenken(tipps dazu gerne per comment oder wenn länger PN) (bitte keine einzelnen schlagwörter..)
so das wars du dem bischen das ich heute geschafft habe...
an dieser stelle ein dank an fredko(c++ hilfen)
left(string$,anzahl)
mid(string$,start,anzahl)
right(string$,anzahl)
die c++ funktionen dazu werden natürlich nur eingebungen sofern sie auch wirklich benötigt werden..
morgen werd ich mir sofern zeit ist(das wetter nicht schön ist) mir folgende befehle vornehmen:





vornehmen
und aus einer spontanen entscheidung die arbeitsweise des parsers neu überdenken(tipps dazu gerne per comment oder wenn länger PN) (bitte keine einzelnen schlagwörter..)
so das wars du dem bischen das ich heute geschafft habe...
an dieser stelle ein dank an fredko(c++ hilfen)
*.PsC -> *.cpp -> *.exe.

soo der weg von *.psc nach *.exe ist komplett
zwar noch nicht vollkommen automatisch aber nahezu.
folgendes programm wird z.b. fehlerfrei übersetzt(enthält nebendran auch alle bisher möglichen befehle)
Code: [AUSKLAPPEN]
nun das ergebnis das man sieht ist keines denn ein waitkey() gibt es NOCH nicht.
für die grafikausgabe hab ich mir gedacht nutze ich später die SDL lib. eine sammlung schöner grafikfunktionen und auch der möglichkeit eines 3D modus unter openGL.. aber dazu will ich zuerst die grundbefehle fertig machen und OOP zum größten teil einbauen.
zur oop syntax hab ich mir noch keine gedanken gemacht, weil ich dazu eventuell ein paar meinungen von euch hören will wie es denn am schönsten für EUCH zu verwenden ist..
nun wenig geschrieben viel hat sich getan..
wie immer: kritik lob und vorschläge sind gerne gesehen!
edit: waitkey wurde nun eingefügt und funktioniert auch. (wie zu sehen verwendet es KEINE klammern, jedoch kann sich an der syntax noch einiges ändern wenn es notwendig ist(wobei ich einfachheit möglichst wahren möchte)
zwar noch nicht vollkommen automatisch aber nahezu.
folgendes programm wird z.b. fehlerfrei übersetzt(enthält nebendran auch alle bisher möglichen befehle)
Code: [AUSKLAPPEN]
Int zahl=4
Int zahl2=6
Int ergebnis
Float zahl3=3.14
String jaja="hallowelt"
bool test=0
Int c
While c<10
c++
If c>5
Print "groß"
ElseIf c==0
Print "nulll"
Else
Print "irgendwas"
EndIf
select c
Case 3
Print "c 3"
Break
Case 9
Print "c9"
break
Default
Print "c nix"
endselect
Wend
For(y,0,4)
For(x,0,4)
print x+y
Next
Next
Int f,a
Repeat
f++
a=myfunc2(f,2)
Print a
Until f<10
waitkey
End
func myfunc1%(f1%,f2%,f3%=3)
Return (f1+f2)-f3
endfunc
func myfunc2%(f1%,f2%)
Return f1*f2
endfunc
func myfunc3%(f3%=3)
Return f3*2
endfunc
Int zahl2=6
Int ergebnis
Float zahl3=3.14
String jaja="hallowelt"
bool test=0
Int c
While c<10
c++
If c>5
Print "groß"
ElseIf c==0
Print "nulll"
Else
Print "irgendwas"
EndIf
select c
Case 3
Print "c 3"
Break
Case 9
Print "c9"
break
Default
Print "c nix"
endselect
Wend
For(y,0,4)
For(x,0,4)
print x+y
Next
Next
Int f,a
Repeat
f++
a=myfunc2(f,2)
Print a
Until f<10
waitkey
End
func myfunc1%(f1%,f2%,f3%=3)
Return (f1+f2)-f3
endfunc
func myfunc2%(f1%,f2%)
Return f1*f2
endfunc
func myfunc3%(f3%=3)
Return f3*2
endfunc
nun das ergebnis das man sieht ist keines denn ein waitkey() gibt es NOCH nicht.
für die grafikausgabe hab ich mir gedacht nutze ich später die SDL lib. eine sammlung schöner grafikfunktionen und auch der möglichkeit eines 3D modus unter openGL.. aber dazu will ich zuerst die grundbefehle fertig machen und OOP zum größten teil einbauen.
zur oop syntax hab ich mir noch keine gedanken gemacht, weil ich dazu eventuell ein paar meinungen von euch hören will wie es denn am schönsten für EUCH zu verwenden ist..
nun wenig geschrieben viel hat sich getan..
wie immer: kritik lob und vorschläge sind gerne gesehen!
edit: waitkey wurde nun eingefügt und funktioniert auch. (wie zu sehen verwendet es KEINE klammern, jedoch kann sich an der syntax noch einiges ändern wenn es notwendig ist(wobei ich einfachheit möglichst wahren möchte)
Back 2 Life

nachdem PsC "1" leider sehr abrupt einem headcrash zum opfer fiel und ich dummerweise kein backup hatte(kleine schwäche von mir.) wurde es schnell verdammt still um das thema...
jedoch hatte mich die letzten tage wieder die psc idee gepackt und ich habe kurzerhand einige dinge im kopf durchdacht und mir gedanken zur syntax gemacht(die ich euch nicht vorenthalten will:
Code: [AUSKLAPPEN]
das meißte sollte sowieso logisch sein eventuell das in++ und endin++ sollten komisch vorkommen.. das ist inline c++ code(warscheinlich nahezu immer unnötig aber evtl doch mal brauchbar)
wie vom vorgänger gewohnt übersetze ich psc files in c++ code der mit dem mingw compiler fertig kompiliert wird.(die idee für pcs "2" mich mit assembler zu beschäftigen hab ich aufgrund mangelnder motivation verworfen.. verzeiht mir
)
im allgemeinen will ich eine einfache basic syntax verfolgen womit ähnlichkeiten und überschneidungen mit BB nicht selten sein werden.
die bisherige befehlsreferenz ist warlich nicht der brüller jedoch PLANE ich auch einen 2D grafikmodus auf basis von dx9(10??) oder eventuell openGL fals ich das auch noch hin bekomme werd ich eventuell(sofern ich genug lerne dabei) einen 3D modus versuchen..
OOP soll natürlich im vollen c++ umfang auch vertreten sein(jedoch in basic syntax(sofern es geht)
die größte vereinfachung im gegensatz zu c++ wird aber vermutlich erst mit dem einführen eines grafikmodus existieren.
für alle die den vorgänger nicht kannen oder schon vergessen haben: https://www.blitzforum.de/worklogs/193/
wie gehabt fragen tipps und kritik sind gerne gesehen
soviel für den anfang als erklärung was ich machen will aber nun kurz was schon gibt:
der Mingw der bei seiner installation ca 60Mb groß ist wurde auf 2.15Mb abgespeckt
eine einfache kleine ide steht schon(noch kein syntax highlightning)
ein grund syntax konzept (s.O.) steht schon fest.
soviel jetzt dazu.
jedoch hatte mich die letzten tage wieder die psc idee gepackt und ich habe kurzerhand einige dinge im kopf durchdacht und mir gedanken zur syntax gemacht(die ich euch nicht vorenthalten will:
Code: [AUSKLAPPEN]
;If
;Else
;ElseIf
;EndIf
;
;Int var1=wert
;Float var2=wert
;String var3=wert
;bool var4=True/False
;While bedingung==lol
;Wend
;For(var,start,ende,[Step])
;Next
;print(variable)|print "text"
;array%(dimens,dimens,...)
;End
;func name(para1,para2...)
;Return variable
;endfunc
;Repeat
;Until bedingung==lol
;Select
;Case wert
;Default
;endselect
;in++
;endin++
;Else
;ElseIf
;EndIf
;
;Int var1=wert
;Float var2=wert
;String var3=wert
;bool var4=True/False
;While bedingung==lol
;Wend
;For(var,start,ende,[Step])
;Next
;print(variable)|print "text"
;array%(dimens,dimens,...)
;End
;func name(para1,para2...)
;Return variable
;endfunc
;Repeat
;Until bedingung==lol
;Select
;Case wert
;Default
;endselect
;in++
;endin++
das meißte sollte sowieso logisch sein eventuell das in++ und endin++ sollten komisch vorkommen.. das ist inline c++ code(warscheinlich nahezu immer unnötig aber evtl doch mal brauchbar)
wie vom vorgänger gewohnt übersetze ich psc files in c++ code der mit dem mingw compiler fertig kompiliert wird.(die idee für pcs "2" mich mit assembler zu beschäftigen hab ich aufgrund mangelnder motivation verworfen.. verzeiht mir

im allgemeinen will ich eine einfache basic syntax verfolgen womit ähnlichkeiten und überschneidungen mit BB nicht selten sein werden.
die bisherige befehlsreferenz ist warlich nicht der brüller jedoch PLANE ich auch einen 2D grafikmodus auf basis von dx9(10??) oder eventuell openGL fals ich das auch noch hin bekomme werd ich eventuell(sofern ich genug lerne dabei) einen 3D modus versuchen..
OOP soll natürlich im vollen c++ umfang auch vertreten sein(jedoch in basic syntax(sofern es geht)
die größte vereinfachung im gegensatz zu c++ wird aber vermutlich erst mit dem einführen eines grafikmodus existieren.
für alle die den vorgänger nicht kannen oder schon vergessen haben: https://www.blitzforum.de/worklogs/193/
wie gehabt fragen tipps und kritik sind gerne gesehen

soviel für den anfang als erklärung was ich machen will aber nun kurz was schon gibt:



soviel jetzt dazu.