public MoonParser()
        {
            Lexer = new Lexer <TokenType>();

            Lexer.AddRule(new Rule("(?<Operator>-|moon)"));
            Lexer.AddRule(new Rule("^(?<Roman>M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3}))$"));
            Lexer.AddRule(new Rule("^(?<Number>[0-9]+)$"));
            Lexer.AddRule(new Rule("^(?<Text>[^ ]+)$"));
        }
 public PermissionManager(YahurrBot bot, DiscordSocketClient client) : base(bot, client)
 {
     lexer.AddRule(new Rule(@"(?<Type>method|group|class)"));
     lexer.AddRule(new Rule(@"(?<TargetType>blacklist|whitelist)"));
     lexer.AddRule(new Rule(@"(?<Group>channel|user|guild|role)"));
     lexer.AddRule(new Rule(@"(?<Bracket><|>)"));
     lexer.AddRule(new Rule(@"(?<Operator>=)"));
     lexer.AddRule(new Rule(@"(?<Colon>:)"));
     lexer.AddRule(new Rule(@"(?<Number>[0-9]+)"));
     lexer.AddRule(new Rule(@"(?<Text>[^ ]+)"));
 }
        public NotificationParser(NotificationModuleConfig config)
        {
            Config = config;

            Lexer = new Lexer <TokenType>();
            Lexer.AddRule(new Rule(@"^(?<Separator>on|say|to|in)$"));

            Lexer.AddRule(new Rule(@"^(?<Number>[0-9]+)?(?<TimeSpecifier>day(?:s)?|d)$"));
            Lexer.AddRule(new Rule(@"^(?<Number>[0-9]+)?(?<TimeSpecifier>hour(?:s)?|h)$"));
            Lexer.AddRule(new Rule(@"^(?<Number>[0-9]+)?(?<TimeSpecifier>minute(?:s)?|m|min(?:s)?)$"));
            Lexer.AddRule(new Rule(@"^(?<Number>[0-9]+)?(?<TimeSpecifier>second(?:s)?|s)$"));

            Lexer.AddRule(new Rule(@"(?<Selector><|>)+"));
            Lexer.AddRule(new Rule(@"^(?<Number>[0-9]+)$"));
            Lexer.AddRule(new Rule(@"(?<Text>[^ ]+)"));
        }