A Dynamically typed, Object Oriented Program Language, written in Python.


![]( =60%/x)

Skiylia is dynamically typed, object oriented, and most importantly interpreted. While it may share many similarities with C derivatives, its heritage is definitely Pythonic.

The main directory housing the PySkiylia interpreter is here. Within that directory is a separate document listing the most important syntax for Skiylia.

Sample code

///This section contains a small snippet of Skiylia
code that calculates the factorial of a number///

def factorial(n):
  if int(n) != n:
    return null   //can't compute factorial of a float this way
  if n < 2:
    return 1
  return n * factorial(n - 1)   //recursion that makes this work

var num = 6
print("The factorial of", num, "is", factorial(num))

//output: The factorial of 6 is 720

Within this folder is a collection of code examples that have been used to test the project. While not exhaustive by any means, they should cover the basics. Feel free to play around and get a feel for the language!

Who knows, at some point in the future there may even be a link to a Skiylia tutorial. It's certainly an idea in the works.

Running Skiylia

Under the [Latest release] you'll find the most up to date version of PySkiylia, containing all the python sub-modules. Running from the command line will open the interpreter in REPL mode, while passing a .skiy file as a second argument will allow execution of said script.


Any contributions made are absolutely welcome. Checkout the issues area for any outstanding problems, or to file your own!

Forking this repository is an excellent way to contribute to the code that makes this interpreter tick. Open a pull request (preferably to the develop branch) if you have anything to add, and it'll be looked over.


I, Jack, definitely couldn't have created PySkiylia without any outside sources.

I owe a huge debt to Bob Nystrom and his excellent book, Crafting Interpreters. Not only did he give me true inspiration to develop Skiylia, but also provided cleanly documented concepts and a delightful read. If there is anyone that hasn't yet read his implementation of Lox from cover to cover, I would thoroughly recommend doing so.


  • The interpreter was written in Python 3.8, and can be ran on any machine with it installed.
  • Mergify has been automatically managing all of the repository branches.
  • All-contributors has been managing the contributors section.
  • Snyk has been monitoring for security concerns.
  • Release-drafter has been compiling all pull requests into changelogs on each draft release, massively expediating the process.
  • And while we don't have an dependencies (yet?) Dependabot has been keeping in the shadows.