Hi Oleg:
My recently rekindled interest in Oberon caused me to dig up the source code for the virtual machine I wrote as part of my thesis work back in 1989. In case you're interested, I've scanned it and put it on my web page. Here's a direct link to the code (not OCR'd unfortunately):
http://www.stefanv.com/computers/masters_thesis/maple_machine_oberon.pdfThis is _really_ old Oberon, where we still had to write the .def files manually.
I've done a bit of work on the Oberon compiler, adding support for underscores (but only within names, not at the beginning or end, as this could cause conflicts with the compiler's name mangling), and unlimited length string literals (not really unlimited - artificially limited to 1Mb to prevent an unclosed string consuming all of memory). I've also improved the position reporting of error messages produced by OPS to be more useful. For example, an identifier too long message points to the first character that makes it too long, and an unclosed comment message points to the beginning of the comment.
--
Stefan Vorkoetter
http://www.stefanv.com>> your source code looks very clean and good commented.
Thank you. I find that clean code is easier to work with.
As much as I respect and admire Wirth, I've never been a fan of his coding style. It is too dense, and contains too few comments, in my opinion. On the other hand, I also don't like code that is too sparse, such as writing this in C:
Код: "C"
if( someCondition )
{
aSingleShortStatement;
}
>> If you allow me, I would like to publish your letter with a link to
>> the source code of Maple Machine at the Oberon-forum
Okay, but please also include a link to the surrounding article (
http://www.stefanv.com/computers/masters_thesis.html) to give some context.
>> I see you've used a very interesting version of Oberon for compiling
>> the code. Is that ETH Oberon? You use the type BYTE without the
>> prefix SYSTEM. In the version of ETH Oberon PlugIn that I watched,
>> there is no just BYTE type, only SYSTEM.BYTE.
Yes, it's the original ETH Oberon. The September 1989 Language Report includes this type.
Type BYTE may be assigned values of type CHAR or SHORTINT.
Formal parameters of type ARRAY OF BYTE may be passed _any_ actual parameter type (so yes, it is possible to get around the type system without using module SYSTEM).
>> It is nice to have your letter
It's nice to have someone to talk to about Oberon.
--
Stefan Vorkoetter
http://www.stefanv.com