Синтаксический анализатор корректности текстовых арифметических выражений с использованием языка программирования Python3

Пиццикато Алексея Лота

Синтаксический анализатор корректности текстовых арифметических выражений с использованием языка программирования Python3

    expressionChars = list(input('Enter expression: '))
    isCorrectExpression = False
    digits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
    operations = {"/", "+", "-", "*", "^"}
    state = 0;
    count = 0

    for char in expressionChars:
        if state == 0 and char in {"+", "-"}.union(digits):
            state = 5
        elif (state == 5 or state == 1 or state == 3) and char in digits:
            state = 1
        elif (state == 5 or state == 3 or state == 0) and char in {"("}:
            state = 5
            count+=1
        elif state == 5 and char in {"+", "-"}:
            state = 3       
        elif state == 1 and char in {"."}:
            state = 6
        elif (state == 1 or state == 4) and char in {")"}:
            state = 4
            count-=1
        elif (state == 1 or state == 4 or state == 2) and char in operations:
            state = 3     
        elif (state == 6 or state == 2) and char in digits:
            state = 2

    if state in {1, 4, 2} and count == 0:
        isCorrectExpression = True
    
    print(f"isCorrectExpression: {isCorrectExpression}")

Допустимы отрицательные, положительные целые и рациональные числа, вычисления в круглых скобках, умножение, деление и возведение в степень (записывается знаком ^).