3

我开始学习如何使用 DCG。我想知道花括号{...}是用来做什么的?何时(何时不需要)需要它们?例如:

read_lines -->
  { read_line_to_codes(current_input, Codes) } ,
  (
    { Codes == end_of_file } -> []
  ;
    { atom_codes(Line, Codes) } ,
    [Line],
    read_lines
  ) .

针对这个问题提供:避免 Prolog 中 append/3 的线性成本

4

1 回答 1

4

在 DCG 规则中,{} 用于封装 Prolog 目标,否则将被解释为非终结符。

于 2013-08-18T15:14:32.823 回答