1 #ifndef INC_CharScanner_hpp__ 2 #define INC_CharScanner_hpp__ 17 #ifdef HAS_NOT_CCTYPE_H 23 #if ( _MSC_VER == 1200 ) 37 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 45 #ifdef ANTLR_REALLY_NO_STRCASECMP 48 inline int strcasecmp(
const char *s1,
const char *s2)
52 char c1 = tolower(*s1++),
54 if (c1 < c2)
return -1;
55 if (c1 > c2)
return 1;
56 if (c1 == 0)
return 0;
73 #ifdef NO_TEMPLATE_PARTS 100 virtual int LA(
unsigned int i);
104 if (saveConsumedInput)
106 size_t l = text.length();
111 text.replace(l,0,&c,1);
117 if( saveConsumedInput )
123 inputState->getInput().commit();
132 consumeUntil(tokenSet);
137 if (inputState->guessing == 0)
148 append(inputState->getInput().LA(1));
155 inputState->column++;
157 inputState->getInput().consume();
166 if( la_1 == EOF_CHAR || la_1 == c )
178 if( la_1 == EOF_CHAR ||
set.member(la_1) )
187 return inputState->getInput().mark();
192 inputState->getInput().rewind(pos);
224 int la_1 = LA(1), c = (*s++ & 0xFF);
237 size_t len = s.length();
239 for (
size_t i = 0; i < len; i++)
242 int la_1 = LA(1), c = (s[i] & 0xFF);
269 if ( la_1 < c1 || la_1 > c2 )
277 return caseSensitive;
285 virtual bool getCaseSensitiveLiterals()
const=0;
290 return inputState->line;
296 inputState->line = l;
302 return inputState->column;
307 inputState->column = c;
313 return inputState->filename;
318 inputState->filename = f;
328 commitToPath = commit;
345 inputState->tokenStartColumn = inputState->column;
346 inputState->tokenStartLine = inputState->line;
360 inputState->column = 1;
370 int nc = ( ((c-1)/tabsize) + 1) * tabsize + 1;
376 int oldsize = tabsize;
397 return inputState->getInput();
415 tokenFactory = factory;
423 ANTLR_USE_NAMESPACE(
std)map<ANTLR_USE_NAMESPACE(std)string,int,CharScannerLiteralsLess>::const_iterator i = literals.find(text);
424 if (i != literals.end())
436 ANTLR_USE_NAMESPACE(
std)map<ANTLR_USE_NAMESPACE(std)string,int,CharScannerLiteralsLess>::const_iterator i = literals.find(txt);
437 if (i != literals.end())
448 return (c == EOF_CHAR ? EOF_CHAR : tolower(c));
471 virtual void traceIndent();
472 virtual void traceIn(
const char* rname);
473 virtual void traceOut(
const char* rname);
475 #ifndef NO_STATIC_CONSTS 476 static const int EOF_CHAR = EOF;
484 bool saveConsumedInput;
539 #ifndef NO_STATIC_CONSTS 540 static const int NO_CHAR = 0;
550 int c = inputState->getInput().LA(i);
565 return (stricmp(x.c_str(),y.c_str())<0);
567 return (strcasecmp(x.c_str(),y.c_str())<0);
572 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE 576 #endif //INC_CharScanner_hpp__ virtual void consumeUntil(const BitSet &set)
Definition: CharScanner.hpp:173
virtual RefToken getTokenObject() const
Definition: CharScanner.hpp:349
virtual int getLine() const
Get the line the scanner currently is in (starts at 1)
Definition: CharScanner.hpp:288
virtual void match(const char *s)
Definition: CharScanner.hpp:219
virtual void match(int c)
See if input contains character 'c' throw MismatchedCharException if not.
Definition: CharScanner.hpp:196
virtual void newline()
Definition: CharScanner.hpp:357
Definition: ANTLRException.hpp:15
Definition: TokenRefCount.hpp:43
virtual void setColumn(int c)
set the column number
Definition: CharScanner.hpp:305
virtual void rewind(unsigned int pos)
Rewind the scanner to a previously marked position.
Definition: CharScanner.hpp:190
virtual bool getCaseSensitive() const
Definition: CharScanner.hpp:275
virtual void setTokenObjectFactory(factory_type factory)
Set the factory for created tokens.
Definition: CharScanner.hpp:413
virtual void match(const BitSet &b)
Definition: CharScanner.hpp:207
virtual int testLiteralsTable(const std ::string &txt, int ttype) const
Definition: CharScanner.hpp:434
virtual int toLower(int c) const
Override this method to get more specific case handling.
Definition: CharScanner.hpp:443
virtual bool getCaseSensitiveLiterals() const =0
~Tracer()
Definition: CharScanner.hpp:528
virtual void setCommitToPath(bool commit)
Definition: CharScanner.hpp:326
factory_type tokenFactory
Factory for tokens.
Definition: CharScanner.hpp:486
virtual int getColumn() const
Get the column the scanner currently is in (starts at 1)
Definition: CharScanner.hpp:300
Tracer(CharScanner *p, const char *t)
Definition: CharScanner.hpp:523
virtual void tab()
Definition: CharScanner.hpp:367
virtual const std ::string & getText() const
Definition: CharScanner.hpp:332
virtual void consumeUntil(int c)
Definition: CharScanner.hpp:161
bool commitToPath
Definition: CharScanner.hpp:499
int getTabSize() const
Return the tabsize used by the scanner.
Definition: CharScanner.hpp:381
bool operator()(const std ::string &x, const std ::string &y) const
Definition: CharScanner.hpp:558
virtual LexerSharedInputState getInputState()
Definition: CharScanner.hpp:400
#define ANTLR_API
Definition: config.hpp:22
virtual void append(char c)
Definition: CharScanner.hpp:102
Definition: CharScanner.hpp:69
std ::map< std ::string, int, CharScannerLiteralsLess > literals
Definition: CharScanner.hpp:488
virtual void match(const std ::string &s)
Definition: CharScanner.hpp:235
virtual void consume()
Definition: CharScanner.hpp:135
Definition: CharScanner.hpp:88
virtual const std ::string & getFilename() const
get the filename for the file currently used
Definition: CharScanner.hpp:311
virtual int LA(unsigned int i)
Definition: CharScanner.hpp:548
virtual void recover(const RecognitionException &ex, const BitSet &tokenSet)
Definition: CharScanner.hpp:129
virtual void setInputState(LexerSharedInputState state)
Definition: CharScanner.hpp:407
virtual void setFilename(const std ::string &f)
Set the filename the scanner is using (used in error messages)
Definition: CharScanner.hpp:316
Definition: MismatchedCharException.hpp:21
virtual unsigned int mark()
Mark the current position and return a id for it.
Definition: CharScanner.hpp:185
int setTabsize(int size)
set the tabsize. Returns the old tabsize
Definition: CharScanner.hpp:374
virtual ~CharScanner()
Definition: CharScanner.hpp:96
virtual bool getCommitToPath() const
Definition: CharScanner.hpp:321
virtual void setCaseSensitive(bool t)
Definition: CharScanner.hpp:280
CharScanner * parser
Definition: CharScanner.hpp:517
virtual void traceOut(const char *rname)
Definition: CharScanner.cpp:92
virtual void resetText()
Definition: CharScanner.hpp:342
TokenRefCount< Token > RefToken
Definition: TokenRefCount.hpp:92
const CharScanner * scanner
Definition: CharScanner.hpp:71
virtual void matchNot(int c)
Definition: CharScanner.hpp:253
virtual void uponEOF()
Definition: CharScanner.hpp:466
std ::string text
Definition: CharScanner.hpp:483
bool caseSensitive
Is this lexer case sensitive.
Definition: CharScanner.hpp:487
const char * text
Definition: CharScanner.hpp:518
virtual void commit()
Definition: CharScanner.hpp:121
Definition: TokenStream.hpp:22
virtual void matchRange(int c1, int c2)
Definition: CharScanner.hpp:265
Definition: BitSet.hpp:40
virtual RefToken makeToken(int t)
Create a new RefToken of type t.
Definition: CharScanner.hpp:504
bool member(unsigned int el) const
Definition: BitSet.cpp:40
Definition: RecognitionException.hpp:18
int traceDepth
Definition: CharScanner.hpp:534
virtual InputBuffer & getInputBuffer()
Definition: CharScanner.hpp:395
virtual int testLiteralsTable(int ttype) const
Definition: CharScanner.hpp:421
CharScannerLiteralsLess(const CharScanner *theScanner)
Definition: CharScanner.hpp:76
RefToken _returnToken
used to return tokens w/o using return val
Definition: CharScanner.hpp:490
virtual void setText(const std ::string &s)
Definition: CharScanner.hpp:337
#define ANTLR_USE_NAMESPACE(_x_)
Definition: config.hpp:18
virtual void append(const std ::string &s)
Definition: CharScanner.hpp:115
int tabsize
tab size the scanner uses.
Definition: CharScanner.hpp:501
LexerSharedInputState inputState
Input state, gives access to input stream, shared among different lexers.
Definition: CharScanner.hpp:493
#define ANTLR_C_USING(_x_)
Definition: config.hpp:21
virtual void setLine(int l)
set the line number
Definition: CharScanner.hpp:294
virtual void traceIn(const char *rname)
Definition: CharScanner.cpp:84
Definition: CharScanner.hpp:515