New version, v5.0, of SSAX.scm

[email protected] Thu, 29 Apr 2004 17:35:36 -0700 (PDT)
Newsgroups gmane.lisp.scheme.ssax-sxml
Message-ID <[email protected]>
Hello!

Version 5.0 of SSAX.scm is the first version of SSAX.scm that should
run on any R5RS Scheme platform. There are no interface changes
compared to the previous version, v4.11. Therefore, no existing code
(on a R5RS-compliant system) should require any modifications.


	Although the changes to SSAX.scm are transparent to any user,
the changes are significant.  As before, the main SSAX parser file
relies on many, quite complex macros. Previously, those macros were of
a define-macro kind. All those low-level macros are gone now, replaced
with R5RS syntax-rules.  The SSAX.scm code and the code of the
supporting input parsing, string, utility, etc. libraries has been
re-written to get rid of define-macros.  A year and a half ago I
thought it was impossible to replace all low-level macros with syntax
rules. Fortunately, I was wrong.  The SSAX project and all of its test
cases now run on Petite Chez, SCM, Bigloo and Gambit platforms. Some
of these platforms support case-sensitive symbols; some do not. The
macro-systems of these platforms are different (and certainly the
macro-expanders are all different).  The fact that all the tests in
SSAX.scm pass on the Petite Chez system is particularly gratifying, as
Chez Scheme is one of the most compliant systems. It is expected that
SSAX/SXML should run and validate on other R5RS Scheme systems, such
as SISC and Scheme48.

	One may wonder how the code with syntax-rules can ever run on
Gambit 3.0. Gambit does not natively support R5RS macros. Neither does
the latest versions of Bigloo, unfortunately. Since version 2.5,
Bigloo includes Dorai Sitaram's "Macros-by-example" as the high-level
syntactic facility. Although Macros-by-example work well for simple
syntax-rules, Macros-by-example are not, and never intended to be, an
R5RS-compliant macro facility. I have found numerous problems using
the latest version of Bigloo with non-trivial syntax rules. Actually,
I have found that Bigloo becomes confused even with non-trivial Scheme
code (such as Al Petrofsky's portable macro-expander, which itself
uses no macros). Therefore, I have used Al Petrofsky's portable
macro-expander running on Gambit 3.0 to macro-expand SSAX.scm. The
resulting code, which contains no syntax-rules and no library syntax,
runs (quite fast) and validates on Bigloo 2.6d and on Gambit.

	The new version of SSAX.scm is committed to the CVS
repository. Also committed is SSAX-expanded.scm, the macro-expanded
version.



-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. 
Take an Oracle 10g class now, and we'll give you the exam FREE. 
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click