如何使用这个Prolog谓词来接收结果?无法理解输入

如何使用这个Prolog谓词来接收结果?无法理解输入,prolog,grammar,dcg,Prolog,Grammar,Dcg,我们的教科书为我们提供了一个Prolog中数学方程的结构器示例: math(Result) --> number(Number1), operator(Operator), number(Number2), { Result = [Number1, Operator, Number2] }. operator('+') --> ['+']. number('number') --> ['NUMBER']. 然而,我对Prolog还很陌生,我不知道如何使用这个示例获得输出。

我们的教科书为我们提供了一个Prolog中数学方程的结构器示例:

math(Result) --> number(Number1), operator(Operator), number(Number2), { Result = [Number1, Operator, Number2] }.

operator('+') --> ['+'].

number('number') --> ['NUMBER'].
然而,我对Prolog还很陌生,我不知道如何使用这个示例获得输出。我的印象是,它使用
Result
重新构造输入,并将其输出以供使用

我尝试过的唯一不会导致错误的输入是
math('number','+','number')。
但它总是输出
false
,我不知道为什么。此外,它不应该重新构造它并在
result
中也给我结果吗


我应该在这里输入什么?

此示例是一个DCG。您应该使用
短语/2
接口谓词来访问DCGs

要了解DCG描述的内容,请从最一般的查询开始,将非终结符
math(R)
与第一个参数描述的列表
Ls
关联:

?- phrase(math(R), Ls).
从你得到的答案(非常简单的练习!)中,你会注意到
R
可能不是你想要的。提示:查找
(=..)/2

请特别注意,您不需要在此处“输入”任何内容:DCG描述了一个列表。可以指定列表,但无需指定:变量也可以!考虑任意术语之间的关系