《ARITY PROLOG5.0v 使用、参考手册》求取 ⇩

序言1

Ariy/Prolog解释器和编译器使用手册1

Ariy/Prolog语言参考手册2

第一部分启动 Arity/Prolog3

第1章 什么是Prolog3

第2章安装系统4

2.1 启动Arity/Prolog4

2.2 退出Arity/Prolog4

2.3可选择的Arity/Prolog装配过程4

2.3.1 从任一目录区中调用Arity/Prolog5

2.3.2 启动解释器时将信息加入数据库5

2.3.3 使用Arity/Prolog编辑器之外的编辑器5

2.3.4 设置打开文件限制数6

第3章Arity/Prolog菜单7

3.1移动光标并进行选择8

3.1.1 在菜单行方式下移动光标9

3.1.2 在下拉菜单方式下移动光标并选择9

3.1.3 快速键10

3.1.4 功能键10

3.1.5 会话框内的光标移动和选择11

3.2菜单选择项12

3.2.1 File菜单选择项13

3.2.2 Edit菜单选择项14

3.2.3 Buffers菜单选择项15

3.2.4 Info菜单选择项17

3.2.5 Debug菜单选择项17

3.2.6 Switch菜单选择项18

3.2.7 Help菜单选择项18

第4章使用Arify/Prolog19

4.1Arity/Prolog编辑器19

4.1.1 启动编辑器19

4.1.2 使用编辑器20

4.1.3 移动光标20

4.1.4 删除、考贝和恢复文本21

4.1.5 文本查找和替换22

4.1.6 文件合并23

4.1.7 使用缓冲区23

4.1.8 保存文件24

4.1.9 使用辅助缓冲区25

4.2输入Prolog程序25

4.2.1 保存示例文件28

4.2.2 装入示例文件28

4.2.3 错误处理28

4.3运行Prolog程序29

4.3.1 浏览数据库29

4.3.2 进行询问30

4.3.3 删除已输入的内容31

4.3.4 具有1000以上优先级算符的谓词31

4.3.5 谓词命名的约定32

4.4加载文件到数据库32

4.4.1 用于装入文件的谓词34

4.4.2 嵌入的consult指命34

4.5 转换到MS-DOS35

4.6使用调试器35

4.6.1 调试器是如何工作的36

4.6.2 运行调试器37

4.6.3 调试一个程序38

4.6.4 关闭调试器和消除监测点40

4.6.5 从解释器中调用调试器41

4.7保存数据库的内容41

4.7.1 恢复数据库内容42

4.7.2 消除数据库的变化42

4.7.3 保存和恢复数据库的谓词42

4.8Help文件包43

4.8.1 使用Help文件43

4.8.2 增加Help文件44

4.9 Arity/Prolog信息44

4.10 退出解释器47

第5章开发应用软件48

5.1 使用窗口环境48

5.2 程序设计风格49

第6章 在解释器中加入可求值谓词51

第二部分建立编译的应用软件57

第7章Arity/Prolog编译器介绍57

7.1 apc命令58

7.2 连接每个文件建立一个可执行映象59

第8章编译应用软件的要点61

8.1进一步的了解61

8.1.1 可执行文件61

8.1.2 数据库文件61

8.1.3 环境文件62

8.1.4 浮点协处理器62

8.2 软件开发过程简介62

8.3 Prolog文件的结构63

第9章被编译的程序代码说明65

9.1 为程序标识主入口点65

9.2 restart谓词66

9.3 公用说明66

9.4 外部说明67

9.5显式说明67

9.5.1 default(invisible)说明69

9.6 模块说明69

9.7 使用后辍interp69

9.8装入程序数据库70

9.8.1 在一个被编译程序的数据库中装入子句70

9.8.2 启动时装入数据库72

9.9 编译时和运行时的操作符定义73

第10章编译与连接74

10.1编译74

10.1.1 编译命令行的示例74

