home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume8 / xdbx / part01 / sun_regex.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-08-28  |  5.4 KB  |  165 lines

  1. /*****************************************************************************
  2.  *
  3.  *  xdbx - X Window System interface to the dbx debugger
  4.  *
  5.  *  Copyright 1989 The University of Texas at Austin
  6.  *  Copyright 1990 Microelectronics and Computer Technology Corporation
  7.  *
  8.  *  Permission to use, copy, modify, and distribute this software and its
  9.  *  documentation for any purpose and without fee is hereby granted,
  10.  *  provided that the above copyright notice appear in all copies and that
  11.  *  both that copyright notice and this permission notice appear in
  12.  *  supporting documentation, and that the name of The University of Texas
  13.  *  and Microelectronics and Computer Technology Corporation (MCC) not be 
  14.  *  used in advertising or publicity pertaining to distribution of
  15.  *  the software without specific, written prior permission.  The
  16.  *  University of Texas and MCC makes no representations about the 
  17.  *  suitability of this software for any purpose.  It is provided "as is" 
  18.  *  without express or implied warranty.
  19.  *
  20.  *  THE UNIVERSITY OF TEXAS AND MCC DISCLAIMS ALL WARRANTIES WITH REGARD TO
  21.  *  THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  22.  *  FITNESS, IN NO EVENT SHALL THE UNIVERSITY OF TEXAS OR MCC BE LIABLE FOR
  23.  *  ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
  24.  *  RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
  25.  *  CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  26.  *  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  27.  *
  28.  *  Author:      Po Cheung
  29.  *  Created:       March 10, 1989
  30.  *
  31.  *****************************************************************************/
  32.  
  33. /*  sun_regex.h:
  34.  *
  35.  *  Regular expression pattern matching for Sun dbx.
  36.  *  
  37.  *  The reg_token array indicates the register no. for each token type.
  38.  *      reg_token[0] : message
  39.  *      reg_token[1] : stop number
  40.  *      reg_token[2] : function name
  41.  *      reg_token[3] : line number
  42.  *      reg_token[4] : file name
  43.  *      reg_token[5] : display command output
  44.  */
  45.  
  46. #define    TK_MESG     0
  47. #define TK_STOP        1
  48. #define TK_FUNC     2
  49. #define TK_LINE     3
  50. #define TK_FILE     4
  51. #define TK_DISP     5
  52.  
  53. #define    O_EXEC        0
  54. #define O_DONE        1
  55. #define O_STOPAT     2
  56. #define O_STOPIN     3
  57. #define O_UPDOWN     4
  58. #define O_BELL        5
  59. #define O_LIST        6
  60. #define O_SEARCH        6
  61. #define O_FILE        7
  62. #define O_PRINT         8
  63. #define O_DEBUG         9
  64.  
  65. #define    C_ANY        -1
  66. #define C_EXEC        0
  67. #define C_STOPAT    1
  68. #define C_STOPIN    2
  69. #define C_UPDOWN    3
  70. #define C_DELETE    4
  71. #define C_FUNC        5
  72. #define C_FILE        6
  73. #define C_DEBUG        7
  74. #define C_CD        8
  75. #define C_USE           9
  76. #define C_PWD           10
  77. #define C_LIST          11
  78. #define C_SEARCH        12
  79. #define C_DISPLAY       13
  80. #define C_PRINT         14
  81.  
  82. static PatternRec output_pattern[] = {
  83.     /* exec */
  84.     {"\\(.*\n\\)*.*\\(\\(stopped\\|Bus error\\|Segmentation fault\\|\
  85. Interrupt\\|signal.*\\) in \\([^ ]+\\) at line \\([0-9]+\\)\\( in file\
  86.  \"\\([^ ]+\\)\"\\)?\\)\n\\(.*\n\\)?\\(\\(.*\n\\)*\\)", 
  87.      NULL,
  88.      {2, -1, 4, 5, 7, 9}
  89.     },
  90.     /* done */
  91.     {"\\(.*\n\\)*\\(execution completed\\|program exited with [0-9]+\\)",
  92.      NULL,
  93.      {-1, -1, -1, -1, -1, -1}
  94.     },
  95.     /* stop at */
  96.     {"(\\([0-9]+\\)) stop at \\(\"\\([^ ]+\\)\":\\)?\\([0-9]+\\)\n",
  97.      NULL,
  98.      {-1, 1, -1, 4, 3, -1}
  99.     },
  100.     /* stop in */
  101.     {"(\\([0-9]+\\)) stop in \\([^ ]+\\)\n",
  102.      NULL,
  103.      {-1, 1, 2, -1, -1, -1}
  104.     },
  105.     /* up, down */
  106.     {"\\(.*\n\\)?\\(Current function is \\([^ ]+\\)\n\\)\\([ ]*\\([0-9]+\\).*\n\\)",
  107.      NULL,
  108.      {2, -1, 3, 5, -1, -1}
  109.     },
  110.     /* bell */
  111.     {"\\(Already at the \\(top\\|bottom\\) call level\n\\|\
  112. No active stack frames\n\\|no program to run\n\\|no process to run\n\\|\
  113. program is not active\n\\|can't continue execution\n\\|\
  114. .*\ncan't write to process.*\n\\|\
  115. \\(Top\\|End\\)-of-file; did not find search string:.*\n\\)",
  116.      NULL,
  117.      {-1, -1, -1, -1, -1}
  118.     },
  119.     /* list, search */
  120.     {"[ ]*\\([0-9]+\\).*\n",
  121.      NULL,
  122.      {-1, -1, -1, 1, -1, -1}
  123.     },
  124.     /* file */
  125.     {"\\(\\([^ ]*\\)\\|No current source file\\)\n",
  126.      NULL,
  127.      {-1, -1, -1, -1, 2, -1}
  128.     },
  129.     /* print, display */
  130.     {"\\(warning: .*\n\\)?\\(\\(.*\\) = .*\n\\(.*\n\\)*\\)",
  131.      NULL,
  132.      { 3, -1, -1, -1, -1, 2}
  133.     },
  134.     /* debug */
  135.     {"Reading symbolic information...\nRead [0-9]+ symbols\n",
  136.      NULL,
  137.      { -1, -1, -1, -1, -1, -1}
  138.     },
  139.     NULL 
  140. };
  141.  
  142.  
  143. static PatternRec command_pattern[] = {
  144.     {"[ ]*\\(run\\|rerun\\|cont\\|next\\|step\\)\\( [0-9]+\\)?[ ]*",     
  145.                         NULL, {-1, -1, -1, -1, -1, -1}},
  146.     {"[ ]*stop[ ]+at[ ]+\\(\"[^ ]+\":\\)?[0-9]+[ ]*\n",         
  147.                         NULL, {-1, -1, -1, -1, -1, -1}},
  148.     {"[ ]*stop[ ]+in[ ]+[^ ]+[ ]*\n",         NULL, {-1, -1, -1, -1, -1, -1}},
  149.     {"[ ]*\\(up\\|down\\)[ ]*\\( [0-9]+\\)?[ ]*\n",         
  150.                         NULL, {-1, -1, -1, -1, -1, -1}},
  151.     {"[ ]*\\(delete\\|d\\)[ ]+\\(all\\|[0-9]+\\)",    
  152.                         NULL, {-1, -1, -1,  1, -1, -1}},
  153.     {"[ ]*func[ ]+\\([^ ]+\\)[ ]*\n",         NULL, {-1, -1,  1, -1, -1, -1}},
  154.     {"[ ]*file[ ]*\\([^ ]+\\)?[ ]*\n",        NULL, {-1, -1, -1, -1, -1, -1}},
  155.     {"[ ]*debug[ ]*[^ ]+[ ]*\n",         NULL, {-1, -1, -1, -1, -1, -1}},
  156.     {"[ ]*cd[ ]*[^ ]+[ ]*",             NULL, {-1, -1, -1, -1, -1, -1}},
  157.     {"[ ]*use[ ]*",                 NULL, {-1, -1, -1, -1, -1, -1}},
  158.     {"[ ]*pwd[ ]*\n",                NULL, {-1, -1, -1, -1, -1, -1}},
  159.     {"[ ]*list[ ]*",                NULL, {-1, -1, -1, -1, -1, -1}},
  160.     {"[ ]*\\(/\\|\?\\)[ ]*",            NULL, {-1, -1, -1, -1, -1, -1}},
  161.     {"[ ]*\\(un\\)?display[ ]*[^ ]+[ ]*",    NULL, {-1, -1, -1, -1, -1, -1}},
  162.     {"[ ]*print[ ]*[^ ]+[ ]*",            NULL, {-1, -1, -1, -1, -1, -1}},
  163.     NULL
  164. };
  165.