The WPP Compiling Server If for some reason you do not want to install WPP on your site, you can still give it a try via email. Our compiling server is up and running 24 hours a day waiting for your programs to arrive. It will translate them and and send the results back to you. Submission comprises the following steps: Copy the units you want to translate into one single file. This file also has to contain the specs of packages that are withed by those units as long as they do not belong to the predefined language environment. Send this file to wpp@auto.tuwien.ac.at, setting the subject to 'wpp'. For example: mail -s wpp wpp@auto.tuwien.ac.at < my_file The WPP compiling server then compiles your submission and returns the resulting Ada95 files (or error-reports) in a file-by-file manner via email. You can now compile those files with your favorite Ada95 compiler, provided that you first download the file 'woopdefs.ads' from our ftp-server (popper.auto.tuwien.ac.at:pub/wpp). This file contains a package with some declarations that are referenced in the generated code. If you happen to find an error in WPP, please send the offending source files to wpp@auto.tuwien.ac.at, setting the subject to 'error'. If you want to get the current version-number of the compiling server, put 'version' in your subject line. ------------------------------------------------------------------------------- The Woop Preprocessor If you are curious about the series of events that eventually lead to the development of the WOOP Preprocessor, you might want to read the 'WPP History Lesson'. If you are interested in plain facts, go to the 'Facts & Features' section. WPP History Lesson It has ever been seen as an integral part of Project WOOP to implement a tool that would incorporate the theoretical results gathered. Research work on discrete loops had been finished at the end of the year 1993, and this was considered a good starting point for the actual implementation. Ada95 had been chosen to serve as the vehicle for this new kind of loop, a decision that was mainly due to the reliability and maintainability of that programming language. One of the things we needed in order to augment Ada95 with the concept of discrete loops was some sort of translation mechanism that would provide programmers with a way of using them in their own code. Since our resources were too limited (as resources are in general) to build a full-fledged discrete loop - augmented Ada95 compiler, we decided to achieve this by means of a precompiler that would translate discrete loops into semantically equivalent Ada95 code. It would still have to perform syntactic as well as semantic analysis on its input, but it saved us from the burden of (object) code generation. Our first plan was to start with an Ada95-parser generated by ayacc, but back in those days it was impossible to compile ayacc and aflex with GNAT. In this way we decided to built on the source-code of GNAT itself, thus becoming one of the first GNAT-fiddlers (as Robert Dewar, one of GNAT's creators, put it) in history. Another beast that suited our needs was Wolfram Research's MATHEMATICA, a commercial package for computer algebra. Among its advantages over similar programs are its inherent functional programming language as well as its well- documented communication protocol. Our precompiler makes use of it in order to solve equations and recurrence relations that occur when striving for those upper bounds of discrete loops. Later on in the development of our tool we decided to call it 'preprocessor' instead of 'precompiler', but this was only done for the sake of the resulting acronym ('WPP'). Since this three-letter combination seems to be a little tedious to be spelled, we propose to spell it as 'double U double P' or 'double (UP)' for short. WPP can do most of the things now that have been introduced in (discloop paper). The few remaining features are usually described in sections starting with 'a smart compiler is free to perform whatever ... in order to achieve ...', but I stopped worrying about them. WPP can derive upper bounds for the number of iterations for many kinds of discrete loops, and it can also serve as the base for future extensions addressing real-time recursions and object-oriented programming. Facts & Features WPP is a precompiler that translates discrete loops into semantically equivalent Ada95 code. It will be extended to support recursions (link auf paper) and object- oriented features (link auf paper) in the future. WPP can be tested via our WPP remote service (link), no installations are required at the site of the user. WPP can also be downloaded and installed on the user's site. WPP has been built on top of the source-code of GNAT, the GNU ADA Translator. The GNU GENERAL PUBLIC LICENSE applies to GNAT as well as WPP. It took about 5000 lines of code to implement discrete loops within GNAT. WPP can derive upper bounds for the number of iterations of discrete loops. WPP makes use of MATHEMATICA, a commercial package for computer algebra, in order to solve equations and recurrence relations that occur in calculations for upper bounds. 500 lines of WPP's code are written in MATHEMATICA's functional programming language. They are executed by the MATHEMATICA kernel itself, their results are returned to WPP via MathLink, MATHEMATICA's standard communication protocol. The development of WPP has been funded by the Austrian Science Foundation (FWF) under grant P10188-MAT.