A strongly typed interpreted language, with type inference, implemented in Python.
Project description
Peri.dot (Pre-06)
Peri.dot is a strongly typed interpreted language, with type inference, implemented in Python. The file extension is ".peri"
Setup
This project uses poetry for dependency management.
git clone https://github.com/toto-bird/Peri.dot.git
cd Peri.dot
poetry install
Usage
python peridot file.peri
Documentation
Running Unit Tests
Unit tests expect pytest. (pip install pytest
)
From the top level directory pytest
Current Features
- Basic REPL
- Types:
- Null/None:
Null
- Numbers:
Int
,Float
- Strings:
Str
- Arrays:
Array
- Tuples:
Tuple
- Dictionaries:
Dict
- Booleans:
Bool
- Functions:
Function
- Built-in functions:
Built-In Function
- Exceptions:
Exception
- Ids:
Id
- Namespaces:
Namespace
- Null/None:
- Types must be explicitely cast:
1 + 1
->2
1 + 1.0
->OperationError('Float can not be added to Int')
- Including other files:
var operations = include('./operations.peri')
- Variables:
- Creation/Initialization:
var x = 2
- Assignment:
x = 5
- Accessing:
x
- Creation/Initialization:
- Arithmetic:
- Addition:
1 + 2
- Subtraction:
5 - 1
- Multiplication:
10 * 2
- Division:
25 / 5
- Exponents:
2 ^ 3
- Addition:
- Global comparisons:
- Equals:
==
- Not Equals:
!=
- Equals:
- Numeric comparisons:
- Greater than:
>
- Less than:
<
- Greater than or equal to:
>=
- Less than or equal to
<=
- Greater than:
- Boolean operations:
and
,or
andnot
- Functions:
- Creation:
var add = func(a, b) {a + b}
- Calling:
add(2, 6)
- Creation:
- Built-In Functions:
- Printing to console:
print('Hello World!')
- Testing:
assert(x == 10, 'x is not 10')
- Printing to console:
- Exception handler:
var x = handler {10 / 0}
- Assert / in-peri.dot testing:
assert(x == 9, 'x is not equal to 9')
- Flow control:
- If statements:
if (x == 1) {var y = 3} elif (x == 2) {var y = 2} else {var y = 1}
- Switch statements:
switch (var x in a) {case (x == 10) {print('10')} else {print('Hmm...')}}
- For loops:
for (var i in [True, True, False]) {print(i)}
- While loops:
while (x < 100) {x = x + 1}
- If statements:
Coming Soon
- Improved repl
- Classes for general use:
var Test = class() {a = 'hello'}
Possible Features
- Formatted strings
'Hello World{suffix}'
- More operations:
- Add and assign
+=
- Subtract and assign
-=
etc.
- Add and assign
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
peridot-6rc0.tar.gz
(37.6 kB
view details)
Built Distribution
peridot-6rc0-py3-none-any.whl
(42.1 kB
view details)
File details
Details for the file peridot-6rc0.tar.gz
.
File metadata
- Download URL: peridot-6rc0.tar.gz
- Upload date:
- Size: 37.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.10 CPython/3.8.5 Linux/5.7.14-1-ck-piledriver
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56414a103e40a87ed35d9ae4f417fbbe809f6ba7118caa4a261fdca8bf6640d4 |
|
MD5 | 544fab0bc68580343944efbb3f28b9bf |
|
BLAKE2b-256 | e0a6cf0527f48a1ece6b0e0cf25c474251c4deb1f5031e02a7a2b38a6c9b5469 |
File details
Details for the file peridot-6rc0-py3-none-any.whl
.
File metadata
- Download URL: peridot-6rc0-py3-none-any.whl
- Upload date:
- Size: 42.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.10 CPython/3.8.5 Linux/5.7.14-1-ck-piledriver
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b602b858dc76c3b32117d741fae9e943c8bd25bdc22d6527dfd240018e061850 |
|
MD5 | a0c781de25f32595aa4d538ea908fd3b |
|
BLAKE2b-256 | c73ed1d5fc64c02c407a95944e18ff2c3b504d226df683747bf88b5b6754702c |