代码拉取完成,页面将自动刷新
This is a prolog interpreter written in C by Xian Ran (xianran@pku.edu.cn)
请在 Unix 系统上编译和运行这个程序
依赖:gcc,make
编译:make clean && make
运行 cwam。在本目录下有 1.pr 到 6.pr 六个文件,分别是测试用的 prolog 程序。
以程序 5.pr 为例,执行及执行的结果如下所示,其中 % 开始的行是解释器的输出。
这个程序的目的是为了拼接两个列表。
This is XR's prolog interpreter
Type help to get help
?- consult('5.pr').
YES.
?- list.
0: query$: trust_me
1: put_constant '5.pr' A0
2: call consult
3: halt
4: concat~1: try_me_else concat~2 (11)
5: allocate
6: get_constant [] A0
7: get_variable Y0 A1
8: get_value Y0 A2
9: deallocate
10: proceed
11: concat~2: trust_me
12: allocate
13: get_variable Y0 A0
14: unify_list Y3 Y1 Y2
15: unify_variable Y0 Y3
16: get_variable Y4 A1
17: get_variable Y5 A2
18: unify_list Y7 Y1 Y6
19: unify_variable Y5 Y7
20: put_value Y2 A0
21: put_value Y4 A1
22: put_value Y6 A2
23: call concat (4)
24: deallocate
25: proceed
?- concat(X, Y, [a, b, c]).
YES.
X = []
Y = [a, b, c]
more? [Y]es, [N]o
y
YES.
X = [a]
Y = [b, c]
more? [Y]es, [N]o
y
YES.
X = [a, b]
Y = [c]
more? [Y]es, [N]o
y
YES.
X = [a, b, c]
Y = []
more? [Y]es, [N]o
y
NO.
备注:这是北大编译实习实验班的作业,由于时间紧张,有一些细节尚待完善,如不友好的报错和
错误处理机制等。请勿在我不知情的情况下传播任何代码、可执行文件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。