nyacc version 0.71.0 is released as beta nyacc is a LALR parser generator written from the ground up in guile Features/Updates: * clean scheme-flavored syntax for grammar specification * prototype parsers for C99,(partial) javascript, matlab that output parse trees in a SXML format * update: C99 preprocessor updated to expand defines in C code * update: cleaned up file structure * update: started working on test-suite * update: added grammar for C++ * update: build parsers via bison + to use in example below replace `make-lalr-machine' with `make-lalr-machine/bison’, after adding (use-module (nyacc bison) + the bison module will - export a bison gram.y file, - run "bison -x gram.y” to produce a gram.xml file - translate gram.xml file into the nyacc “machine” data structure To run a simple demo: $ tar xzf nyacc-0.71.tar.gz $ cd examples/nyacc/lang/calc $ ./calc 2 + 2 => 4 Tcalc.scm: (use-modules (nyacc lalr)) (use-modules (nyacc lex)) (use-modules (nyacc parse)) (define simple-spec (lalr-spec (prec< (left "+" "-") (left "*" "/")) (start expr) (grammar (expr (expr "+" expr ($$ (+ $1 $3))) (expr "-" expr ($$ (- $1 $3))) (expr "*" expr ($$ (* $1 $3))) (expr "/" expr ($$ (/ $1 $3))) ($fixed ($$ (string->number $1))) ($float ($$ (string->number $1))) ("(" expr ")" ($$ $2)))))) (define simple-mach (make-lalr-machine simple-spec)) (define match-table (assq-ref simple-mach 'mtab)) (define gen-lexer (make-lexer-generator match-table)) (define parse (make-lalr-parser simple-mach)) (define demo-string "2 + 2") (simple-format #t "~A => ~A\n" demo-string (with-input-from-string demo-string (lambda () (parse (gen-lexer))))) download tarball from: http://download.savannah.gnu.org/releases/nyacc/ or git clone from git://git.savannah.nongnu.org/nyacc.git