| IDENT (mark (A.Var(IDENT), (IDENTleft,IDENTright)))
| LBRACKET vtype RBRACKET exp %prec UNARY (mark (A.Cast (vtype, exp), (LBRACKETleft, expright)))
| exp DOT IDENT (mark (A.Member(exp, IDENT), (expleft, IDENTright)))
| IDENT (mark (A.Var(IDENT), (IDENTleft,IDENTright)))
| LBRACKET vtype RBRACKET exp %prec UNARY (mark (A.Cast (vtype, exp), (LBRACKETleft, expright)))
| exp DOT IDENT (mark (A.Member(exp, IDENT), (expleft, IDENTright)))