Module Example = Begin Macro DECLARESTACK(SZ) = Own VEC S[SZ]; Local SP; Bind STKSZ=SZ; $, INITSTACK = SP=S[STKSZ*2] $, PUSH(Z) = (SP = .SP-2; .SP=(Z)) $, POP(Z) = (Z=..SP;SP = .SP+2; .Z) $; Structure VEC[I] = (.VEC+.I); Linkage R1 = Bliss(Register=1); Macro NOVALUE = .VREG $, REPEAT = While 1 Do $; Own VEC LEFT:RIGHT:INFO[100]; External R1 PRINT; Routine Example(Z) = Begin Local T; DECLARESTACK(100); INITSTACK; T = .Z; PUSH(0); REPEAT Begin While .LEFT[.T] Neq 0 Do (PUSH(.T); T = .LEFT[.T]); PRINT(.INFO[.T]); While (T = .RIGHT[.T]) Eql 0 Do If POP(T) Neq 0 Then PRINT(.INFO[.T]) Else Return NOVALUE End; NOVALUE End; End Eludom