DCG中的花括号{}

时间:2013-08-18 10:41:53

标签: prolog dcg

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

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

在回答此问题时提供:Avoid linear cost of append/3 in Prolog

1 个答案:

答案 0 :(得分:2)

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