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