* * * * *

                      An extensible programming language

A few days ago I wrote about adding a factorial operator to my assembler [1],
and I noted that I knew not of any other languages that had such a feature.
So imagine my surprise as I'm reading about XL (eXtensible Language) [2] (via
Lobsters [3]) and the second example is factorial [4]! Not only that, but
that was an example of extending the language itself! The last time I was
this excited about software was reading about Synthesis OS (Operating System)
[5], a JIT (Just-In-Time)-based operating system where you could create your
own system calls [6].

How it handles precedence is interesting. In my assembler [7], I have left or
right associativity as an explicit field [8], whereas in XL, it's encoded in
the precedence level itself [9]—even if its left, odd if its right. I'm not
sure how I feel about that. On the one hand it feels nice and it's one less
field to carry around; on the other, being explicit as I did makes it clear
if something is left or right. But on the gripping hand, it sounds like
matching precedence on a left and right operator could lead to problems, so I
still may have an explicitness problem.

But I digress.

It's a very simple language with only one keyword “is” and a user-definable
precedence table. The parser generates a parse tree of only eight types, four
leaf nodes (integer, real, text, name (or symbol)) and four non-leaf nodes
(prefix, infix, postfix and block). And from there, you get XL.

This is something I definitely want to look into [10].

[1] gopher://gopher.conman.org/0Phlog:2024/02/07.1
[2] https://xlr.sourceforge.io/
[3] https://lobste.rs/s/zu2wx1/xl_extensible_programming_language
[4] https://xlr.sourceforge.io/#factorial
[5] https://web.archive.org/web/20080318162920/http://valhenson.org/synthesis/SynthesisOS/abs.html
[6] https://en.wikipedia.org/wiki/Self-modifying_code#Synthesis
[7] https://github.com/spc476/a09
[8] https://github.com/spc476/a09/blob/main/expr.c#L337
[9] https://xlr.sourceforge.io/#operator-precedence-and-associativity
[10] https://github.com/c3d/xl

Email author at [email protected]