Польская нотация с разным количеством аргументов на питон

Мне нужно обработать польскую нотацию на питоне. Но у меня не арифметика, а функции и ключевые слова. Столкнулся с багом, неправильно обрезается список, если есть что-то типа 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

Ответы (0 шт):