private static TokenParser<Tokens> CreateExpressionTokenizer() { var t = new TokenParser<Tokens>(Tokens.Variable); t.AddRule("=", Tokens.Equals); t.AddRule("+", Tokens.Plus); t.AddRule("-", Tokens.Minus); t.AddRule("*", Tokens.Asterisk); t.AddRule("/", Tokens.Slash); t.AddRule("^", Tokens.Caret); t.AddRule("%", Tokens.Percent); t.AddRule("(", Tokens.LeftParanthesis); t.AddRule(")", Tokens.RightParanthesis); t.AddRule(" ", Tokens.Whitespace); t.AddRule(new NumberLexerComparer(), Tokens.Number); t.Ignore(Tokens.Whitespace); return t; }