13We need to put the rule (Cat ==> Daughters) in brackets to get the precedences right. With ==> given precedence 1050 and the comma given precedence 1000, an expression such as s ==> np, vp will be treated by Prolog as ==>(s, (np, vp)), with the comma binding more tightly than ==> (which is what we want). However, in this rule, we are also using the comma in its basic Prolog function, as the ‘and’ operator, and we want the body of rule to be analysed as ,(==>(Cat,Daughters),parsedaughters(Daughters,String,Rest)), with the comma binding less tightly than ==>. The only way we can get both results is to explicitly bracket the sub-expression which we want the ‘and’ comma to treat as a single unit.