unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
From: Matt Wette <matt.wette@gmail.com>
To: guile-user@gnu.org
Subject: [ANN] Nyacc version 0.83.0 released
Date: Sun, 21 Jan 2018 10:19:11 -0800	[thread overview]
Message-ID: <c275dcbc-18bf-16bd-54d1-da9d1031719b@gmail.com> (raw)

Nyacc version 0.83.0 has been released.   Nyacc is a set of Guile 
modules for generating parsers,
parsing C code, and converting C headers to Guile Scheme.

Version 0.83.0 includes the following changes over version 0.82.4:
1) changes to nyacc/lex.scm to read octal constants
2) change in C99 parser to allow lone `;' in structs and unions
3) fixed but in C99 parser which was truncating long CPP defines
4) change in C99 parser to make get-gcc-inc-dirs more accurate
5) updated C99 pretty printer to handle initializer lists
6) many changes to the ffi-helper

Some FFI Helper changes:
1) many code updates, api changes, etc
2) updates to the documentation (see examples/nyacc/lang/c99/ffi-help.texi)
3) added procedure "load-include-file", which is feature Ludo asked for:
      guile> (load-include-file "cairo.h" #:pkg-config "cairo")
    This will load FFIs for all C declarations in cairo.h into the 
current module.
    Not flushed out.
4) added procedure "fh-cnvt-cdecl" for playing around with the FH.
      guile> (use-modules (nyacc lang c99 ffi-help))
      guile> (use-modules (bytestructures guile))
      guile> (use-modules (system ffi-help-rt))
      guile> (use-modules ((system foreign) #:prefix ffi:))
      guile> (define fh-llibs '())
      guile> (define fexp (fh-cnvt-cdecl "fmod" "double fmod(double 
x,double y);")
      guile> ,pp exp
      $1 = (begin
        (define ~fmod
          (delay (fh-link-proc
                   ffi:double
                   "fmod"
                   (list ffi:double ffi:double)
                   fh-llibs)))
        (define (fmod x y)
          (let ((~x (unwrap~float x)) (~y (unwrap~float y)))
            ((force ~fmod) ~x ~y)))
        (export fmod))
      guile> (eval exp (current-module))
      guile> (fmod 2.3 0.5)
      $2 = 0.2999999999999998


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.

NYACC maturity is beta level.

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

* the tarball repository:
     https://download.savannah.gnu.org/releases/nyacc/

* the git repository:
     git://git.savannah.nongnu.org/nyacc.git

home page, project page and user's guide:
* http://www.nongnu.org/nyacc
* https://savannah.nongnu.org/projects/nyacc
* http://www.nongnu.org/nyacc/nyacc-ug.html

For support see:
     https://savannah.nongnu.org/support/?group=nyacc
mwette$




             reply	other threads:[~2018-01-21 18:19 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-21 18:19 Matt Wette [this message]
2018-04-06 12:38 ` [ANN] Nyacc version 0.83.0 released Jan Nieuwenhuizen
2018-04-07  0:16   ` Matt Wette
2018-04-07  0:20   ` Matt Wette
2018-04-07 12:21     ` Jan Nieuwenhuizen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c275dcbc-18bf-16bd-54d1-da9d1031719b@gmail.com \
    --to=matt.wette@gmail.com \
    --cc=guile-user@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).