Prolog中的运算符` - >`有什么作用?

时间:2015-09-15 06:36:31

标签: prolog operators dcg

:-运算符在Prolog中的作用是什么?它与{{1}}之间有什么区别?

我正在使用SWI Prolog。

2 个答案:

答案 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,但如果您愿意,可以手动执行此操作。