如何从源代码编译P4?

fpj*_*fpj 5 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. 要使用编译器,请使用Pascal程序作为标准输入运行pcom.这会在标准输出上产生任何诊断,并在Pascal文件上生成名为prr的代码.检查Pascal编译器如何将其分配给文件存储中的文件.您可能必须更改pcom.p和pint.p中的行'rewrite(prr)'和pint.p中的'reset(prd)',例如"rewrite(prr,'prr')"等等. .
  3. 要运行生成的代码,请运行pint,将pcom生成的prr输出作为文件'prd'的输入,并在标准输入上输入已编译的Pascal程序.

我用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)
Run Code Online (Sandbox Code Playgroud)

我不知道如何在Windows机器上编译这个源代码,因为我知道Pascal语言.


我可以在Windows XP上使用Turbo Pascal(没有任何要求)编译它吗?你能删除Pascal编译的部分脚本吗?

Mar*_*ort 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源以将其自身引导至字节码.