Pour réduire, on applique une règle (le choix est fait par Prolog). L'application de la règle doit pouvoir se faire sur toute la liste de symbôles et non seulement sur la fin, comme après un décalage. Puis on continue l'analyse avec les nouveaux symbôles (l'analyseur tentera d'abord des réductions avant de décaler).
parse(AXIOM,SOURCE,SYMBOLS):- (HEAD := BODY), % On prend une règle apply_rule_globally((HEAD := BODY),SYMBOLS,NEW_SYMBOLS), parse(AXIOM,SOURCE,NEW_SYMBOLS).