Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!crdgw1!uunet!visix!andrew From: andrew@visix.com (Andrew Bernard) Newsgroups: comp.lang.postscript Subject: Re: Esoterica Message-ID: <1991Apr17.195552.24620@visix.com> Date: 17 Apr 91 19:55:52 GMT References: <91106.223204CXT105@psuvm.psu.edu> Organization: Visix Software Inc., Reston, VA Lines: 34 In article <91106.223204CXT105@psuvm.psu.edu> CXT105@psuvm.psu.edu (Christopher Tate) writes: >There seem to be all manner of interesting things floating around in the >internaldict, such as the FlxProc array and the superexec operator. But >does anyone know (or is anyone allowed to tell?) what operators such as >ErodeSW, CCRun, xlck, or ylck do? > Some of these sound like hinting operators/procedures. Check out the Adobe Type 1 Font Format documentation. I don't know the others. >I don't necessarily care whether they're actually *useful*; I'm just >curious about the innards of my LaserWriter.... > >I'm also assuming that the operators such as @repeat, @rfor, @loop, @ifor, >etc. have to do with low-level implementation of the interpreter. Is this >even close to right? > These are the run-time forms of the looping operators. Basically, when you execute certain control operators (_repeat_, _for_, etc) they push some state information and your procedure onto the execution stack followed by one of the @ operators. The @ operator is then responsible for executing the procedure and generating the next iteration of the loop. This makes it possible for the interpreter to implement control structures without having to re-enter itself, which can be very expensive (though it does do this during things like _pathforall_). Using @ operators also makes recovery from things like _stop_ somewhat cleaner. I suspect it also helps a little when you want to implement multiple threads ala DPS. -- andrew bernard ring the doorbell on your mind software engineer but it's locked from the outside visix software -dinosaur jr. andrew@visix.com