2015-04-28 130 views
5

我是计算机科学的学生,我正在学习使用Pascal进行编程。如何从源代码编译P4?


我发现一个有趣的Pascal编译器,P4http://homepages.cwi.nl/~steven/pascal/)。

要了解更多关于Pascal的信息,我试图编译它们的源代码,但是我失败了。

在这个网页上,他们说:

  1. 编译pcom.p和pint.p用Pascal编译器。你显然必须有一个Pascal编译器。这给你一个产生P4代码的Pascal编译器(pcom)和一个运行P4代码的解释器(pint)。
  2. 要使用编译器,请将带有Pascal程序的pcom作为标准输入运行。这会在标准输出上产生任何诊断信息,并将其代码放在名为prr的Pascal文件上。请检查您的Pascal编译器如何将其分配给文件存储中的文件。你可能必须改变pcom.p和pint.p中的行'rewrite(prr)'和pint.p中的'reset(prd)',以便编译器,例如“rewrite(prr,'prr')”etc
  3. 要运行生成的代码,使用由pcom生成的prr输出作为文件'prd'的输入运行pint,并在标准输入上输入编译后的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) 

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


我可以用Turbo Pascal的(没有任何要求)在的Windows XP编译它?您是否可以删除Pascal编译的部分脚本

+1

似乎P4的源代码不受Free Pascal支持,就像无法使用Visual Studio从源代码编译GCC一样。尝试使用P4本身进行编译 - 下载二进制文件,然后使用它编译源文件。 – sashoalm

+1

由于P4/P5是“另一个”方言族,而不是Borland,但是更多J&W/ISO喜欢,因此未修改版本将无法与Turbo Pascal一起编译。过去有些版本适用于网络上的P4。一般来说复活TP中的东西是痛苦的,Free Pascal是一个更好的选择。它支持更多,本地Windows,并没有痛苦的16位内存限制 –

回答

7

的Free Pascal的弗洛里安一直致力于让斯科特·摩尔的P5编译器(这是一个P4编译器接受帕斯卡的更大的子集)与老污染源FPC的ISO模式工作。然而,它只能在开发版本(包括即将推出的“stable”分支3.0.x)中工作(大部分)。

我去年夏天试过,它编译并且一般使用FPC 3.x和-Miso参数(选择ISO风格方言)。 IIRC固定的最后一件事是ISO风格参数传输。

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

pcom然后仍然绊倒在一个指针的ord(),这显然不是很便携,但不幸的是有20+出现必须被替换ORD(ptrint())。

pcom仍然不能编译,FPC不喜欢将联合字段传递给VAR参数。用变量和源代码编译,总共15分钟。

固定源码额外模式语句是在http://www.stack.nl/~marcov/files/p4fixed.zip需要(如尚未发行)FPC 3.0或更高版本。

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

+0

小挑剔:Pascal-P5不编译“更大的Pascal子集”,它编译(全部)ISO 7185 Pascal,而不是一个子集。 Pascal-P4是一个定义的子集编译器:它从来没有被设计为编译所有的pascal,但只是自编译的最低限度。 –

+0

如果我说帕斯卡我的意思是帕斯卡。如果我的意思是说“ISO Pascal”,我会说“ISO Pascal”或更好,甚至是“ISO-xxxx”Pascal,请参阅http://www.stack.nl/~marcov/ansiiso.txt第四个问题解答 –

1

你想要一个符合ISO 7185的编译器来编译它。确实,Pascal-P4(专有名称)是在ISO 7185标准之前编写的。然而,对标准的适应性通常不如对适应度高的变化集。

你会发现已经完成,并在记录的工作:

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

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

话虽如此,我不确定为什么Pascal-P4会是一个有趣的目标。 Pascal-P4是一个子集编译器,意味着Pascal的不完整实现。你会发现一个完整实现帕斯卡-P5:

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

而且我相信它有更少的可移植性问题为好。

祝你好运。