code: void buildMapEntry(LinkedHashMap<Object, Expr> map) {
  		Expr keyExpr = expr();
  		Object key;
  		if (keyExpr instanceof Id) {
  			key = ((Id)keyExpr).getId();
  		} else if (keyExpr instanceof Const) {
  			key = ((Const)keyExpr).getValue();
  		} else {
  			throw new ParseException("Expression error: the value of map key must be identifier, String, Boolean, null or Number", location);
  		}
  		
  		match(Sym.COLON);
  		Expr value = expr();
  		if (value == null) {
  			throw new ParseException("Expression error: the value on the right side of map entry can not be blank", location);
  		}
  		map.put(key, value);
  	}
docs: mapEntry : (ID | STR | INT | LONG | FLOAT | DOUBLE | TRUE | FALSE | NULL) ':' expr
  设计目标为 map 定义与初始化，所以 ID 仅当成 STR 不进行求值