asdlGen
version 2.0-betaThis is beta release asdlGen
. Many of
the internals have been significantly reworked, and most of the major
internal interfaces have been documented. There have been also several
significant changes to various backends, and a different compilation model
for the generated code.
In the past asdlGen
assumed the existence of several support libraries
that it would link with the source code produced by it. This made installing
asdlGen
quiet a non-trivial task. In the new model asdlGen
will by
default emit all the necessary source code needed to compile the world,
rather than assuming the existence of asdlGen
specific libraries. The C
code still requires libcii.a
which is included verbatim but not
built in the current distribution.
There's still work to do, most importantly documenting many of the new features and providing some good examples. The old user manual is out of date but it's better then nothing.
Also, asdlGen
is designed to make inter-language operation easier. It
may not exploit or produce the most idiomatic code for a given language,
advice on how to improve the code for a given language will be appreciated.
% ./configure --prefix=<install-prefix> % make all
src/sml/
. The install rules will
change in the future. It currently doesn't produce any stand-alone
executables.
Major Changes/Features include
asdlGen
--help
is now much more informative. asdlGen
can optionally output dependency information for make
or language appropriate build system.module T (imports VeryLongModuleName alias M) { foo = (M.t) }
asdlGen
primitives are now
extensible. In particular the old primitive types of int
, string
,
identifier
. Are implemented by pre-appending the following declaration
to all inputs
primitive module StdPrims { int string identifier }
asdlGen
tacks this on to any set of input files to remain compatible with
existing code. Users, can add their own primitive types by simply including
there own primitive module declaration. See
../../../examples/asdlgen/std-types.asdl
for an example that defines a richer set fix width integer and word types,
for various languages.