I wrote this some time ago, but cleaned it up a bit so that others hopefully
can find this useful. I'll be sure to use this as an example in my upcoming
LibrePlanet 2019 talk.
* bin/pronounce: New script.
env-dyn kind of violated the spirit of this repository---to relax and simply
have fun. While I did enjoy implementing it, there did become a point where
it got to be quite stressful and I just wanted to get it finished to move on
to other things. Hopefully others find it interesting.
Keep in mind that, as explained in the comments, this could have been
implemented much more trivially using backreferences. I chose not to do so,
since that is more of a challenge. But it may be worth creating a version
of it that _does_ use backreferences to compare against and obviate the
limitiations of finite automata.
* regex/cmp.sed: Reference `env-dyn.sed'.
* regex/env-dyn.sed:
* regex/env-fixed.sed: New scripts.
Continuing to build up a useful set of primitive examples. This type of
thing is useful if we do not know all possible strings for comparison ahead
of time.
* regex/bitwise.sed: Add equality operator. Modify existing OR and XOR
regexes to accept this new operator.
* cmp.sed: New script.
Not all scripts produce fixed-width frames. Variable-width frames leave
behind artifacts caused by characters from the previous frame not being
overwritten.
* regex/animate (usage): Document new `-c' flag.
(main): Handle new `-c' flag.
[refresh]: New variable.
* regex/base10-mul.sed: Remove extra whitespace used for frame clearing for
animate script (just use `-c' now).
This was less of a hack, but I wanted to formally document these operators
as a larger body of work to serve as an example to others. In that sense,
I'm abusing the original intent of this repository, but it'll be fun to be
able to show others a more comprehensive body of regex-based hacks for doing
all sorts of fundamental things.
* regex/bitwise.sed: New script.
This was a pretty fun hack---it looks esoteric and sounds impressive (or
even impossible to some), but is really easy given the proper
intuition. Perhaps at some point I'll write more on DFAs and some of the
theory and limitations behind this, but for now, that's beyond the scope of
what I had intended for this repo. (I suspect that my intentions are
shifting.)
Enjoy!
* regex/base10-inc.sed: Reference new script.
* regex/base10-mul.sed: New script.
It might be easy to guess where I'm heading with the concepts that I'm
demonstrating with these scripts. It's just fun to do, and I've never
had an excuse to actually do it. ("It" referring to something for future
commits.)
You can try this out like this:
$ ./animate base10-inc.sed <( echo 000 ) 0.01
* regex/base10-inc.sed: New file.