本文整理汇总了C#中Env.IsGlobal方法的典型用法代码示例。如果您正苦于以下问题:C# Env.IsGlobal方法的具体用法?C# Env.IsGlobal怎么用?C# Env.IsGlobal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Env
的用法示例。
在下文中一共展示了Env.IsGlobal方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetDeclns
public ISemantReturn<ImmutableList<Tuple<Env, ABT.Decln>>> GetDeclns(Env env) {
var storageClass = this.DeclnSpecs.GetStorageClass();
var baseType = Semant(this.DeclnSpecs.GetExprType, ref env);
var declns = this.InitDeclrs.ConvertAll(
initDeclr => {
var typeAndInitr = Semant(initDeclr.GetDecoratedTypeAndInitr, baseType, ref env);
var type = typeAndInitr.Item1;
var initr = typeAndInitr.Item2;
var name = initDeclr.GetName();
// Add the new symbol into the environment.
Env.EntryKind kind;
switch (storageClass) {
case StorageClass.AUTO:
if (env.IsGlobal()) {
kind = Env.EntryKind.GLOBAL;
} else {
kind = Env.EntryKind.STACK;
}
break;
case StorageClass.EXTERN:
kind = Env.EntryKind.GLOBAL;
break;
case StorageClass.STATIC:
kind = Env.EntryKind.GLOBAL;
break;
case StorageClass.TYPEDEF:
kind = Env.EntryKind.TYPEDEF;
break;
default:
throw new InvalidOperationException();
}
env = env.PushEntry(kind, name, type);
return Tuple.Create(env, new ABT.Decln(name, storageClass, type, initr));
}
);
return SemantReturn.Create(env, declns);
}