- Pascal to Component Pascal translator - NumericalRecipes

From: CFB Software <"CFB>
Date: Thu, 20 Oct 2005 10:52:07 +0930

----boundary-LibPST-iamunique-2102803426_-_-
Content-type: text/plain

> -----Original Message-----
> From: blackbox{([at]})nowhere.xy
> Behalf Of Campbell, Robert D (SELEX) (UK Edinburgh)
> Sent: Wednesday, 19 October 2005 5:50 PM
> To: BlackBox Mailing List
> Subject: [BlackBox] - Pascal to Component Pascal translator -
> NumericalRecipes
>
>
>
> Chris
>
> I am not familiar with the various Pascal
> dialecs (I last used VAX Pascal decades ago!).
>


> For mathematical and engineering work the
> book 'Numerical Recipes' is a very valuable
> cookbook (and theory) resource, and is available
> in several languages (FORTRAN, c, Pascal at least).

>

I agree with Bernhard in his reply - if a Modula-2 version is already
available, it should be easier to use that as a starting point for
conversion to CP. However, collections of algorithms are probably better
candidates for translation than, say, special-purpose applications,
particularly if they are not dependent on any particular operating
system / platform or framework.

> Strangely enough, when I need to translate something
> to CP, I find the FORTRAN the easiest source (but the
> GOTOs are often VERY difficult to handle).
>

Similar to your VAX Pascal experience - the last programming job that I
had that involved FORTRAN was when it was still at version IV back in
1978. Yes - GOTOs are a nightmare in Pascal as well - they have to be
translated by hand. Unless they were used very sparingly in a Pascal
program (e.g. to simulate a HALT), such programs are better left to
wither away and die anyway.

> Can we now expect the translator tools to be powerful
> enough and mature enough to handle such translations
> reliably, and with minimal or modest 'user interaction'?
> That would indeed be useful.
>

I've continued on from Wirth's example (he was the original author of
M2O, the Modula-2 to Oberon translator) and taken the conservative
approach to translation. i.e. only translate the obvious. Anything that
is disputable should be left to manual intervention - there is nothing
worse than 'smart' decision-making software.

So far I have experimented with two different approaches to translation.


The current translator, and Wirth's M2O that it is based on, are
effectively language compilers. They scan and parse the input in the
same way as a traditional compiler. The difference is that instead of
the output being executable code, the output is source code for a
different language.

Another promising approach to translation is made possible by
environments like the old UCSD P-System and the Java Virtual Machine
(JVM). The most recent is Microsoft's .NET - in particular its use of
the Common Language Interface (CLI). All of the languages available on
.NET (including C#, C++, Fortran, Component Pascal, Modula-2, Oberon,
Visual Basic etc.) generate a common intermediate language (IL), similar
in many respects to assembly language. When you 'compile' a .NET program
it simply converts it into IL. It is not until the program is run that
the IL is compiled into native code.

Where this is useful for programming language translators is that, as
well as containing all the information about assignments, jumps, loops
etc. that is normally in an assembly language of a similar level, the IL
also contains 'meta-information' about the data types and structures. In
fact, there is sufficient information contained to be able to
'disassemble' the IL and reconstruct most of the original source code of
the program.

The neat outcome of all of this is that if you have written one of these
disassemblers, for Component Pascal, say, then you can use the same
disassembler for IL code that originated from a different programming
language and hence you have a language translator!

