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
andpip
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
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | c41c8a8ebf57568020c5aaf2da51337e8a1a0a6c9ecc9b566f1d16b446bb8a3f |
|
MD5 | c27485b944ec109834936cd6df7dee0a |
|
BLAKE2b-256 | 29758fd0b88752afbf50524c790e9bbe51ae202613269d66200ec4e7df81af0d |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0024220891aee672d216257c098356920b35f7ea89f2fc66d039c1bc2ad4e8ac |
|
MD5 | 6b301646d1c109f5278d9573a60e4f91 |
|
BLAKE2b-256 | d83dbda42c2a1a3e6303c0da8016fa4b0bebf0abb52d65da890ba42ca0db001e |