Così ad occhio non vedo errori di sintassi (magari c'è qualche carattere non stampabile che gli sta dando fastidio)
Ma se provi a riscriverla senza l'uso della CTE, che non serve in un caso come quello?
codice:DELETE FROM movimenti_magazzino WHERE id_macchina NOT IN ( SELECT id FROM macchina WHERE id_tipo_scaffali = 3 )