如何从源代码编译P4?

时间:2015-04-28 06:44:58

标签: pascal freepascal

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

我找到了一个有趣的Pascal编译器, P4 http://homepages.cwi.nl/~steven/pascal/)。

要了解有关Pascal的更多信息,我正在尝试编译他们的源代码,但我失败了。

在这个网页上,他们说:

  
      
  1. 使用Pascal编译器编译pcom.p和pint.p。你显然必须有一个Pascal编译器。这为您提供了一个生成P4代码的Pascal编译器(pcom)和一个运行P4代码的解释器(pint)。
  2.   
  3. 要使用编译器,请使用Pascal程序作为标准输入运行pcom。这会在标准输出上产生任何诊断,并在Pascal文件上生成名为prr的代码。检查Pascal编译器如何将其分配给文件存储中的文件。您可能需要更改行' rewrite(prr)'在pcom.p和pint.p和' reset(prd)'在pint.p中为你的编译器,例如在"重写(prr,' prr')"等
  4.   
  5. 要运行生成的代码,请运行pint,将pcom生成的prr输出作为文件' prd'的输入,并在标准输入上输入已编译的Pascal程序。
  6.   

我用 Free Pascal (在https://ideone.com/上)编译了它,但也失败了。

Free Pascal Compiler version 2.6.4+dfsg-4 [2014/10/14] for i386
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling pcom.p
pcom.p(1,3) Warning: Unsupported switch "$L"
pcom.p(88,23) Fatal: Syntax error, ":" expected but ")" found
Fatal: Compilation aborted
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)

我不知道如何在Windows机器中编译此源代码,因为我只知道 Pascal语言

我可以在 Windows XP 上使用 Turbo Pascal (无任何要求)进行编译吗?你能删除 Pascal仅编译的脚本的某些部分吗?

2 个答案:

答案 0 :(得分:7)

免费Pascal的Florian一直致力于让Scott Moore的P5编译器(这是一个接受更大Pascal子集的P4编译器)与旧的源代码一起使用 FPC的ISO模式。但是它(大多数情况下)只能用于开发版本(包括即将推出的“稳定”分支3.0.x)。

我去年夏天尝试过编译并且通常使用FPC 3.x和-Miso参数(选择ISO样式方言)。 IIRC最后修复的是ISO样式参数传输。

我很快尝试了引用的P4编译器版本,它似乎偶然发现了一些“评论此”评论与从ISO模式来回切换相关的评论。如果我评论这些文件,pint编译。 (如果需要,你可以运行原始字节码)

然后pcom仍然偶然发现一个指针的ord(),这显然也不是很便携,但不幸的是,20次出现必须用ord(ptrint())替换。

pcom仍然没有编译,FPC不喜欢将union字段传递给VAR参数。使用变量和源编译来解决这个问题,共计15分钟。

带有额外模式语句的固定源代码位于http://www.stack.nl/~marcov/files/p4fixed.zip需要(尚未发布)FPC 3.0或更新版本。

生成的EXE二进制文件可以编译原始的pcom源代码,将其自身引导为字节码。

答案 1 :(得分:1)

您希望获得符合ISO 7185标准的编译器来编译它。确实,Pascal-P4(专有名称)是在ISO 7185标准之前编写的。但是,对标准的适应性通常不如适应节能的变化集。

你会发现这项工作已经完成并记录在:

http://sourceforge.net/projects/pascalp4/

它指定使用GPC。然而,正如Marco所说,可以通过更多工作来适应FPC,我相信FPC人员正在提高其编译器的ISO 7185能力。

话虽如此,我不确定为什么Pascal-P4会成为一个有趣的目标。 Pascal-P4是一个子集编译器,意味着Pascal的不完整实现。您将找到一个完整的实现Pascal-P5:

http://sourceforge.net/projects/pascalp5/

我相信它的便携性问题也较少。

祝你好运。