public override int CompareTo(PDLPos pos)
        {
            var pp = pos as PDLStringPos;

            if (pp != null && name == pos.name)
            {
                return(this.str.CompareTo(pp.str));
            }
            return(name.CompareTo(pos.name));
        }
        public override int CompareTo(PDLPos pos)
        {
            var pp = pos as PDLPosVar;

            if (pp != null)
            {
                return(var.CompareTo(pp.var));
            }

            return(name.CompareTo(pos.name));
        }
        public abstract int Eval(string str, Dictionary <string, int> A); // A is the assignment

        public abstract int CompareTo(PDLPos pos);
 public override int CompareTo(PDLPos pos)
 {
     return(name.CompareTo(pos.name));
 }