optimize syntax rule

get synstacks only when necessary