[comp.sys.transputer] A surreal occam compiler

COS99284@UFRJ.BITNET (Luiz Felipe Perrone) (06/07/91)

In response to Jan Vorbr"uegen message:

  I just read your message on the transputer list and I can say you
were not as much sarcastic as the subject entitles you to be. I have
been using the TDS2 occam compiler for almost two years now and have
encountered many of its incongruities.

  I have faced many times the same problem you report and disregarding
whatever Inmos wonderful manuals say, what may be happenning is that you
have a very big program text in memory. If your whole program is in one single
filed fold that may be a real nuisance. The compiler cannot find free memory
when its working through you your code because most has been ocupied by
the source code in the text editor. If you fold and file big chunks of
your source this might help you. Take care not to let these filed folds get
too big otherwise you are bound to have the same problem again.

  Among all problems, bugs (there are real bugs in there) and weird things
related to this compiler, the worst of all - that I have found up to date -
is the surreal way it reports one kind of compile error. On one occasion,
I was trying to compile a retyping statement and after a few unsuccessful
attempts (the compiler was then kind enough to detect and point out my
mistakes) it finally went through. When I ran the EXE it stopped with the
traditional "Transputer Error Flag Set" message and analysing the core
dump, I found the debugger pointing to the line where I made the retyping.
To my surprise, when I went to the monitor screen and disassembled the last
instruction executed, I found a SETERR (the occam STOP).

  Going back to the manual and looking for the formal definition of the
RETYPES facility, I found out what was wrong with my code: I had done
something illegal that had not been detected by the compiler at compile time
but in some strange way of reporting my mistake it inserted a SETERR
instruction in the executable code, probably where I first accessed the
retyped data. If you're asking yourself what was that error here it goes...
The manual says:

    definition =  specifier name RETYPES element:
                : VAL specifier name RETYPES expression:

  I used the first clause in this definition but put an expression instead
of the required element. And so it happened... Good luck to you with your
future ventures in these barren lands of the occam field !

------------------------------------------------------------------------
Luiz Felipe Perrone
MSc student - COPPE - Dept. of Systems Engineering and Computer Science
Universidade Federal do Rio de Janeiro - Brazil
E-mail: COS99284@UFRJ (BITNET)
------------------------------------------------------------------------