Rapidly prototyping implementation infrastructure of domain specific languages: a semantics-based approach