:-
运算符在Prolog中的作用是什么?它与{{1}}之间有什么区别?
我正在使用SWI Prolog。
答案 0 :(得分:2)
它用于定义DCG( D 无限 C lause G rammar)规则,而不是正常谓词。有关DCG规则的非常好的解释,请参阅this tutorial。
Stack Overflow上有很多例子。请参阅DCG tag。
这是一个very simple solution,显示DCG和正常谓词。
请注意,您必须使用server {
listen 443 ssl;
listen 80;
server_name promo.example.com;
return 301 https://example.com/xyz/xyz/promo;
}
或phrase/2
来评估DCG。请务必阅读section of the SWI-Prolog manual on DCGs。这里记录了两个phrase/3
谓词。
答案 1 :(得分:-1)
-->
运算符读入Definite Clause Grammar规则。转换形式规则是语法糖:
parenthesized_expression(Inner) -->
[ open ],
expression(Inner),
[ close ],
{ nl }.
更像这样的事情:
parenthesized_expression(Inner, [open | T1], T2) :-
expression(Inner, T1, [close | T2]),
nl.
这使得编写语法变得非常方便。有helper predicates available to consume them,但如果您愿意,可以手动执行此操作。