fogus / russ-forth

Russforth is a teeny-tiny Forth-esque implementation in Ruby.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Russforth

Russforth is a teeny-tiny Forth implementation in Ruby.

a nicer small-forth is SallyForth by Russ Olsen

It currently supports the following:

  • Shuffling words: drop, dup, swap, rot, over, qdup
  • Mathematical words: +, -, *, /, min, max
  • Stack words: .
  • I/O words: emit, cr, .S
  • Comments: Skip lines via \

In addition, Russforth allows user defined words via the : operator:

: sq dup * ;
2 sq
.
\ prints 4

Things that I would like to add:

  • if ... then
  • Literal Blocks (i.e. [pop dup *])
  • Add string type
  • Combinators
  • User-defined immediate words
  • Return stack
  • ( ... ) style comments
  • A standard lib
  • A more robust interactive prompt and script slurping
  • Navigable lexicon
  • Richer types
  • Ruby interop (repurposing !, @, etc. and introducing #name, .name, new

More to come.

References and inspirations

  • Starting Forth by Leo Brodie
  • Thinking Forth by Leo Brodie
  • Object-oriented Forth by Dick Pountain
  • Scientific Forth by Noble

License

Copyright 2012-2015 Mike Fogus and Russ Olsen.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See the LICENSE file for further details.

About

Russforth is a teeny-tiny Forth-esque implementation in Ruby.

License:GNU Lesser General Public License v3.0


Languages

Language:Ruby 100.0%