One Engine to Fuzz ’em All: Generic Language Processor Testing with Semantic Validation