Синтаксический анализатор корректности текстовых арифметических выражений с использованием языка программирования 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}")
Допустимы отрицательные, положительные целые и рациональные числа, вычисления в круглых скобках, умножение, деление и возведение в степень (записывается знаком ^).