home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1999 mARCH
/
PCWK3A99.iso
/
Linux
/
DDD331
/
DDD-3_1_.000
/
DDD-3_1_
/
ddd-3.1.1
/
ddd
/
regexps.C
< prev
next >
Wrap
C/C++ Source or Header
|
1998-10-23
|
10KB
|
248 lines
// $Id: regexps.C,v 1.28 1998/10/23 11:47:06 zeller Exp $ -*- C++ -*-
// Regular expressions used in DDD
// Copyright (C) 1997 Technische Universitaet Braunschweig, Germany.
// Written by Andreas Zeller <zeller@ips.cs.tu-bs.de>.
//
// This file is part of DDD.
//
// DDD is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public
// License as published by the Free Software Foundation; either
// version 2 of the License, or (at your option) any later version.
//
// DDD is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with DDD -- see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// DDD is the data display debugger.
// For details, see the DDD World-Wide-Web page,
// `http://www.cs.tu-bs.de/softech/ddd/',
// or send a mail to the DDD developers <ddd@ips.cs.tu-bs.de>.
char regexps_rcsid[] =
"$Id: regexps.C,v 1.28 1998/10/23 11:47:06 zeller Exp $";
#ifdef __GNUG__
#pragma implementation
#endif
#include "regexps.h"
#include "assert.h"
#include "misc.h" // min()
#include <string.h>
#include <iostream.h>
// The first DATA_LEN characters are used to choose the actual regexp.
#define DATA_LEN 2
#include "rxscan.C"
// Initial state
#ifndef INTIIAL
#define INITIAL 0
#endif
static int rx_matcher(void *data, const char *s, int len, int pos)
{
#ifndef FLEX_SCANNER
int required_len = len - pos + DATA_LEN;
if (required_len > MAX_LEX_TOKEN_SIZE)
{
static int max_reported_len = 0;
if (required_len > max_reported_len)
{
cerr << "Warning: LEX buffer overflow.\n";
cerr << "Please raise the value of "
"MAX_LEX_TOKEN_SIZE in `ddd/rxscan.L'\n"
"from " << MAX_LEX_TOKEN_SIZE << " to "
<< required_len << " or more and recompile. "
"Better yet, use FLEX instead of LEX.\n";
max_reported_len = required_len;
}
// Only look at the first MAX_LEX_TOKEN_SIZE characters
len = pos + MAX_LEX_TOKEN_SIZE - DATA_LEN;
assert(len - pos + DATA_LEN == MAX_LEX_TOKEN_SIZE);
}
#endif
the_prefix = (char *)data;
the_text = s + pos;
the_length = len - pos;
assert(strlen(the_prefix) == DATA_LEN);
// Restart the scanner
reset_scanner();
BEGIN(INITIAL);
int ret;
if (dddlex() == 0)
ret = -1; // not matched
else
ret = dddleng - DATA_LEN; // # of characters matched
return ret;
}
// All the regexps used in DDD
const regex rxaddr (rx_matcher, (void *)"01");
const regex rxaddress (rx_matcher, (void *)"02");
const regex rxaddress_in (rx_matcher, (void *)"03");
const regex rxaddress_start (rx_matcher, (void *)"04");
#if !WITH_RUNTIME_REGEX
const regex rxalpha (rx_matcher, (void *)"05");
const regex rxalphanum (rx_matcher, (void *)"06");
#endif
const regex rxarglist (rx_matcher, (void *)"07");
const regex rxat (rx_matcher, (void *)"08");
const regex rxblank (rx_matcher, (void *)"09");
const regex rxblanks (rx_matcher, (void *)"10");
const regex rxblanks_or_tabs (rx_matcher, (void *)"11");
const regex rxbreak_cmd (rx_matcher, (void *)"12");
const regex rxcd_cmd (rx_matcher, (void *)"13");
const regex rxcolons (rx_matcher, (void *)"14");
const regex rxcore (rx_matcher, (void *)"15");
const regex rxcore_cmd (rx_matcher, (void *)"16");
const regex rxcrlf (rx_matcher, (void *)"17");
const regex rxdata (rx_matcher, (void *)"18");
const regex rxdbx_begin_of_display (rx_matcher, (void *)"19");
const regex rxdbx_begin_of_display_info (rx_matcher, (void *)"20");
const regex rxdbx_scope (rx_matcher, (void *)"21");
const regex rxdbxframe (rx_matcher, (void *)"22");
const regex rxdbxfunc (rx_matcher, (void *)"23");
const regex rxdbxfunc2 (rx_matcher, (void *)"24");
const regex rxdbxpos (rx_matcher, (void *)"25");
const regex rxdbxwarn1 (rx_matcher, (void *)"26");
const regex rxdbxwarn2 (rx_matcher, (void *)"27");
const regex rxdebug_cmd (rx_matcher, (void *)"28");
const regex rxdep (rx_matcher, (void *)"29");
const regex rxdisable (rx_matcher, (void *)"30");
const regex rxdisplay (rx_matcher, (void *)"31");
const regex rxdisplay_cmd (rx_matcher, (void *)"32");
const regex rxdisplay_cmd_and_args (rx_matcher, (void *)"33");
const regex rxdont (rx_matcher, (void *)"34");
const regex rxdotdot (rx_matcher, (void *)"35");
#if !WITH_RUNTIME_REGEX
const regex rxdouble (rx_matcher, (void *)"36");
#endif
const regex rxdown_cmd (rx_matcher, (void *)"37");
const regex rxenable (rx_matcher, (void *)"38");
const regex rxeqeq (rx_matcher, (void *)"39");
const regex rxfile_cmd (rx_matcher, (void *)"40");
const regex rxfilepath (rx_matcher, (void *)"41");
const regex rxuse_cmd (rx_matcher, (void *)"42");
const regex rxframe_addr (rx_matcher, (void *)"43");
const regex rxframe_cmd (rx_matcher, (void *)"44");
const regex rxfunction_call (rx_matcher, (void *)"45");
const regex rxgdb_begin_of_display (rx_matcher, (void *)"46");
const regex rxgdb_begin_of_display_info (rx_matcher, (void *)"47");
const regex rxgdb_disp_nr (rx_matcher, (void *)"48");
const regex rxjdbpos (rx_matcher, (void *)"49");
const regex rxgraph_cmd (rx_matcher, (void *)"50");
const regex rxidentifier (rx_matcher, (void *)"51");
const regex rxindex (rx_matcher, (void *)"52");
#if !WITH_RUNTIME_REGEX
const regex rxint (rx_matcher, (void *)"53");
#endif
const regex rxinvalid_value (rx_matcher, (void *)"54");
const regex rxlookup_cmd (rx_matcher, (void *)"55");
#if !WITH_RUNTIME_REGEX
const regex rxlowercase (rx_matcher, (void *)"56");
#endif
const regex rxm3comment (rx_matcher, (void *)"57");
const regex rxmake_cmd (rx_matcher, (void *)"58");
const regex rxmembers_of_nl (rx_matcher, (void *)"59");
const regex rxmore_than_one (rx_matcher, (void *)"60");
const regex rxname_colon_int_nl (rx_matcher, (void *)"61");
const regex rxnl (rx_matcher, (void *)"62");
const regex rxnl_int (rx_matcher, (void *)"63");
const regex rxnladdress (rx_matcher, (void *)"64");
const regex rxnladdress_in (rx_matcher, (void *)"65");
const regex rxnlstar (rx_matcher, (void *)"66");
const regex rxnonzero1 (rx_matcher, (void *)"67");
const regex rxnonzero2 (rx_matcher, (void *)"68");
const regex rxnop_cmd (rx_matcher, (void *)"69");
const regex rxnum (rx_matcher, (void *)"70");
const regex rxop_cmd (rx_matcher, (void *)"71");
const regex rxoptions (rx_matcher, (void *)"72");
const regex rxout_of_range (rx_matcher, (void *)"73");
const regex rxpath_cmd (rx_matcher, (void *)"74");
const regex rxpc (rx_matcher, (void *)"75");
const regex rxjdbprompt (rx_matcher, (void *)"76");
const regex rxjdbprompt_reverse (rx_matcher, (void *)"77");
const regex rxprocess1 (rx_matcher, (void *)"78");
const regex rxprocess2 (rx_matcher, (void *)"79");
const regex rxprompt (rx_matcher, (void *)"80");
const regex rxq (rx_matcher, (void *)"81");
const regex rxreference (rx_matcher, (void *)"82");
const regex rxrefresh_cmd (rx_matcher, (void *)"83");
const regex rxreturn (rx_matcher, (void *)"84");
const regex rxrun_cmd (rx_matcher, (void *)"85");
const regex rxrunning_cmd (rx_matcher, (void *)"86");
const regex rxselect (rx_matcher, (void *)"87");
const regex rxsemicolon_and_brace (rx_matcher, (void *)"88");
const regex rxsep (rx_matcher, (void *)"89");
const regex rxset1_cmd (rx_matcher, (void *)"90");
const regex rxset2_cmd (rx_matcher, (void *)"91");
const regex rxset_args_cmd (rx_matcher, (void *)"92");
const regex rxsetting_cmd (rx_matcher, (void *)"93");
const regex rxsimple (rx_matcher, (void *)"94");
const regex rxsingle_display_cmd (rx_matcher, (void *)"95");
const regex rxspace (rx_matcher, (void *)"96");
const regex rxstopped_addr (rx_matcher, (void *)"97");
const regex rxstruct_begin (rx_matcher, (void *)"98");
const regex rxjdbprompt_nothread (rx_matcher, (void *)"99");
const regex rxstruct_end (rx_matcher, (void *)"A0");
const regex rxstruct_keyword_begin (rx_matcher, (void *)"A1");
const regex rxterminated (rx_matcher, (void *)"A2");
const regex rxthread_cmd (rx_matcher, (void *)"A3");
const regex rxundisplay (rx_matcher, (void *)"A4");
const regex rxup_cmd (rx_matcher, (void *)"A5");
#if !WITH_RUNTIME_REGEX
const regex rxuppercase (rx_matcher, (void *)"A6");
#endif
const regex rxvtable (rx_matcher, (void *)"A7");
const regex rxvtable_entries (rx_matcher, (void *)"A8");
#if !WITH_RUNTIME_REGEX
const regex rxwhite (rx_matcher, (void *)"A9");
#endif
const regex rxxdb (rx_matcher, (void *)"B0");
const regex rxxdbpos (rx_matcher, (void *)"B1");
const regex rxrepeats (rx_matcher, (void *)"B2");
const regex rxchain (rx_matcher, (void *)"B3");
const regex rxwhen (rx_matcher, (void *)"B4");
const regex rxstopped_func (rx_matcher, (void *)"B5");
const regex rxframe_func (rx_matcher, (void *)"B6");
const regex rxdefine_cmd (rx_matcher, (void *)"B7");
const regex rxlist_cmd (rx_matcher, (void *)"B8");
const regex rxlist_range (rx_matcher, (void *)"B9");
const regex rxfilepos (rx_matcher, (void *)"C0");
const regex rxdbx_baseclass (rx_matcher, (void *)"C1");
const regex rxset3_cmd (rx_matcher, (void *)"C2");
const regex rxperlprompt (rx_matcher, (void *)"C3");
const regex rxperlpos (rx_matcher, (void *)"C4");
const regex rxperlref (rx_matcher, (void *)"C5");