[Oberon] Re (n): syntax in BB, CP, GPCP and V4 ...
Dieter
d.gloetzel at web.de
Thu Jul 27 09:54:13 CEST 2017
I am sorry. There was a lot of binary formatting information in the
beginning of the source files. This is a feature of "ETHOberon Plugin
for Windows".
Now it has been removed, and these are normal *.txt files.
Regards
Dieter
Am 26.07.2017 um 11:28 schrieb Jan de Kruyf:
> THen perhaps the character coding is something totally foreign. Only
> the tool file reads in emacs.
>
> Jan.
>
> On Tue, Jul 25, 2017 at 3:07 PM, Dieter <d.gloetzel at web.de
> <mailto:d.gloetzel at web.de>> wrote:
>
> The source code and docu is in the attachment of my last mail.
>
> Regards, Dieter
>
>
> Am 25.07.2017 um 14:18 schrieb Jan de Kruyf:
>> Would you have the source code for the *.Mod files Dieter?
>>
>> Jan.
>>
>>
>> On Tue, Jul 25, 2017 at 10:00 AM, Dieter <d.gloetzel at web.de
>> <mailto:d.gloetzel at web.de>> wrote:
>>
>> Just to remind you, that there exists a nice prettyprinter
>> written by G. Feldmann, running on ETHOberon Windows plugin.
>> Regards,
>> Dieter
>>
>>
>> Am 25.07.2017 um 01:44 schrieb Hans Klaver:
>>> Jörg wrote:
>>>
>>>> Indentation is indeed a totally personal thing.
>>>
>>> It is interesting to catalogue the different indentation
>>> styles used by some well known (and less well known)
>>> programmers of Oberon and Component Pascal source code. With
>>> one of the exercises of the Reiser & Wirth book as material
>>> I wrote out various indentation styles.
>>>
>>> Crudely four styles of indentation can be discerned:
>>> - No indentation (Daniel)
>>> - Minimal indentation (Reiser / Mössenböck); the difference
>>> between the two is in the indentation of declarations (e.g.
>>> VAR) at the procedure level
>>> - Classical indentation (Wirth & Gutknecht); has the most
>>> consistent indentation of scope levels.
>>> - Knuth indentation (Knuth / Campbell); also quite
>>> consistent, but rather convoluted.
>>>
>>>
>>> MODULE M; (* After Exercise 6.4 (p. 85) from Reiser &
>>> Wirth, Programming in Oberon *)
>>> IMPORT Out;
>>> VAR i, j: INTEGER;
>>> PROCEDURE A*;
>>> VAR i: INTEGER;
>>> PROCEDURE B(VAR i, j: INTEGER);
>>> VAR k: INTEGER;
>>> BEGIN k := i; i := j; j := k END B;
>>> BEGIN i := 2; B(i, j)
>>> END A;
>>> PROCEDURE C*;
>>> BEGIN A; i := 2*j;
>>> Out.Int(i, 5); Out.Int(j, 5); Out.Ln
>>> END C;
>>> BEGIN
>>> END M.C
>>>
>>> (**************************************)
>>>
>>> MODULE M; (* Daniel,
>>> http://www.waltzballs.org/other/prog.html#track
>>> <http://www.waltzballs.org/other/prog.html#track> *)
>>> IMPORT Out;
>>> VAR i,j:INTEGER;
>>>
>>> PROCEDURE A*;
>>> VAR i:INTEGER;
>>>
>>> PROCEDURE B(VAR i,j:INTEGER);
>>> VAR k:INTEGER;
>>> BEGIN k:=i;i:=j;j:=kEND B;
>>>
>>> BEGIN i:=2;B(i,j)
>>> END A;
>>>
>>> PROCEDURE C*;
>>> BEGIN A;i:=2*j;
>>> Out.Int(i,5);Out.Int(j,5);Out.Ln
>>> END C;
>>>
>>> BEGIN
>>> END M.C
>>>
>>> (**************************************)
>>>
>>> MODULE M; (* M. Reiser, The Oberon System
>>> and M. Reiser & N. Wirth, Programming in Oberon *)
>>> IMPORT Out;
>>> VAR i, j: INTEGER;
>>>
>>> PROCEDURE A*;
>>> VAR i: INTEGER;
>>>
>>> PROCEDURE B(VAR i, j: INTEGER);
>>> VAR k: INTEGER;
>>> BEGIN
>>> k := i; i := j; j := k
>>> END B;
>>>
>>> BEGIN
>>> i := 2; B(i, j)
>>> END A;
>>>
>>> PROCEDURE C*;
>>> BEGIN
>>> A; i := 2*j;
>>> Out.Int(i, 5); Out.Int(j, 5); Out.Ln
>>> END C;
>>>
>>> BEGIN
>>> END M.C
>>>
>>> (*************************************)
>>>
>>> MODULE M; (* H. Mössenböck, Object Oriented Programming in
>>> Oberon-2 *)
>>> IMPORT Out;
>>> VAR i, j: INTEGER;
>>>
>>> PROCEDURE A*;
>>> VAR i: INTEGER;
>>>
>>> PROCEDURE B(VAR i, j: INTEGER);
>>> VAR k: INTEGER;
>>> BEGIN
>>> k := i; i := j; j := k
>>> END B;
>>>
>>> BEGIN
>>> i := 2; B(i, j)
>>> END A;
>>>
>>> PROCEDURE C*;
>>> BEGIN
>>> A; i := 2*j;
>>> Out.Int(i, 5); Out.Int(j, 5); Out.Ln
>>> END C;
>>>
>>> BEGIN
>>> END M.C
>>>
>>> (**************************************)
>>>
>>> MODULE M; (* Wirth & Gutknecht, Project Oberon *)
>>> IMPORT Out;
>>> VAR i, j: INTEGER;
>>>
>>> PROCEDURE A*;
>>> VAR i: INTEGER;
>>>
>>> PROCEDURE B(VAR i, j: INTEGER);
>>> VAR k: INTEGER;
>>> BEGIN
>>> k := i; i := j; j := k
>>> END B;
>>>
>>> BEGIN
>>> i := 2; B(i, j)
>>> END A;
>>>
>>> PROCEDURE C*;
>>> BEGIN
>>> A; i := 2*j;
>>> Out.Int(i, 5); Out.Int(j, 5); Out.Ln
>>> END C;
>>>
>>> BEGIN
>>> END M.C
>>>
>>> (**************************************)
>>>
>>> MODULE M; (* Knuth. E.g. see: http://brokestream.com/tex.pdf *)
>>> IMPORT Out;
>>> VAR i, j: INTEGER;
>>>
>>> PROCEDURE A*;
>>> VAR i: INTEGER;
>>>
>>> PROCEDURE B(VAR i, j: INTEGER);
>>> VAR k: INTEGER;
>>> BEGIN k := i; i := j; j := k
>>> END B;
>>>
>>> BEGIN i := 2; B(i, j)
>>> END A;
>>>
>>> PROCEDURE C*;
>>> BEGIN A; i := 2*j;
>>> Out.Int(i, 5); Out.Int(j, 5); Out.Ln
>>> END C;
>>>
>>> BEGIN
>>> END M.C
>>>
>>> (**************************************)
>>>
>>> MODULE M; (* R. Campbell, Subsystem Lib for BlackBox
>>> Component Framework,
>>> see the Component Pascal Collection,
>>> http://www.zinnamturm.eu/ *)
>>> IMPORT Out;
>>> VAR
>>> i, j : INTEGER;
>>>
>>> PROCEDURE A*;
>>> VAR
>>> i : INTEGER;
>>>
>>> PROCEDURE B(VAR i, j : INTEGER);
>>> VAR
>>> k : INTEGER;
>>> BEGIN
>>> k := i; i := j; j := k
>>> END B;
>>>
>>> BEGIN
>>> i := 2;
>>> B(i, j)
>>> END A;
>>>
>>> PROCEDURE C*;
>>> BEGIN
>>> A;
>>> i := 2*j;
>>> Out.Int(i, 5); Out.Int(j, 5); Out.Ln
>>> END C;
>>>
>>> BEGIN
>>> END M.C
>>>
>>>
>>> Anyone can choose his or her favourite indentation style.
>>>
>>> I personally don't like the two extremes (Daniel and Knuth /
>>> Campbell). Imho they don't follow Einstein's criterium "Make
>>> it as simple as ...": Daniel's is too simplistic and Knuth's
>>> / Campbell's are too convoluted.
>>>
>>> The classic Wirth / Gutknecht style is the only style that
>>> is completely consistent: every scope has its own indentation.
>>> BlackBox uses this style as standard. See:
>>> https://hansklav.home.xs4all.nl/ProgrammingConventionsBB.pdf
>>> <https://hansklav.home.xs4all.nl/ProgrammingConventionsBB.pdf>
>>>
>>> Some might find the Reiser / Mössenböck styles more
>>> aesthetically pleasing because of their simplicity. Although
>>> these styles are not as consistent as the Wirth / Gutknecht
>>> style, in practice this doesn't matter much because there is
>>> only one module scope per compilation unit, and nested
>>> procedures are rarely used in Oberon programs.
>>>
>>> The latter styles are used in two excellent books: /The
>>> Oberon System/ by Martin Reiser and /Object-Oriented
>>> Programming in Oberon-2/ by Hanspeter Mössenböck. These
>>> books are the two best typeset Oberon books there are
>>> (imho). Unfortunately both have long been out of print. A
>>> scanned copy of /The Oberon System/ can be found on the
>>> internet here:
>>> http://oberoncore.ru/library/reiser_the_oberon_system_user_guide_and_programmers_manual
>>> <http://oberoncore.ru/library/reiser_the_oberon_system_user_guide_and_programmers_manual> ,
>>> and there's a pdf-version of /OOP in Oberon-2/ here:
>>> http://ssw.jku.at/Research/Books/Oberon2.pdf
>>> <http://ssw.jku.at/Research/Books/Oberon2.pdf> . In this pdf
>>> the source code indentation is not rendered entirely
>>> accurately, so also have look at a scanned version of this
>>> book:
>>> https://books.google.nl/books?id=BseoCAAAQBAJ&printsec=frontcover&dq=object+oriented+programming+in+oberon-2&hl=nl&sa=X&redir_esc=y#v=onepage&q=object%20oriented%20programming%20in%20oberon-2&f=false
>>> <https://books.google.nl/books?id=BseoCAAAQBAJ&printsec=frontcover&dq=object+oriented+programming+in+oberon-2&hl=nl&sa=X&redir_esc=y#v=onepage&q=object%20oriented%20programming%20in%20oberon-2&f=false>
>>>
>>> --
>>> Hans Klaver
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Oberon at lists.inf.ethz.ch <mailto:Oberon at lists.inf.ethz.ch> mailing list for ETH Oberon and related systems
>>> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>>> <https://lists.inf.ethz.ch/mailman/listinfo/oberon>
>>
>> --
>> ____________________________________
>> Dr. Dieter Glötzel
>> Im Rosengarten 27
>> 64367 Mühltal
>> Tel.: 06151 / 360 82 72
>>
>> -- Oberon at lists.inf.ethz.ch <mailto:Oberon at lists.inf.ethz.ch>
>> mailing list for ETH Oberon and related systems
>> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>> <https://lists.inf.ethz.ch/mailman/listinfo/oberon>
>>
>> --
>> Oberon at lists.inf.ethz.ch <mailto:Oberon at lists.inf.ethz.ch> mailing list for ETH Oberon and related systems
>> https://lists.inf.ethz.ch/mailman/listinfo/oberon
>> <https://lists.inf.ethz.ch/mailman/listinfo/oberon>
>
> --
> ____________________________________
> Dr. Dieter Glötzel
> Im Rosengarten 27
> 64367 Mühltal
> Tel.: 06151 / 360 82 72
>
> -- Oberon at lists.inf.ethz.ch <mailto:Oberon at lists.inf.ethz.ch>
> mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
> <https://lists.inf.ethz.ch/mailman/listinfo/oberon>
>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon
--
____________________________________
Dr. Dieter Glötzel
Im Rosengarten 27
64367 Mühltal
Tel.: 06151 / 360 82 72
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20170727/c4dfe3b3/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OFormatter.Mod
Type: video/mpeg
Size: 23368 bytes
Desc: not available
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20170727/c4dfe3b3/attachment-0002.m1v>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OFormatterIO.Mod
Type: video/mpeg
Size: 28447 bytes
Desc: not available
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20170727/c4dfe3b3/attachment-0003.m1v>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OFormatter.Tool
Type: application/octet-stream
Size: 2290 bytes
Desc: not available
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20170727/c4dfe3b3/attachment-0001.obj>
More information about the Oberon
mailing list