private void ReadConstants(CompoundExpression exp, Domain d)
        {
            string        sType = "?", sExp = "";
            List <string> lUndefined = new List <string>();

            for (int iExpression = 0; iExpression < exp.SubExpressions.Count; iExpression++)
            {
                sExp = exp.SubExpressions[iExpression].ToString().Trim();
                if (sExp == "-")
                {
                    sType = exp.SubExpressions[iExpression + 1].ToString();
                    iExpression++;
                    foreach (string sName in lUndefined)
                    {
                        d.AddPublicConstant(new Constant(sType, sName));
                    }
                    lUndefined.Clear();
                }
                else if (exp.SubExpressions[iExpression] is CompoundExpression)
                {
                    CompoundExpression eSub = (CompoundExpression)exp.SubExpressions[iExpression];
                    if (eSub.Type == ":private")
                    {
                        ReadPrivateConstants(eSub, d);
                    }
                }
                else if (!sExp.StartsWith(":"))
                {
                    lUndefined.Add(sExp);
                }
            }
            if (lUndefined.Count > 0)
            {
                //supporting objects with undefined types as type "OBJ"
                foreach (string sName in lUndefined)
                {
                    d.AddPublicConstant(new Constant("OBJ", sName));
                }
                //throw new NotImplementedException();
            }
        }