我是计算机科学专业的学生,我正在学习Pascal编程.
我找到了一个有趣的Pascal编译器P4(http://homepages.cwi.nl/~steven/pascal/).
要了解有关Pascal的更多信息,我正在尝试编译他们的源代码,但我失败了.
在这个网页上,他们说:
- 使用Pascal编译器编译pcom.p和pint.p.你显然必须有一个Pascal编译器.这为您提供了一个生成P4代码的Pascal编译器(pcom)和一个运行P4代码的解释器(pint).
- 要使用编译器,请使用Pascal程序作为标准输入运行pcom.这会在标准输出上产生任何诊断,并在Pascal文件上生成名为prr的代码.检查Pascal编译器如何将其分配给文件存储中的文件.您可能必须更改pcom.p和pint.p中的行'rewrite(prr)'和pint.p中的'reset(prd)',例如"rewrite(prr,'prr')"等等. .
- 要运行生成的代码,请运行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编译的部分脚本吗?
免费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源以将其自身引导至字节码.