I have two non-terminals X and Y. X is something that can cause a valid assignment to be done and won\'t end on a function call. Like a.b.c() is invalid in X. but a.b[3].c().d i