I have a prototype of such a .NET Component Pascal translator - I didn't
need to start from scatch, I just had to modify an existing Object
Pascal dissasembler which is publicly available. It does quite well
converting C# or Delphi for .NET programs, but unfortunately for you
perhaps, had no luck so far with FORTRAN.

Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-2102803426_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzcyBBcmlhbDt9DQp7XGYxXGZtb2Rlcm4gQ291cmllciBOZXc7fQ0Ke1xmMlxmbmlsXGZjaGFy
c2V0MiBTeW1ib2w7fQ0Ke1xmM1xmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyIE5ldzt9fQ0Ke1xj
b2xvcnRibFxyZWQwXGdyZWVuMFxibHVlMDtccmVkMFxncmVlbjBcYmx1ZTI1NTt9DQpcdWMxXHBh
cmRccGxhaW5cZGVmdGFiMzYwIFxmMFxmczIwID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS1c
cGFyDQo+IEZyb206IGJsYWNrYm94QG9iZXJvbi5jaCBbbWFpbHRvOmJsYWNrYm94QG9iZXJvbi5j
aF0gT24gXHBhcg0KPiBCZWhhbGYgT2YgQ2FtcGJlbGwsIFJvYmVydCBEIChTRUxFWCkgKFVLIEVk
aW5idXJnaClccGFyDQo+IFNlbnQ6IFdlZG5lc2RheSwgMTkgT2N0b2JlciAyMDA1IDU6NTAgUE1c
cGFyDQo+IFRvOiBCbGFja0JveCBNYWlsaW5nIExpc3RccGFyDQo+IFN1YmplY3Q6IFtCbGFja0Jv
eF0gLSBQYXNjYWwgdG8gQ29tcG9uZW50IFBhc2NhbCB0cmFuc2xhdG9yIC0gXHBhcg0KPiBOdW1l
cmljYWxSZWNpcGVzXHBhcg0KPiBccGFyDQo+IFxwYXINCj4gXHBhcg0KPiBDaHJpc1xwYXINCj4g
XHBhcg0KPiBJIGFtIG5vdCBmYW1pbGlhciB3aXRoIHRoZSB2YXJpb3VzIFBhc2NhbFxwYXINCj4g
ZGlhbGVjcyAoSSBsYXN0IHVzZWQgVkFYIFBhc2NhbCBkZWNhZGVzIGFnbyEpLlxwYXINCj4gXHBh
cg0KXHBhcg0KXHBhcg0KPiBGb3IgbWF0aGVtYXRpY2FsIGFuZCBlbmdpbmVlcmluZyB3b3JrIHRo
ZVxwYXINCj4gYm9vayAnTnVtZXJpY2FsIFJlY2lwZXMnIGlzIGEgdmVyeSB2YWx1YWJsZVxwYXIN
Cj4gY29va2Jvb2sgKGFuZCB0aGVvcnkpIHJlc291cmNlLCBhbmQgaXMgYXZhaWxhYmxlXHBhcg0K
PiBpbiBzZXZlcmFsIGxhbmd1YWdlcyAoRk9SVFJBTiwgYywgUGFzY2FsIGF0IGxlYXN0KS5ccGFy
DQo+IFxwYXINClxwYXINCkkgYWdyZWUgd2l0aCBCZXJuaGFyZCBpbiBoaXMgcmVwbHkgLSBpZiBh
IE1vZHVsYS0yIHZlcnNpb24gaXMgYWxyZWFkeVxwYXINCmF2YWlsYWJsZSwgaXQgc2hvdWxkIGJl
IGVhc2llciB0byB1c2UgdGhhdCBhcyBhIHN0YXJ0aW5nIHBvaW50IGZvclxwYXINCmNvbnZlcnNp
b24gdG8gQ1AuIEhvd2V2ZXIsIGNvbGxlY3Rpb25zIG9mIGFsZ29yaXRobXMgYXJlIHByb2JhYmx5
IGJldHRlclxwYXINCmNhbmRpZGF0ZXMgZm9yIHRyYW5zbGF0aW9uIHRoYW4sIHNheSwgc3BlY2lh
bC1wdXJwb3NlIGFwcGxpY2F0aW9ucyxccGFyDQpwYXJ0aWN1bGFybHkgaWYgdGhleSBhcmUgbm90
IGRlcGVuZGVudCBvbiBhbnkgcGFydGljdWxhciBvcGVyYXRpbmdccGFyDQpzeXN0ZW0gLyBwbGF0
Zm9ybSBvciBmcmFtZXdvcmsuXHBhcg0KXHBhcg0KPiBTdHJhbmdlbHkgZW5vdWdoLCB3aGVuIEkg
bmVlZCB0byB0cmFuc2xhdGUgc29tZXRoaW5nXHBhcg0KPiB0byBDUCwgSSBmaW5kIHRoZSBGT1JU
UkFOIHRoZSBlYXNpZXN0IHNvdXJjZSAoYnV0IHRoZVxwYXINCj4gR09UT3MgYXJlIG9mdGVuIFZF
UlkgZGlmZmljdWx0IHRvIGhhbmRsZSkuXHBhcg0KPiBccGFyDQpccGFyDQpTaW1pbGFyIHRvIHlv
dXIgVkFYIFBhc2NhbCBleHBlcmllbmNlIC0gdGhlIGxhc3QgcHJvZ3JhbW1pbmcgam9iIHRoYXQg
SVxwYXINCmhhZCB0aGF0IGludm9sdmVkIEZPUlRSQU4gd2FzIHdoZW4gaXQgd2FzIHN0aWxsIGF0
IHZlcnNpb24gSVYgYmFjayBpblxwYXINCjE5NzguIFllcyAtIEdPVE9zIGFyZSBhIG5pZ2h0bWFy
ZSBpbiBQYXNjYWwgYXMgd2VsbCAtIHRoZXkgaGF2ZSB0byBiZVxwYXINCnRyYW5zbGF0ZWQgYnkg
aGFuZC4gVW5sZXNzIHRoZXkgd2VyZSB1c2VkIHZlcnkgc3BhcmluZ2x5IGluIGEgUGFzY2FsXHBh
cg0KcHJvZ3JhbSAoZS5nLiB0byBzaW11bGF0ZSBhIEhBTFQpLCBzdWNoIHByb2dyYW1zIGFyZSBi
ZXR0ZXIgbGVmdCB0b1xwYXINCndpdGhlciBhd2F5IGFuZCBkaWUgYW55d2F5LlxwYXINClxwYXIN
Cj4gQ2FuIHdlIG5vdyBleHBlY3QgdGhlIHRyYW5zbGF0b3IgdG9vbHMgdG8gYmUgcG93ZXJmdWxc
cGFyDQo+IGVub3VnaCBhbmQgbWF0dXJlIGVub3VnaCB0byBoYW5kbGUgc3VjaCB0cmFuc2xhdGlv
bnNccGFyDQo+IHJlbGlhYmx5LCBhbmQgd2l0aCBtaW5pbWFsIG9yIG1vZGVzdCAndXNlciBpbnRl
cmFjdGlvbic/XHBhcg0KPiBUaGF0IHdvdWxkIGluZGVlZCBiZSB1c2VmdWwuXHBhcg0KPiBccGFy
DQpccGFyDQpJJ3ZlIGNvbnRpbnVlZCBvbiBmcm9tIFdpcnRoJ3MgZXhhbXBsZSAoaGUgd2FzIHRo
ZSBvcmlnaW5hbCBhdXRob3Igb2ZccGFyDQpNMk8sIHRoZSBNb2R1bGEtMiB0byBPYmVyb24gdHJh
bnNsYXRvcikgYW5kIHRha2VuIHRoZSBjb25zZXJ2YXRpdmVccGFyDQphcHByb2FjaCB0byB0cmFu
c2xhdGlvbi4gaS5lLiBvbmx5IHRyYW5zbGF0ZSB0aGUgb2J2aW91cy4gQW55dGhpbmcgdGhhdFxw
YXINCmlzIGRpc3B1dGFibGUgc2hvdWxkIGJlIGxlZnQgdG8gbWFudWFsIGludGVydmVudGlvbiAt
IHRoZXJlIGlzIG5vdGhpbmdccGFyDQp3b3JzZSB0aGFuICdzbWFydCcgZGVjaXNpb24tbWFraW5n
IHNvZnR3YXJlLiBccGFyDQpccGFyDQpTbyBmYXIgSSBoYXZlIGV4cGVyaW1lbnRlZCB3aXRoIHR3
byBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byB0cmFuc2xhdGlvbi5ccGFyDQpccGFyDQpccGFyDQpU
aGUgY3VycmVudCB0cmFuc2xhdG9yLCBhbmQgV2lydGgncyBNMk8gdGhhdCBpdCBpcyBiYXNlZCBv
biwgYXJlXHBhcg0KZWZmZWN0aXZlbHkgbGFuZ3VhZ2UgY29tcGlsZXJzLiBUaGV5IHNjYW4gYW5k
IHBhcnNlIHRoZSBpbnB1dCBpbiB0aGVccGFyDQpzYW1lIHdheSBhcyBhIHRyYWRpdGlvbmFsIGNv
bXBpbGVyLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IGluc3RlYWQgb2ZccGFyDQp0aGUgb3V0cHV0
IGJlaW5nIGV4ZWN1dGFibGUgY29kZSwgdGhlIG91dHB1dCBpcyBzb3VyY2UgY29kZSBmb3IgYVxw
YXINCmRpZmZlcmVudCBsYW5ndWFnZS5ccGFyDQpccGFyDQpBbm90aGVyIHByb21pc2luZyBhcHBy
b2FjaCB0byB0cmFuc2xhdGlvbiBpcyBtYWRlIHBvc3NpYmxlIGJ5XHBhcg0KZW52aXJvbm1lbnRz
IGxpa2UgdGhlIG9sZCBVQ1NEIFAtU3lzdGVtIGFuZCB0aGUgSmF2YSBWaXJ0dWFsIE1hY2hpbmVc
cGFyDQooSlZNKS4gVGhlIG1vc3QgcmVjZW50IGlzIE1pY3Jvc29mdCdzIC5ORVQgLSBpbiBwYXJ0
aWN1bGFyIGl0cyB1c2Ugb2ZccGFyDQp0aGUgQ29tbW9uIExhbmd1YWdlIEludGVyZmFjZSAoQ0xJ
KS4gQWxsIG9mIHRoZSBsYW5ndWFnZXMgYXZhaWxhYmxlIG9uXHBhcg0KLk5FVCAoaW5jbHVkaW5n
IEMjLCBDKyssIEZvcnRyYW4sIENvbXBvbmVudCBQYXNjYWwsIE1vZHVsYS0yLCBPYmVyb24sXHBh
cg0KVmlzdWFsIEJhc2ljIGV0Yy4pIGdlbmVyYXRlIGEgY29tbW9uIGludGVybWVkaWF0ZSBsYW5n
dWFnZSAoSUwpLCBzaW1pbGFyXHBhcg0KaW4gbWFueSByZXNwZWN0cyB0byBhc3NlbWJseSBsYW5n
dWFnZS4gV2hlbiB5b3UgJ2NvbXBpbGUnIGEgLk5FVCBwcm9ncmFtXHBhcg0KaXQgc2ltcGx5IGNv
bnZlcnRzIGl0IGludG8gSUwuIEl0IGlzIG5vdCB1bnRpbCB0aGUgcHJvZ3JhbSBpcyBydW4gdGhh
dFxwYXINCnRoZSBJTCBpcyBjb21waWxlZCBpbnRvIG5hdGl2ZSBjb2RlLiBccGFyDQpccGFyDQpX
aGVyZSB0aGlzIGlzIHVzZWZ1bCBmb3IgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgdHJhbnNsYXRvcnMg
aXMgdGhhdCwgYXNccGFyDQp3ZWxsIGFzIGNvbnRhaW5pbmcgYWxsIHRoZSBpbmZvcm1hdGlvbiBh
Ym91dCBhc3NpZ25tZW50cywganVtcHMsIGxvb3BzXHBhcg0KZXRjLiB0aGF0IGlzIG5vcm1hbGx5
IGluIGFuIGFzc2VtYmx5IGxhbmd1YWdlIG9mIGEgc2ltaWxhciBsZXZlbCwgdGhlIElMXHBhcg0K
YWxzbyBjb250YWlucyAnbWV0YS1pbmZvcm1hdGlvbicgYWJvdXQgdGhlIGRhdGEgdHlwZXMgYW5k
IHN0cnVjdHVyZXMuIEluXHBhcg0KZmFjdCwgdGhlcmUgaXMgc3VmZmljaWVudCBpbmZvcm1hdGlv
biBjb250YWluZWQgdG8gYmUgYWJsZSB0b1xwYXINCidkaXNhc3NlbWJsZScgdGhlIElMIGFuZCBy
ZWNvbnN0cnVjdCBtb3N0IG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZSBvZlxwYXINCnRoZSBw
cm9ncmFtLlxwYXINClxwYXINClRoZSBuZWF0IG91dGNvbWUgb2YgYWxsIG9mIHRoaXMgaXMgdGhh
dCBpZiB5b3UgaGF2ZSB3cml0dGVuIG9uZSBvZiB0aGVzZVxwYXINCmRpc2Fzc2VtYmxlcnMsIGZv
ciBDb21wb25lbnQgUGFzY2FsLCBzYXksIHRoZW4geW91IGNhbiB1c2UgdGhlIHNhbWVccGFyDQpk
aXNhc3NlbWJsZXIgZm9yIElMIGNvZGUgdGhhdCBvcmlnaW5hdGVkIGZyb20gYSBkaWZmZXJlbnQg
cHJvZ3JhbW1pbmdccGFyDQpsYW5ndWFnZSBhbmQgaGVuY2UgeW91IGhhdmUgYSBsYW5ndWFnZSB0
cmFuc2xhdG9yIVxwYXINClxwYXINCkkgaGF2ZSBhIHByb3RvdHlwZSBvZiBzdWNoIGEgLk5FVCBD
b21wb25lbnQgUGFzY2FsIHRyYW5zbGF0b3IgLSBJIGRpZG4ndFxwYXINCm5lZWQgdG8gc3RhcnQg
ZnJvbSBzY2F0Y2gsIEkganVzdCBoYWQgdG8gbW9kaWZ5IGFuIGV4aXN0aW5nIE9iamVjdFxwYXIN
ClBhc2NhbCBkaXNzYXNlbWJsZXIgd2hpY2ggaXMgcHVibGljbHkgYXZhaWxhYmxlLiBJdCBkb2Vz
IHF1aXRlIHdlbGxccGFyDQpjb252ZXJ0aW5nIEMjIG9yIERlbHBoaSBmb3IgLk5FVCBwcm9ncmFt
cywgYnV0IHVuZm9ydHVuYXRlbHkgZm9yIHlvdVxwYXINCnBlcmhhcHMsIGhhZCBubyBsdWNrIHNv
IGZhciB3aXRoIEZPUlRSQU4uIFxwYXINClxwYXINCkNocmlzIEJ1cnJvd3NccGFyDQpDRkIgU29m
dHdhcmVccGFyDQpodHRwOi8vd3d3LmNmYnNvZnR3YXJlLmNvbS9ncGNwXHBhcg0KXHBhcg0KLS0t
IEJsYWNrQm94XHBhcg0KLS0tIHNlbmQgc3ViamVjdCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRvIGJs
YWNrYm94QG9iZXJvbi5jaH19AFBNDQo+IFRvOiA=


----boundary-LibPST-iamunique-2102803426_-_---
Received on Thu Oct 20 2005 - 03:22:07 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:07 UTC