本文整理汇总了C#中IronPython.Compiler.Ast.AstGenerator.Variable方法的典型用法代码示例。如果您正苦于以下问题:C# AstGenerator.Variable方法的具体用法?C# AstGenerator.Variable怎么用?C# AstGenerator.Variable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IronPython.Compiler.Ast.AstGenerator
的用法示例。
在下文中一共展示了AstGenerator.Variable方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Transform
internal MSAst.Expression Transform(AstGenerator inner, bool needsWrapperMethod, bool needsLocalsDictionary, List<MSAst.Expression> init) {
string name = SymbolTable.IdToString(Name);
if (_variable.AccessedInNestedScope || needsLocalsDictionary) {
ClosureExpression closureVar;
if (needsWrapperMethod) {
closureVar = inner.LiftedVariable(Variable, name, _variable.AccessedInNestedScope);
} else {
closureVar = inner.LiftedParameter(Variable, name);
}
inner.SetLocalLiftedVariable(_variable, closureVar);
init.Add(closureVar.Create());
return closureVar;
} else {
MSAst.Expression parameter;
if (needsWrapperMethod) {
parameter = inner.Variable(typeof(object), name);
} else {
parameter = inner.Parameter(typeof(object), name);
}
inner.Globals.SetParameter(_variable, parameter);
return parameter;
}
}
示例2: CreateVariable
public MSAst.Expression/*!*/ CreateVariable(AstGenerator/*!*/ ag, PythonVariable/*!*/ variable, bool emitDictionary) {
Assert.NotNull(ag, variable);
Debug.Assert(variable.Kind != VariableKind.Parameter);
string name = SymbolTable.IdToString(variable.Name);
switch (variable.Kind) {
case VariableKind.Global:
case VariableKind.GlobalLocal:
return _variables[variable] = GetGlobal(name, ag, false);
case VariableKind.Local:
case VariableKind.HiddenLocal:
if (ag.IsGlobal) {
return _variables[variable] = GetGlobal(name, ag, true);
} else if (variable.AccessedInNestedScope || (emitDictionary && variable.Kind != VariableKind.HiddenLocal)) {
return ag.SetLocalLiftedVariable(variable, ag.LiftedVariable(variable, name, variable.AccessedInNestedScope));
} else {
return _variables[variable] = ag.Variable(typeof(object), name);
}
default:
throw Assert.Unreachable;
}
}
示例3: Transform
internal MSAst.Expression Transform(AstGenerator inner, bool needsWrapperMethod) {
MSAst.ParameterExpression parameter;
string name = SymbolTable.IdToString(Name);
if (_variable.AccessedInNestedScope) {
if (needsWrapperMethod) {
parameter = inner.ClosedOverVariable(typeof(object), name);
} else {
parameter = inner.ClosedOverParameter(typeof(object), name);
}
} else {
if (needsWrapperMethod) {
parameter = inner.Variable(typeof(object), name);
} else {
parameter = inner.Parameter(typeof(object), name);
}
}
inner.Globals.SetParameter(_variable, parameter);
return parameter;
}