На этом шаге мы приведем текст этой функции и прокомментируем его.
В примере 9.12 приведён код, анализирующий множитель.
1 2 3 4 5 6 7 8 9 10 |
def factor(tokens): if tokens == []: raise SyntaxError('Syntax error') elif len(tokens) == 1: if is_number(tokens[0]): return float(tokens[0]) else: raise SyntaxError('Syntax error') else: return parenthesized_expression(tokens) |
Если входной список состоит из одной лексемы, то она может быть только числом, и функция возвращает её значение (строка 6). Если же лексема не является числом, то исходное выражение ошибочно. Наконец, если длина входного списка лексем больше 1, множитель может быть только выражением в скобках, и метод должен вызвать соответствующую ему функцию со всем входным списком (строка 10).
На следующем шаге мы рассмотрим функцию parenthesized_expression().