Axiom.Compiler.Framework.PrologCodeGenerator.CompileGoalRecordVariable C# (CSharp) Метод

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

private CompileGoalRecordVariable ( PrologCodeVariable var ) : void
var Axiom.Compiler.CodeObjectModel.PrologCodeVariable
Результат void
        private void CompileGoalRecordVariable(PrologCodeVariable var)
        {
            PrologVariableDictionaryEntry entry = _dictionary.GetVariable(var.Name);
            if (entry.IsReferenced)
            {
                /* Compile build value here ... */
                if (entry.IsTemporary)
                {
                    if (entry.IsGlobal)
                    {
                        _generator.Emit(OpCodes.Set_Value, X(entry.TemporaryIndex));
                    }
                    else
                    {
                        _generator.Emit(OpCodes.Set_Local_Value, X(entry.TemporaryIndex));
                        entry.IsGlobal = true;
                    }
                }
                else
                {
                    if (entry.IsGlobal)
                    {
                        if (entry.TemporaryIndex != -1)
                        {
                            _generator.Emit(OpCodes.Set_Value, X(entry.TemporaryIndex));
                        }
                        else
                        {
                            _generator.Emit(OpCodes.Set_Value, Y(entry.PermanentIndex));
                        }
                    }
                    else
                    {
                        if (entry.TemporaryIndex != -1)
                        {
                            _generator.Emit(OpCodes.Set_Local_Value, X(entry.TemporaryIndex));
                        }
                        else
                        {
                            _generator.Emit(OpCodes.Set_Local_Value, Y(entry.PermanentIndex));
                        }
                    }
                }
            }
            else
            {
                if (entry.IsTemporary)
                {
                    if (entry.Occurrences == 1)
                    {
                        _generator.Emit(OpCodes.Set_Void, "1");
                    }
                    else
                    {
                        _generator.Emit(OpCodes.Set_Variable, X(entry.TemporaryIndex));
                    }
                }
                else
                {
                    _generator.Emit(OpCodes.Set_Variable, Y(entry.PermanentIndex));
                }
                entry.IsGlobal = true;
            }
        }