如何从源代码编译VTProlog?

时间:2015-04-28 00:23:05

标签: c prolog pascal

我是计算机科学专业的学生,​​我正在学习Prolog的逻辑编程。

我找到了一个有趣的Prolog解释器, VTProlog https://github.com/Johnicholas/Hello-Github/blob/master/prolog-in-hundreds-of-loc/vtprolog-in-c/vtprolog.pas)。

要了解有关Prolog的更多信息,我正在尝试编译他们的源代码。并且,我使用 Turbo Pascal 7.0 取得了成功,但是 Free Pascal 2.6.4 失败了。

  
      
  • vtprolog.pas(1195,8)错误:未找到标识符" l"
  •   
  • vtprolog.pas(1198,30)错误:未找到标识符" l"
  •   
  • vtprolog.pas(1199,16)错误:未找到标识符" l"
  •   
  • vtprolog.pas(1203,34)错误:未找到标识符" l"
  •   
  • vtprolog.pas(1611)致命:编译模块有4个错误,停止
  •   
  • vtprolog.pas(0)致命:编译中止
  •   

有没有办法在 Windows XP 上使用 Turbo Pascal 7.0 (无任何要求)或 Free Pascal 2.6.4 进行编译?

2 个答案:

答案 0 :(得分:3)

对Pascal不太了解我认为问题是第1159行的一部分:

Procedure print_functor (* l : node_ptr *) ;

已被评论出来。将其更改为:

Procedure print_functor (l : node_ptr) ;

它应该编译 - 至少它是在我尝试使用Ideone时(使用Free Pascal编译器)。如果程序按预期工作,我就不能说了。

答案 1 :(得分:2)

你是否用-Mtp将Free Pascal置于严格的Turbo Pascal模式中?如果我这样编译,即使使用较旧的2.6.2。

D:\testing>fpc vtprolog.pp -Mtp
Free Pascal Compiler version 2.6.2 [2013/02/12] for i386
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling vtprolog.pp
vtprolog.pp(222,3) Note: Local variable "num" is assigned but never used
vtprolog.pp(310,3) Note: Local variable "s" not used
vtprolog.pp(1253,13) Note: Local variable "p" not used
vtprolog.pp(100,3) Note: Local variable "source_file" not used
vtprolog.pp(102,13) Note: Local variable "text_chars" is assigned but never used
vtprolog.pp(103,46) Warning: Variable "HeapPtr" read but nowhere assigned
Linking vtprolog.exe
1610 lines compiled, 0.3 sec , 43712 bytes code, 2204 bytes data
1 warning(s) issued
5 note(s) issued

对于ideone,您可以通过在文件中添加{$ mode tp}(在(* $ V -... *)行之前)来模拟命令行参数。我用ideone测试了它,它compiled