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

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

private AddGoalArgumentVariables ( PrologCodeTerm term ) : void
term Axiom.Compiler.CodeObjectModel.PrologCodeTerm
Результат void
        private void AddGoalArgumentVariables(PrologCodeTerm term)
        {
            // goal(atom).
            if(PrologCodeTerm.IsAtom(term))
            {
                return;
            }
            // goal(X).
            else if(PrologCodeTerm.IsVariable(term))
            {
                this.Add(((PrologCodeVariable)term).Name, null);
                return;
            }
            // goal([A|B]).
            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 goal = (PrologCodePredicate)term;
                foreach (PrologCodeTerm argument in goal.Arguments)
                {
                    AddGoalStructArgumentVariables(argument);
                }
            }
        }