[Oberon] FPGA Oberon - Definition Module Tool
Chris Burrows
chris at cfbsoftware.com
Tue Mar 28 13:19:35 CEST 2017
Hi Tomas,
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.
Here are a couple of tips to get you started:
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".
2. You will need to refactor any code that contains RETURN statements anywhere other than the end of a function PROCEDURE.
e.g. replace the following:
BEGIN
IF sym = eot then RETURN END;
sym := none; ln := line
...
...
with:
BEGIN
IF sym # eot THEN
sym := none; ln := line
...
...
3. COPY is no longer required to copy character arrays. You can just use an assignment statement:
e.g. COPY(x, v) can be written as v := x
Regards,
Chris
Chris Burrows
CFB Software
http://www.astrobe.com/RISC5
From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of Treutwein Bernhard
Sent: Tuesday, 28 March 2017 8:49 PM
To: 'thomas.kral at email.cz'
Cc: 'ETH Oberon and related systems'
Subject: Re: [Oberon] FPGA Oberon - Definition Module Tool
Hi Thomas,
what about this one: https://sourceforge.net/p/oberon/oberonv4/ci/master/tree/UV4/Def.Mod
regards
--
Bernhard
From: thomas.kral at email.cz [mailto:thomas.kral at email.cz]
Sent: Monday, March 27, 2017 1:14 PM
To: ETH Oberon and related systems
Subject: Re: [Oberon] FPGA Oberon - Definition Module Tool
Hi Wojciech,
I am looking in my copy of V4, does not seem to contain `Def.Mod'. Where it comes from in your version?
$ tar -tzf ProjectOberon.V4.tar.gz | grep Def.Mod
Many thanks
Tomas
---------- Původní zpráva ----------
Od: Skulski, Wojciech <skulski at pas.rochester.edu>
Komu: ETH Oberon and related systems <oberon at lists.inf.ethz.ch>
Datum: 25. 3. 2017 15:53:54
Předmět: Re: [Oberon] FPGA Oberon - Definition Module Tool
> I am thinking of a simple tool that could extract definition info from *.Mod
How about Def.Mod which is available under Oberon System V4?
Right click on "Def.Show Def.Mod" opens a new viewer with the following:
DEFINITION Def; (* CAS *)
PROCEDURE Show; (* ( "*" | "^" | name ) [ "\P" ] --P option enforces plain text style *)
END Def.
----------------------------------------------------------------
Def.Show Documents.Mod opens the following viewer:
DEFINITION Documents;
CONST
profile = "Documents.Profile"; (* on startup all openers contained in this file are registered automatically *)
TYPE
Opener = POINTER TO RECORD
pattern-, cmd-: ARRAY 32 OF CHAR;
next-: Opener
END;
VAR
openers-: Opener;
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. *)
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. *)
PROCEDURE RegisterOpeners; (* ^ | filename Registers all the openers contained in the specified file. Their precedence is as they appear in the file. *)
END Documents.
________________________________________
From: Oberon [oberon-bounces at lists.inf.ethz.ch] on behalf of thomas.kral at email.cz [thomas.kral at email.cz]
Sent: Friday, March 24, 2017 7:52 AM
To: ETH Oberon and related systems
Subject: [Oberon] FPGA Oberon - Definition Module Tool
Hi,
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.
While on Linux one could use grep
$ grep PROCEDURE\ * *.Mod.txt
to obtain info at least about procedures, but how about exported types and variables?
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.
Tomas
--
Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
https://lists.inf.ethz.ch/mailman/listinfo/oberon
More information about the Oberon
mailing list