def parser(cls):
lpar = pp.Suppress("(")
rpar = pp.Suppress(")")
mutate = pp.Suppress('mutate')
col_name = pp.Word(pp.alphas, pp.alphanums + "_$")
expr_evaluator = Evaluator(deferred_eval=True)
col_expr = expr_evaluator.parser()
mutation = col_name + pp.Suppress("=") + col_expr
mutation.setParseAction(lambda x: {'col_name': x[0], 'col_expr': x[1]})
mutations = pp.Group(pp.delimitedList(mutation))
parser = mutate + lpar + mutations + rpar
parser.setParseAction(lambda x: Mutate(mutations=x))
return parser
评论列表
文章目录