MCPcopy Create free account
hub / github.com/NVIDIA/SOL-ExecBench / eval_node

Function eval_node

src/sol_execbench/core/data/shapes.py:42–71  ·  view source on GitHub ↗
(node)

Source from the content-addressed store, hash-verified

40 """
41
42 def eval_node(node):
43 if isinstance(node, ast.Constant): # numbers like 1, 2.5
44 if isinstance(node.value, (int, float)):
45 return node.value
46 raise TypeError(f"Unsupported constant type: {type(node.value).__name__}")
47
48 if isinstance(node, ast.Name): # variable like x
49 if node.id in vars:
50 v = vars[node.id]
51 if not isinstance(v, int):
52 raise TypeError(
53 f"Variable '{node.id}' must be int, got {type(v).__name__}"
54 )
55 return v
56 raise NameError(f"Unknown variable: {node.id}")
57
58 if isinstance(node, ast.BinOp):
59 op_type = type(node.op)
60 if op_type not in _BIN_OPS:
61 raise TypeError(f"Unsupported operator: {op_type.__name__}")
62 return _BIN_OPS[op_type](eval_node(node.left), eval_node(node.right))
63
64 if isinstance(node, ast.UnaryOp):
65 op_type = type(node.op)
66 if op_type not in _UNARY_OPS:
67 raise TypeError(f"Unsupported unary operator: {op_type.__name__}")
68 return _UNARY_OPS[op_type](eval_node(node.operand))
69
70 # Anything else is not allowed (Call, Attribute, Subscript, etc.)
71 raise TypeError(f"Unsupported expression node: {type(node).__name__}")
72
73 tree = ast.parse(expr, mode="eval")
74 value = eval_node(tree.body)

Callers 1

resolve_shape_expressionFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected