After working with Prof Wirth's latest Oberon for FPGA compiler, and receiving replies to a couple of questions I realise that my last reply, and probably some of my earlier posts in this discussion, were incorrect. The following is actually legal Oberon code because PROCEDURE Q is a local variable ...
I can see why you ask - but it is allowed. While it is true that Q is declared locally in P, the identifier (in this case Q) that represents the name of a procedure is also visible in its own scope. Note that if that weren't true, the following would be possible: PROCEDURE Q; VAR Q: INTEGER; BEGIN ....
We have now decided that when we release the version of Astrobe which conforms to Oberon Rev 1.10.2013 the constants 0 .. 255 will be compatible with BYTE and INTEGER variables in assignments, but will be treated as INTEGERs when their type cannot be determined by the context (e.g. as parameters to ...
I'll post more information here as and when we make progress with the Cortex-M4. As you are probably aware, the LPC4357 is a dual-core Cortex-M0/M4 device. Providing support for Cortex-M0 devices would be a much bigger task than the Cortex-M4. Apart from a few exceptions, the Cortex-M0 can only use ...
We don't have any immediate plans to develop a standard library module for CAN. Based on our experience, my recommendations when developing a new module like this are: Study the relevant chapter(s) of the User manuals for the microcontroller you are targeting. Look for application notes on the subje...
Sorry - I accidentally edited your message instead of replying to it :oops: I can think of several good reasons: minimal usefulness, uniformity / consistency / regularity (look at the confusion caused when variables were an exceptional case), simplification of the compiler, better performance (inter...
Mutually recursive procedures are still possible. The following compiles OK. P1 is a global procedure so it can be called from P2. P2 is local to P1 so it can be called from P1: MODULE Mutual; PROCEDURE P1; PROCEDURE P2; BEGIN P1 END P2; BEGIN P2 END P1; END Mutual. However you do not need to use ne...
Yes - the new compiler reports the error undefined identifier for your example the same as it does for any other object that is not visible in its scope.