fix function call parsing
better support optional grammar parts ('xxx?') by skipping null nodes
inline the id AST nodes
distinguish between macro parameters and macro body