Simple logical expression parser using lark-parser module.
Expression example:
Пол="М" AND (Возраст>25 OR (Стаж>.5 AND Должность!="Руководитель"))
'(NOT (NOT (NOT (NOT (Gender = "m"))))) AND (NOT (NOT (NOT ((NOT (age > 25)) OR (seniority > 5 AND position!= "Manager")))))'
Use
To get dict with AST (abstract syntax tree) use function parse
from module main
and pass valid logical expression string to it. (Check parser.py
for grammar):
from main import parse
print(parse('Стаж>.5 AND Должность!="Руководитель"'))
OR
Import ExpressionParser
from parser
module and call parse function on it to get lark.tree.Tree
object, that you can print with pretty()
function:
from parser import ExpressionParser as logic_parser
ast = logic_parser.parse('Стаж>.5 AND Должность!="Руководитель"')
print(ast.pretty())
Test
To test call module main.py
.