Skip to main content

A Stack-based ZISC-like interpreter written in Python

Project description

Staxlang

A ZISC inspired stack based language / interpreter written in python, providing simple instruction sets for executing programs

Features

  • Stack based: Uses variable number of Stacks to store items of varying data types in memory.
  • Postfix notation: Use PUSH, POP, PRINT, and arithmetic keywords to perform instructions on the stack using postfix notation.

Installation

  • Install python and pip using your OS package manager

  • Run

    $ pip install staxlang

Usage

  • Create a test file test.stax
stack;
PUSH "Hello World" stack;
PRINT stack;

Execute the program by running

stax test.stax

output:

Hello World
  • You can also run the stax program just by itself. This will open in repl mode and you can run arbitrary commands in the interpreter.
>>> stack;
>>> PUSH "Hello World!" stack;
>>> PRINT stack;
Hello World
>>>

Examples

Hello world

Code:

stack;                       # Creating a stack of name "stack"
PUSH "Hello World" stack     # Pushing "Hello World" to the stack
PRINT stack;                 # Printing the topmost variable in the stack

output:

Hello World!

Calculation

Code:

stack;                       # Creating a stack of name "stack"
PUSH 1 stack;                # Pushing 1 to the stack 
PUSH 2 stack;                # Pushing 2 to the stack
ADD stack;                   # Removing the top 2 elements in the stack and pushing its sum to the stack
PRINT stack;                 # Printing the topmost variable in the stack

output:

3

Keywords

Here are a list of keywords in the language

Keyword Description Syntax
PUSH Push a value onto the stack PUSH VAL ST_NAME;
POP Pop the topmost value from the stack POP ST_NAME;
PRINT Print the top most element in the stack PRINT ST_NAME;
ADD Pop the top two elements in the stack and push the sum ADD ST_NAME;
SUBT Pop the top two elements in the stack and push the difference SUBT ST_NAME;
MULT Pop the top two elements in the stack and push the product MULT ST_NAME;
DIV Pop the top two elements in the stack and push the quotient DIV ST_NAME;
MOD Pop the top two elements in the stack and push the modulus MOD ST_NAME;
EXIT Exit the program EXIT;

Any other keyword used is considered as the name of a new stack

Legend:

KEY VALUE
VAL Any value
ST_NAME Name of an already defined Stack

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

staxlang-0.0.1.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

staxlang-0.0.1-py2.py3-none-any.whl (11.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file staxlang-0.0.1.tar.gz.

File metadata

  • Download URL: staxlang-0.0.1.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for staxlang-0.0.1.tar.gz
Algorithm Hash digest
SHA256 c41c8a8ebf57568020c5aaf2da51337e8a1a0a6c9ecc9b566f1d16b446bb8a3f
MD5 c27485b944ec109834936cd6df7dee0a
BLAKE2b-256 29758fd0b88752afbf50524c790e9bbe51ae202613269d66200ec4e7df81af0d

See more details on using hashes here.

File details

Details for the file staxlang-0.0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: staxlang-0.0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.12.1

File hashes

Hashes for staxlang-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0024220891aee672d216257c098356920b35f7ea89f2fc66d039c1bc2ad4e8ac
MD5 6b301646d1c109f5278d9573a60e4f91
BLAKE2b-256 d83dbda42c2a1a3e6303c0da8016fa4b0bebf0abb52d65da890ba42ca0db001e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page