13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* DLGLexerBase.c
23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang *
33eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * SOFTWARE RIGHTS
43eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang *
53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * Set (PCCTS) -- PCCTS is in the public domain.  An individual or
73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * company may do whatever they wish with source code distributed with
83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * PCCTS or the code generated by PCCTS, including the incorporation of
93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * PCCTS, or its output, into commerical software.
103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang *
113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * We encourage users to develop software with PCCTS.  However, we do ask
123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * that credit is given to us for developing PCCTS.  By "credit",
133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * we mean that if you incorporate our source code into one of your
143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * programs (commercial product, research project, or otherwise) that you
153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * acknowledge this fact somewhere in the documentation, research report,
163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * etc...  If you like PCCTS and have developed a nice tool with the
173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * output, please mention that you developed it using PCCTS.  In
183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * addition, we ask that this header remain intact in our source code.
193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * As long as these guidelines are kept, we expect to continue enhancing
203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * this system and expect to make other tools available as they are
213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * completed.
223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang *
233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * ANTLR 1.33
243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * Terence Parr
253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * Parr Research Corporation
263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * with Purdue University and AHPCRC, University of Minnesota
273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * 1989-1998
283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang */
293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "pcctscfg.h"
313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "pccts_stdio.h"
333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "pccts_stdlib.h"
343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangPCCTS_NAMESPACE_STD
363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* I have to put this here due to C++ limitation
383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * that you can't have a 'forward' decl for enums.
393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang * I hate C++!!!!!!!!!!!!!!!
403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang */
413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// MR1
433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// MR1  10-Apr-97  133MR1  Prevent use of varying sizes for the
443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// MR1  			ANTLRTokenType enum
453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// MR1
463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangenum ANTLRTokenType { TER_HATES_CPP=0, ITS_UTTER_GARBAGE,		// MR1
483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang					 WITH_SOME_GOOD_IDEAS=9999};	// MR1
493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#define ANTLR_SUPPORT_CODE
513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include "pcctscfg.h"
533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang#include DLEXERBASE_H
543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangDLGLexerBase::
563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangDLGLexerBase(DLGInputStream *in,
573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	     unsigned bufsize,
583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	     int _interactive,
593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	     int _track_columns)
603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_bufsize = bufsize;
623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_lextext = new DLGChar[_bufsize];
633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	if ( this->_lextext==NULL ) {
643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	    panic("text buffer is NULL");
653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	}
663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_begexpr = this->_endexpr = NULL;
673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->ch = this->bufovf = 0;
683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->nextpos = NULL;
693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->cl = 0;
703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->add_erase = 0;
713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->input = in;
723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_begcol = 0;
733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_endcol = 0;
743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_line = 1;
753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->charfull = 0;
763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->automaton = 0;
773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->token_to_fill = NULL;
783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->interactive = _interactive;
793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->track_columns = _track_columns;
803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->debugLexerFlag = 0;					// MR1
813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->parser = NULL;						// MR1
823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang    this->lexErrCount=0;                        // MR11
833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang// MR19  THM
863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::reset()
883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->charfull = 0;
903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_begcol = 0;
913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_endcol = 0;
923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->automaton = 0;
933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->_line=1;
943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->lexErrCount=0;
953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangsetInputStream( DLGInputStream *in )
993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	this->input = in;
1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_line = 1;
1023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	charfull = 0;
1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* saves dlg state, but not what feeds dlg (such as file position) */
1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangsaveState(DLGState *state)
1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->input = input;
1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->interactive = interactive;
1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->track_columns = track_columns;
1123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->auto_num = automaton;
1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->add_erase = add_erase;
1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->lookc = ch;
1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->char_full = charfull;
1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->begcol = _begcol;
1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->endcol = _endcol;
1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->line = _line;
1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->lextext = _lextext;
1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->begexpr = _begexpr;
1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->endexpr = _endexpr;
1223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->bufsize = _bufsize;
1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->bufovf = bufovf;
1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->nextpos = nextpos;
1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->class_num = cl;
1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->debugLexerFlag = debugLexerFlag;				// MR1
1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	state->parser = parser;						// MR1
1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangrestoreState(DLGState *state)
1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	input = state->input;
1343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	interactive = state->interactive;
1353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	track_columns = state->track_columns;
1363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	automaton = state->auto_num;
1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	add_erase = state->add_erase;
1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	ch = state->lookc;
1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	charfull = state->char_full;
1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_begcol = state->begcol;
1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_endcol = state->endcol;
1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_line = state->line;
1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_lextext = state->lextext;
1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_begexpr = state->begexpr;
1453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_endexpr = state->endexpr;
1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_bufsize = state->bufsize;
1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	bufovf = state->bufovf;
1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	nextpos = state->nextpos;
1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	cl = state->class_num;
1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	debugLexerFlag = state->debugLexerFlag;				// MR1
1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	parser = state->parser;						// MR1
1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* erase what is currently in the buffer, and get a new reg. expr */
1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangskip()
1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	add_erase = 1;
1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* don't erase what is in the lextext buffer, add on to it */
1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangmore()
1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	add_erase = 2;
1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* substitute c for the reg. expr last matched and is in the buffer */
1693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
1703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangreplchar(DLGChar c)
1713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	/* can't allow overwriting null at end of string */
1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	if (_begexpr < &_lextext[_bufsize-1]){
1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		*_begexpr = c;
1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		*(_begexpr+1) = '\0';
1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	}
1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_endexpr = _begexpr;
1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	nextpos = _begexpr + 1;
1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang/* replace the string s for the reg. expr last matched and in the buffer */
1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangreplstr(const DLGChar *s) /* MR20 const */
1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	register DLGChar *l= &_lextext[_bufsize -1];
1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	nextpos = _begexpr;
1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	if (s){
1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	 	while ((nextpos <= l) && (*(nextpos++) = *(s++))){
1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang			/* empty */
1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		}
1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		/* correct for NULL at end of string */
1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		nextpos--;
1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	}
1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	if ((nextpos <= l) && (*(--s) == 0)){
1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		bufovf = 0;
1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	}else{
1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang		bufovf = 1;
2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	}
2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	*(nextpos) = '\0';
2023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_endexpr = nextpos - 1;
2033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
2043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangerrstd(const char *s)                               /* MR20 const */
2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang        lexErrCount++;                              /* MR11 */
2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang        fprintf(stderr,
2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang                "%s near line %d (text was '%s')\n",
2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang                ((s == NULL) ? "Lexical error" : s),
2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang                _line,_lextext);
2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangint DLGLexerBase::
2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangerr_in()
2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	fprintf(stderr,"No input stream, function, or string\n");
2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	/* return eof to get out gracefully */
2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	return EOF;
2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangANTLRTokenType DLGLexerBase::
2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangerraction()
2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	errstd("invalid token");
2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	advance();
2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	skip();
2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	return (ANTLRTokenType) 0;	// bogus, but satisfies compiler
2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang_ANTLRTokenPtr DLGLexerBase::
2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanggetToken()
2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	if ( token_to_fill==NULL ) panic("NULL token_to_fill");
2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	ANTLRTokenType tt = nextTokenType();
2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	_ANTLRTokenPtr tk = token_to_fill->makeToken(tt, _lextext,_line);
2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	return tk;
2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangvoid DLGLexerBase::
2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangpanic(const char *msg)      /* MR20 const */
2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang{
2443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	fprintf(stderr, "DLG panic: %s\n", msg);
2453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//  7-Apr-97 133MR1
2473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang//
2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang	exit(PCCTS_EXIT_FAILURE);					// MR1
2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}
2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang
2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangANTLRParser * DLGLexerBase::						// MR1
2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangsetParser(ANTLRParser *p) {						// MR1
2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  ANTLRParser	*oldValue=parser;					// MR1
2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  parser=p;								// MR1
2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  return oldValue;							// MR1
2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}									// MR1
2573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang									// MR1
2583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangANTLRParser * DLGLexerBase::						// MR1
2593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanggetParser() {								// MR1
2603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  return parser;							// MR1
2613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}									// MR1
2623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang									// MR1
2633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangint DLGLexerBase::							// MR1
2643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangdebugLexer(int newValue) {						// MR1
2653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  int	oldValue=debugLexerFlag;					// MR1
2663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  debugLexerFlag=newValue;						// MR1
2673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang  return oldValue;							// MR1
2683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang}									// MR1
269