/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__XPARSER_LEXTOKEN_H
#define POLYGRAPH__XPARSER_LEXTOKEN_H
#include "xstd/h/iosfwd.h"
#include "xstd/SrcLoc.h"
// Lex token used by parsers and toke components
// token location in the source stream
typedef SrcLoc TokenLoc;
struct LexTokenChar {
TokenLoc loc;
char ch;
bool isFirstOnLine;
LexTokenChar();
};
class LexToken {
public:
LexToken() { reset(); }
LexToken(int anId, const TokenLoc &aLoc) { reset(); id(anId); loc(aLoc); }
void reset();
const TokenLoc &loc() const { return theLoc; }
int id() const { return theId; }
const String &spell() const { return theSpell; }
bool firstOnLine() const { return isFirstOnLine; }
LexToken &operator +=(const LexTokenChar &c);
void id(int anId) { theId = anId; }
void loc(const TokenLoc &aLoc) { theLoc = aLoc; }
void firstOnLine(bool be) { isFirstOnLine = be; }
void trim(char c);
protected:
void addChar(char c);
protected:
TokenLoc theLoc;
int theId;
String theSpell;
bool isFirstOnLine;
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1