gir/README.md

49 lines
1.1 KiB
Markdown

Gir is an optimizing brainfuck interpreter in Javascript.
Name
----
𒌋𒀜 gir (Sumerian) - n. kiln
License
-------
Everything in the repo is under Unlicense / CC0.
Status
------
Gir can parse, prettyprint, and run programs in brainfuck.
Gir supports following optimizations:
* Turn runs of +- or <> into one command
* Turn [-] or [+] into one command
* Add offsets to commands that modify tape, to reduce moving tape head
* Turn multiply loops into one command
Examples
--------
`ircbot.js` is an implementation of an IRC bot's brainfuck interpreter
function. Smaller examples for every function are available in `api.md`
const gir = require('bf-gir');
let compiled = gir.compile(',[+.,]');
let input = gir.encodeUTF8('Foobar');
let vm = gir.newVM(compiled, input);
let result = gir.runVM(vm, 1000);
if(result.complete) {
console.log(gir.decodeUTF8(result.state.output));
} else {
console.log('Bf program terminated abnormally');
}
Installing
----------
Gir is available at npm registry under the name bf-gir.
TODO
----
### gir.html
* Implement a UI
### General
* Move stuff into subdirectories?