Prolog 如何从构建材质构造构件

Prolog 如何从构建材质构造构件,prolog,Prolog,我有以下为PC建模的谓词。我想要的是打印所有PC组件和子组件 我想做这样的事情 find_set_of_attributes(X):- print(X) print(X[power) print(X[power][usb]) pc([power). power([usb, voltageregulator]). usb([container, usbhead, pins]). voltageregulator([barreljack, capacitor, regulator, leds

我有以下为PC建模的谓词。我想要的是打印所有PC组件和子组件

我想做这样的事情

find_set_of_attributes(X):-
 print(X)
 print(X[power)
 print(X[power][usb])

pc([power).
power([usb, voltageregulator]).
usb([container, usbhead, pins]).
voltageregulator([barreljack, capacitor, regulator, leds]).

描述计算机组件和子组件的一种方法是使用确定子句语法(DCG)。例如:

computer --> monitor, cpu, keyboard, mouse.
...

power --> usb, voltageregulator.

usb --> container, usbhead, pins.

voltageregulator --> barreljack, capacitor, regulator, leds.
| ?- phrase(computer, Parts).
没有子组件的组件可以定义为:

capacitor --> [capacitor].
leds --> [leds].
要列出所有部分(例如用于打印),只需使用事实上的标准
短语/2
谓词即可。例如:

computer --> monitor, cpu, keyboard, mouse.
...

power --> usb, voltageregulator.

usb --> container, usbhead, pins.

voltageregulator --> barreljack, capacitor, regulator, leds.
| ?- phrase(computer, Parts).

DCG的有趣用法。从来没见过他们用过。@GuyCoder你在Amzi里有一个例子!Prolog文档。我有一个Logtalk版本的例子,可以在感兴趣的网站上找到:Amzi