Lisp concrete syntax -- was: Namespaces and DTDs
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.
> 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 22.214.171.124) 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*)
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;
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)
More information about the Xml-dev