Every now and again I wonder if Ren-C's lexing is robust enough to represent things like IPv6. So I wanted to take a look at some examples.
Right now there is a rule that you can't have internal SPACE in CHAIN!, PATH!, or TUPLE!. So no a//b or a::b or a..b. This rule is enforced in order to let http://example.com/stuff be recognized as a URL!, and not a PATH! like:
to path! [http: _ example.com stuff]
If we relaxed this rule for CHAIN!, then things like this would be closer to LOAD-able syntax:
But it runs afoul of the fact that we don't support things that start with digits and have letters after them.
Then there's wackiness like:
While it's interesting to see us getting closer to LOAD-ability for these things, I'm thinking we need to draw the line and use strings. People have praised Rebol's crazy literals in the past, there's just too much competition in the lexical space and it makes a mess.
So I'm fully abandoning any idea that IPv6 addresses scan as some weird CHAIN! (just as I had fully abandoned the idea that URL!s scan as some weird PATH!
We're moving toward this, which isn't terrible for when you want to do some dynamic creation:
address: {ipv6! join "fe80::" "1%lo0"}
And it occurs to me the opening up of -{...}- strings is a perfect opportunity to let them become "construction strings". This would be where you get a hook into LOAD itself, where you run on fully unbound data... and let whatever "recognizers" you choose duke it out:
address: -{fe80::1%lo0}-
cash: -{$10.20}-
So I'll be transitioning things like existing MONEY! code to use this. (It's better than using backticks, which was proposed before.)