[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