-- Leo's gemini proxy
-- Connecting to gemini.conman.org:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini
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].
-- Response ended
-- Page fetched on Sun May 5 06:51:39 2024