额外的论点

额外的参数通过修饰派生树将结果添加到 DCG 子句的谓词中。例如,可以创建一个代数语法来计算最后的值。

给定支持操作添加的语法:

% Extra arguments are passed between parenthesis after the name of the DCG clauses.
exp(C) --> int(A), [+], exp(B), {plus(A, B, C)}.
exp(X) --> int(X).
int(X) --> [X], {integer(X)}.

可以验证和查询此语法的结果:

?- phrase(exp(X), [1,+,2,+,3]).
X = 6 ;