Preference logic grammars (PLGs) are introduced in this paper as a concise, declarative, modular, and efficient means of resolving ambiguity in logic grammars. Preference logic grammars can be thought as extensions of definite clause grammars (DCGs) and definite-clause translation grammars (DCTGs). Just as DCGs and DCTGs can be directly translated into logic programs, PLGs can be translated into preference logic programs (PLPs), which we introduced in our earlier work. We discuss two applications of PLGs: optimal parsing, and ambiguity resolution in programming-language and natural-language grammars. Optimal parsing is an extension of parsing wherein costs are associated with the different (ambiguous) parses of a string and the preferred parse is the one with least cost. Many problems can be viewed as optimal parsing problems, e.g., code generation, document layout, etc. In the area of natural language parsing, we illustrate the use of preference clauses for resolution of prepositional phrase attachment ambiguities, and point out the growing consensus in the literature on the need to explicitly specify preference criteria for ambiguity resolution.