canonical: sugar rewritten to one core form (pipes become calls, \(x) is function(x), -> and = are <-,
(e) and {e} are e, x[["a"]] is x$a, T is TRUE, a tail return(e) is e), keeping the ids of the source nodes
dataflow: canonical with single-use temporaries inlined along the dataflow graph (t <- f(x); g(t) is g(f(x)))
How the code is presented to the detectors:
syntax: as writtencanonical: sugar rewritten to one core form (pipes become calls,\(x)isfunction(x),->and=are<-,(e)and{e}aree,x[["a"]]isx$a,TisTRUE, a tailreturn(e)ise), keeping the ids of the source nodesdataflow:canonicalwith single-use temporaries inlined along the dataflow graph (t <- f(x); g(t)isg(f(x)))