论文部分内容阅读
G(o|¨)del语言是继Prolog语言之后出现的新型说明性通用逻辑程序设计语言。它建立在多态多类的一阶逻辑基础之上,摒弃了Prolog语言中的非逻辑成分,集成了许多语言的有效成分和优点,引入了类型系统,增加了新的语言成分,这使得它成为一种功能强大的高效的说明性逻辑程序设计语言。作为一种工具,G(o|¨)del语言编译系统的实现对该语言的推广、深入研究,以及人工智能的研究和智能软件系统的开发具有重要意义。目前,只有Bristol大学的研究小组用SICStus Prolog通过将G(o|¨)del语言程序翻译成Prolog语言的程序实现了G(o|¨)del语言的一个编译系统。但是,由于G(o|¨)del语言程序在翻译成Prolog语言程序后,其执行仍然只能通过SICStus Prolog系统解释执行,其执行效率较低且只能在Linux环境下运行,而且仅仅实现了G(o|¨)del语言的一个子集。本文提出了G(o|¨)del语言编译系统的一种实现方法:该方法编译的程序在执行时继续沿用反驳-消解原理,但对源程序只编译到中间代码(内部表示),然后与事先设计好的具有动态推理功能的推理机连接,形成目标代码。这种中间代码具有面向G(o|¨)del语言的特点,是在整体理解源程序过程性语义的基础上,按照推理机执行过程对数据对象的使用要求,表达源程序的数据对象,然后作为某个特定程序(即作为内核程序推理机)的输入,两者连接后生成目标代码。目标代码的执行中借助推理机程序对中间代码的执行处理,就可完成程序的计算。这是与Bristol G(o|¨)del系统实现的技术路线完全不同的一种实现方法。基于这样的实现方法,我们给出了编译系统的总体结构,并对编译分析系统中的词法分析、语法分析、语义分析、中间代码生成和出错处理等各部分的实现方法和技术进行了详细的介绍,着重讨论了一种适合于逻辑程序设计语言的优化的语义分析方法。同时,我们将类型系统作为G(o|¨)del语言编译系统一个独立的子系统,要求它具备在程序动态执行过程中为推理机提供各种必要的数据准备,这在逻辑程序设计语言的编译系统实现中是一种新的技术方法。经过三年多的探索,我们已经成功地设计、开发了一个实验室G(o|¨)del语言编译系统,运行效率很高,并在试验运行中通过了一组典型实例。初步的测试表明:在前人工作的基础上,我们提出的G(o|¨)del语言编译系统的设计思想、实现方法、技术路线和实现技术是可行的。相信随着G(o|¨)del语言编译系统实现技术的逐步成熟,G(o|¨)del语言将会受到更多的关注。