Seite 6 von 16
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 14:06
von 7x7
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro X
Procedure
EndMacro
Macro Y
End#X
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
If Mid(c,m,1)="]"
b-1
ElseIf Mid(c,m,1)="["
b+1
W
Until b=0
EndMacro
X A()
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
Y
X B(n$)
PrintN(n$)
A()
Y
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
A()
839 
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 14:18
von Sirius-2337
818
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
If Mid(c,m,1)="]"
b-1
ElseIf Mid(c,m,1)="["
b+1
W
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 14:30
von ts-soft
816
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
If Mid(c,m,1)="]"
b-1
ElseIf Mid(c,m,1)="["
b+1
W
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
Dim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 14:31
von The Shark
STARGÅTE hat geschrieben:
Macros können nicht verschachtelt werden! Der aufruf von Macro ... Macro ist also nicht erlaubt, auch wenn er "verkleidet wird"
Das funktioniert aber ohne Probleme:
Code: Alles auswählen
Macro n(a,b)
Macro a
b
EndMacro
n(T,Procedure)
EndMacro
Bug?
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 14:51
von NicTheQuick
807
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
If j="["
b+1
ElseIf j="]"
b-1
W
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 14:54
von NicTheQuick
803
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a=1)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z()
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 15:02
von Sirius-2337
802
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z(1)
W
V 53
If k(f)<>0
Z(-1)
W
EndSelect
Next
B("",0)
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 15:11
von STARGÅTE
The Shark hat geschrieben:Das funktioniert aber ohne Probleme:
Code: Alles auswählen
Macro n(a,b)
Macro a
b
EndMacro
n(T,Procedure)
EndMacro
Bug?
Nein kein Bug, da ein Macro (also deren Inhalt) ist gelesen und eingesetzt wird, wenn dieses Macro auch aufgerufen wird:
Macro verhalten sich wirklich komplett anders als Prozeduren (auch wenn deren Definition ähnlich ist).
Der Compiler liest immer nur die erste Zeile "Macro Test" und übergeht solange den nachfolgenden Code bis ein "EndMacro" kommt, es findert keinerlei Syntaxkontrolle statt.
Erst wenn im Code dann diese Macro verwendet wird also: "Test", dann wird der Inhalt zwischen Macro und EndMacro Zeichen für Zeichen übernommen und erst dann auf Syntax kontrolliert.
Edit: dein Code wird so ersetzt:
das heißt, danach würde
funktionieren
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 15:22
von NicTheQuick
799
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a)
b=a
Repeat
m+a
n=Asc(Mid(c,m,1))
b+(n/90)*(92-n)
Until b=0
EndMacro
Procedure B(n$,o=1)
If o
PrintN(n$)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndProcedure
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
Repeat
h=U
i+h
Until h=""
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j,1)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select Asc(Mid(c,m,1))-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=Asc(Left(l,1))
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z(1)
W
V 53
If k(f)
Z(-1)
W
EndSelect
Next
B("",0)
Re: Wäre es nicht mal wieder an der Zeit...
Verfasst: 16.04.2012 16:38
von c4s
776
Code: Alles auswählen
EnableExplicit
Global d=9,f,b,m,n
Global.s c,e="+-<>.,[]",g,h,i,j,l
Macro U
Input()
EndMacro
Macro V
Case
EndMacro
Macro W
EndIf
EndMacro
Macro Z(a)
b=a
Repeat
m+a
n=PeekA(@c+m-1)
b+(n/90)*(92-n)
Until b=0
EndMacro
Macro B(z,o=1)
If o
PrintN(z)
W
Print(#LF$+#LF$+"Press ENTER to exit")
U
End
EndMacro
OpenConsole()
Print("Filename (blank to use std in)...?")
g=U
If g
OpenFile(1,g)
Repeat
i+ReadString(1)
Until Eof(1)
CloseFile(1)
Else
h=U
While h
i+h
h=U
Wend
W
b=0
For m=1 To Len(i)
j=Mid(i,m,1)
If FindString(e,j)
c+j
n=Asc(j)
b+(n/90)*(92-n)
W
Next
If b
B("Uneven brackets")
W
Dim k(d)
For m=1 To Len(c)
Select PeekA(@c+m-1)-40
V 3
k(f)+1
V 5
k(f)-1
V 6
Print(Chr(k(f)))
V 4
If l=""
l=U
W
k(f)=PeekA(@l)
l=Mid(l,2)
V 22
f+1
If f>d
d+d
ReDim k(d)
W
V 20
f-1
If f<0
B("Memory pointer out of range")
W
V 51
If k(f)=0
Z(1)
W
V 53
If k(f)
Z(-1)
W
EndSelect
Next
B("",0)