Add an every function called before every visit

And use it to print out the line of code for each operator
flink: support semijoin and another test case