[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
oo2c-1.4.2 & ooc-990503
This update fixes a bug introduced one version back that can cause
misaligned access of LONGREAL values on 32 bit machines. If you use
oo2c on a SPARC or HP-PA machine, I strongly suggest to upgrade to
1.4.2.
The new compiler version also includes support for hierarchical module
names. This is quite a mouthful, but the actual implementation is
simple. A module name can now look like this:
mident = [a-zA-Z][a-zA-Z0-9]*(:[a-zA-Z][a-zA-Z0-9]*)*.
And the corresponding EBNF rules are
Module = "MODULE" mident ... "END" mident.
ImportList = "IMPORT" [ident ":="] mident {"," [ident ":="] mident} ";".
I first tried to handle the extended names on the syntax level, like
"mident = ident {"." ident}", but the changes to the compiler and the
other tools working on the module syntax were much more expensive this
way. I also ditched the separator character `.' in favor of a
character that is not currently a name component. The primary reason
for this is, that the dot is already a selector operator in O2, but a
module name like `M:A' does not imply that there is a name space (in
the sense of O2) or an entity "M". Actually, any character instead of
`:' would do the job.
If the compiler sees a module name `M:A', it looks for a file name
`M/A.Mod' at the usual places. The file search mechanism has not been
changed. The import statements "IMPORT A := M:A;" and "IMPORT M:A;"
are equivalent.
Other changes:
o The symbol file format has changed slightly. The compiler will
complain if it sees any old symbol files.
o Some bug fixes in oocn. Import statements now have a slightly
different semantics in the AST with regard to the optional alias
part.
o An INTERFACE/FOREIGN module can add options to the C compiler
invocation of its associated .c file. This is implemented just like
the ADD_OPTION for external libraries.
Is anyone interested in a wrapper for W3C's libwww that can download
an URL into a writer? I am too lazy to turn the files into the usual
"configure && make install" package, but I can upload them somewhere
-- if there is some interest.
-- mva