Axiom.Compiler.Framework.PrologVariableDictionary.AddGoalStructArgumentVariables C# (CSharp) Метод

AddGoalStructArgumentVariables() приватный Метод

private AddGoalStructArgumentVariables ( PrologCodeTerm term ) : void
term Axiom.Compiler.CodeObjectModel.PrologCodeTerm
Результат void
        private void AddGoalStructArgumentVariables(PrologCodeTerm term)
        {
            if (PrologCodeTerm.IsAtom(term))
            {
                return;
            }
            else if (PrologCodeTerm.IsVariable(term))
            {
                this.Add(((PrologCodeVariable)term).Name, null);
            }
            else if (PrologCodeTerm.IsList(term))
            {
                if (term is PrologCodeNonEmptyList)
                {
                    PrologCodeNonEmptyList list = (PrologCodeNonEmptyList)term;
                    AddGoalStructArgumentVariables(list.Head);
                    if (list.Tail is PrologCodeNonEmptyList)
                    {
                        AddGoalStructArgumentVariables(list.Tail);
                    }
                    else
                    {
                        AddGoalStructArgumentVariables(list.Tail);
                    }
                }
            }
            else if (PrologCodeTerm.IsStruct(term))
            {
                PrologCodePredicate structure = (PrologCodePredicate)term;
                foreach (PrologCodeTerm argument in structure.Arguments)
                {
                    AddGoalStructArgumentVariables(argument);
                }
            }
        }