Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/augustt198/truth

A boolean expression parser and evaluator
https://github.com/augustt198/truth

Last synced: about 2 months ago
JSON representation

A boolean expression parser and evaluator

Awesome Lists containing this project

README

        

# truth

A boolean expression parser and evaluator.

### Examples:

Expression: **`!A`**

```
> Truth table:
A Result

0 1
1 0
> Parsed tree:
Operation { components: [Component { value: Var(A), negated: true }], ops: [] }
> Variables: [A]
```

Expression: **`X & Y`**

```
> Truth table:
X Y Result

0 0 0
0 1 0
1 0 0
1 1 1
> Parsed tree:
Operation { components: [Component { value: Var(X), negated: false }, Component { value: Var(Y), negated: false }], ops: [Token { token_type: And, col: 3, line: 1 }] }
> Variables: [X, Y]
```

Expression: **`(A & B) | (C ^ D)`**

```
> Truth table:
A B C D Result

0 0 0 0 0
0 0 0 1 1
0 0 1 0 1
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 0
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
> Parsed tree:
Operation { components: [Component { value: Expr(Operation { components: [Component { value: Var(A), negated: false }, Component { value: Var(B), negated: false }], ops: [Token { token_type: And, col: 4, line: 1 }] }), negated: false }, Component { value: Expr(Operation { components: [Component { value: Var(C), negated: false }, Component { value: Var(D), negated: false }], ops: [Token { token_type: Xor, col: 14, line: 1 }] }), negated: false }], ops: [Token { token_type: Or, col: 9, line: 1 }] }
> Variables: [A, B, C, D]
```

---

**Note:** the AND (`&`), OR (`|`) and XOR (`^`) operators have the same precedence.