Cobus.Debeer@p0.f1.n491.z5.fidonet.org (Cobus Debeer) (07/27/90)
Hello:
With regard to the function without a RETURN statement, I believe that
both the compile-time error and the run-time error should occur. In
keeping with the philosophy of M2, the compiler is 'strict' and should
not accept dubious code or code that is obviously incorrect, like
function procedures that don't return values. The existense of one or
more RETURN statements does not guarentee that all possible points of
of return from the procedure returns a value and this must be caught at
run-time. See the following :
PROCEDURE Error () : INTEGER;
BEGIN
IF Condition1 THEN
...
RETURN 1;
ELSIF Condition2 THEN
Code; MoreCode;
END;
END Error;
There is at least two ways in which the procedure can end without a RETURN
statement.
With regards to differences between the JPI compiler and PIM2, I have
experienced the following difference in the worst possible way. In a def
file I wrote :
DEFINITION MODULE RegExp;
PROCEDURE PosNL( Source, Pat : ARRAY OF CHAR; VAR Len :
CARDINAL; OccurrenceNo : CARDINAL ) : CARDINAL;
END RegExp.
IMPLEMENTATION MODULE RegExp;
PROCEDURE PosNL( Source, Pat : ARRAY OF CHAR; VAR Len :
CARDINAL; StartFrom : CARDINAL ) : CARDINAL;
BEGIN .. END PosNL;
etc
END RegExp.
After writing the implementation of the function as declared in the def
and using it I changed my mind as to how it should work and I changed the
implementation and the name of the last parameter. Later I re-used the
code and nearly lost my sanity ... The compiler should not just count the
parameters and check their types, it must also check that the names of the
parameters are identical as declared in the definition and implementation
parts. Just imagine what will happen in a multi-programmer project where
the DEF files are the only part available to the implementer of other
modules ( as it should be ). The old V2 Logitec compiler got this right.
I would love to get hold of a new release of your libraries that use
assembler pieces as the versions that I have is now broken due to the new
release of the compiler. If you ever need regular expression matching
code, I have a working matcher which I will make available to anybody
who offers something in return ( or who asks nicely ) but I am not willing
to put the source on a bulletin board.
Do you know if a YACC / LEX equivilent tool exists for M2 ie. something that
produces M2 as output from a grammer as input ?
Regards
Cobus de Beer
--
uucp: uunet!m2xenix!puddle!5!491!1.0!Cobus.Debeer
Internet: Cobus.Debeer@p0.f1.n491.z5.fidonet.orgPeter.M..Perchansky@f101.n273.z1.fidonet.org (Peter M. Perchansky) (07/30/90)
Hello:
I have yet to recode my assembly modules to work with 2.00; it is a headache; but I have redone all of my library modules (some only had to be recompiled) to work with 2.00.
Where is the Golden City BBS? If it is in the states, I may be able to upload my library modules.
Sorry, I do not know of a lex/yacc for M2.
--
uucp: uunet!m2xenix!puddle!273!101!Peter.M..Perchansky
Internet: Peter.M..Perchansky@f101.n273.z1.fidonet.org