Naive Syntax-Directed PE
Represent Programs as Data
e ::= x | ?x.e | e1@e2
Manipulate Them Symbolically
PE(x) = x
PE(?x.e) = ?y. PE(e[y/x]) (where y is fresh)
PE(e1@e2) = PE(e[PE(e2)/x]) (if PE(e1) = ?x.e)
PE(e1@e2) = PE(e1) @ PE(e2) (otherwise)
Previous slide
Next slide
Back to first slide
View graphic version