My approach is usually: start building the thing -> 'hmm a DSL would really make this easier' -> 'hmm I think it needs a custom parser' -> project dead