Interpreter of Boolean Logic Language
Project description
# 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 (listed below)
- Logic AND / OR
- Expressions with parentheses
- Types: Float, Int, String, Bool, Variable
- [Truth value testing same as in Python](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)
- Implicit cast of variables to boolean when no relational operator is specified
##### Operators associativity
All operators are left-associative
##### Operators precedence (the higher number the higher priority)
1. OR
2. AND
3. == | != | < | <= | > | >=
## Testing
Run tests:
`python run_tests.py`
## EBNF 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 )
```
[![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 (listed below)
- Logic AND / OR
- Expressions with parentheses
- Types: Float, Int, String, Bool, Variable
- [Truth value testing same as in Python](https://docs.python.org/3/library/stdtypes.html#truth-value-testing)
- Implicit cast of variables to boolean when no relational operator is specified
##### Operators associativity
All operators are left-associative
##### Operators precedence (the higher number the higher priority)
1. OR
2. AND
3. == | != | < | <= | > | >=
## Testing
Run tests:
`python run_tests.py`
## EBNF 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 )
```
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
bamboolean-0.1.7.tar.gz
(8.7 kB
view hashes)
Built Distribution
bamboolean-0.1.7-py3-none-any.whl
(12.3 kB
view hashes)
Close
Hashes for bamboolean-0.1.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bab711f617193cab3f38c428d45f7787a1b449ed27c7b551639bcbb7d158169f |
|
MD5 | 7b5ece566eafae6efd37458d8746e580 |
|
BLAKE2b-256 | e09543f43680a9d3da9763b2136a3d4b9df788837ce0d722728e630990ad279b |