A parser and semantic checker for a DSL