10.1.2 ctrlvis文件75

10.1.3 使用批处理文件75

10.2连接76

10.2.1 使用连接文件77

10.2.2 使用make文件77

10.3 出错处理78

第11章环境文件79

11.1建立环境文件80

11.1.1 局部栈大小80

11.1.2 全局栈大小81

11.1.3 尾随栈大小81

11.1.4 设置最小和最大页面分配81

11.1.5 溢出文件82

11.1.6 IDB文件82

11.1.7 扩展的存储器支持83

11.2 缺省环境文件设置83

第12章远 PROLOG84

12.1 段说明84

12.2 远代码段的说明调整84

12.3 clone实用程序85

12.4 连接远代码段85

第13章优化编译代码87

13.1 包含mode说明87

13.2 编译算术运算优化88

第14章 说明编译器89

第三部分与其它程序设计语言相接93

第15章书写可调用的汇编语言子程序93

15.1说明汇编语言子程序名字和自变量93

15.1.1 命名汇编语言子程序93

15.1.2 说明子程序是外部的和可见的93

15.2 堆栈和寄存器的使用94

15.3汇编语言宏95

15.3.1 evalsucced95

15.3.2 evalfail95

15.3.3 evalargref95

15.4汇编语言子程序95

15.4.1 getshort_a96

15.4.2 getint_a96

15.4.3 putshort_a96

15.4.4 putint_a96

15.4.5 getlong_a96

15.4.6 p?tlong_a97

15.4.7 整数存储97

15.4.8 gettxt_a97

15.4.9 puttxt_a97

15.4.10 putatm_a98

15.4.11 getflt_a98

15.4.12 putflt_a98

15.4.13 getfunctor_a98

15.4.14 getfuncarg_a99

15.4.15 putfunctor_a99

15.4.16 findtype_a99

15.4.17 eqrefs_a100

15.5 汇编语言求值谓词实例100

第16章书写可调用的c函数104

16.1说明C函数的名字和自变量104

16.1.1 说明函数为外部的和可见的104

16.2 转换数据类型105

16.3Arity/Prolog C子程序106

16.3.1 getshort_c106

16.3.2 getint_c106

16.3.3 putshort_c106

16.3.4 putint_c107

16.3.5 getlong_c107

16.3.6 putlong_c107

16.3.7 整数 存储108

16.3.8 gettxt_c108

16.3.9 puttxt_c108

16.3.10 putatm_c109

16.3.11 getflt_c109

16.3.12 putflt_c109

16.3.13 getfunctor_c109

16.3.14 getfuncarg_c110

16.3.15 putfunctor_c110

16.3.16 findtype_c110

16.3.17 eqrefs_c111

16.4 返回成功或失败111

16.5 编译Lattice C函数111

16.6 编译Microsoft C函数111

16.7 连接C模块112

16.8程序设计例子112

16.8.1 把C求值谓词加到解释器中113

16.8.2 调用C函数的独立程序115

16.9 从C函数调用Prolog117

第17章书写可调用的PASCAL和FORTRAN过程118

17.1说明函数名字和自变量118

17.1.1 Pascal子程序的外部和可见的说明118

17.2 转换数据类型119

17.3Arity/Prolog Pascal函数119

17.3.1 getshort_p120

17.3.2 getint_P120

17.3.3 putshort_P120

17.3.4 putint_p120

17.3.5 getlong_p120

17.3.6 putlong_p121

17.3.7 整数存储121

17.3.8 gettxt_P121

17.3.9 puttxt_p121

17.3.10 putatm_p122

17.3.11 getflt_p122

17.3.12 putflt_p122

17.3.13 getfunctor_p122

17.3.14 getfuncarg_p123

17.3.15 putfunctor_p123

17.3.16 findtype_P123

17.3.17 eqrefs_p123

17.4 返回成功或失败124

17.5编译Pascal函数124

