Esempio n. 1
0
 protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     switch (dereferenceType)
     {
         case WamDeferenceTypes.AllVariables:
             {
                 return Target == null ? new CodeValueObject(null) : Target.GetCodeTerm(dereferenceType, mapping);
             }
         case WamDeferenceTypes.BoundVariables:
             {
                 return Target == null ? mapping.Lookup(this) : Target.GetCodeTerm(dereferenceType, mapping);
             }
         case WamDeferenceTypes.None:
             {
                 return mapping.Lookup(this);
             }
         default:
             throw new InvalidOperationException(string.Format("Unknown dereferenceType {0}.", dereferenceType));
     }
 }
 protected abstract CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping);
 public CodeTerm GetCodeTerm(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return GetCodeTermBase(dereferenceType, mapping);
 }
Esempio n. 4
0
 protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return(new CodeValueInteger(Value));
 }
Esempio n. 5
0
 protected abstract CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping);
Esempio n. 6
0
 public CodeTerm GetCodeTerm(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return(GetCodeTermBase(dereferenceType, mapping));
 }
Esempio n. 7
0
        protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
        {
            switch (dereferenceType)
            {
            case WamDeferenceTypes.AllVariables:
            {
                if (m_target == null)
                {
                    return(new CodeValueObject(null));
                }

                return(m_target.GetCodeTerm(dereferenceType, mapping));
            }

            case WamDeferenceTypes.BoundVariables:
            {
                if (m_target == null)
                {
                    return(mapping.Lookup(this));
                }

                return(m_target.GetCodeTerm(dereferenceType, mapping));
            }

            case WamDeferenceTypes.None:
            {
                return(mapping.Lookup(this));
            }

            default:
                throw new InvalidOperationException(string.Format("Unknown dereferenceType {0}.", dereferenceType));
            }
        }
Esempio n. 8
0
 protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return new CodeValueType(Value);
 }
Esempio n. 9
0
        protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
        {
            if (Functor == Functor.ListFunctor)
            {
                List <CodeTerm> head = new List <CodeTerm>();
                CodeTerm        tail = null;

                CodeTerm codeTermHead = Children[0].GetCodeTerm(dereferenceType, mapping);
                CodeTerm codeTermTail = Children[1].GetCodeTerm(dereferenceType, mapping);

                head.Add(codeTermHead);

                if (codeTermTail.IsCodeList)
                {
                    head.AddRange(codeTermTail.AsCodeList.Head);
                    tail = codeTermTail.AsCodeList.Tail;
                }
                else
                {
                    tail = codeTermTail;
                }

                return(new CodeList(head, tail));
            }
            else
            {
                if (Functor.Arity == 0)
                {
                    return(new CodeCompoundTerm(new CodeFunctor(Functor.Name)));
                }
                else
                {
                    List <CodeTerm> children = new List <CodeTerm>();
                    foreach (WamReferenceTarget child in Children)
                    {
                        children.Add(child.GetCodeTerm(dereferenceType, mapping));
                    }

                    return(new CodeCompoundTerm(new CodeFunctor(Functor.Name, Functor.Arity), children));
                }
            }
        }
Esempio n. 10
0
        protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
        {
            if (Functor == Functor.ListFunctor)
            {
                var head = new List<CodeTerm>();
                CodeTerm tail = null;

                var codeTermHead = Children[0].GetCodeTerm(dereferenceType, mapping);
                var codeTermTail = Children[1].GetCodeTerm(dereferenceType, mapping);

                head.Add(codeTermHead);

                if (codeTermTail.IsCodeList)
                {
                    head.AddRange(codeTermTail.AsCodeList.Head);
                    tail = codeTermTail.AsCodeList.Tail;
                }
                else
                {
                    tail = codeTermTail;
                }
                return new CodeList(head, tail);
            }

            if (Functor.Arity == 0)
            {
                return new CodeCompoundTerm(new CodeFunctor(Functor.Name));
            }

            var children = new List<CodeTerm>();
            foreach (var child in Children)
            {
                children.Add(child.GetCodeTerm(dereferenceType, mapping));
            }
            return new CodeCompoundTerm(new CodeFunctor(Functor.Name, Functor.Arity), children);
        }