A Brainfuck based on Emoji.
Add this line to your application's Gemfile:
And then execute:
Or install it yourself as:
$ gem install mojikun
mojikun binary is provided to let you run programs. There is an examples
directory which has some examples. Use
mojikun like any other interpreter:
.moji is the preferred file ending for Mojikun.
While Mojikun is a simple language that could be interpreted in a 40ish line script, I wanted to make it more like a 'real language' that would have all of the parts and design that a more full one has. I may use this foundation later to build more complex things.
We can see these parts in motion by examining the binary:
$ cat bin/mojikun #!/usr/bin/env ruby require 'mojikun' source_code = ARGF.read.chomp tokens = Mojikun::Lexer.new(source_code).call ast = Mojikun::Parser.new(tokens).call runtime = Mojikun::Runtime.new interpreter = Mojikun::Interpreter.new(runtime) interpreter.evaluate(ast)
We have a Lexer, Parser, Runtime, and Interpreter. The Lexer turns the stream of input into a series of tokens. The Parser takes those tokens and turns them into an AST, which is more of a list than a tree, really. We generate a new Runtime, which has all of the internal state we need to make the language work: the data array, the program counter, etc. Then, the Interpreter takes that AST and evaluates it in the context of the Runtime.
Mojikun is fully tested with MiniTest. I actually wrote it in a TDD fashion. To run the tests, simply
$ rake test
- Fork it
- Create your feature branch (
git checkout -b my-new-feature)
- Commit your changes (
git commit -am 'Add some feature')
- Push to the branch (
git push origin my-new-feature)
- Create new Pull Request