namespace NTERA.Engine.Compiler { public enum Token { Unknown = 0, Identifer, Value, [LexerCharacter('#')] Sharp, [LexerCharacter('@')] AtSymbol, [LexerKeyword("DIM")] Dim, [LexerKeyword("DIMS")] Dims, [LexerKeyword("CONST")] Const, [LexerKeyword("REF")] Ref, [LexerKeyword("DYNAMIC")] Dynamic, [LexerKeyword("FUNCTION")] [LexerKeyword("FUNCTIONS")] ReturnFunction, [LexerKeyword("TO")] To, [LexerCharacter('\n')] NewLine, [LexerCharacter('"')] QuotationMark, [LexerCharacter(':')] Colon, [LexerCharacter(',')] Comma, //[LexerCharacter('{')] OpenBracket, //[LexerCharacter('}')] CloseBracket, [LexerCharacter('%')] Modulo, Plus, Increment, Minus, Decrement, [LexerCharacter('/')] Slash, [LexerCharacter('*')] Asterisk, [LexerCharacter('^')] Caret, Equal, Less, More, NotEqual, LessEqual, MoreEqual, Or, And, [LexerCharacter('!')] Not, [LexerCharacter('(')] LParen, [LexerCharacter(')')] RParen, [LexerCharacter('?')] QuestionMark, TernaryEscape, EOF = -1 //End Of File } public static class TokenEnumExtensions { public static bool IsUnary(this Token token) { return token == Token.Plus || token == Token.Minus || token == Token.Not; } public static bool IsArithmetic(this Token token) { return token == Token.Plus || token == Token.Minus || token == Token.Slash || token == Token.Asterisk || token == Token.Modulo || token == Token.Caret || token == Token.Equal || token == Token.NotEqual || token == Token.Less || token == Token.LessEqual || token == Token.More || token == Token.MoreEqual || token == Token.Or || token == Token.And || token == Token.Not; } } }