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 / BEEHIVE / ZCAT / WORK-VMN.LBR / PCC.C < prev    next >
Text File  |  2000-06-30  |  3KB  |  132 lines

  1. /* program 'pcc' (pre-complie checker) scans for open and close brace-
  2.    pairs of a 'c' source file.  indicates if number of open/close braces
  3.    are equal or not.  filename to be checked is a command line argument
  4.    (e.g., >pcc fn.ft).  developed from program written by jack purdum.
  5.    08/05/83  frank gaude'
  6.                          
  7.    08/12/83  added code to count open and closing comments.  made
  8.    more friendly.  mike kelly
  9.  
  10.    09/11/83  cleaned up file listing style.  fg                         */
  11.  
  12. #include "printf.c"        /* for C/80 C environment        */
  13.  
  14. /* set console control sequences
  15.    edit to your terminal codes                      */
  16. #define CLS    26        /* clear crt screen code         */
  17. #define CURSOR "\033="        /* cursor position lead-in pair        */
  18.  
  19. #define BELL 7
  20.  
  21. main(argc, argv)
  22. int argc;
  23. char **argv;
  24.     {
  25.     int o_count, c_count;
  26.     register char last_char;
  27.     register int c;
  28.     FILE *f1;
  29.  
  30.     putchar(CLS);
  31.     printf("\n\n        PRE-COMPILE CHECKER 1.1\n");
  32.     if (argc != 2)
  33.         {
  34.         printf("\nUsage >pcc fn.ft%c\n",BELL);
  35.         exit(1);
  36.         }
  37.     if ((f1 = fopen(argv[1], "r")) == NULL)
  38.         {
  39.         printf("\nUnable to find/open %s\n", argv[1]);
  40.         exit(1);
  41.         }
  42.     last_char = ' ';
  43.     o_count = c_count = 0;
  44.     puts("Opening Braces =      Closing Braces =      ");
  45.     while ((c = agetc(f1)) != EOF)
  46.         {
  47.         if (last_char == '/' && c == '*')
  48.             {
  49.             while (c != '/' && last_char != '*')
  50.                 {
  51.                 last_char = c;
  52.                 c = agetc(f1);
  53.                 }
  54.             }
  55.         if (c == '\'')
  56.             {
  57.             last_char = c;
  58.             c = agetc(f1);
  59.             if (c == '\\')
  60.                 {
  61.                 while (c != '\'')
  62.                     c = agetc(f1);
  63.                 }
  64.             if (c == '{' || c == '}')
  65.                 c = agetc(f1);
  66.             }
  67.         if (c == '"' && last_char != '\'')
  68.             {
  69.             c = agetc(f1);
  70.             while (c != '"')
  71.                 c = agetc(f1);
  72.             }
  73.         if (c == '{')
  74.             {
  75.             ++o_count;
  76.             set_cur(4,18,o_count);
  77.             }
  78.         if (c == '}')
  79.             {
  80.             ++c_count;
  81.             set_cur(4,40,c_count);
  82.             }
  83.         last_char = c;
  84.         }
  85.     fclose(f1);
  86.     if (o_count == c_count)
  87.         printf("\nBrace pair-count is okay.  Starting Pass 2...\n");
  88.     else
  89.         printf("\nBrace pair-count is incorrect.  Aborting!\n");
  90.  
  91.     puts("Opening Comments =      Closing Comments =     ");
  92.     f1 = fopen(argv[1], "r");
  93.     o_count = c_count = 0;
  94.     last_char = ' ';
  95.     while ((c = agetc(f1)) != EOF)
  96.         {
  97.         if (last_char == '*' && c == '/')
  98.             {
  99.             ++c_count;
  100.             set_cur(6, 44, c_count);
  101.             }
  102.               if (last_char == '/' && c == '*')
  103.             {
  104.             ++o_count;
  105.             set_cur(6, 20, o_count);
  106.             }
  107.         last_char = c;
  108.           }
  109.      fclose(f1);
  110.     if (o_count == c_count)
  111.         {
  112.         printf("\nComment pair-count is okay.  Continuing...\n");
  113.         exit(0);
  114.         }
  115.     else
  116.         {
  117.         printf("\nComment pair-count is incorrect.  Aborting!\n");
  118.         exit(1);
  119.         }
  120.     }
  121.  
  122. /* crt cursor-setting function                        */
  123. set_cur(row, col, num)
  124. int row, col, num;
  125.     {
  126.     printf("%s%c%c%d", CURSOR, row + 31, col + 31, num);
  127.     }
  128. g function                        */
  129. set_cur(row, col, num)
  130. int row, col, num;
  131.     {
  132.     printf("%s%c%c%d", CURS