[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Extensible syntax



[Tom Locke <tom@livelogix.com>]
> Hi,
> 
> ...seeking links / advice...
> 
> I'm currently working on a language that is extensible in the same way
> that "Lisp is a programmable programming language". The intention is to
> come up with a language that can easily morph into a wide range of DSLs.
> 
> Lisp/Scheme provide exactly this facility, but every DSL must have
> Lisp's syntax. What about lisp-like extensibility, plus extensible
> syntax - i.e. a fully extensible set of prefix/infix/postfix operators
> and compound statements (e.g. control structures)?
> 
> There's Dylan, with its template based macro system, but Dylan syntax is
> only extensible within a fairly strict framework. It always looks like
> Dylan. Agree?
> 
> Then there's Smalltalk et al, using blocks to provide extensible control
> structures, but again the syntax is highly constrained.
> 
> Haskell has extensible prefix and infix operators, with user control
> over precedence. This gets you quite far. I once built an XPath like
> library in Haskell that tried to mimic regular XPath syntax, but you can
> only get part of the way there.
> 
> Of course there's a ton of preprocessors that allow one to extend a
> languages grammar, but this is something of a heavyweight approach, and
> may suffer from lack of modularity?? I'm after something lightweight and
> built-in, similar to the way Lisp lets me just fire off a defmacro as
> easily as a defun.
> 
> Also of great interest is the ability to freely embed DSLs inside each
> other. I don't think I've seen this done (except in Lisp where the
> syntax doesn't change).
> 
> Thoughts? Links?
> 

You should also check out Donoval Kolbly's PhD dissertation,
"Extensible Language Implementation." I believe you'd find it quite
interesting.

It used to be available online, but it seems to have been removed, and
all the links I can find point to the same place. I could send it to
you directly if you'd like.

Matt

-- 
Matt Hellige                  matt@immute.net
http://matt.immute.net