素人的発想で、構文木を作って同じ部分木を発見したらいいだけじゃねーの?
と思ったけど現実はそんなに甘いもんじゃないの?