Lines Matching refs:expr
1379 def _eval_expr(self, expr): argument
1383 if expr is None:
1386 res = self._eval_expr_rec(expr)
1398 def _eval_expr_rec(self, expr): argument
1399 if isinstance(expr, Symbol):
1402 if expr.type != BOOL and expr.type != TRISTATE:
1404 return expr.get_value()
1406 if isinstance(expr, str):
1407 return expr if (expr == "y" or expr == "m") else "n"
1411 if expr[0] == AND:
1413 for subexpr in expr[1]:
1424 if expr[0] == NOT:
1425 ev = self._eval_expr_rec(expr[1])
1430 if expr[0] == OR:
1432 for subexpr in expr[1]:
1443 if expr[0] == EQUAL:
1444 return "y" if (_str_val(expr[1]) == _str_val(expr[2])) else "n"
1446 if expr[0] == UNEQUAL:
1447 return "y" if (_str_val(expr[1]) != _str_val(expr[2])) else "n"
1450 "unknown operation {0}.".format(expr[0]))
1537 def _expr_depends_on(self, expr, sym): argument
1541 if expr is None:
1544 def rec(expr): argument
1545 if isinstance(expr, str):
1547 if isinstance(expr, Symbol):
1548 return expr is sym
1550 if expr[0] in (EQUAL, UNEQUAL):
1551 return self._eq_to_sym(expr) is sym
1552 if expr[0] == AND:
1553 for and_expr in expr[1]:
1558 return rec(expr)
1585 def _expr_val_str(self, expr, no_value_str="(none)", argument
1595 if expr is None:
1599 if isinstance(expr, str):
1600 return _expr_to_str(expr)
1601 val = expr.get_value()
1603 val = self._eval_expr(expr)
1605 return "{0} (value: {1})".format(_expr_to_str(expr), _expr_to_str(val))
3236 def _get_expr_syms_rec(expr, res): argument
3238 if isinstance(expr, Symbol):
3239 res.add(expr)
3240 elif isinstance(expr, str):
3242 elif expr[0] == AND or expr[0] == OR:
3243 for term in expr[1]:
3245 elif expr[0] == NOT:
3246 _get_expr_syms_rec(expr[1], res)
3247 elif expr[0] == EQUAL or expr[0] == UNEQUAL:
3248 if isinstance(expr[1], Symbol):
3249 res.add(expr[1])
3250 if isinstance(expr[2], Symbol):
3251 res.add(expr[2])
3254 "expression with token stream {0}.".format(expr))
3256 def _get_expr_syms(expr): argument
3259 if expr is not None:
3260 _get_expr_syms_rec(expr, res)
3291 def handle_sub_expr(expr): argument
3292 no_parens = isinstance(expr, (str, Symbol)) or \
3293 expr[0] in (EQUAL, UNEQUAL) or \
3294 PRECEDENCE[op] <= PRECEDENCE[expr[0]]
3297 res.extend(_expr_to_str_rec(expr))
3304 for expr in lst[1:]:
3306 handle_sub_expr(expr)
3310 def _expr_to_str_rec(expr): argument
3311 if expr is None:
3314 if isinstance(expr, (Symbol, str)):
3315 return [_sym_str_string(expr)]
3317 if expr[0] in (AND, OR):
3318 return _intersperse(expr[1], expr[0])
3320 if expr[0] == NOT:
3321 need_parens = not isinstance(expr[1], (str, Symbol))
3326 res.extend(_expr_to_str_rec(expr[1]))
3331 if expr[0] in (EQUAL, UNEQUAL):
3332 return [_sym_str_string(expr[1]),
3333 OP_TO_STR[expr[0]],
3334 _sym_str_string(expr[2])]
3336 def _expr_to_str(expr): argument
3337 return "".join(_expr_to_str_rec(expr))