| INTNUM (mark (A.ConstExp(INTNUM),(INTNUMleft,INTNUMright)))
| STRING (mark (A.StringExp(STRING),(STRINGleft,STRINGright)))
| 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)))
| exp ARROW IDENT (mark (A.DerefMember(exp, IDENT), (expleft, IDENTright)))
| STAR exp %prec UNARY (mark (A.Dereference(exp), (STARleft, expright)))