[Allegro] Views revisited (nicht ganz so lang)

Anando Eger a.eger at aneg-dv.de
Mo Mär 31 15:39:19 CEST 2014


Liebe Listenleserinnen und -leser,

Herr Eversberg schrieb u.a.:

> FLEX ist keine Programmiersprache, es sieht nur hier und da so ähnlich
> aus. 

???

> Rekursivität bei Aufruf von Unterroutinen gehört zu den Dingen,
> die eine Programmiersprache können muß. FLEX kann das nicht und von
> der Sache her wäre es auch programmtechnisch nur höchst aufwendig zu
> lösen. 

Auch wenn Flex keine Programmiersprache sein wollen soll - 
Stacks und rekursive Unterprogrammaufrufe kann man trotzdem 
verwenden.

Ist zwar etwas tricky, aber funktioniert zuverlässig: 
http://www.aneg-dv.de/allegro/modpar/files/mp_stack.flb

Viele Grüße
Anando Eger

-----------------------------------------------------------------
Für die Interessierten hier ein kleines Testprogramm zur 
Demonstration:
-----------------------------------------------------------------

var 13 10 32 13 10 "Stacktest: rekursiver UP-Aufruf" 13 10\sho IV

var "Schachteltest_Ende"\perf PushAdr
var "0"\perf Push
jump UP_Schachtel
:Schachteltest_Ende
var "Ausgangsebene erreicht"\sho +IV
end
 //---------------------------------------
:UP_Schachtel
perf Pop
z=\if z>15 var " Piep";sho +IV;jump Return
perf Push   // nur zum Merken des Wertes für den "Rückweg"
z+1\var z\Z=\perf Push    // Parameter für UP
var 13 10\sho +IV
:LLL
if z>0 var " ";sho +IV;z-1;jump LLL
var "+ Ebene " Z0\sho +IV
 // rekursiver Aufruf:
var "UP_Schachtel_I"\perf PushAdr
jump UP_Schachtel

:UP_Schachtel_I
perf Pop    // für den Rückweg gemerkter Wert
z=\Z=
var 13 10\sho +IV
:RRR
if z>0 var " ";sho +IV;z-1;jump RRR
if Z>0 var "- Ebene " Z0;sho +IV
jump Return

include mp_stack.flb

-----------------------------------------------------------------
Das gleiche noch einaml ohne DEMO-Beiwerk:
-----------------------------------------------------------------

var "Schachteltest_Ende"\perf PushAdr
var "0"\perf Push
jump UP_Schachtel

:Schachteltest_Ende
end

:UP_Schachtel
perf Pop
z=\if z>15 jump Return
z+1\perf Push 
var "UP_Schachtel_I"\perf PushAdr
jump UP_Schachtel

:UP_Schachtel_I
jump Return

include mp_stack.flb





Mehr Informationen über die Mailingliste Allegro