17.5.1 连接Pascal函数124

17.6 Pascal程序设计例子124

17.7 Fortran程序设计例子127

17.8 从Pascal函数中调用Prolog128

附录A 词汇表130

附录BArity/Prolog信息132

B.1 MS—DOS信息132

B.2 语法错误132

B.3 运行时错误133

B.4 编译器信息135

附录C 用其它语言书写的求值谓词137

附录D 谓词一览139

附录E Arity/Prolog编辑器快速参考指南151

附录F 推荐参阅文献153

Arity/Prolog语言参考手册157

符号约定157

第1章语言结构和控制158

1.1 一致化158

1.2Prolog数据类型158

1.2.1 变量159

1.2.2 原子159

1.2.3 整数159

1.2.4 浮点数159

1.2.5 串160

1.2.6 数据库参引数160

1.2.7 结构160

1.2.8 表161

1.3程序控制161

1.3.1 回溯162

1.3.2 repeat—fail循环163

1.3.3 递归164

1.3.4 截断164

1.3.5 截断—失败组合165

1.3.6 使用剪切166

1.3.7 使用case控制算符167

第2章算术运算及算术表达式169

2.1 算术运算符170

2.2 算术求值谓词171

2.3 计数器谓词172

第3章处理项173

3.1 分类项173

3.2 使项一致化174

3.3 比较项175

3.4转换项177

3.4.1 struct=..List177

3.4.2functor(?struct,?Name,?Arity)177

3.4.3arg(+N,+Term,-Value)177

3.4.4argo(+N,+Term,-Value)178

3.4.5 argrep(+Term,+N,+Arg,-Newstruct)178

3.4.6 name(?Atom,?List)178

3.4.7 length(+List,-N)179

3.5收集项179

3.5.1bagof(+Term,+Goal,-Bag)179

3.5.2setof(+Term,+Goal,-Set)180

3.5.3 findall(+Term,+Goal,-List)181

第4章管理数据库182

4.1数据库中的项183

4.1.1recorda(+Key,+Tern,-Ref)184

4.1.2recordz(+Key,+Term,-Ref)185

4.1.3record after(+Ref,+Term,-NewRef)185

4.1.4recorded(+Key,+Term,-Ref)185

4.1.5recorded tro(+Key,+Term,-Ref)185

4.1.6instance(+Ref,-Term)185

4.1.7Key(+Key,-Ref)185

4.1.8keys(+Key)185

4.1.9nref(+Ref,-Next)186

