- FOR loop control variable restrictions?

From: CFB Software <"CFB>
Date: Fri, 26 Aug 2005 10:03:47 +0930

----boundary-LibPST-iamunique-763558938_-_-
Content-type: text/plain

Marc,

Thank you for your reply. On reflection I should have instead asked ETH
whether they intended to *allow* the statements. Further investigation
shows that recent implementations of their Oberon compiler have included
a number of other significant extensions not defined in the Oberon-2
report (e.g. operator overloading, vector arithmetic, use of parameters
to define local dynamic arrays etc.) so it is quite possible.

> The definition for ident is:
>
> ident = (letter | "_") {letter | "_" | digit}.
> letter = "A" .. "Z" | "a" .. "z" | "À".."Ö" | "Ø".."ö" | "ø".."ÿ".
> digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7"
> | "8" | "9".
>
> That's why designators of the form "r.i" or "a[0]" cannot be
> used as control variables.
>

OK - but that then leads to the question:

The following statement *does* compile in BlackBox:
 
  FOR M.i := 1 TO 10 DO END;

where i is an integer variable exported from Module M.

Is that intentionally allowed?

> Since the FOR statement is defined in terms of the WHILE
> statement, a language change to allow also designators would
> be fairly straight forward.
>

I wasn't trying to suggest that it would be a good thing. Such a change
could impact on the compiler's ability to optimise the FOR loop. Because
of my Pascal / Modula-2 background it normally wouldn't have occurred to
me to use anything other than local variables in a FOR statement. The
questions simply arose while making some modifications to the Modula-2
to Component Pascal translator and investigating in detail the
differences between the two languages. I was aware that some earlier
restrictions on the FOR loop had been elimated but wasn't sure how far
it had been taken. Thank you for your clarification,

Regards,
Chris

Chris Burrows
CFB Software
http://www.cfbsoftware.com/gpcp
info{([at]})nowhere.xy
  
