NYACC, for Not Yet Another Compiler Compiler, is set of guile modules for
generating parsers and lexical analyzers.  It also provides sample parsers
and pretty-printers using SXML trees as an intermediate representation.

It provides a decent C parser and a `FFI Helper' tool to help create
Guile Scheme bindings for C-based libraries.

It provides (partially implemented) compilers based on above mentioned
parsers to allow execution with Guile as extension languages.


The following are changes in 4.0.0 wrt 3.04.6:
* Adopt semantic versioning.
* Remove (nyacc foreign {arch-info,cdata}): use external (foreign ...).
  Seehttps://github.com/mwette/guile-cdata.
* c99/parser,ffi-help: Convert cpp-define dict from alist to vhash,
  resulting in 75% reduction in compile-ffi time on gtk2.ffi and deps.
* Remove c99 "inc-help" which would was originally used for
  short-cutting include files.  Not needed anymore since nyacc c99
  can now parse /usr/include with good reliability.
* ffi-help #:pkg-config now takes string or list of strings.
* all Makefile.in: add target `uninstall'
* ffi-help.scm: Fix missing stdint types (e.g. int64_t), which are not
  intrinsic to C but in the backends, so call (be-base 'int64_t).
* Eliminate use of (nyacc lang c99 fh-utils); merged into ffi-help.
* Add FFI bstructs and bytestructure backends from guile-fhbe.
  code in module/nyacc/ffi-bkend now provides:
  + ccode->bstructs-sexp
  + ccode->bytestructures-sexp
    and the ffi compiler supports theses backends.  example:
    $ guild compile-ffi -b nyacc/ffi-bkend/bytestructures foo.ffi
  Note that bstructs and bytestructures do not provide complete
  support for C types: e.g., function pointers.
* ffi-help.scm(udecl->sexp): Track function decl's in defined list.
* ffi-help.scm(udecl->sexp): Replace define-public with define+export.
* ffi-help.scm(udecl->sexp,mtail->be-type): for struct foo *v include
  the (w/struct-* "foo"), and unions too,  in `defined' and use them
* c99: instead of return-defs, pass a parameter for defs
* c99: move move-attributes from util.scm to parser.scm
* c99: reworked attribute handling
* Update ffi-helper user guide.


NYACC maturity is production/stable level.

NYACC is free software; the full source distribution is available through

* the tarball repository:
    https://github.com/mwette/nyacc/releases
  pre 3.00:
    https://download.savannah.gnu.org/releases/nyacc

* the git repository:
    git://github.com:mwette/nyacc.git
  pre 3.00:
    git://git.savannah.nongnu.org/nyacc.git

home page, project page and user's guides:
  https://github.com/mwette/nyacc/wiki

Report bugs:
  https://github.com/mwette/nyacc/issues

Reply via email to