Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84; site Shasta.ARPA Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!genrad!decvax!decwrl!Glacier!Shasta!trickey From: trickey@Shasta.ARPA Newsgroups: net.lang.pascal Subject: Re: Request for Berkeley Pascal information Message-ID: <6830@Shasta.ARPA> Date: Fri, 12-Jul-85 14:07:01 EDT Article-I.D.: Shasta.6830 Posted: Fri Jul 12 14:07:01 1985 Date-Received: Sat, 13-Jul-85 15:29:45 EDT References: <645@umd5.UUCP> Organization: Stanford University Lines: 48 > I am trying to convert an existing Pascal program to run under Ultrix, > on a VAX, but do not have access to the internal documents for this > implementation. The program makes extensive use of an "otherwise" clause > in its "case" statements. I have blindly tried all variations I have seen > in other Pascal implementations, without success. > > Can anybody out there tell me whether there is, in fact, an extension for > a "none of the above" case, or that such an extension does not exist? > > -- > Ben Cranston ...{seismo!umcp-cs,ihnp4!rlgvax}!cvl!umd5!zben zben@umd2.ARPA Berkeley added a -O option to pxp sometime during 4.2. If you do pxp -O prog.p > newprog.p then prog.p can have a case labelled "others:", and pxp -O will create a newprog.c where such case statements are changed to: if in [] then case of end else If the range of the isn't too big, the code generated is a bit-vector membership test, which isn't too bad. However, I recently reduced the running time of a program by a factor of 8 by noticing that large set membership tests get translated into a push of all the members onto the stack, followed by a call to a procedure to check each. (The fix was to change that code manaully, with a more efficient range test for the "others:" cases.) So be warned. When I and others ported TeX to UNIX, the "others:" problem had to be solved. We looked at pc's source, and found it was quite easy to add an "others:" clause capability. The compiler already generates code to check for "none of the cases", since it has to produce a runtime error for that. We asked Berkeley if they would consider putting the fix into pc, and they said no, because they didn't want to add such a non-standard feature to the language (and also because more programs than just pc would have to change to support a new language feature). Instead, they came up with the pxp -O solution, which is the one used in TeX right now. I don't think the large range problem shows up there. Sorry, but I don't have the changes to pc to add "others:" anymore. Howard Trickey ...decwrl!Glacier!Shasta!trickey