Yet another programming language, made in Python. Has nothing to do with the video game "Baba is You".
Right now in version 0.4.2.
- baba-lang is now in its
0.xversions. This means that later versions of baba-lang is not guaranteed to be backward compatible with the previous ones. - baba-lang is written for educational purposes only; it is not meant to be used in production.
- Prerequisites: Python 3 (At least 3.12 can be sure to work), Lark (see requirements.txt)
- Clone the repository
- (Optionally) Create a virtual environment
- Run
pip install -r requirements.txt - Run
src/main.pywithout arguments to open an interactive prompt. To run a source file, entersrc/main.py <file>. Source files are of extension.bl
- First-class functions
- Operators:
==,!=,<,<=,>,>=,+,-,*,/,%/%,%,**,&,|,^,<<,>>,~, unary+, unary-, function call, subscripting - Logical operators:
&&,||,! - In-place operators:
=,+=,-=,*=,/=,%=,%/%=,**=,&=,|=,^=,<<=,>>= - Control flow constructs:
if,while,do..while, C-stylefor,break,continue, functions - Data types: integers, floats, strings, booleans, lists, dictionaries
- Modules
- Easy Python interop with
py_functionandpy_method
Here is an example snippet to get started:
min = py_function('builtins', 'min');
subjects = ['BABA', 'KEKE', 'DOOR', 'FLAG'];
verbs = ['HAS', 'HAS', 'IS', 'IS'];
objects = ['YOU', 'KEY', 'LOCK', 'WIN'];
# zipper
for (i = 0; i < min(subjects, verbs, objects); i += 1) {
subject = subjects[i];
verb = verbs[i];
object = objects[i];
# right now this is the only way to combine booleans :sob:
if subject == 'BABA' && verb == 'HAS' {
verb = 'IS';
}
print(subject + ' ' + verb + ' ' + object);
}- Rest and keyword arguments
- OOP
- Iterators
- Exceptions
- Package manager