(See my note on DomainSpecificLanguage for a quick
intro to this topic and my terminology on it.)
Update:David Laribee has written a post contrasting what
he calls ordered and unordered fluent interfaces. The distinction is
that ordered fluent interfaces force a particular flow on how you
compose your DSL sentence. He provides an example where he uses
multiple interfaces on a single ExpressionBuilder - the same
technique that's used by JMock.
Anders Norås has written two interesting articles on writing
internal DSLs in C#. The first article gives a sample of the DSL and
a discussion against Chromatic's cynical check-list. The second
article goes into details about its implementation.
Piers Cawley makes the point that a key characteristic of DSLs
is their narrow focus on a domain.