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 :lurk:

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:

Code: Alles auswählen

Macro Test
	Totaler quak steht hier
EndMacro
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:

Code: Alles auswählen

Macro T
	Procedure
EndMacro
das heißt, danach würde

Code: Alles auswählen

T Hallo()
EndProcedure
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)