home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_100 / 172_01 / chprint.c < prev    next >
Text File  |  1979-12-31  |  3KB  |  86 lines

  1. /*
  2.   HEADER:              CUG  nnn.nn;
  3.   TITLE:               LEX - A Lexical Analyser Generator
  4.   VERSION:             1.1 for IBM-PC
  5.   DATE:                Jan 30, 1985
  6.   DESCRIPTION:         A Lexical Analyser Generator. From UNIX
  7.   KEYWORDS:            Lexical Analyser Generator YACC C PREP
  8.   SYSTEM:              IBM-PC and Compatiables
  9.   FILENAME:            CHPRINT.C
  10.   WARNINGS:            This program is not for the casual user. It will
  11.                        be useful primarily to expert developers.
  12.   CRC:                 N/A
  13.   SEE-ALSO:            YACC and PREP
  14.   AUTHORS:             Charles H. Forsyth
  15.                        Scott Guthery 11100 leafwood lane Austin, TX 78750
  16.                        Andrew M. Ward, Jr.  Houston, Texas (Modifications)
  17.   COMPILERS:           LATTICE C
  18.   REFERENCES:          UNIX Systems Manuals -- Lex Manual on distribution disks
  19. */
  20. /*
  21.  * Copyright (c) 1978 Charles H. Forsyth
  22.  *
  23.  * Modified 02-Dec-80 Bob Denny -- Conditionalize debug code for reduced size
  24.  * Modified 29-May-81 Bob Denny -- Clean up overlay stuff for RSX.
  25.  * More     19-Mar-82 Bob Denny -- New C library & compiler
  26.  * More     03-May-82 Bob Denny -- Final touches, remove unreferenced autos
  27.  * More     29-Aug-82 Bob Denny -- Clean up -d printouts
  28.  * More     29-Aug-82 Bob Denny -- Reformat for readability and comment
  29.  *                                 while learning about LEX.
  30.  * More     20-Nov-83 Scott Guthery -- Adapt for IBM PC & DeSmet C
  31.  *
  32.  * Modified 22-Jun-86 Andrew Ward -- Modified code to compile under Lattice C
  33.  *                                 version 3.0h.  Corrected several errors
  34.  *                                 from the assumption that pointers and
  35.  *                                 integers are the same size.
  36.  *                                 New debug code for LATTICE C using assert
  37.  *                                 to test for wild pointers.
  38.  */
  39.  
  40. /*
  41.  * Print a character to stderr in readable form.
  42.  * Returns the number of characters generated.
  43.  */
  44. #include "lex.h"
  45.  
  46. int chprint(ch)
  47. int ch;
  48. {
  49.         char *s;
  50.  
  51.         ch &= CMASK;
  52.         switch (ch) {
  53.         case '\t':
  54.                 s = "\\t";
  55.                 break;
  56.         case '\n':
  57.                 s = "\\n";
  58.                 break;
  59.         case '\b':
  60.                 s = "\\b";
  61.  
  62.                 break;
  63.         case '\r':
  64.                 s = "\\r";
  65.                 break;
  66.         default:
  67.                 if(ch<040 || ch>=0177)
  68.                         {
  69.                         fprintf(stdout, " %o", ch); /* AMW: was \\03%o */
  70.                         return(4);
  71.                         }
  72.                 else
  73.                         {
  74.                         putc(ch, stdout);
  75.                         return(1);
  76.                         }
  77.         }
  78.         fprintf(stdout, s);
  79.         return(2);
  80. }
  81.  
  82.  
  83.  
  84.  
  85.                  return(1);
  86.