blob: 662f8e35bf6eb71b85c6d56e29c05586b708c7ef [file]
# Copyright 2019 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Common code for scripts in here."""
from __future__ import print_function
import ast
import operator
# All the toolchains we care about.
TARGETS = (
"aarch64-cros-linux-gnu",
"armv7a-cros-linux-gnueabihf",
"i686-cros-linux-gnu",
"x86_64-cros-linux-gnu",
)
def math_eval(expr: str) -> str:
"""Evaluate a arithmetic expression."""
# Only bother listing operators that actually get used.
operators = {ast.Add: operator.add}
def _eval(node):
if isinstance(node, ast.Num):
return node.n
elif isinstance(node, ast.BinOp):
return operators[type(node.op)](_eval(node.left), _eval(node.right))
else:
raise TypeError(node)
return _eval(ast.parse(expr, mode="eval").body)