ANTLR Support Libraries 2.7.1+
|
Go to the documentation of this file. 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;
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;
424 if (i != literals.end())
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__
bool member(unsigned int el) const
Definition: BitSet.cpp:40
CharScanner * parser
Definition: CharScanner.hpp:517
virtual void match(const BitSet &b)
Definition: CharScanner.hpp:207
virtual void setLine(int l)
set the line number
Definition: CharScanner.hpp:294
virtual int testLiteralsTable(const std ::string &txt, int ttype) const
Definition: CharScanner.hpp:434
int tabsize
tab size the scanner uses.
Definition: CharScanner.hpp:501
Tracer & operator=(const Tracer &other)
virtual int toLower(int c) const
Override this method to get more specific case handling.
Definition: CharScanner.hpp:443
virtual void tab()
Definition: CharScanner.hpp:367
virtual const std ::string & getText() const
Definition: CharScanner.hpp:332
virtual bool getCaseSensitiveLiterals() const =0
Definition: CharScanner.hpp:88
virtual void setCommitToPath(bool commit)
Definition: CharScanner.hpp:326
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 void rewind(unsigned int pos)
Rewind the scanner to a previously marked position.
Definition: CharScanner.hpp:190
factory_type tokenFactory
Factory for tokens.
Definition: CharScanner.hpp:486
virtual bool getCaseSensitive() const
Definition: CharScanner.hpp:275
Definition: RecognitionException.hpp:19
virtual RefToken getTokenObject() const
Definition: CharScanner.hpp:349
virtual void consumeUntil(const BitSet &set)
Definition: CharScanner.hpp:173
~Tracer()
Definition: CharScanner.hpp:528
Definition: CharScanner.hpp:515
virtual void match(int c)
See if input contains character 'c' throw MismatchedCharException if not.
Definition: CharScanner.hpp:196
CharScanner & operator=(const CharScanner &other)
virtual void consumeUntil(int c)
Definition: CharScanner.hpp:161
virtual ~CharScanner()
Definition: CharScanner.hpp:96
TokenRefCount< Token > RefToken
Definition: TokenRefCount.hpp:92
virtual void consume()
Definition: CharScanner.hpp:135
virtual int getColumn() const
Get the column the scanner currently is in (starts at 1)
Definition: CharScanner.hpp:300
virtual void setCaseSensitive(bool t)
Definition: CharScanner.hpp:280
virtual int LA(unsigned int i)
Definition: CharScanner.hpp:548
bool commitToPath
Definition: CharScanner.hpp:499
virtual void setInputState(LexerSharedInputState state)
Definition: CharScanner.hpp:407
const CharScanner * scanner
Definition: CharScanner.hpp:71
bool caseSensitive
Is this lexer case sensitive.
Definition: CharScanner.hpp:487
virtual void match(const std ::string &s)
Definition: CharScanner.hpp:235
Tracer(const Tracer &other)
virtual const std ::string & getFilename() const
get the filename for the file currently used
Definition: CharScanner.hpp:311
virtual LexerSharedInputState getInputState()
Definition: CharScanner.hpp:400
CharScanner(const CharScanner &other)
virtual void append(char c)
Definition: CharScanner.hpp:102
virtual RefToken makeToken(int t)
Create a new RefToken of type t.
Definition: CharScanner.hpp:504
virtual void matchNot(int c)
Definition: CharScanner.hpp:253
virtual void uponEOF()
Definition: CharScanner.hpp:466
int setTabsize(int size)
set the tabsize. Returns the old tabsize
Definition: CharScanner.hpp:374
std ::map< std ::string, int, CharScannerLiteralsLess > literals
Definition: CharScanner.hpp:488
Definition: BitSet.hpp:40
virtual bool getCommitToPath() const
Definition: CharScanner.hpp:321
virtual int testLiteralsTable(int ttype) const
Definition: CharScanner.hpp:421
virtual void traceOut(const char *rname)
Definition: CharScanner.cpp:92
virtual void recover(const RecognitionException &ex, const BitSet &tokenSet)
Definition: CharScanner.hpp:129
virtual void resetText()
Definition: CharScanner.hpp:342
virtual void setFilename(const std ::string &f)
Set the filename the scanner is using (used in error messages)
Definition: CharScanner.hpp:316
virtual unsigned int mark()
Mark the current position and return a id for it.
Definition: CharScanner.hpp:185
const char * text
Definition: CharScanner.hpp:518
RefToken _returnToken
used to return tokens w/o using return val
Definition: CharScanner.hpp:490
virtual void commit()
Definition: CharScanner.hpp:121
virtual void matchRange(int c1, int c2)
Definition: CharScanner.hpp:265
CharScannerLiteralsLess(const CharScanner *theScanner)
Definition: CharScanner.hpp:76
Tracer(CharScanner *p, const char *t)
Definition: CharScanner.hpp:523
Definition: TokenRefCount.hpp:44
Definition: MismatchedCharException.hpp:21
std ::string text
Definition: CharScanner.hpp:483
Definition: TokenStream.hpp:22
virtual void setText(const std ::string &s)
Definition: CharScanner.hpp:337
virtual InputBuffer & getInputBuffer()
Definition: CharScanner.hpp:395
virtual void append(const std ::string &s)
Definition: CharScanner.hpp:115
virtual void traceIn(const char *rname)
Definition: CharScanner.cpp:84
Definition: CharScanner.hpp:69
int traceDepth
Definition: CharScanner.hpp:534
#define ANTLR_C_USING(_x_)
Definition: config.hpp:21
virtual void match(const char *s)
Definition: CharScanner.hpp:219
LexerSharedInputState inputState
Input state, gives access to input stream, shared among different lexers.
Definition: CharScanner.hpp:493
virtual void setColumn(int c)
set the column number
Definition: CharScanner.hpp:305
virtual void setTokenObjectFactory(factory_type factory)
Set the factory for created tokens.
Definition: CharScanner.hpp:413
virtual int getLine() const
Get the line the scanner currently is in (starts at 1)
Definition: CharScanner.hpp:288
#define ANTLR_API
Definition: config.hpp:22
Definition: ANTLRException.hpp:15
#define ANTLR_USE_NAMESPACE(_x_)
Definition: config.hpp:18
virtual void newline()
Definition: CharScanner.hpp:357