Mercurial > projects > dil
view trunk/src/Token.d @ 35:c470b9356e35
- Added code for parsing Unordered, UorE, UorG, UorGorE, UorL, UorLorE, NotEqual and Not tokens.
author | aziz |
---|---|
date | Tue, 26 Jun 2007 07:57:00 +0000 |
parents | d7011daa4740 |
children | 3c7210a722f7 |
line wrap: on
line source
/++ Author: Aziz Köksal License: GPL2 +/ module Token; struct Position { size_t loc; size_t col; } enum TOK { Identifier, Comment, String, Character, Number, /* Braces */ LParen, RParen, LBracket, RBracket, LBrace, RBrace, Dot, Slice, Ellipses, Unordered, UorE, UorG, UorGorE, UorL, UorLorE, Assign, Equal, NotEqual, Not, OrAssign, OrLogical, OrBinary, AndAssign, AndLogical, AndBinary, PlusAssign, PlusPlus, Plus, MinusAssign, MinusMinus, Minus, DivAssign, Div, MulAssign, Mul, ModAssign, Mod, XorAssign, Xor, CatAssign, Catenate, Tilde, Colon, Semicolon, Question, Comma, Dollar, /* Keywords: NB.: Token.isKeyword() depends on this list being contiguous. */ Abstract,Alias,Align,Asm,Assert,Auto,Body, Bool,Break,Byte,Case,Cast,Catch,Cdouble, Cent,Cfloat,Char,Class,Const,Continue,Creal, Dchar,Debug,Default,Delegate,Delete,Deprecated,Do, Double,Else,Enum,Export,Extern,False,Final, Finally,Float,For,Foreach,Foreach_reverse,Function,Goto, Idouble,If,Ifloat,Import,In,Inout,Int, Interface,Invariant,Ireal,Is,Lazy,Long,Macro, Mixin,Module,New,Null,Out,Override,Package, Pragma,Private,Protected,Public,Real,Ref,Return, Scope,Short,Static,Struct,Super,Switch,Synchronized, Template,This,Throw,True,Try,Typedef,Typeid, Typeof,Ubyte,Ucent,Uint,Ulong,Union,Unittest, Ushort,Version,Void,Volatile,Wchar,While,With, EOF } alias TOK.Abstract KeywordsBegin; alias TOK.With KeywordsEnd; struct Token { TOK type; Position pos; char* start; char* end; union { struct { string str; char pf; } dchar chr; uint _uint; float f; double d; } string span() { assert(start && end); return start[0 .. end - start]; } bool isKeyword() { if (KeywordsBegin <= type && type <= KeywordsEnd) return true; return false; } }