A programming language with extensible syntax

Here is an introductory article about a programming language with extensible syntax, based on a mixture of PEGs and classic Lisp macro metaprogramming.

A preliminary version of the language compiler is also available (it needs Microsoft .NET Framework or Mono to run, syntax highlighting editor works on Windows only).

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

A similar language already exists

I have encountered a language with similar features :
http://www.nongnu.org/l-lang
I have not tested it, though.

One more

"Katahdin is a programming language where the syntax and semantics are mutable at runtime."

Katahdin was mentioned in

Katahdin was mentioned in the article. Converge is another one. Then there is also MetaLua.

Still do think those languages are curios written for the fun of their developers.

Still do think those

> Still do think those languages are curios written for the fun of their
> developers.

I can't speak for Fabien or Chris Seaton or others, but I can speak from my own perspective with Converge. Yes, developing a programming language is fun - I wouldn't do it otherwise. But one of my aims is to explore (probably tentatively and inexpertly) possible new territory, to see what works, what doesn't, what we need to invent, and what we need to throw away. One day (though I'm not stupid enough to put a time estimate on it!) I suspect you'll see mainstream languages which have some of the functionality you can see in Converge, Katahdin, and MetaLua. So, yes, in a way they're curios because I don't think any of them has the pretension of taking over the world; but they're necessary curios and, if my hunch is right, one day they might even turn out to have been useful curios!

Felix also has an extendable grammar

Felix also has an extendable and scoped grammar. Pretty much our entire syntax is defined at runtime. We use the wonderful dypgen glr parser to handle it.

revenge of the sexps

it would be neat to be doing c++ compatible lispy fun in felix :-)

XLR?

This reminds me of the XLR, though perhaps that's more an incremental-extension than a runtime-mutable language. (I haven't been able to compile it to find out yet!)

Logix

See also Tom Locke's Logix, previously mentioned on LtU here and here.

Where to find it?

Do you know where Logix can be found nowadays? The links that are provided at the links that you provided (ha!) don't seem to point to a live site any more.

Could try HoboTech

It sounds like Tom Locke, the developer behind Logix, has now moved on to working on Ruby on Rails and the Hobo project. There's a reasonably recent contact email for Tom here - you might try emailing him to ask about the current status of Logix.

Got in touch

Thanks very much for pointing me his way—he said that the project is now 3–4 years dead, but did manage to dig up a dump of the old Subversion repository, which he asked me to set up in a git repository so that he could put it on GitHub. If anyone's interested, I'll edit this post when I've done so.

Source?

I've been tinkering with this for a day or two, and it looks to be rather well put together. The only problems that I'm running into are a lack of documentation and a lack of meaningful errors from the runtime. Is source available?

Folks,

There are a lot of languages with extensible syntax (REBOL, OMeta, among others not mentioned here yet). There are also Domain Specific Languages that have customizable syntax, like Zoho Creator's Delluge Script

Metaprogrammer's approach, however, is different!

I guess what I should be saying is simply a question: People seem to think the approach doesn't matter. Does it?

semantics << syntax

ok i know it is the other way 'round for some important perspectives/discussions, but i wish for a successful language with abstracted and modular syntax so i can be seeing the whole code base as eg typed scheme or ml/haskell style, while co-workers can continue on in their curly bracket world, and we can all get along.