/*****************************************************************************
*
* xdbx - X Window System interface to the dbx debugger
*
* Copyright 1989 The University of Texas at Austin
* Copyright 1990 Microelectronics and Computer Technology Corporation
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and that
* both that copyright notice and this permission notice appear in
* supporting documentation, and that the name of The University of Texas
* and Microelectronics and Computer Technology Corporation (MCC) not be
* used in advertising or publicity pertaining to distribution of
* the software without specific, written prior permission. The
* University of Texas and MCC makes no representations about the
* suitability of this software for any purpose. It is provided "as is"
* without express or implied warranty.
*
* THE UNIVERSITY OF TEXAS AND MCC DISCLAIMS ALL WARRANTIES WITH REGARD TO
* THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL THE UNIVERSITY OF TEXAS OR MCC BE LIABLE FOR
* ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
* CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Po Cheung
* Created: November 24, 1989
*
*****************************************************************************/
/* mips_regex.h:
*
* Regular expression pattern matching for dbx on DECStation.
*
* The reg_token array indicates the register no. for each token type.
* reg_token[0] : message
* reg_token[1] : stop number
* reg_token[2] : function name
* reg_token[3] : line number
* reg_token[4] : file name
* reg_token[5] : display command output
*/
#define TK_MESG 0
#define TK_STOP 1
#define TK_FUNC 2
#define TK_LINE 3
#define TK_FILE 4
#define TK_DISP 5
#define O_EXEC_GDB 0
#define O_DONE 1
#define O_STOPAT 2
#define O_STOPIN 3
#define O_UPDOWN 4
#define O_FUNC 4
#define O_BELL 5
#define O_LIST 6
#define O_FILE 7
#define O_SEARCH 8
#define O_PRINT 9
#define O_DEBUG 10
#define C_ANY -1
#define C_EXEC 0
#define C_STOPAT 1
#define C_STOPIN 2
#define C_UPDOWN 3
#define C_DELETE 4
#define C_FUNC 5
#define C_FILE 6
#define C_USE 7
#define C_LIST 8
#define C_SEARCH 9
#define C_PRINT 10
#define C_STATUS 11
static PatternRec output_pattern[] = {
/* exec */
{"\\(.*\n\\)*\\(\\(\\(\\(\[[0-9]+\\] \\)?\\(stopped at \\)?\\)\\|Bus error \
\\|Segmentation fault \\|Interrupt \\)?\\[\\([^ ]+\\):\\([0-9]+\\).*\\]\\).*\n",
NULL,
{2, -1, 7, 8, -1, -1}
},
/* done */
{"\\(.*\n\\)*Program terminated normally\n",
NULL,
{-1, -1, -1, -1, -1, -1}
},
/* stop at */
{"\\[\\([0-9]+\\)\\] stop at \\(\"\\([^ ]+\\)\":\\)?\\([0-9]+\\)\n",
NULL,
{-1, 1, -1, 4, 3, -1}
},
/* stop in */
{"\\(\\[.*\\]\n\\)*\\[\\([0-9]+\\)\\] stop in \\([^ ]+\\)\n",
NULL,
{-1, 2, 3, -1, -1, -1}
},
/* up, down, func */
{"\\(.*\n\\)*\\([^ ]+\\):[ ]*\\([0-9]+\\).*\n",
NULL,
{2, -1, 2, 3, -1, -1}
},
/* bell */
{"\n\\(not that many levels\\|program not active\\|program is not active\\|\
cannot read register unless program is active\\|cannot dump unless program is \
active\\)\n",
NULL,
{-1, -1, -1, -1, -1, -1}
},
/* list */
{"[ ]*\\([0-9]+\\).*\n",
NULL,
{-1, -1, -1, 1, -1, -1}
},
/* file */
{"\\([^ ]+\\)\n",
NULL,
{-1, -1, -1, -1, 1, -1}
},
/* search */
{"[ ]*\\([0-9]+\\).*\n",
NULL,
{-1, -1, -1, 1, -1, -1}
},
/* print */
{"\\(.+\n\\(.*\n\\)*\\)",
NULL,
{ 1, -1, -1, -1, -1, -1}
},
/* dbx init */
{"\\(.*\n\\)*.*\\(dbx version .*\nType 'help' for help.\nreading symbolic \
information ...\n\\)\\(\nwarning: .*\n\\)?\\([^ ]+\\):[ ]*\\([0-9]+\\).*\n",
NULL,
{-1, -1, 4, 5, -1, -1}
},
NULL
};
static PatternRec command_pattern[] = {
{"[ ]*\\(run\\|r\\|cont\\|c\\|next\\|n\\|step\\|s\\|return\\)\\( \\|\n\\)",
NULL, {-1, -1, -1, -1, -1, -1}},
{"[ ]*\\(stop\\|st\\)[ ]+at[ ]+[0-9]+", NULL, {-1, -1, -1, -1, -1, -1}},
{"[ ]*\\(stop\\|st\\)[ ]+in[ ]+[^ ]+", NULL, {-1, -1, -1, -1, -1, -1}},
{"[ ]*\\(up\\|down\\)", NULL, {-1, -1, -1, -1, -1, -1}},
{"[ ]*\\(delete\\|d\\)", NULL, {-1, -1, -1, 1, -1, -1}},
{"[ ]*func[ ]*\\([^ ]+\\)[ ]*", NULL, {-1, -1, 1, -1, -1, -1}},
{"[ ]*file[ ]*", NULL, {-1, -1, -1, -1, 1, -1}},
{"[ ]*use[ ]*", NULL, {-1, -1, -1, -1, 1, -1}},
{"[ ]*list[ ]*", NULL, {-1, -1, -1, -1, 1, -1}},
{"[ ]*\\(/\\|\?\\)", NULL, {-1, -1, -1, -1, -1, -1}},
{"[ ]*\\(print\\|p\\)[ ]*[^ ]+", NULL, {-1, -1, -1, -1, -1, -1}},
{"[ ]*status[ ]*", NULL, {-1, -1, -1, -1, 1, -1}},
NULL
};
syntax highlighted by Code2HTML, v. 0.9.1