public Void VisitVarActualParameter(VarActualParameter ast, FormalParameter arg)
        {
            var actualType = ast.Vname.Visit(this);

            if (!ast.Vname.IsVariable)
            {
                ReportError("actual parameter is not a variable", ast.Vname);
            }
            else if (arg is VarFormalParameter)
            {
                var parameter = (VarFormalParameter)arg;
                CheckAndReportError(actualType.Equals(parameter.Type),
                                    "wrong type for var actual parameter", ast.Vname);
            }
            else
            {
                ReportError("var actual parameter not expected here", ast.Vname);
            }
            return(null);
        }
 public int VisitVarActualParameter(VarActualParameter ast, Frame frame)
 {
     EncodeFetchAddress(ast.Vname, frame);
     return(Machine.AddressSize);
 }