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
pythonandpipusing 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
staxprogram 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|