- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是计算机科学专业的学生,正在学习 Pascal 编程。
<小时/>我发现了一个有趣的 Pascal 编译器,P4 ( http://homepages.cwi.nl/~steven/pascal/ )。
为了了解更多有关 Pascal 的信息,我尝试编译他们的源代码,但失败了。
在这个网页中,他们说:
- Compile pcom.p and pint.p with a Pascal compiler. You obviously have to have a Pascal compiler already. This gives you a Pascal compiler (pcom) that produces P4 code, and an interpreter (pint) that runs P4 code.
- To use the compiler, run pcom with the Pascal program as standard input. This produces any diagnostics on standard output, and its code on a Pascal file that is called prr. Check with your Pascal compiler how this gets assigned to a file in the filestore. You may have to change the lines 'rewrite(prr)' in pcom.p and pint.p and 'reset(prd)' in pint.p for your compiler, for instance to "rewrite(prr, 'prr')" etc.
- To run the resulting code, run pint with the prr output produced by pcom as input for the file 'prd', and input for the compiled Pascal program on standard input.
我用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 编译吗?
最佳答案
Free 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 不喜欢将联合字段传递给 VAR 参数。使用变量解决这个问题并编译源代码,总共需要 15 分钟。
带有额外模式语句的固定源代码位于 http://www.stack.nl/~marcov/files/p4fixed.zip但需要(尚未发布)FPC 3.0 或更高版本。
生成的 EXE 二进制文件可以编译原始 pcom 源代码,将其自身引导为字节码。
关于pascal - 如何从源代码编译P4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912143/
说我有两个文件,characters.pas和ogre.pas。食人魔是一个角色,但为了干净起见,我试图将两个文件分开。在characters.pas中,我有 unit Characters; {$m
我想要一个编程代码来打印范围之间的奇数来教学生。这里我取的范围是 1 到 10。所以我想打印 1 到 10 之间的奇数。 我写了这个代码来打印 1 到 10 之间的奇数 program printOd
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 4年前关闭。 Improve this
我创建了一个函数,其中包含 2 个具有相同数据类型的参数,对此我没有问题。 但是我在处理不同的数据类型时遇到了问题 这是我的代码: uses crt; function inputscore(name
我只是想知道如何在 pascal 中进行类型检查?我已经搜索了几个小时,但我找不到任何有用的东西。 例子: var number: Integer; begin write('Enter a nu
我正在实现 an assemblinker for the 16-bit DCPU来自游戏 0x10c。 有人向我建议的一种技术是使用“覆盖,就像过去在 Turbo Pascal 中一样”,以便在运行
Q1:这是什么意思:WriteLn (#$0b) ? $0b应该是十六进制,如 0x0b ,但是 # 呢?标志? 问题 2: x:=readkey; if ( x = #5) do... 是否#5意思
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
对于在 Pascal 中返回值的函数,赋值 FunctionName := SomeVal;用来。我认为它不会像 return 那样在那个确切的地方停止函数执行在 C 中。有没有类似C的东西retur
我正在尝试在 Pascal 中创建一个类,我对声明和语法有点困惑。主要的事情是一个错误,我收到“前向声明未解决 Tetromino.Rotate(LongInt)”,我读到我需要在实现部分声明我的过程
我正在开展我的学校项目,我想使用动态(而不是静态)数组。我使用 ObjectPascal,所以我习惯了一些语法。但现在我在旧的 TurboPascal 中编程(我使用的是 Windows 版 Turb
对于这项任务,我有一个不太好的解决方案,但有人可以告诉我如何使用标准库或更优雅的方法。当前的解决方案基于这样的事实:对对象的过程的引用在内存中存储两个指针,一个指向过程代码的指针和一个指向对象的指针。
我正在运行一个 Fenuc Karel 机器人进行类作业,它使用 Pascal 的变体,但我们的机器人是在 1991-1993 年添加 random() 之前的。有谁知道如何在 Pascal 的旧 d
我正在尝试在 Pascal 中创建一个类,我对声明和语法有点困惑。主要的事情是一个错误,我收到“前向声明未解决 Tetromino.Rotate(LongInt)”,我读到我需要在实现部分声明我的过程
我认为展示问题的最简单方法是举个例子。编码: PROGRAM CONSTANTSTRING(OUTPUT); CONST C_MaxLength = 30; VAR small_str
我在 Windows 上运行 Lazarus。我真的很想制作“Beep”程序。看来你可以在 Pascal 中使用: windows.beep(300,500); 但不是在拉撒路!我可以使用另一个命令吗
我正在对一个 18 岁的 pascal 程序进行维护。为了帮助我理解一切是如何组合在一起的,我想绘制一个调用图。但是我找不到任何可以为 pascal 源绘制调用图的软件。我目前正在使用 Turbo P
我正在使用帕斯卡。我在处理读取文件时遇到问题。 我有一个带有整数的文件。我读取文件的 pascal 是: read(input, arr[i]); 如果我的文件内容是 1 2 3那么它很好,但如果它是
当分配运算符 := 时会发生什么?在 Object Pascal 中重载?我主要是指首先评估什么,更重要的是如何(如果可能)更改此顺序。这是一个让我烦恼的例子: 我声明TMyClass因此: TMyC
如何使用 writeln 在 Pascal 中打印撇号符号功能? 例子: writeln('My brother's book'); 无法工作,因为 s book没有“写”函数,所以编译器返回一个错误
我是一名优秀的程序员,十分优秀!