Exemple #1
0
        internal override bool IsCompatibleDefinition(UserSymbol s)
        {
            UserCnstSymb us = s as UserCnstSymb;

            return(us != null &&
                   us.UserCnstKind == UserCnstKind &&
                   us.IsAutoGen == IsAutoGen);
        }
Exemple #2
0
        /// <summary>
        /// A short-cut for registering model variables. Is only legal
        /// when is it already known that no symbol with this name exists.
        /// </summary>
        internal void AddModelConstant(Id id, int sid)
        {
            Contract.Requires(id != null && id.Fragments.Length == 1);
            var smbCnstName = "%" + id.Name;

            Contract.Assert(!symbols.ContainsKey(smbCnstName));
            var usrSymb = new UserCnstSymb(this, Factory.Instance.MkId(smbCnstName, id.Span), UserCnstSymbKind.New, true);

            usrSymb.Id = sid;
            symbols.Add(smbCnstName, usrSymb);
        }
Exemple #3
0
        /// <summary>
        /// Creates a new anononymous model constant for _ appearing in a partial model.
        /// </summary>
        internal void AddAnonModelConstant(Id id, int sid)
        {
            Contract.Requires(id != null && id.Name == API.ASTQueries.ASTSchema.Instance.DontCareName);
            var smbCnstName = string.Format("%~sym{0}", nextAnonSymbolicConstant++);

            Contract.Assert(!symbols.ContainsKey(smbCnstName));
            var usrSymb = new UserCnstSymb(this, Factory.Instance.MkId(smbCnstName, id.Span), UserCnstSymbKind.New, true);

            usrSymb.Id = sid;
            symbols.Add(smbCnstName, usrSymb);
            Contract.Assert(id.CompilerData == null);
            id.CompilerData = usrSymb;
        }