A Mercury programozási nyelv

DCG-szabályok

(A DCG jelölést arra tervezték, hogy szövegelemzőket és szekvencia-generátorokat írhassunk egy bizonyos stílusban; korábban implicit állapot változók, tipikusan az IO állapotok kódba fűzéséhez is használták. A jövőre nézve javasolt, hogy a DCG jelölést tartsuk meg a szövegelemzők és szekvencia-generátorok írásához, és az állapot változókra vonatkozó szintaxisa használható az állapot-láncok átadására.)

Mercury-ban a DCG-szabályok ugyanazzal a szintaktikával és szemantikával rendelkeznek, mint Prolog-ban.

Egy DCG-szabály egy Head --> Body formájú elem. A Head term nem lehet változó. Egy DCG-szabály tulajdonképpen egy olyan szokványos szabály, melynek Head részének argumentumlistája két implicit argumentummal bővül. Ezek az argumentumok friss változók, melyeket V_in-nek és V_out-nak nevezünk. A Body résznek érvényes DCG-célnak kell lennie, ami az általános célok egyfajta rövidítése. A következő részben definiáljuk a DCG-transform(V_in, V_out, DCG-goal)matematikai függvényt, amely megadja annak a szemantikáját, hogy a DCG szabályokat hogyan transzformáljuk általános céllá. (A DCG-transform függvény tisztán az ismertetést szolgálja, csupán arra szolgál, hogy definiálja a szemantikát -- nem része a nyelvnek.)