The ASF+SDF Meta-Environment: a Component-Based Language Development Environment