finish direct left recursion
modified remove direct recursion
modified remove direct recursion
Revert "modified remove direct recursion"

This reverts commit 772457ba4a8d7d7df7898d8581f193b64b4bf77e.
finish indirect recursion
fix bugs and better code shape
fix first plus set bugs
add remove comments