额外的论点
额外的参数通过修饰派生树将结果添加到 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 ;