[Oberon] [EXT] Porting S3 / V4 Oberon (was: File transfer)

Joerg joerg.straube at iaeth.ch
Sun Jan 3 18:45:30 CET 2021


I just use the Oberon-07 cross compiler under V4. It will tell you immediately, where the issues are😊

br
Jörg

> Am 03.01.2021 um 17:45 schrieb Skulski, Wojciech <skulski at pas.rochester.edu>:
> 
> 
>> Another idea perhaps worth considering is not a new compiler, 
>> but a scanner front end which will add commented warnings 
>> to the code under V4. That is, the output will be the same 
>> source file (with all the Elements and formatting!) with added lines like:
> 
>> I vaguely remember seeing beautifiers under BlackBox. 
>> Perhaps there is one under V4/S3 as well?
> 
> There is an Analyzer available under V4. It can analyze and flag features. Perhaps this Analyzer can be modified to catch the obsolescent language features?
> 
> Here is the Analyzer.Tool under Linz V4:
> 
> ------------------------------
> Analyzer.Analyze *            Analyzer.Analyze *\ituvxs    full analysis
> Analyzer.Analyze *\its        intermediate access, TB procs check, eval. seq.
> 
> Analyzer.Analyze (("*" | "@") ["\" opt] | {name ["\" opt]} "~" | "^")
> 
> Options (complementing each other):
> i    redeclaration of/use of/assignment to intermediate items 
> t     redefinition of or new definition of type bound procedures
> u    used before set for different scopes
> v    use of var parameters
> x    use/initialization of exported items
> s    evaluation sequence of function calls
> 
> Analyzer.Analyze marks by default
> - all non-exported variables/constants/types/fields that are declared
>    but never used, used before being initialized (*), never initialized,
>    and initialized but never used.
> - non-exported [type-bound] procedures that are never called.
> - modules that are imported but never used.
> 
> (*) For variables declared in a different scope, no warning is
> produced (see option \u, however).
> 
> \i(ntermediate) additionally marks
> - items that are already declared in an outer scope.
> - the use of or assignment to intermediate items (e.g. local
>   variables/parameters declared in an outer scope).
> 
> \t(ype bound procedures) additionally marks
> - the redefinition of type bound procedures.
> - the new definition of type bound procedures in an extended type.
> 
> \u(sed) additionally marks
> - 'used before set' for variables declared in a different scope.
> 
> \v(arpar) additionally marks
> - variables that are used as var parameters and are therefore not
>   ensured to be initialized.
> 
> \x (eXported) additionally marks
> - exported items that are declared but not used by the module itself,
>   used before being initialized, never initialized, and initialized but never
>   used.
> 
> \s (evaluation Sequence) additionally marks
> - calls of procedures with more than one parameter, where function
>   calls occur in the parameter list. The evaluation sequence of
>   parameters may affect the side effects of these functions.
> 
> Add the following to your OberonErrors.Text.
> 
> 3.5 Analyzer Warnings
> 
> 900    never used
> 901    never set
> 902    used before set
> 903    set but never used
> 904    used as varpar, possibly not set
> 905    also declared in outer scope
> 906    access/assignment to intermediate
> 907    redefinition
> 908    new definition
> 909    statement after RETURN/EXIT
> 910    for loop variable set
> 911    implied type guard in record assignment
> --
> 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