Known bugs with C-with-Ease
Under construction
There are almost certainly more bugs and limitations than are listed
here. Feel free to tell me about anything you find.
Index:
- Parsing shortcomings
- PVM
- Template problems
Parsing shortcomings
The C/++-with-Ease parser/translator is not a complete parser - it does not
understand all of C or C++. It is in fact a flex based lexical
analyser with a stack of states to allow simple parsing. Certain
constructs will trip up the translater but will not be detected until
the translated code is passed through the C (or C++) compiler. The error
messages reported will report to the correct line of C-with-Ease source
(if it does not please report this as a problem).
Process declarations
The parser expects ansi style function declarations for @process
declarations. Furthermore, the parameter name must occur as the
last word of the parameter. Something like struct myStruct s is
ok, but something like void (*func)(void) will result in the
translator extracting (*func)(void) as the parameter name and
thereby outputting incorrect code.
Context parameters to Ease operations
The parser only handles fairly simple constructs for the "context"
parameter to ease operations (for example @init, @get, @call, etc). The
context parameter may contain no spaces or brackets. However, array and
pointer operations are handled correctly.
@call parameters
The final parameter to a @call may only be a simple variable. This is a
historical accident and should be fixed.
PVM
The pvm interface should really be able to establish the correct path to
the executable rather than making the user take care of it by specifying
a full path.
It would also be nice if the messages displayed by xpvm showed nicer
information about the message type (with respect to the Ease libraries)
rather than the current mash of thread id and (integer) message type.
Template problems
Due to problems with automatic instantiation of templates in the
presence of specializations (with gcc), the flag
-f-no-implicit-templates is added. Thus all templates in
C++-with-Ease source must be instantiated manually. You should be able to
get around this by having templates you want automatically instantiated
in other C++ files.
Tim MacKenzie