#ifndef __Token_hpp__
#define __Token_hpp__
#include <string>
#include "Array.hpp"
using namespace std;
typedef unsigned char byte;
const byte TOK_INVALID = 0;
const byte TOK_IDENT = 130;
const byte TOK_NUMBER = 131;
const byte TOK_SPACE = 132;
const byte TOK_STRING = 133;
const byte TOK_KEYWORD = 134;
const byte TOK_BREAK = 135;
const byte TOK_CASE = 136;
const byte TOK_CATCH = 137;
const byte TOK_CONTINUE = 138;
const byte TOK_DBSTEP = 139;
const byte TOK_DBTRACE = 140;
const byte TOK_ELSE = 141;
const byte TOK_ELSEIF = 142;
const byte TOK_END = 143;
const byte TOK_FOR = 144;
const byte TOK_FUNCTION = 145;
const byte TOK_GLOBAL = 146;
const byte TOK_IF = 147;
const byte TOK_KEYBOARD = 148;
const byte TOK_OTHERWISE = 149;
const byte TOK_PERSISTENT = 150;
const byte TOK_QUIT = 151;
const byte TOK_RETALL = 152;
const byte TOK_RETURN = 153;
const byte TOK_SWITCH = 154;
const byte TOK_TRY = 155;
const byte TOK_WHILE = 156;
// Generated (synthetic) token;
const byte TOK_MULTI = 157;
const byte TOK_SPECIAL = 158;
const byte TOK_VARIABLE = 159;
const byte TOK_DYN = 160;
const byte TOK_BLOCK = 161;
const byte TOK_EOF = 162;
const byte TOK_MATDEF = 163;
const byte TOK_CELLDEF = 164;
const byte TOK_PARENS = 165;
const byte TOK_BRACES = 166;
const byte TOK_BRACKETS = 167;
const byte TOK_ROWDEF = 168;
const byte TOK_UNARY_MINUS = 169;
const byte TOK_UNARY_PLUS = 170;
const byte TOK_EXPR = 171;
const byte TOK_DOTTIMES = 172;
const byte TOK_DOTRDIV = 173;
const byte TOK_DOTLDIV = 174;
const byte TOK_DOTPOWER = 175;
const byte TOK_DOTTRANSPOSE = 176;
const byte TOK_LE = 177;
const byte TOK_GE = 178;
const byte TOK_EQ = 179;
const byte TOK_NE = 180;
const byte TOK_SOR = 181;
const byte TOK_SAND = 182;
const byte TOK_QSTATEMENT = 183;
const byte TOK_STATEMENT = 184;
const byte TOK_INTEGER = 185;
const byte TOK_FLOAT = 186;
const byte TOK_DOUBLE = 187;
const byte TOK_COMPLEX = 188;
const byte TOK_DCOMPLEX = 189;
const byte TOK_FUNCTION_DEFS = 190;
const byte TOK_SCRIPT = 191;
const byte TOK_ANONYMOUS_FUNC = 192;
const byte TOK_NEST_FUNC = 193;
typedef byte tok;
class Serialize;
class ParseException {
unsigned m_pos;
string m_text;
public:
ParseException(unsigned pos = 0, string text = string()) : m_pos(pos), m_text(text) {}
unsigned Position() {return m_pos;}
string Text() {return m_text;}
};
class Token {
byte m_tok;
unsigned m_pos;
string m_text;
Array m_array;
public:
Token();
Token(byte tok, unsigned pos = 0, string text = string());
bool Is(byte tok) const {return m_tok == tok;}
bool IsBinaryOperator() const;
bool IsUnaryOperator() const;
unsigned Precedence() const;
bool IsRightAssociative() const;
byte Value() const {return m_tok;}
void SetValue(byte a) {m_tok = a;}
unsigned Position() const {return m_pos;}
string Text() const {return m_text;}
void SetText(string txt) {m_text = txt;}
Array GetArray() const {return m_array;}
void FillArray();
void Print(ostream& o) const;
friend void FreezeToken(const Token& a, Serialize *s);
friend Token ThawToken(Serialize *s);
};
string TokenToString(const Token& b);
ostream& operator<<(ostream& o, const Token& b);
void FreezeToken(const Token& a, Serialize *s);
Token ThawToken(Serialize *s);
#endif
syntax highlighted by Code2HTML, v. 0.9.1