home *** CD-ROM | disk | FTP | other *** search
- JRCPP README FILE (3/27/90)
- James Roskind C Porting Preprocessor
- (Full ANSI C Preprocessor)
-
-
-
- Copyright (C) 1990 James Roskind, All rights reserved. Permission
- is granted to copy and distribute this file as part any machine
- readable archive containing the entire, unmodified, JRCPP PUBLIC
- DISTRIBUTION PACKAGE (henceforth call the "Package"). The set of
- files that form the Package are described in the README file that
- is a part of the Package. Permission is granted to individual
- users of the Package to copy individual portions of the Package
- (i.e., component files) in any form (e.g.: printed, electronic,
- electro-optical, etc.) desired for the purpose of supporting
- users of the Package (i.e., providing online, or onshelf
- documentation access; executing the binary JRCPP code, etc.).
- Permission is not granted to distribute copies of individual
- portions of the Package, unless a machine readable version of the
- complete Package is also made available with such distribution.
- Abstracting with credit is permitted. There is no charge or
- royalty fee required for copies made in compliance with this
- notice. To otherwise copy elements of this package requires
- prior permission in writing from James Roskind.
-
- James Roskind
- 516 Latania Palm Drive
- Indialantic FL 32903
-
- End of copyright notice
-
-
- What the above copyright means is that you are free to use and
- distribute (or even sell) the entire set of files in this Package,
- but you can't split them up, and distribute them as separate files.
- The notice also says that you cannot modify the copies that you
- distribute, and this ESPECIALLY includes NOT REMOVING the any part of
- the copyright notice in any file. JRCPP currently implements a C
- Preprocessor, but the users of this Package do NOT surrender any
- right of ownership or copyright to any source text that is processed
- by JRCPP, either before or after processing. Similarly, there are no
- royalty or fee requirements for using the post-preprocessed output of
- JRCPP.
-
- This Package is expected to be distributed by shareware and freeware
- channels (including BBS sites), but the fees paid for "distribution"
- costs are strictly exchanged between the distributor, and the
- recipient, and James Roskind makes no express or implied warranties
- about the quality or integrity of such indirectly acquired copies.
- Distributors and users may obtain the Package (the Public
- distribution form) directly from the author by following the ordering
- procedures in the REGISTRATION file.
-
-
- DISCLAIMER:
-
- JAMES ROSKIND PROVIDES THIS FILE "AS IS" WITHOUT WARRANTY OF ANY
- KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
- PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
- PROGRAM AND DOCUMENTATION IS WITH YOU. Some states do not allow
- disclaimer of express or implied warranties in certain transactions,
- therefore, this statement may not apply to you.
-
-
- UNIX is a registered trademark of AT&T Bell Laboratories.
- ---------------------------------------------------------------------
-
-
-
-
- JRCPP README FILE
-
- James Roskind C Porting Preprocessor
- (Full ANSI C Preprocessor)
-
-
- TABLE OF CONTENTS
-
-
- DEFINITION OF JRCPP PUBLIC DISTRIBUTION PACKAGE
- WHY IS JRCPP USEFUL FOR DEVELOPERS?
- WHAT IS THE DIFFERENCE BETWEEN JRCPP AND JRCPPCHK?
- WHY IS ONLY JRCPPCHK DISTRIBUTED PUBLICLY?
-
-
-
- DEFINITION OF JRCPP PUBLIC DISTRIBUTION PACKAGE
-
-
- This is the main README file for JRCPP. The JRCPP PUBLIC
- DISTRIBUTION PACKAGE consists of the 8 files:
-
- README.DOC This file
- REGISTER.DOC How to become a registered user
- USERS.DOC User's Reference Manual
- LANGREF.DOC Language Reference Manual
- DIAGNOST.DOC Diagnostics Reference Manual
- REFGRAM.Y Reference grammar for JRCPP
- JRCPPCHK.EXE Executable version of JRCPP
-
- The above list constitutes the entire "Package", as described in the
- copyright notices. Users are invited to redistribute the above list
- of files as a whole (typically in some compressed archive format).
- This includes placing the set of files on a BBS, or distribution by
- commercial or non-commercial means.
-
-
- WHY IS JRCPP USEFUL FOR DEVELOPERS?
-
- Although the ANSI C standard has been approved, very few compilers
- are fully ANSI compliant (so far). Worse than than, even fewer have
- ANSI C compliant preprocessors (but there seems universal acclaim
- that support of all of the ANSI C standard is a high priority on
- every compiler vendor's wish list). Rather than waiting for your
- compiler to evolve to the generally more portable ANSI standards, you
- can begin TODAY to use all the features of ANSI C preprocessing, with
- the confidence that your code will be portable through tomorrow's
- compilers. One step in this process is to begin to use ANSI C macro
- definitions and coding conventions.
-
- With the belief that ANSI conformant code is highly desirable
- (including the preprocessing macro definitions and expansions), the
- next point to address is why you should use JRCPP. First and
- foremost it is available TODAY. Second, as a shareware offering, it
- provides exceptional price/performance ratios. Finally, JRCPP offers
- exceptional performance in a number of areas, independent of price.
- The following list surveys these advantages.
-
- The extensive diagnostic message set (over 170 distinct messages)
- tends to pinpoint causes and locations of errors in the preprocessor
- phases of C translation. Simple examples include:
-
- 1) Detecting /* within a comment. This typically is caused by
- accidentally forgetting to terminate the previous comment, and
- can (without such diagnostics) be VERY hard to locate.
-
- 2) Failure to close a #if with a #endif is diagnosed with the
- line number corresponding to the #if (and NOT simply with the
- message "unexpected end of file").
-
- There are very few static limits in JRCPP. This tends to allow very
- complex macro expressions to be evaluated. The only restriction is
- available memory, and this is generally not a restriction under OS/2.
-
- Full support of ANSI C preprocessing constructs are provided (as
- opposed to some subset, plus some excuse by the vendor of the
- compiler.) Since the preprocessing of C source code is separable from
- compilation as a whole, JRCPP can be used with any existing C
- compiler as a "front end" preprocessor.
-
- Extensively customizable features provide compatibility with most
- existing preprocessors, and hence provide a migration path towards
- more portable ANSI C code. Customization of the diagnostic system
- also supports the easy separation of "wheat from chaff" in diagnostic
- listings.
-
- For additional reasons, and details of the above reasons, see the
- JRCPP USERS MANUAL.
-
-
-
-
- WHAT IS THE DIFFERENCE BETWEEN JRCPP AND JRCPPCHK?
-
- A registered user receives several versions of JRCPP. These include
- highly optimized versions, target/platform specific versions,
- versions to assist in providing problem (bug) reports, etc. All
- versions are fully functional, but some provided superior assurances
- of correctness, while others provided superior execution time.
- JRCPPCHK is a version that provides the greatest assurance of
- correctness (it has massive internal checking). Assuming there are
- no bugs in the implementation of JRCPP, and there are no bugs in the
- compilation and linking (i.e., building) of JRCPP, then JRCPP and
- JRCPPCHK should provide identical preprocessing results (i.e.,
- JRCPPCHK is NOT a crippled version of JRCPP).
-
- As noted, the version of JRCPP that is distributed with this Package
- has several distinctive attributes. These restrictions are NOT
- fundamental to the product, but simply allowed for the widest
- distribution of a competent product. See the REGISTER.DOC file for
- details of other versions. The following are the restrictions on
- JRCPPCHK:
-
- 1) It is a bound OS/2 and MSDOS executable. Hence it should run
- under DOS 3.x and greater, as well as OS/2 1.1 and later.
-
- 2) It was compiled for use on 80286, 80386, and 80486 platforms.
- It may not run on 8088 based platforms. (Registered users can
- obtain an 8088 based version).
-
- 3) It contains "assertions". The assertions provide extensive
- internal error checking. The presence of these assertions slows
- execution by 33%, and increases the size of the executable's code
- by 20%. These assertions also tend to guarantee reliable
- software despite the fact that this is a beta release!
-
- 4) When JRCPPCHK.EXE is executed, the banner displayed on stderr
- should include: "ASSERT checking is active". The presence of
- this message distinguishes this executable from other versions
- that are supplied ONLY to registered users.
-
-
-
- WHY IS ONLY JRCPPCHK DISTRIBUTED PUBLICLY?
-
-
- The decision to distribute JRCPPCHK as part of the public
- distribution package was based on the following thoughts:
-
- 1) Since JRCPP is a new product, releasing the heavily "asserted"
- JRCPPCHK during beta phases can prevent the tarnishing of the
- product name. The use of JRCPPCHK is simply a conservative
- selection, that poses a mild performance penalty.
-
- 2) If all the versions that were planned for release were placed
- in the public collection, the collection might be too big for
- most BBS systems to sponsor it, and too big for most users to
- download it. This reason precluded supplying multiple versions.
-
- 3) By giving users a full function product with a slight
- performance degradation, they might be more motivated to register
- and obtain newer releases, with superior performance (but the
- same quality).
-
-
- If you have any comments on the above decisions for public release,
- please feel free to submit them for consideration. Distributing
- shareware is a very "nonclassical" means of product marketing and
- dissemination, and input from users can prove most valuable. The
- goal is to provided a very high quality product, obtain payment for
- the author, and save the user money by eliminating the cost of
- marketing and distribution channels. If you could direct your
- comments towards these three goals, they would prove most interesting.
-
- Thank you for your interest and support.
-
- James Roskind
- 516 Latania Palm Drive
- Indialantic FL 32903
- (407)729-4348
- jar@ileaf.com
- or
- ...!uunet!leafusa!jar
-