【源码分析】Strawberry Prolog 5.0 源码分析
某厂面试归来,发现自己落伍了!>>> 源码下载 前言 介绍 Prolog IDEs 的很多,但是专门介绍 Strawberry Prolog 的文章几乎没有。不要看它的官方网站还是上世纪的风格,也没有什么移动版视图,但是其到2020年1月23日仍有更新,推出了5.0版本的 二进制包 ,相应地提供了其 源码包 。自 3.0 Beta 4 推出的示例小游戏 WarCraft.pro(位于 安装目录/Games/ 下)至今仍吸引着我。希望能转化为其他编程语言实现,研究 IDE 如何实现了 Prolog 脚本是其中一项重要内容,在此写下自己的分析进展。 Assert.cpp - 编译入口 文件内只定义了一个函数: void assert(DWORD iii, DWORD where) 在 Linux 下编译会提示 assert 函数只需要一个参数却给了两个,这是因为与系统定义的 assert 函数冲突了,虽然 stdafx.h 中似乎取消了 assert 原来的定义: #undef assert //???plam 重命名这个函数为 prologAssert 之类的别的名称可以避免错误,在 HeadFunc.h 中的下述声明也需要修改: extern void assert(DWORD, DWORD); assert 函数体内的 Program 在 Intelig.cpp 文件中声明: