Польская нотация с разным количеством аргументов на питон
Мне нужно обработать польскую нотацию на питоне. Но у меня не арифметика, а функции и ключевые слова. Столкнулся с багом, неправильно обрезается список, если есть что-то типа or and 1 not 0 0. Считает, что ноль после not принадлежит к or. Понимаю, что это происходит из-за того, что просто обрезаю по готовым значениям, но не знаю как сделать это правильно.
Описание переменных и функций :
execute_line- исполняет ключевое слово или функцию, возвращает результат, или если это переменная возвращает её значение.state- объект, который я перекидываю между всеми функциями, если нужны по нему уточнения, спрашивайте.
Код который у меня есть :
state.is_expr = True
ret = []
full_vars = {**state.vars, **(local if local != None else {})}
while lexic and lexic[0] != "{":
ret.append(execute_line(lexic, state, local=local))
lex_cut = state.keyw_lexic.get(lexic[0], None)
if lex_cut is None:
lex_cut = full_vars.get(lexic[0], None)
if isinstance(lex_cut, Function):
lex_cut = len(lex_cut.args) + 1
else:
lex_cut = 1
lexic = lexic[lex_cut:]
state.is_expr = False
return ret