4.1.10pref(+Ref,-Prey186

4.1.11nth_ref(Key,+N,-Ref)186

4.1.12replace(Ref,+Term)186

4.1.13 erase(+Ref)186

4.1.14 eraseall(Key)186

4.1.15expunge186

4.1.16 hard-erase(+Ref)187

4.1.17 如何使用recorded,recorded--tro,erase,hard-erase187

4.2数据库中的子句189

4.2.1clause(+Head,-Body)189

4.2.2asserta(+Clause)189

4.2.3assertz(+Clause)190

4.2.4assert(+Clause)190

4.2.5 retract(+Clause)190

4.2.6 abolish(Name/Arity)190

4.3检测数据库190

4.3.1 listing190

4.3.2 current-predicate(-Predicate)191

4.4保存和恢复数据库191

4.4.1 save191

4.4.2 restore192

4.5用域进行工作192

4.5.1creat_world(+World_name)193

4.5.2code_world(-Old,+New)193

4.5.3 data_world(-Old,+New)194

4.5.4what_worlds(-X)194

4.5.5 delete_world(+World_name)194

第5章索引数据库的数据195

5.1b-树195

5.1.1reordb(+Tree_name,+Sort_Key,+Term)196

5.1.2retrieveb(+Tree_name,?Sort_Key,?Term)197

5.1.3betweenb(+Tree_name,+Keyl,+Key2,+Relationl,+Relation2,-Key,-Term)197

5.1.4betweenkeysb(+Tree_name,Keyl,+Key2,-Key)198

5.1.5defineb(+Tree_name,+Splitsize,+Uniqueness,+Order)198

5.1.6replaceb(+Tree_name,Sort_key,+Old_term,+New_term)200

5.1.7 remoneb(+Tree_name,+Sort_key,+Term)200

5.1.8nhat_btrees(-Btree)200

5.1.9 removeallb(+Tree_name)200

5.2建立hash表201

5.2.1recordh(+Table_name,+Sort_Key+Term)202

5.2.2retrieveh(+Table_name,?Sort_key,?Term)202

5.2.3defineh(+Table_name,+HashBuckets)203

5.2.4removeh(+Table_name,Sort_key,+Term)203

5.2.5 removeallh(+Table_name)203

5.3 对b-树和Hash表使用多重索引203

第6章标准输入输出205

6.1项I/O205

6.1.1read(-Term)206

6.1.2write(+Term)206

6.1.3writeq(+Term)206

6.1.4display(+Term)206

6.1.5 op(+Prec,+Assoc,+Op)207

6.1.6 current_op(?Prec,?Assoc,?Op)209

6.1.7 reset_op209

6.2字符I/O209

6.2.1 geto(-Char)210

6.2.2 get(-Char)210

6.2.3 geto_noecho(Char)210

6.2.4 Keyb(-ASCII,Scan)210

6.2.5 Keyb-Peek(-ASCII,-Scan)211

6.2.6flush212

6.2.7skip(+Char)212

6.2.8 put(+Char)212

6.2.9nl212

6.2.10 tab(+Name)212

6.3 串I/O212

第7章文件输入输出214

7.1打开和关闭文件215

7.1.1Create(-Handle,+Filenmae)216

7.1.2Gpen(-Handle,+Filename,+Access)216

7.1.3P-open(-Handle,+Filename,+Access)216

7.1.4 close(+Handle)217

7.2文件中移动217

7.2.1 seek(+Handle,+Offset,+Method,-Newloc)217

7.3改变输入输出方向218

7.3.1 stdin,stdout,stdinout218

7.3.2 file_list219

7.4标准Prolog输入输出219

7.1.1 see(+Filename)219

7.4.2 seeing(-Filename)219

7.4.3seen220

7.4.4see_h(+Handle)220

7.4.5 tell(+Filename)220

7.4.6 telling(-Filename)220

7.4.7 told220

7.4.8 tell_h(Hanolle)220

第8章低级I/O221

8.1in(+Port,-Byte)221

8.2 out(+Port,+Byte)221

第9章字符串222

9.1管理字符串224

9.1.1string-search224

9.1.2substring(+Instring,+N,+Length,-Outstring)224

9.1.3nth_char(+N,+String,-Char)225

9.1.4 string_length(+String,-Length)225

9.1.5 concat225

9.2转换字符串226

9.2.1 string_term(?String,?Term)226

9.2.2 atom_string(?Atom,?String)226

9.2.3 int_text(?Integer,?Text)226

9.2.4 float_text(?Float,?Text,?Format)227

9.2.5 ilst_text(?List,?String)227

9.3字符串输入输出227

9.3.1read_string227

9.3.2 read_line(+Handle,-Line)228

第10章窗口229

10.1 建立和修改窗口229

10.2 回送窗口信息230

10.3current_window(-Old,?New)231

10.4 hide_window(-Current,+New)231

10.5what_windows(-Name)231

10.6resiz_window(+Rows,+Columns)232

10.7move_window(+Rows,+Columns)232

10.8relabel_window(+Lable)232

10.9 recolor_window(+Window_attr+Border_attr)232

10.10 store_windows233

10.11refresh233

10.12 delete_window(+Name)233

10.13上托窗口233

10.13.1 建立上托窗口234

10.13.2 删除上托窗口234

10.14 一个窗口的例子235

第11章文本管理238

11.1光标控制238

11.1.1tget(-Row,-Column)238

11.1.2tmore(+Row,+Column)238

11.1.3 set_cursor(+Low_scan,+High_scan)239

11.1.4 get_cursor(-Low_scan,-High_scan)239

11.1.5 tchar(-Char,-Attr)239

11.2写到窗口239

11.2.1wc(+Count,+Character)240

11.2.2wa(+Count,Attribute)241

11.2.3wca(+Count,+Character,+Attribute)241

11.2.4 tscroll(+Count,+(ULR,ULC),CLRR,LRC)242

11.2.5cls242

11.2.6region_ca(+(ULR,ULC),(LRR,LRC),?String)242

11.2.7region_cc(+(ULR,ULC),+(LRR,LRC),?String)243

11.2.8 region_c(+(ULR,ULC),+(LRR,LRC),?String)243

第12章会话框244

12.1标准会话框控制245

12.1.1 在会话框中移动和选择247

12.1.2 加速话会框249

12.1.3 退出会话框249

12.2会话框和控制定义249

12.2.1 文本控制定义251

12.2.2 选择按钮控制251

12.2.3 辐射按钮定义252

12.2.4 编辑域定义253

12.2.5 按钮定义254

12.2.6 列表框定义254

12.2.7 编辑框定义256

12.2.8 编辑区定义257

12.3 装入编辑框和编辑区的内容257

12.4 调入控制定义258

12.5 dialog|run谓词258

12.6处理控制信息258

12.6.1 会话框管理信息260

12.6.2 控制信息261

12.6.3 通知信息264

12.6.4 which_control谓词265

12.7处理信息265

12.7.1 缺省会话数265

12.7.2 send_dialog_msg谓词266

12.7.3 send_control_msg谓词266

12.7.4 exit_dbox谓词266

12.7.5 一个信息处理的实例267

12.8 设置控制的初始值270

12.9 运行会话框271

12.10设计定做的控制271

12.10.1如何处理控制定义272

12.10.2 write_ctrl_tert(+Key,+Label)273

12.10.3 一个定做的控制实例273

12.10.4 使用标准控制信息与定做的控制277

12.11 编译使用会话框的程序278

第13章菜单279

13.1在菜单中移动和进行选择279

13.1.1 条形菜单方式下移动光标280

13.1.2 在下拉方式移动和进行选择280

13.1.3 加速键(accelerator key)280

13.2菜单定义281

13.2.1 条形菜单项定义282

13.2.2 下拉菜单选样项定义283

13.2.3 一个菜单定义实例283

13.3菜单信息284

13.3.1 画出并启动条形菜单285

13.3.2 画条形菜单286

13.3.3 检查和改变色状态286

13.3.4 检查和改变检查状态287

13.3.5 改变菜单属性287

第14章受限子句文法标志法289

14.1 理解语言结构289

14.2 内容随意文法289

14.3 受限子句文法290

14.4DCG和自然语言分析器290

14.4.1 DCG语法291

14.4.2 调用你的DCG291

14.4.3添加附加变量291

14.4.4 expand_term(+T1,-T2)293

14.5 一个使用DCG的实例293

第15章执行系统功能295

15.1MS-DOS相互作用及系统谓词295

15.1.1 shell295

15.1.2 halt295

15.1.3 lock296

15.1.4 unlock296

15.1.5 gc296

15.1.6statstcs296

15.1.7 system(+Predicate)297

15.2建立程序数据库298

15.2.1consult(+Filename)298

15.2.2reconsult(+Filename)298

15.2.3[+Filename]298

15.2.4 edit(+Filename)298

15.3处理错误299

15.3.1syntaxerrors(-Old,+New)299

15.3.2 fileerrors(-Ole,+New)300

15.3.3 errcode(-Code)300

15.4管理目录300

15.4.1disk(?DiskName)300

15.4.2mkdir(+Path)301

15.4.3chdir(+Path)301

15.4.4rmdir(+Path)301

15.4.5 directory(+Peath,-Name,-Mode,-Tim,-Date,-Size)301

15.5执行文件维护302

15.5.1delete(+Filename)302

15.5.2rename(+Filename,+Newname)302

15.5.3 chmod(+Filename,?Attributes)302

15.6存取系统时钟302

15.6.1 date(?date(Year,Month,Day))303

15.6.2time(?time(Hour,Minute,Second,Hundredth))303

15.6.3 date_day(+date(Y,M,D),-WeekDay)303

15.7 在应用程序中包含变元305

第16章嵌入的C306

16.1编译指令306

16.1.1 model指令306

16.1.2 cseg指令307

16.1.3 dseg指令307

16.1.4 pack指令307

16.1.5 name(pascal)指令307

16.2C全局说明和预处理指令308

16.2.1 C数据类型308

16.2.2 简单变量说明308

16.2.3 枚举说明309

16.2.4 结构说明309

16.2.5 联合说明309

16.2.6 数组说明309

16.2.7 指针说明310

16.2.8 数说明310

16.2.9 复合说明310

16.2.10 存储类别310

16.2.11 typedef指令311

16.2.12 预处理指令311

16.2.13 Arity/Prolog嵌入的C不支持的项目311

16.3使用嵌入的C表达式312

16.3.1 在嵌入的C表达式中说明变量312

16.3.2 表达式的元素312

16.3.3 算符314

16.3.4 值算符315

16.3.5 算术运算315

16.3.6 使用Prolog变量316

16.4 串转换谓词316

16.5 说明全局变量317

16.6编译的算术运算317

16.6.1 嵌入的C表达式之外的编译的算术运算318

16.7说明被C,Pascal或Fortran调用的Prolog谓词318

16.7.1 处理不确定的谓词318

16.7.2 public说明319

16.8 arityc.c和arityp.pas文件320

16.9 运行态错321

16.10 在解释器中使用嵌入的C321

16.11 嵌入的C实例322

第17章调试器谓词327

17.1启动和关闭调试器327

17.1.1 trace327

17.1.2 notrace327

17.2建立监测点327

17.2.1 spy327

17.2.2 nospy328

17.3端口328

17.3.1 leash(+Mode)328

17.4 调试器命令329

附录ABONUS.LIB库330

A.1 写整数,浮点数,和串330

A.2 读整数,浮点数,串和331

A.3串缓冲谓词332

A.3.1 string_buf(+String)332

A.3.2but_string(-String)332

A.3.3 append_buf(+String)332

A.3.4buf_length(-Length)332

A.3.5write_buf(+Start,+Length)333

A.3.6buf_insert_char(+Char,+Location)333

A.3.7 buf_delete_char(+Location)333

A.4Microsoft鼠标谓词333

A.4.1 mouse334

A.4.2 show_mouse_cursor334

A.4.3hide_mouse_cursor334

A.4.4 set_mouse_position(+Row,+Column)334

A.4.5get_mouse_position(-Row,-Column,-State)334

A.4.6mouse_region(+ULR, +ULC,+LRR,+LRC)334

A.4.7mouse_press(+Button,-How many,-Row,-Column,-State)335

A.4.8mouse_release(+Button,-How many,-Row,-Column,-State)335

A.4.9 set_mouse_cursor(+Cursor_type,+Cursor_Val1,+Cursor_Val2)336

A.5 ANSI驱动谓词336

A.6视屏页面338

A.6.1video_page(-Old,+New)338

A.6.2 video_mode(-Old,+New)339

1989《ARITY PROLOG5.0v 使用、参考手册》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由张敏,孙华,查良钿,彭春龙译 1989 中国科学院软件研究所;时运电脑公司;海声软件开发公司;北京科海培训中心 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。