module dlex.Rule.StringRule; import dlex.Rule; class StringRule : Rule { public: Rule rule; this (dstring pattern) { if (pattern.length == 0) { throw new Exception(""); } if (pattern.length == 1) { rule = new CharRule(pattern[0]); } else { rule = new CharRule(pattern[0]); foreach (c; pattern[1..$]) { rule = new SeqRule(rule, new CharRule(c)); } } } override MatchResult match(dstring source, ref Position pos) { return rule.matched(source, pos); } }