Toy interpreter for Brainf@@k
https://en.wikipedia.org/wiki/Brainfuck
Example program for trying out driver.love, a programming environment for modifying programs live, without restarting them.
This repo is an example of a Freewheeling App, designed above all to be easy to run, easy to modify and easy to share.
Getting started
Install LÖVE. It’s just a 5MB download, open-source and extremely well-behaved.
Hacking
To modify it live without restarting the app each time, download the driver app.
If the app being modified by the driver lives in a .love file, your changes will go into the save directory. If it lives in a directory (like this repo), your changes will go straight into the same directory.
Keyboard shortcuts
Press f4 to evaluate a program.
Within each editor panel:
ctrl+fto find patterns within a filectrl+cto copy,ctrl+xto cut,ctrl+vto pastectrl+zto undo,ctrl+yto redoctrl+=to zoom in,ctrl+-to zoom out,ctrl+0to reset zoomalt+right/alt+leftto jump to the next/previous word, respectively Only left alt is supported, because many keyboard layouts use right alt like shift for typing characters, and I don’t know how to figure out the current layout.- mouse drag or
shift+ movement to select text,ctrl+ato select all
Exclusively tested so far with a US keyboard layout. If you use a different layout, please let me know if things worked, or if you found anything amiss: http://akkartik.name/contact
Known issues
Mirrors and Forks
This repo is a fork of lines.love, an editor for plain text where you can also seamlessly insert line drawings. Its immediate upstream is the template repo for freewheeling apps. Updates to it can be downloaded from the following mirrors:
- https://git.sr.ht/~akkartik/bf.love
- https://tildegit.org/akkartik/bf.love
- https://git.merveilles.town/akkartik/bf.love
- https://nest.pijul.com/akkartik/bf.love (using the Pijul version control system)
Further forks are encouraged. If you show me your fork, I’ll link to it here.
Feedback
Most appreciated. Messages, PRs, patches, forks, it’s all good. =======* This approach puts one top-level definition per file, and so obscures the order in which definitions are loaded. In particular, initializing a global table to contain other global definitions will fail if you originally authored the other global definitions after the table.
I never initialize global tables with other definitions. That kind of thing
happens in on.initialize (akin to love.load; see reference.md) or
on.code_change.
- Don’t start the driver app while multiple freewheeling apps are running. If you have a driver app running with one app, shut it down before you switch apps.
<<<<<<<=======Some reference documentation on how to create your own apps.
<<<<<<<