На этом шаге мы завершим создание калькулятора.
Пример 9.13 анализирует выражение, заключенное в скобки.
1 2 3 4 5 |
def parenthesized_expression(tokens): if tokens == [] or tokens[0] != '(' or tokens[-1] != ')': raise SyntaxError('Syntax error') else: return expression(tokens[1:-1]) |
Помимо проверки входного списка на пустоту, метод проверяет также наличие открывающей и закрывающей круглых скобок соответственно в начале и в конце выражения. Если ошибок нет, метод продолжает вычисление выражения в круглых скобках (строка 5) и возвращает результат. Таким образом, вызовом функции expression() этот метод замыкает всю цепь взаимно-рекурсивных функций.
И наконец, в примере 9.14 приводится сам калькулятор в целом.
1 2 |
s = input('> ') print(expression(tokenize_unary(s))) |
На следующем шаге мы приведем решения нескольких задач.