>
> > -----Original Message-----
> > From: blackbox{([at]})nowhere.xy
> > Behalf Of CFB Software
> > Sent: Donnerstag, 25. August 2005 02:33
> > To: Blackbox
> > Subject: [BlackBox] - FOR loop control variable restrictions?
> >
> >
> > The following statements which compile under ETH Oberon-2 for
> > Windows fail to compile in BlackBox:
> >
> > FOR r.i := 1 TO 10 DO END;
> > FOR a[0] := 1 TO 10 DO END;
> >
> > where r and a are declared as:
> >
> > r: RECORD i: INTEGER END;
> > a: ARRAY 10 OF INTEGER;
> >
> > I cannot find any documentation relating to these
> > restrictions in BlackBox. Are they intentional?
> >
> > Chris Burrows
> > CFB Software
> > http://www.cfbsoftware.com/gpcp
> >
> > --- BlackBox
> > --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
> >
> >
>
> --- BlackBox
> --- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy
>
>
>

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-763558938_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJc
Zm5pbFxmY2hhcnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBO
ZXc7fX0NCntcY29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7
fQ0KXHVjMVxwYXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyMCBNYXJjLFxwYXINClxwYXINClRo
YW5rIHlvdSBmb3IgeW91ciByZXBseS4gT24gcmVmbGVjdGlvbiBJIHNob3VsZCBoYXZlIGluc3Rl
YWQgYXNrZWQgRVRIXHBhcg0Kd2hldGhlciB0aGV5IGludGVuZGVkIHRvICphbGxvdyogdGhlIHN0
YXRlbWVudHMuIEZ1cnRoZXIgaW52ZXN0aWdhdGlvblxwYXINCnNob3dzIHRoYXQgcmVjZW50IGlt
cGxlbWVudGF0aW9ucyBvZiB0aGVpciBPYmVyb24gY29tcGlsZXIgaGF2ZSBpbmNsdWRlZFxwYXIN
CmEgbnVtYmVyIG9mIG90aGVyIHNpZ25pZmljYW50IGV4dGVuc2lvbnMgbm90IGRlZmluZWQgaW4g
dGhlIE9iZXJvbi0yXHBhcg0KcmVwb3J0IChlLmcuIG9wZXJhdG9yIG92ZXJsb2FkaW5nLCB2ZWN0
b3IgYXJpdGhtZXRpYywgdXNlIG9mIHBhcmFtZXRlcnNccGFyDQp0byBkZWZpbmUgbG9jYWwgZHlu
YW1pYyBhcnJheXMgZXRjLikgc28gaXQgaXMgcXVpdGUgcG9zc2libGUuXHBhcg0KXHBhcg0KPiBU
aGUgZGVmaW5pdGlvbiBmb3IgaWRlbnQgaXM6XHBhcg0KPiBccGFyDQo+IGlkZW50ID0gKGxldHRl
ciB8ICJfIikgXHtsZXR0ZXIgfCAiXyIgfCBkaWdpdFx9LlxwYXINCj4gbGV0dGVyID0gIkEiIC4u
ICJaIiB8ICJhIiAuLiAieiIgfCAiXCdjMCIuLiJcJ2Q2IiB8ICJcJ2Q4Ii4uIlwnZjYiIHwgIlwn
ZjgiLi4iXCdmZiIuXHBhcg0KPiBkaWdpdCBcdGFiID0gIjAiIHwgIjEiIHwgIjIiIHwgIjMiIHwg
IjQiIHwgIjUiIHwgIjYiIHwgIjciIFxwYXINCj4gfCAiOCIgfCAiOSIuXHBhcg0KPiBccGFyDQo+
IFRoYXQncyB3aHkgZGVzaWduYXRvcnMgb2YgdGhlIGZvcm0gInIuaSIgb3IgImFbMF0iIGNhbm5v
dCBiZSBccGFyDQo+IHVzZWQgYXMgY29udHJvbCB2YXJpYWJsZXMuXHBhcg0KPiBccGFyDQpccGFy
DQpPSyAtIGJ1dCB0aGF0IHRoZW4gbGVhZHMgdG8gdGhlIHF1ZXN0aW9uOlxwYXINClxwYXINClRo
ZSBmb2xsb3dpbmcgc3RhdGVtZW50ICpkb2VzKiBjb21waWxlIGluIEJsYWNrQm94OlxwYXINCiBc
cGFyDQogIEZPUiBNLmkgOj0gMSBUTyAxMCBETyBFTkQ7XHBhcg0KXHBhcg0Kd2hlcmUgaSBpcyBh
biBpbnRlZ2VyIHZhcmlhYmxlIGV4cG9ydGVkIGZyb20gTW9kdWxlIE0uXHBhcg0KXHBhcg0KSXMg
dGhhdCBpbnRlbnRpb25hbGx5IGFsbG93ZWQ/XHBhcg0KXHBhcg0KPiBTaW5jZSB0aGUgRk9SIHN0
YXRlbWVudCBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHRoZSBXSElMRSBccGFyDQo+IHN0YXRlbWVu
dCwgYSBsYW5ndWFnZSBjaGFuZ2UgdG8gYWxsb3cgYWxzbyBkZXNpZ25hdG9ycyB3b3VsZCBccGFy
DQo+IGJlIGZhaXJseSBzdHJhaWdodCBmb3J3YXJkLlxwYXINCj4gXHBhcg0KXHBhcg0KSSB3YXNu
J3QgdHJ5aW5nIHRvIHN1Z2dlc3QgdGhhdCBpdCB3b3VsZCBiZSBhIGdvb2QgdGhpbmcuIFN1Y2gg
YSBjaGFuZ2VccGFyDQpjb3VsZCBpbXBhY3Qgb24gdGhlIGNvbXBpbGVyJ3MgYWJpbGl0eSB0byBv
cHRpbWlzZSB0aGUgRk9SIGxvb3AuIEJlY2F1c2VccGFyDQpvZiBteSBQYXNjYWwgLyBNb2R1bGEt
MiBiYWNrZ3JvdW5kIGl0IG5vcm1hbGx5IHdvdWxkbid0IGhhdmUgb2NjdXJyZWQgdG9ccGFyDQpt
ZSB0byB1c2UgYW55dGhpbmcgb3RoZXIgdGhhbiBsb2NhbCB2YXJpYWJsZXMgaW4gYSBGT1Igc3Rh
dGVtZW50LiBUaGVccGFyDQpxdWVzdGlvbnMgc2ltcGx5IGFyb3NlIHdoaWxlIG1ha2luZyBzb21l
IG1vZGlmaWNhdGlvbnMgdG8gdGhlIE1vZHVsYS0yXHBhcg0KdG8gQ29tcG9uZW50IFBhc2NhbCB0
cmFuc2xhdG9yIGFuZCBpbnZlc3RpZ2F0aW5nIGluIGRldGFpbCB0aGVccGFyDQpkaWZmZXJlbmNl
cyBiZXR3ZWVuIHRoZSB0d28gbGFuZ3VhZ2VzLiBJIHdhcyBhd2FyZSB0aGF0IHNvbWUgZWFybGll
clxwYXINCnJlc3RyaWN0aW9ucyBvbiB0aGUgRk9SIGxvb3AgaGFkIGJlZW4gZWxpbWF0ZWQgYnV0
IHdhc24ndCBzdXJlIGhvdyBmYXJccGFyDQppdCBoYWQgYmVlbiB0YWtlbi4gVGhhbmsgeW91IGZv
ciB5b3VyIGNsYXJpZmljYXRpb24sIFxwYXINClxwYXINClJlZ2FyZHMsXHBhcg0KQ2hyaXNccGFy
DQpccGFyDQpDaHJpcyBCdXJyb3dzXHBhcg0KQ0ZCIFNvZnR3YXJlXHBhcg0KaHR0cDovL3d3dy5j
ZmJzb2Z0d2FyZS5jb20vZ3BjcFxwYXINCmluZm9AY2Zic29mdHdhcmUuY29tIFxwYXINCiAgXHBh
cg0KPiBccGFyDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS1ccGFyDQo+ID4gRnJvbTog
YmxhY2tib3hAb2Jlcm9uLmNoIFttYWlsdG86YmxhY2tib3hAb2Jlcm9uLmNoXSBPblxwYXINCj4g
PiBCZWhhbGYgT2YgQ0ZCIFNvZnR3YXJlXHBhcg0KPiA+IFNlbnQ6IERvbm5lcnN0YWcsIDI1LiBB
dWd1c3QgMjAwNSAwMjozM1xwYXINCj4gPiBUbzogQmxhY2tib3hccGFyDQo+ID4gU3ViamVjdDog
W0JsYWNrQm94XSAtIEZPUiBsb29wIGNvbnRyb2wgdmFyaWFibGUgcmVzdHJpY3Rpb25zP1xwYXIN
Cj4gPiBccGFyDQo+ID4gXHBhcg0KPiA+IFRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyB3aGljaCBj
b21waWxlIHVuZGVyIEVUSCBPYmVyb24tMiBmb3JccGFyDQo+ID4gV2luZG93cyBmYWlsIHRvIGNv
bXBpbGUgaW4gQmxhY2tCb3g6XHBhcg0KPiA+IFxwYXINCj4gPiAgICBGT1Igci5pIDo9IDEgVE8g
MTAgRE8gRU5EO1xwYXINCj4gPiAgICBGT1IgYVswXSA6PSAxIFRPIDEwIERPIEVORDtccGFyDQo+
ID4gXHBhcg0KPiA+IHdoZXJlIHIgYW5kIGEgYXJlIGRlY2xhcmVkIGFzOlxwYXINCj4gPiBccGFy
DQo+ID4gICByOiBSRUNPUkQgaTogSU5URUdFUiBFTkQ7XHBhcg0KPiA+ICAgYTogQVJSQVkgMTAg
T0YgSU5URUdFUjtccGFyDQo+ID4gXHBhcg0KPiA+IEkgY2Fubm90IGZpbmQgYW55IGRvY3VtZW50
YXRpb24gcmVsYXRpbmcgdG8gdGhlc2VccGFyDQo+ID4gcmVzdHJpY3Rpb25zIGluIEJsYWNrQm94
LiBBcmUgdGhleSBpbnRlbnRpb25hbD9ccGFyDQo+ID4gXHBhcg0KPiA+IENocmlzIEJ1cnJvd3Nc
cGFyDQo+ID4gQ0ZCIFNvZnR3YXJlXHBhcg0KPiA+IGh0dHA6Ly93d3cuY2Zic29mdHdhcmUuY29t
L2dwY3BccGFyDQo+ID4gXHBhcg0KPiA+IC0tLSBCbGFja0JveFxwYXINCj4gPiAtLS0gc2VuZCBz
dWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KPiA+
IFxwYXINCj4gPiBccGFyDQo+IFxwYXINCj4gLS0tIEJsYWNrQm94XHBhcg0KPiAtLS0gc2VuZCBz
dWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNoXHBhcg0KPiBc
cGFyDQo+IFxwYXINCj4gXHBhcg0KXHBhcg0KLS0tIEJsYWNrQm94XHBhcg0KLS0tIHNlbmQgc3Vi
amVjdCBIRUxQIG9yIFVOU1VCU0NSSUJFIHRvIGJsYWNrYm94QG9iZXJvbi5jaFxwYXINCn19ADEt
MTE

----boundary-LibPST-iamunique-763558938_-_---
Received on Fri Aug 26 2005 - 02:33:47 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:28:10 UTC