使用手写编译器生成器的Prolog离线专化
编程语言
2007-05-23 v1 人工智能
摘要
所谓“cogen方法”——编写编译器生成器而非专化器——在函数式和命令式语言的部分求值中取得了显著成功。本文展示了cogen方法同样适用于逻辑程序的专化(称为部分 Deduction),并导致有效的专化器。此外,通过使用良好的绑定时间注释,专化后程序的加速速度可与在线专化器获得的加速速度相当。本文首先发展了离线部分 Deduction的通用方法,然后提出了具体的离线部分 Deduction方法,形成纯逻辑程序的离线系统LIX。虽然LIX本身即可用的专化器,但它被用于开发cogen系统LOGEN。给定程序、静态输入的规范以及指定应展开的调用,LOGEN生成针对该程序的专化专化器。运行该专化器并提供特定的静态输入值可得到专化后的程序。虽然这需要两步而非一步,但在同一程序被多次专化的情况下,专化过程的效率得到提高。本文还呈现并评估了一种自动绑定时间分析,能够派生注释。尽管派生的注释仍不如手工编写的注释理想,但它们使非专家用户能够以完全自动的方式使用LOGEN系统。最后,LOGEN被扩展以直接支持Prolog的大部分声明式和非声明式特征,从而能够执行所谓的混合线(mixline)专化。
引用
@article{arxiv.cs/0208009,
title = {Offline Specialisation in Prolog Using a Hand-Written Compiler Generator},
author = {Michael Leuschel and Jesper Joergensen and Wim Vanhoof and Maurice Bruynooghe},
journal= {arXiv preprint arXiv:cs/0208009},
year = {2007}
}
备注
52 pages, to appear in the journal "Theory and Practice of Logic Programming"