2015-04-28 171 views
1

我是計算機科學的學生,我正在學習使用Prolog進行邏輯編程。如何從源代碼編譯VTProlog?

我發現了一個有趣的Prolog解釋器,VTProloghttps://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) Error: Identifier not found "l"
  • vtprolog.pas(1198,30) Error: Identifier not found "l"
  • vtprolog.pas(1199,16) Error: Identifier not found "l"
  • vtprolog.pas(1203,34) Error: Identifier not found "l"
  • vtprolog.pas(1611) Fatal: There were 4 errors compiling module, stopping
  • vtprolog.pas(0) Fatal: Compilation aborted

有沒有辦法用Turbo Pascal的7.0編譯它既(沒有任何要求)或自由帕斯卡上的Windows XP 2.6.4

+0

如果您不告訴我們哪裏出了問題,我們如何告訴您如何解決Free Pascal 2.6.4的問題? –

+0

是的,我意識到重複的問題(http://stackoverflow.com/questions/29907432/how-to-compile-picoprolog-from-source-code)是一個稍微不同的Prolog解釋器,但基本問題是相同的:Turbo Pascal 7.0是古老的歷史。 – duskwuff

+0

不太確定爲什麼在涉及不同編譯器和不同代碼庫的問題時,它被標記爲重複項。 OP與Turbo Pascal沒有問題,但Free Pascal沒有過時。 – jpw

回答

3

,無需瞭解帕斯卡爾太多了,我認爲這個問題是線1159的一部分:

Procedure print_functor (* l : node_ptr *) ;

已被註釋掉。修改成:

Procedure print_functor (l : node_ptr) ;

,它應編譯 - 至少它沒有當我試圖Ideone(使用Free Pascal編譯器)。如果該計劃將按預期工作,我不能說。

2

您是否將Free Pascal以嚴格的Turbo Pascal模式與-Mtp?如果我這樣做,編譯,即使是較舊的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,您可以通過在文件中添加{$模式TP}的第一件事模擬命令行參數(*)行(* $ V -...之前)。我用ideone測試了它,並且它compiled