Pascal 如何从源代码编译P4?

Pascal 如何从源代码编译P4?,pascal,freepascal,Pascal,Freepascal,我是一名计算机科学专业的学生,我正在用Pascal学习编程 我发现了一个有趣的Pascal编译器,P4() 为了了解更多关于Pascal的信息,我正在尝试编译他们的源代码,但失败了 在这个网页上,他们说: 用Pascal编译器编译pcom.p和pint.p。显然,您已经有了一个Pascal编译器。这将为您提供一个生成P4代码的Pascal编译器(pcom)和一个运行P4代码的解释器(pint) 要使用编译器,请将Pascal程序作为标准输入运行pcom。这将在标准输出上生成任何诊断,并在称为p

我是一名计算机科学专业的学生,我正在用Pascal学习编程


我发现了一个有趣的Pascal编译器,P4()

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

在这个网页上,他们说:

  • 用Pascal编译器编译pcom.p和pint.p。显然,您已经有了一个Pascal编译器。这将为您提供一个生成P4代码的Pascal编译器(pcom)和一个运行P4代码的解释器(pint)
  • 要使用编译器,请将Pascal程序作为标准输入运行pcom。这将在标准输出上生成任何诊断,并在称为prr的Pascal文件上生成其代码。请使用Pascal编译器检查如何将其分配给文件存储中的文件。您可能需要为编译器更改pcom.p和pint.p中的“rewrite(prr)”行和pint.p中的“reset(prd)”,例如更改为“rewrite(prr,'prr')”等
  • 要运行生成的代码,请使用pcom生成的prr输出作为文件“prd”的输入运行pint,并在标准输入上为已编译的Pascal程序输入
  • 我用免费Pascal编译了它,但也失败了

    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编译吗?

    Free Pascal的Florian一直在努力让Scott Moore的编译器(它是一个接受Pascal更大子集的P4编译器)与FPC的ISO模式一起用于旧源代码。但是,它(大部分)只能在开发版本中工作(包括即将推出的“稳定”分支3.0.x)

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

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

    pcom仍然无意中获取指针的ord(),这显然也不是很便于携带,但不幸的是,出现了20多次,必须用ord(ptrint())替换

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

    带有额外模式语句的固定源代码位于,但需要(尚未发布)FPC 3.0或更新版本。


    生成的EXE二进制文件可以将原始pcom源代码编译成字节码。

    您需要一个符合ISO 7185的编译器来编译它。Pascal-P4(专有名称)确实是在ISO 7185标准之前编写的。然而,与dielect相比,对标准的适应通常不是变化集

    您将在以下位置发现已完成并记录的工作:

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

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

    我相信它的可移植性问题也较少


    祝你好运。

    似乎免费的Pascal不支持P4的源代码,就像你不能使用Visual Studio从源代码编译GCC一样。试着用P4本身编译它-下载二进制文件,并用它来编译源代码。未修改的版本不会用Turbo Pascal编译,因为P4/P5是“另一种”方言家族,不是Borland,而是更像J&W/ISO。然而,在过去的网络上有一些适合P4的版本。总的来说,在TP中复活事物是痛苦的,自由帕斯卡是更好的选择。它支持更多,是本机Windows,没有痛苦的16位内存限制小细节:Pascal-p5不编译“更大的Pascal子集”,它编译(全部)ISO 7185 Pascal,而不是子集。根据定义,Pascal-P4是一个子集编译器:它从来没有被设计为编译所有Pascal,而是只编译自编译所需的最小值。如果我说Pascal,我指的是Pascal。如果我想说“ISO Pascal”,我会说“ISO Pascal”,或者更确切地说是“ISO xxxx”Pascal,参见第四个问答