directive parsing