Example #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);
 }
Example #4
0
 protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return new CodeValueType(Value);
 }
        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);
        }
Example #6
0
 protected override CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return(new CodeValueException(Value));
 }
 protected abstract CodeTerm GetCodeTermBase(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping);
 public CodeTerm GetCodeTerm(WamDeferenceTypes dereferenceType, WamReferenceTargetMapping mapping)
 {
     return(GetCodeTermBase(dereferenceType, mapping));
 }