home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 22 gnu / 22-gnu.zip / epmgcc32.zip / iccparse.e < prev    next >
Text File  |  1996-07-06  |  3KB  |  72 lines

  1. /*
  2. ╔══════════════════════════════════════════════════════════════════════════════╗
  3. ║ What's it called: EPMGCC  V3.00                                              ║
  4. ║                                                                              ║
  5. ║ What does it do:  The E source code for the GCC-Interface for EPM.           ║
  6. ║                   This file contains the code for the error parser of        ║
  7. ║                   compile time errors issued by ICC.                         ║
  8. ║                   This module is linked seperately to allow the user to      ║
  9. ║                   change the error-parser during runtime. See the            ║
  10. ║                   documentation for details.                                 ║
  11. ║                                                                              ║
  12. ║ Who and When:     B. Bablok 12/93 - 07/96                                    ║
  13. ║                                                                              ║
  14. ╚══════════════════════════════════════════════════════════════════════════════╝
  15. */
  16. DEFC gcc_parse_error =
  17.    UNIVERSAL gcc_error_file_id, gcc_other_file_id, gcc_error_file,
  18.              gcc_line2index, gcc_index2err, gcc_error_index
  19.  
  20.    parse_all = ARG(1) <> ''
  21.    error_no = 0
  22.  
  23.    WHILE (.line <= .last) DO           -- iterate until a "true" error is found
  24.      GETLINE  line
  25.  
  26.       IF POS(":",WORD(line,1)) = 0 THEN
  27.          lineno = 'junk'
  28.       ELSEIF SUBSTR(line,2,1) = ":" THEN
  29.          PARSE VALUE line WITH drive ":" filename "(" lineno ":"  col ")" ":" . ":" gcc_message
  30.          filename = drive":"filename
  31.       ELSE
  32.          PARSE VALUE line WITH filename "(" lineno ":"  col ")" ":" . ":" gcc_message
  33.       ENDIF
  34.  
  35.      IF NOT ISNUM(lineno) THEN
  36.        IF .line = .last THEN
  37.           IF NOT parse_all THEN
  38.              ACTIVATEFILE gcc_other_file_id
  39.              SAYERROR "No more errors!"
  40.           ELSE
  41.              DO_ARRAY 2, gcc_line2index, 0, error_no
  42.              DO_ARRAY 2, gcc_index2err, 0, error_no
  43.           ENDIF
  44.           RETURN
  45.        ELSE                           -- try the next line
  46.          "+1"
  47.        ENDIF
  48.  
  49.      ELSEIF NOT parse_all THEN                              -- found an error
  50.        "EDIT" TRANSLATE(filename,'\','/') "'gcc_setpos "lineno col"'"
  51.        SAYERROR gcc_message
  52.        RETURN
  53.  
  54.      ELSE
  55.        error_no = error_no + 1
  56.        DO_ARRAY 2, gcc_line2index, .line, error_no
  57.        DO_ARRAY 2, gcc_index2err, 'line.'error_no, lineno
  58.        DO_ARRAY 2, gcc_index2err, 'col.'error_no, col
  59.        DO_ARRAY 2, gcc_index2err, 'file.'error_no, filename
  60.        DO_ARRAY 2, gcc_index2err, 'msg.'error_no, gcc_message
  61.        line = .line
  62.        DO_ARRAY 2, gcc_index2err, 'orig.'error_no, line
  63.        IF .line = .last THEN
  64.           DO_ARRAY 2, gcc_line2index, 0, error_no
  65.           DO_ARRAY 2, gcc_index2err, 0, error_no
  66.           RETURN
  67.        ELSE
  68.          "+1"
  69.        ENDIF
  70.      ENDIF
  71.    ENDWHILE
  72.