【发布时间】:2016-04-23 09:52:00
【问题描述】:
我想将数据文件分成诸如functor(arg1, arg2, ..., argN) 之类的事实列表,其中函子的名称是 大写 行,参数是后面的 小写 行他们,
随后,新子句将保存在执行时创建的 prolog 文件中
文件.txt
FUNCTOR1
arg1
arg2
FUNCTOR2
arg1
arg2
arg3
FUNCTOR3
arg1
arg2
arg3
arg4
结果:
?- split_data_to_facts('file.txt',List,'file.pl').
List = ['functor1(arg1,arg2)','functor2(arg1,arg2,arg3)','functor3(arg1,arg2,arg3,arg4)'].
文件.pl
“。”将作为最后一个附加
functor1(arg1,arg2).
functor2(arg1,arg2,arg3).
functor3(arg1,arg2,arg3,arg4).
构建和编译new prolog 文件file.pl:
?- functor2(X,Y,Z).
X=arg1,
Y=arg2,
Z=arg3;
yes
【问题讨论】:
-
你有没有尝试过?
-
我尝试解析文件并将数据放入列表
-
你在哪里卡住了?您可以使用
=../2运算符。例如,X =.. [functor, a, b]是X = functor(a, b)。 -
列表类似于 :List=['FUNCTOR1','arg1','arg2','FUNCTOR2','arg1','arg2','arg3'|...]跨度>
-
您需要先拆分您的列表。您应该能够编写一些非常简单的列表处理代码来做到这一点。或者,在从文件中读取它时将其拆分,以便函子是分开的。
标签: file parsing io prolog sicstus-prolog