Greetings all,

I have ported PLT's parser-tools to Ikarus.  Parser-tools provide
online lex/yacc-style macros for making lexers and parsers (online
as opposed to the other offline tools that have to generate some
intermediate files).  Its design and usage is described in:

   ``Lexer and Parser Generators in Scheme''[1]
and
   ``Parser Tools: lex and yacc-style Parsing''[2]

You can get it from the usual place:
https://code.launchpad.net/~aghuloum/scheme-libraries/parser-tools

Branch it somewhere in your library path and it should work.

As of now, the libraries work under both Ikarus and PLT.

Under Ikarus, it works seamlessly, so, nothing more to be said other
than ``please use it and report any bugs''.

Under PLT, there's a little problem due to the mutable/immutable
pairs problem.  Basically, the libraries assume immutable pairs, and
most of the primitives/syntax they use are NOT the R6RS primitives,
but rather come from the "scheme" language.  So, if you want to use
it in an R6RS program, you're out of luck, unless you abandon the
(rnrs) namespace completely and another alternative (like I did).
I'm not interested in bridging the gap between the two PLT
subsystems.  (If somebody is really interested in this, I recommend
making a set of libraries that start with (irnrs *) that mirror the
(rnrs *) hierarchy (omitting the (rnrs mutable-pairs) library), but
uses only immutable pairs under PLT.  Contact me if you need help.)

Porting parser-tools to other psyntax-based R6RS systems should be
easy.  Porting it to non-psyntax systems (Larceny and Ypsilon) may
not be possible due to two features that the system use and happen
to exist in both PLT and Ikarus: settable syntax (syntax-parameters
or fluid-syntaxes) and compile-time bindings (syntax-local-value and
make-compile-time-value).  These are undocumented in Ikarus but are
supported and I'm willing to provide full documentation (time
permitting!).  Porting to Chez Scheme should be painless too.

Needless to say, there might still be some bugs lurking there, but
the calc example does work!  I intend to use it more extensively
and would like to iron out any bugs sooner or later.

I think the library should be released under the LGPL (original
licence), but I need to check with the original authors (Flatt et
al) to be absolutely sure.

Aziz,,,

[1] http://www.cs.utah.edu/plt/publications/scheme04-ofsm.pdf
[2] http://download.plt-scheme.org/doc/4.1/pdf/parser-tools.pdf

Reply via email to