[Oberon] Code check

Douglas G. Danforth danforth at greenwoodfarm.com
Mon Jan 20 22:21:28 CET 2003


Aubrey,

"9"<=ch

should be ch<="9"

-Doug

mcintosh at vima.austin.tx.us wrote:
> 
> Perhaps I'm tired, but this code doesn't work as I expect it to.
> Can someone look it over for a sanity check?
> I am running on the May 22, 2002 Bluebottle system:
>     ETH Oberon / Aos 22.5.2002
>     Oberon Portable Compiler / nw, rc, nm, tk, prk
>     Oberon Parser (Active & X Extensions) / prk
> 
> The problem exists when the ":" character is passed to the routine.  It passes
> through the IF statement.  When the source is changed so that the "#" character is in
> the 5th call to the procedure, the command runs to completion, and the system state
> becomes the one shown at the end of the listing.
> 
> MODULE AlmBug;
> VAR t : ARRAY 8 OF CHAR; ix : LONGINT;
> 
> PROCEDURE ReadToken (ch : CHAR; VAR token: ARRAY OF CHAR);
> VAR trash : CHAR;
> BEGIN
>         IF (("A"<=ch) & (ch<="Z"))  OR  (("a"<=ch) & (ch<="z")) OR (("0"<=ch) & ("9"<=ch))
>         THEN
>                 trash := "A";
>                 ASSERT ((("A"<=ch) & (ch<="Z"))  OR  (("a"<=ch) & (ch<="z")) OR (("0"<=ch) & ("9"<=ch)));
>                 trash := "B";
>                 ASSERT ((ch#":") & (ch#"$"));
>                 t [ix] := ch;
>                 INC (ix)
>         END;
> END ReadToken;
> 
> PROCEDURE Doit*;
> BEGIN
>         ix := 0;
>         ReadToken ("A", t);
>         ReadToken ("b", t);
>         ReadToken ("$", t);
>         ReadToken ("C", t);
>         ReadToken (":", t);
>         ReadToken ("D", t)
> END Doit;
> 
> END AlmBug.Doit
> 
> Compiler.Compile @
> System.Free AlmBug ~
> System.State AlmBug ~
> 
> AlmBug  SB = 02B39F58H
>         @SELF =  02B39DB0H
>         SELF =  02B39DB0H
>         ix = 4
>         t = "AbCD"
> 
> Aubrey McIntosh <mcintosh at vima.austin.tx.us>
> Assistant Professor of Chemistry
> University of Minnesota, Morris
> 600 E. 4th St.
> Morris, MN 56267-2134
> 
> --
> Oberon at inf.ethz.ch mailing list for ETH Oberon and related systems
> http://www.lists.inf.ethz.ch/mailman/listinfo/oberon



More information about the Oberon mailing list