Skip to content

1Computer1/rpnlang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RPNLang

A dynamically-typed, RPN-based, and stack-based esoteric language.

> 'Hello World!'; // Hello World!
> 1 1 + 2 2 + -; // -2

x = 5;
< 1 2 3 $x [>]; // [5, 3, 2, 1]

adder = (a) => (
    (b) => $a $b +
);

> 3 5 $adder@@; // 8

is_prime = (num) => (
    $num $sqrt@ $floor@ 2 (sqnum, i) => ({
        $num $i % 0 == : !?,
        $i $sqnum >= : $num 1 !=,
        !! : $sqnum $i 1 + $@
    })@
);

> 1231 $is_prime@; // true

Language

See the explanation for the language at the documentations.
Note that it is not a guide but rather just the syntax and operators.

API

RPNLang is interpreted with JavaScript.
You can require the module and run code:

const RPNProgram = require('rpnlang');

const program = new RPNProgram('> 1 1 +;');
program.execute(); // 2

You can also use RPNProgram.makeModule in order to make a module compatible with RPNLang.
To call a lambda from RPNLang, use RPNProgram.callLambda.

const RPNProgram = require('rpnlang');
module.exports = RPNProgram.makeModule({
    num: 5,
    add: (a, b) => a + b,
    map: (...args) => {
        const mapper = args[0];
        return args.slice(1).map(e => RPNProgram.callLambda(mapper, [e])[0]);
    }
});
math << 'math.js';
> math::num 10 math::add@; // 15

RPNProgram(source[, options])

  • source - The source code.
  • options.log - Function for standard output.
  • options.debug - Debug mode, prints more errors.
  • options.safe - Disables file I/O and stdin.

CLI

You can also run a file via the CLI:

$ rpn input_file.rpn

Flags

  • -c [code] - Runs code.
  • -d - Enables debug mode.
  • -s - Enables safe mode.

Other

RPNLang is made purely for fun, don't take it too seriously!
Created with jison.

About

An esolang based on RPN

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published