Metadata-Version: 2.0
Name: bamboolean
Version: 0.1.5
Summary: Interpreter of Boolean Logic Language
Home-page: https://github.com/qedsoftware/bamboolean
Author: Quantitative Engineering Design Inc.
Author-email: info@qed.ai
License: MIT
Keywords: boolean logic interpreter
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Interpreters
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6

# Bamboolean interpreter

[![Build Status](https://travis-ci.org/qedsoftware/bamboolean.svg?branch=master)](https://travis-ci.org/qedsoftware/bamboolean)

Supported from Python >= 3.4

Implementation of Bamboolean - Boolean Logic Language

Bamboolean is a simple language that consumes array of pre-defined variables, and
returns boolean value if constraints on these variables are met.

[Exemplary expressions in the language](./bamboolean/tests/fixtures.py)

## Features

- Case in-sensitive variable names and keywords
- Comparison operators
- Logic AND / OR
- Expressions with parentheses
- Types: Floats, ints and string

##### Operators associativity

All operators are lef-associative

##### Operators precedence (the higher number the higher priority)

1. OR
2. AND
3. == | != | < | <= | > | >=

## Testing

Run tests:

    `python run_tests.py`

## BNF Grammar

```
expr : simple_expr (OR simple_expr)*

simple_expr : term (AND term)*

term : constraint
     | LPAREN expr RPAREN

constraint : variable relational_operator value

value : INTEGER
      | FLOAT
      | STRING
      | BOOL

variable: ID

relational_operator : ( EQ | NE | LT | LTE | GT | GTE )
```


