Lisp concrete syntax -- was: Namespaces and DTDs
William Lindsey
lindsey at diac.com
Sat Mar 13 15:43:53 GMT 1999
On Thursday, 11 Mar 1999, Chris Maden wrote:
> The parentheses are only character data.
Yes.
> I don't think that Lisp could be made SGML compliant; the delimiters
> could be redefined, but as Steve DeRose notes in _The SGML FAQ Book_,
> there are some limits to the flexibility of the redefinitions, since
> some delimiter roles are overloaded. Also, Lisp doesn't have the
> equivalent of start-tag close, and you can only omit tagc if the next
> character is stago or etago (ISO 8879:1986, clause 7.4.1.2) which it
> wouldn't be when you get to the leaves of a structure.
While it is true that not all lisp can be made SGML compliant, it
is possible to define a concrete syntax (using parens as tag
delimiters), and establish a set of conventions such that you
can create documents that are simultaneously R5RS Scheme
programs and valid SGML documents.
The close paren works fine as NESTC/NET if you treat the starttag
as a procedure which, when evaluated, produces a procedure
that will evaluate the element's contents. You can define
a procedure named "!ELEMENT" which will create those starttag
procedures when the DTD is evaluated.
I played around with this idea a bit. You can see a working example
with the SGML declarations, DTD (which also uses Scheme syntax),
and Scheme bootstrap code (or the rules for evaluating *x-expressions*)
at:
http://www.diac.com/~lindsey/lml
Enjoy,
Bill
xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev
mailing list