推導(derivation):從開始符號出發,每個重寫步驟把一個非終結符號替換為它的某個產生式體。
最左推導(leftmost derivation):總是選擇每個句型的最左非終結符號。
最右推導(rightmost derivation):總是選擇每個句型的最右非終結符號。
看下面的產生式
E ::= E "+" E | E "*" E | "-" E | "(" E ")" | id
再看下面的串
-(id + id)
最左推導步驟
E => - E => - ( E ) => - ( E + E ) => - ( id + E ) => - ( id + id )
最右推導步驟
E => - E => - ( E ) => - ( E + E ) => - ( E + id ) => - ( id + id )