[Oberon] CASE without ELSE

Diego Sardina dsar at eml.cc
Thu Feb 15 17:59:01 CET 2018

On Thu, Feb 15, 2018, at 4:12 PM, Jörg wrote:

> If you write something like this

>   CASE idx OF

>     0: idx := idx + 42

>   | 2000: idx := idx * 2

>   ELSE

>   END

> and the compiler would implement it with a table, you have 1999
> useless entries.
In the past Pascal and Modula-2 compilers always limited case labels to
127 or 255,  these two limitsare also reasonable today and the entries' loss is very negligible.

> NW seems to have changed his mind on CASE. The compiler itself rarely
> uses CASE these days. eg ORS.Get() formerly THE case for CASE uses
> cascaded IFs>  

In "An Oberon Compiler for the ARM Processor", he wrote: The scanner is
one of the few routines where a case statement is highly valuable.
I agree with that not only for the constant time of the jump table but
for the aesthetic, it is a nightmare how it was coded in current
PO2013 :-)
Diego Sardina
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20180215/8b9b3ba0/attachment.html>

More information about the Oberon mailing list