SharpRPN is a stack machine with an RPN programming language, inspired by RPL on HP calculators.
Use as a calculator:
Input: 1
# │ Value │ Type ───┼───────┼─────── 1 │ 1 │ Int32 Input: 2
# │ Value │ Type ───┼───────┼─────── 2 │ 1 │ Int32 1 │ 2 │ Int32 Input: +
# │ Value │ Type ───┼───────┼─────── 1 │ 3 │ Int32 Input: 3 4 + *
# │ Value │ Type ───┼───────┼─────── 1 │ 21 │ Int32 Input: 1 2 3 * 4 + +
# │ Value │ Type ───┼───────┼─────── 2 │ 21 │ Int32 1 │ 11 │ Int32 Drop an item from stack or clear all items:
# │ Value │ Type ───┼───────┼─────── 2 │ 21 │ Int32 1 │ 11 │ Int32 Input: drop
# │ Value │ Type ───┼───────┼─────── 1 │ 21 │ Int32 Input: clear
Stack empty
Set value to variable:
Input: 1 'foo' sto
Stack empty
Input: foo
# │ Value │ Type ───┼───────┼─────── 1 │ 1 │ Int32 Codeblocks:
Input: { 'hello world!' 1 2 + }
# │ Value │ Type ───┼──────────────────────────┼─────────── 1 │ { 'hello world!' 1 2 + } │ CodeBlock Input: eval
# │ Value │ Type ───┼──────────────┼──────── 2 │ hello world! │ String 1 │ 3 │ Int32 Input and condition:
Input: { 'Correct\n' print } { 'Wrong\n' print } "What's the answer? " print input '42' == evalifelse
What's the answer? 42 Correct
(.NET Core 3.1 SDK required)
git clone https://github.com/lideming/SharpRPN.git
cd SharpRPN
dotnet run(.NET Core 3.1 Runtime required)
Download the latest build from Github Actions.
docker run -it yuuza/sharprpn