Hi Wouter, all,
the link to my tutorial has changed, please use the following URL to refer to it:
The other tutorial is based on an outdated copy of my text. I can only keep one version current, so the URL above will always contain the latest changes.
@Santiago: Adding two arguments in the way you suggest is only one particular way to compile DCGs, though admittedly of course the most common one. In principle though, it would be possible to compile DCGs completely differently to Prolog code, or not compile them at all, and for this reason you should always use phrase/[2,3] to invoke a DCG: It keeps your code completely portably, no matter how DCGs are actually implemented in your system.
All the best! Markus