This document discusses using definite clause grammars (DCGs) to define context free grammars in Prolog. It begins with an example grammar for a simple language and shows how to represent it as Prolog rules using append and difference lists. It then introduces DCGs as a notation that hides the underlying difference list implementation. The document demonstrates adding recursive rules to generate infinite sentences and defines a DCG for the formal language a^nb^n.