home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / LANGUAGS / PASCAL / PPAS80.LBR / PP.DQC / PP.DOC
Text File  |  2000-06-30  |  7KB  |  155 lines

  1.  
  2.              PP - Pascal Prettyprinting Program
  3.  
  4.                   11 October 1984
  5.  
  6.                   - Jon Hueras and
  7.                      Henry Ledgard
  8.                   - Rick L. Marcus
  9.  
  10.  
  11. What PP Does
  12. ------------
  13.  
  14.      PP takes as input a Pascal program or program fragment and reformats it
  15. according  to  a  standard  set  of prettyprinting rules.  The prettyprinted
  16. program is given as output.  PP  makes  no  attempt  to  detect  or  correct
  17. syntactic  errors  in your program.  However, syntactic errors may result in
  18. erroneous prettyprinting.
  19.  
  20.      PP  differs from some other prettyprinting programs in that it does not
  21. reformat your  program  "right  down  to  every  last  semicolon."   Such  a
  22. philosophy  requires formatting everything in a rigid fashion which is bound
  23. to be displeasing, or else it must provide you  with  a  voluminous  set  of
  24. "options."   Furthermore,  such a scheme must do full syntax analysis of the
  25. program which means that it must be completely written and  compilable.   If
  26. you  wish to prettyprint a program still under development, then you are out
  27. of luck.
  28.  
  29.      PP,  on  the  other hand, implements a strategy which states that it is
  30. not necessary to impose more than a "minimum" set of restrictions,  and  the
  31. prettyprinter  should  yield  to  your  discretion  beyond this minimum.  PP
  32. preserves blank lines and extra spaces you insert in the program  as  input,
  33. besides  adding  blank  lines  and  extra  spaces according to the rules for
  34. prettyprinting given below.
  35.  
  36.  
  37. General prettyprinting rules:
  38.  
  39. 1.    All statements and declarations begin on separate lines.
  40.  
  41. 2.    No  input  line  may  be longer than 80 characters.  Any output line
  42.         longer than 80 characters is continued on a separate line.
  43.  
  44. 3.    The  keywords  "BEGIN",  "END", "REPEAT", and "RECORD" are forced to
  45.         stand on lines by themselves (or  possibly  followed  by  supporting
  46.         comments).   In  addition,  the  "UNTIL"  clause  of  "REPEAT-UNTIL"
  47.         statement is forced to start on a new line.
  48.  
  49. 4.    A  blank  line is forced before the keywords "PROGRAM", "PROCEDURE",
  50.         "FUNCTION", "LABEL", "CONST", "TYPE", and "VAR".
  51.  
  52. 5.    A  space  is  forced  before  and  after  the  symbols ":=" and "=".
  53.         Additionally, a space is forced after the  symbol  ":".   Note  that
  54.         only  "="s  in  declarations  are formatted; "="s in expressions are
  55.         ignored.
  56.  
  57. 6.    Spaces  and blank lines already in your program are preserved by PP,
  58.         which adds (but does not subtract) blank lines and spaces.  You  can
  59.         improve the readability of your programs by taking advantage of this
  60.         feature.   However,  this  feature also means that you may sometimes
  61.         have to manually de-indent (in your editor)  after  block  structure
  62.         changes.
  63.  
  64. Indentation rules:
  65.  
  66. 1.    The  body  of  a  declaration is indented from the "LABEL", "CONST",
  67.         "TYPE", or "VAR" keyword which heads it.
  68.  
  69. 2.    The  bodies  of  "BEGIN-END",  "REPEAT-UNTIL",  "WHILE", "WITH", and
  70.         "CASE" statements, as well as  "RECORD-END"  structures  and  "CASE"
  71.         variants (to one level) are indented from keywords which head them.
  72.  
  73. 3.    An "IF-THEN-ELSE" statement is indented as follows:
  74.  
  75.                IF <expression>
  76.                   THEN <statement>
  77.                   ELSE <statement>
  78.  
  79.  
  80.  
  81. When to Use PP
  82. --------------
  83.  
  84.      PP  is  especially  useful  to  reformat  a  Pascal  program or program
  85. fragment that you have typed without regard to formatting (such as  entering
  86. every  line  left-justified  to save time).  Because the program need not be
  87. syntactically correct, PP provides the fastest means  of  obtaining  a  more
  88. readable version of your program.
  89.  
  90.      PP  is  best  used to prettyprint a Pascal program already on a file or
  91. punched on cards.  PP changes neither the cards nor the file used as  input.
  92. Prettyprinting  a  program  line-by-line  as  it is entered at a terminal is
  93. considerably less useful.
  94.  
  95.  
  96. How to Use PP
  97. -------------
  98.  
  99.      Type  "PP" at the system command level followed by the old and new file
  100. names.  If the new file already  exists,  it  will  be  overwritten  without
  101. warning.   If  the  wrong  number  of  file names are given, PP will print a
  102. message reminding the user of the correct system call.
  103.  
  104. Examples
  105. --------
  106.  
  107.      1.  Reformat a program called "prog1.pas" under CP/M:
  108.  
  109.             PP prog1.pas prog1.new       ;  reformat a program
  110.             TYPE prog1.new               ;  check that it is correct
  111.             ERA prog1.pas                ;  delete the old version
  112.             REN prog1.pas=prog1.new      ;  rename the new version
  113.  
  114.      2.  Reformat the same program under MS-DOS:
  115.  
  116.             PP prog1.pas prog1.new
  117.             TYPE prog1.new
  118.             ERASE prog1.pas
  119.             RENAME prog1.new prog1.pas
  120.  
  121.      3.  Preview PP's output before writing to a file:
  122.  
  123.             PP prog.pas con:            ;  on CP/M
  124.             PP prog.pas con             ;  on MS-DOS
  125.  
  126.      4.  Remind oneself how to use PP:
  127.  
  128.             PP
  129.  
  130.  
  131. History
  132. -------
  133.  
  134.      PP  prettyprints  a  Pascal program or program fragment given as input.
  135. It was originally named PRETTYPRINT and was written in Pascal by Jon  Hueras
  136. and  Henry Ledgard, University Computing Center and Computer and Information
  137. Science Dept., University of Massachusetts  at  Amherst,  in  August,  1976.
  138. (See  "An  Automatic Formatting Program for Pascal", by Jon Hueras and Henry
  139. Ledgard, Pascal Newsletter #6, page 70, November, 1976.)
  140.  
  141.      Small  corrections  were  made to PRETTYPRINT by Charles Fischer, Dept.
  142. of Computer Science, University of Wisconsin, Madison, in 1977.  PRETTYPRINT
  143. was modified for CDC-6000 Pascal by Rick  L.   Marcus,  University  Computer
  144. Center, University of Minnesota, in September, 1978, and was renamed PRETTY.
  145. Marcus also wrote this documentation.
  146.  
  147.      Peter  Grogono  adapted  PRETTYPRINT  to CP/M, using Pascal/Z.  He also
  148. made several modifications and  renamed  it  PP  (date  unknown).   In  1984
  149. Willett Kempton adapted the Pascal/Z version to Turbo Pascal, which required
  150. only  minor  mods.   The  Turbo  version  uses  a  portable argument library
  151. "ARGLIB.PAS" to get file names, which makes it easier to adapt PP  to  other
  152. Pascal  systems.   The  Turbo  version  has  been  tested  under CP/M-80 and
  153. CP/M-86,  and  is  believed  to  work  without  modification   (other   than
  154. recompilation)  under MS-DOS.  Kempton also adapted this documentation, from
  155. the CDC version, to apply to the microcomputer version.sion  has  been  tested  under CP/M-80 and