Skip to content
Kither12Public

About

A toy programming language interpreter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

38 Commits

Folders and files

Repository files navigation

Penguin

Penguin is a dynamically typed programming language inspired by C++, Rust, and Python. Its interpreter is built entirely in Rust and uses a tree-walking approach.

My goal is to make it a usable programming language with a runtime that is reasonably fast.

How to use

To run the interpreter you can use

cargo run --release -- examples/prime.pn

Benchmarking

The table below illustrates the time it takes to run two simple programs between Penguin and Python. The benchmarks are measured using Hyperfine. The code used for benchmarking is in the example folder.

Program Penguin Python
prime 520.6 412.7
sum 53.6 103.9

Overview

// declaration
gimme a = 0;
gimme b = true;

//assignment
a = false;

// if-elif-else
if a == true{
}
elif b{}
else {}

// while loop
while true{
  if a{
    break;
  }
  a = true;
  b = false;
  continue;
};

//function
gimme is_even = (a) => {
  return a % 2 == 0;
};
println(is_even(100));

//pass by ref function
gimme swap = (a, b) => {
  gimme temp = a;
  a = b;
  b = temp;
}
swap(&a, &b);
println(a);
println(b);

About

A toy programming language interpreter

Resources

Stars

0 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages