A Naive (OCaml) interpreter for a (minimalist subset of a) Python like language.
Try the interpreter online or use the editor (these rely on js_of_ocaml).
This is a work in progress, most of the supported features are only partially implemented.
Here is an example of using the MiniPy OCaml console, to define a sum
function. It shows that a lot of basic construct of the Python language are supported, but almost no functions from the standard library are available:
Here is a second example, using the MiniPy OCaml editor, loaded with one of the example files, showing a Eratosthene Sieve to detect prime numbers:
Here is a third and last example, using the MiniPy OCaml editor, loaded with one of the example files, showing the prime decompositions of integers. I added a few comments (# blabla
) to show some features supported by MiniPy:
On my websites, it is as https://perso.crans.org/besson/publis/MiniPy/ and https://besson.link/publis/MiniPy/.
-
The source code of MiniPy is from https://github.com/LaurentMazare/ocaml-minipy/, and is open-source under Apache-2.0 license ;
-
From https://github.com/LaurentMazare/LaurentMazare.github.io/tree/master/minipy, this repository has no license information ;
-
The CSS use Bootstrap from Twitter, which is also open-source under MIT license ;
-
The editor is written in javascript and CSS, and it's ACE, and is also open-source under BSD license ;
Apache-2.0 License Copyright 2020 by LaurentMazare.
See https://github.com/LaurentMazare/ocaml-minipy#supported-features
- Python values:
- Boolean.
- Integer (represented with arbitrary precision!).
- Float.
- String.
- List/Tuple.
- Function definitions (with keyword arguments, ...), nested function definition.
- Variable assignments with tuple/list destructuring and assignements to a list element.
- Augmented assignments
+=
,-=
, etc. - Control flow:
- Loops:
while
andfor
loops, with support forbreak
andcontinue
. - If conditionals with
elif
andelse
.
- Loops:
- Expressions:
- Unary and binary operators, comparisons.
- Ternary if operator.
- Attributes, e.g.
x.foo
. - Subscripts, e.g.
x[foo]
. - Lambdas,
lambda
. - List comprehensions (only for lists, no support for dict/set).
- Built-ins
print
,range
. - Dictionaries.
- Delete operator,
del
. - REPL example, javascript version with js-of-ocaml.
- Starred expressions.
- Basic object system.
- Exceptions,
try/with
blocks,raise
. with
blocks.- (Class) Inheritance.
- Sets.
- Slices, e.g.
x[12:15]
. - Generators,
yield
. - Module system,
import
. - Type annotations.
- Bytecode compilation/interpreter.