* * * * * 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 sean@conman.org .