我在 Prolog 中处理树木;树节点使用形式为Left-NodeValue-Right或nil的术语表示。为了强制执行优先级,使用圆括号。请注意,圆括号至关重要,因为树 (nil-5+nil)-3+nil 和 nil-5+(nil-3+nil) 显然不同。我的问题是:如何处理括号?
我尝试的一种解决方案是使用 concat_atom(+List,-Atom)。但是表达式 [(,nil,)] 显然会给出错误,并且 ['(',nil,')'] 会产生原子'(nil)',而不是 (nil)。
有什么建议么?谢谢!