Fixed a bug relating to LBRACKET ambiguity in parsing of Statement

The token sequence (ID, LBRACKET) in parseStatement can match not one but two productions:
1. "Type id = Expression;" where (ID, LBRACKET) matches ArrType
2. "Reference ([ Expression ])? = Expression;" where (ID, LBRACKET) matches "Reference ["

Previously the grammar was flawed s.t. (2) was always chosen. This bug has been fixed.