Lines Matching refs:ast
188 def ast_sym(ast, env): argument
189 if ast in env:
190 return str(env[ast])
193 def ast_sym_int(ast, env): argument
194 if ast in env:
195 v = env[ast]
202 def ast_expr(ast, env, edt): argument
203 if ast[0] == "not":
204 return not ast_expr(ast[1], env, edt)
205 elif ast[0] == "or":
206 return ast_expr(ast[1], env, edt) or ast_expr(ast[2], env, edt)
207 elif ast[0] == "and":
208 return ast_expr(ast[1], env, edt) and ast_expr(ast[2], env, edt)
209 elif ast[0] == "==":
210 return ast_sym(ast[1], env) == ast[2]
211 elif ast[0] == "!=":
212 return ast_sym(ast[1], env) != ast[2]
213 elif ast[0] == ">":
214 return ast_sym_int(ast[1], env) > int(ast[2])
215 elif ast[0] == "<":
216 return ast_sym_int(ast[1], env) < int(ast[2])
217 elif ast[0] == ">=":
218 return ast_sym_int(ast[1], env) >= int(ast[2])
219 elif ast[0] == "<=":
220 return ast_sym_int(ast[1], env) <= int(ast[2])
221 elif ast[0] == "in":
222 return ast_sym(ast[1], env) in ast[2]
223 elif ast[0] == "exists":
224 return bool(ast_sym(ast[1], env))
225 elif ast[0] == ":":
226 return bool(re.match(ast[2], ast_sym(ast[1], env)))
227 elif ast[0] == "dt_compat_enabled":
228 compat = ast[1][0]
233 elif ast[0] == "dt_alias_exists":
234 alias = ast[1][0]
239 elif ast[0] == "dt_enabled_alias_with_parent_compat":
244 alias = ast[1][0]
245 compat = ast[1][1]
254 elif ast[0] == "dt_label_with_parent_compat_enabled":
255 compat = ast[1][1]
256 label = ast[1][0]
264 elif ast[0] == "dt_chosen_enabled":
265 chosen = ast[1][0]
270 elif ast[0] == "dt_nodelabel_enabled":
271 label = ast[1][0]
276 elif ast[0] == "dt_node_prop_enabled":
277 label = ast[1][0]
279 prop = ast[1][1]
295 ast = parser.parse(expr_text)
299 return ast_expr(ast, env, edt)