source code to ast node and rules explaination