<html><body>Hi Christopher,<div><br></div><div>Thank you for useful guidelines, I will follow closely. </div><div>I am also reading Oberon-07 report outlining differences to 02, also Oberon07 at a glance giving distilled info.</div><div>I have somehow managed to convert `Splines.Mod' that is referred to in Applications chapters of the project book.</div><div><br></div><div>Many thanks</div><div>Tomas </div><div><br></div><div><br><p>---------- Původní zpráva ----------<br>Od: Chris Burrows <chris@cfbsoftware.com><br>Komu: 'ETH Oberon and related systems' <oberon@lists.inf.ethz.ch><br>Datum: 28. 3. 2017 13:22:18<br>Předmět: Re: [Oberon] FPGA Oberon - Definition Module Tool</p><br><blockquote>Hi Tomas,<br><br>Note that Def.Mod is written using Oberon-2. If you want to use it on Project Oberon you will have to modify it so that it conforms to the Oberon-07 language report. It would make a good mini-project for you to do to become more familiar with Project Oberon.<br><br>Here are a couple of tips to get you started:<br><br>1. You will need to implement a function named CAP that converts characters in the range "a" to "z" to the corresponding capital letter in the range "A" to "Z".<br><br>2. You will need to refactor any code that contains RETURN statements anywhere other than the end of a function PROCEDURE. <br><br>e.g. replace the following:<br><br>  BEGIN<br>    IF sym = eot then RETURN END;<br>    sym := none; ln := line<br>    ...<br>    ...<br><br>with:<br><br>  BEGIN<br>    IF sym # eot THEN<br>      sym := none; ln := line<br>      ...<br>      ...<br>    <br>3. COPY is no longer required to copy character arrays. You can just use an assignment statement:<br><br>  e.g. COPY(x, v) can be written as v := x<br><br>Regards,<br>Chris<br><br>Chris Burrows<br>CFB Software<br>http://www.astrobe.com/RISC5<br><br>   <br>From: Oberon [mailto:oberon-bounces@lists.inf.ethz.ch] On Behalf Of Treutwein Bernhard<br>Sent: Tuesday, 28 March 2017 8:49 PM<br>To: 'thomas.kral@email.cz'<br>Cc: 'ETH Oberon and related systems'<br>Subject: Re: [Oberon] FPGA Oberon - Definition Module Tool<br><br>Hi Thomas,<br><br>what about this one: https://sourceforge.net/p/oberon/oberonv4/ci/master/tree/UV4/Def.Mod<br><br>regards<br>--<br>  Bernhard<br><br>From: thomas.kral@email.cz [mailto:thomas.kral@email.cz] <br>Sent: Monday, March 27, 2017 1:14 PM<br>To: ETH Oberon and related systems<br>Subject: Re: [Oberon] FPGA Oberon - Definition Module Tool<br><br>Hi Wojciech,<br><br>I am looking in my copy of V4, does not seem to contain `Def.Mod'. Where it comes from in your version?<br><br>$ tar -tzf ProjectOberon.V4.tar.gz | grep Def.Mod<br><br>Many thanks<br>Tomas<br>---------- Původní zpráva ----------<br>Od: Skulski, Wojciech <skulski@pas.rochester.edu><br>Komu: ETH Oberon and related systems <oberon@lists.inf.ethz.ch><br>Datum: 25. 3. 2017 15:53:54<br>Předmět: Re: [Oberon] FPGA Oberon - Definition Module Tool<br><br>> I am thinking of a simple tool that could extract definition info from *.Mod <br><br>How about Def.Mod which is available under Oberon System V4? <br><br>Right click on "Def.Show Def.Mod" opens a new viewer with the following: <br><br>DEFINITION Def; (* CAS *) <br><br>PROCEDURE Show; (* ( "*" | "^" | name ) [ "\P" ] --P option enforces plain text style *) <br>END Def. <br>---------------------------------------------------------------- <br>Def.Show Documents.Mod opens the following viewer: <br><br>DEFINITION Documents; <br>CONST <br>profile = "Documents.Profile"; (* on startup all openers contained in this file are registered automatically *) <br>TYPE <br>Opener = POINTER TO RECORD <br>pattern-, cmd-: ARRAY 32 OF CHAR; <br>next-: Opener <br>END; <br>VAR <br>openers-: Opener; <br>PROCEDURE Open; (* ^ | name Opens the specified file with the registered opener, if no specific opener is found for the extension of the file, Edit.Open is used. *) <br>PROCEDURE RegisterOpener (pattern, command: ARRAY OF CHAR); (* Registers the opener command for the pattern. Openers that are registered earlier can be overwritten by (more specific) openers registered later. *) <br>PROCEDURE RegisterOpeners; (* ^ | filename Registers all the openers contained in the specified file. Their precedence is as they appear in the file. *) <br>END Documents. <br><br>________________________________________ <br>From: Oberon [oberon-bounces@lists.inf.ethz.ch] on behalf of thomas.kral@email.cz [thomas.kral@email.cz] <br>Sent: Friday, March 24, 2017 7:52 AM <br>To: ETH Oberon and related systems <br>Subject: [Oberon] FPGA Oberon - Definition Module Tool <br><br>Hi, <br><br>I am thinking of a simple tool that could extract definition info from *.Mod and produce respective *.Def file. Definition files can be quickly looked at, to remind a programmer of the interface *.Mod modules export. <br><br>While on Linux one could use grep <br>$ grep PROCEDURE\ * *.Mod.txt <br><br>to obtain info at least about procedures, but how about exported types and variables? <br><br>I am looking for a recommended way how to simply code such a tool, is it a good idea to use `ORP' parser somehow for the task? I prefer to code it simple, does not have to be perfect, but should carry the idea. <br><br>Tomas <br>-- <br>Oberon@lists.inf.ethz.ch mailing list for ETH Oberon and related systems <br>https://lists.inf.ethz.ch/mailman/listinfo/oberon <br><br>--<br>Oberon@lists.inf.ethz.ch mailing list for ETH Oberon and related systems<br>https://lists.inf.ethz.ch/mailman/listinfo/oberon<br></blockquote></div></body></html>