本文整理汇总了C#中Loop.Generate方法的典型用法代码示例。如果您正苦于以下问题:C# Loop.Generate方法的具体用法?C# Loop.Generate怎么用?C# Loop.Generate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Loop
的用法示例。
在下文中一共展示了Loop.Generate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnGenerate
protected override void OnGenerate()
{
Errors.Clear();
var child = (CommonTree) T.Children[0];
switch (child.Type)
{
case 0:
{
Ctx.EmitNullRef();
Errors.ErrorParse((CommonErrorNode) child);
break;
}
case TemplateLexer.Pragma:
{
var a = new Pragma(child);
Errors.AddRange(a.Generate(Ctx));
break;
}
case TemplateLexer.Assert:
{
Ctx.Sink.Emit(OpCodes.Ldarg_0);
var a = new Assert(child);
Errors.AddRange(a.Generate(Ctx));
Ctx.EmitAppendToBuffer();
break;
}
case TemplateLexer.Continue:
{
if (!Ctx.InJumpableBlock)
{
Errors.ErrorInvalidJump("continue", child.Token);
break;
}
Ctx.Sink.Emit(OpCodes.Br, Ctx.GetContinueLabel());
break;
}
case TemplateLexer.Break:
{
if (!Ctx.InJumpableBlock)
{
Errors.ErrorInvalidJump("break", child.Token);
break;
}
Ctx.Sink.Emit(OpCodes.Br, Ctx.GetBreakLabel());
break;
}
case TemplateLexer.Stop:
{
Ctx.Sink.Emit(OpCodes.Br, Ctx.EndOfTemplate);
break;
}
case TemplateLexer.Parse:
{
var args = (CommonTree) child.Children[0];
if (args.Type == 0)
{
Errors.ErrorParse((CommonErrorNode) args);
break;
}
Ctx.Sink.Emit(OpCodes.Ldarg_0);
Ctx.EmitArgList(args);
Ctx.EmitVTFunctionCall("InvokeParse");
break;
}
case TemplateLexer.Include:
{
var args = (CommonTree) child.Children[0];
if (args.Type == 0)
{
Errors.ErrorParse((CommonErrorNode) args);
break;
}
Ctx.Sink.Emit(OpCodes.Ldarg_0);
Ctx.EmitArgList(args);
Ctx.EmitVTFunctionCall("InvokeInclude");
break;
}
case TemplateLexer.Set:
{
var target = child.Children[0];
if (target.Type == 0)
{
Errors.ErrorParse((CommonErrorNode) target);
break;
}
var source = child.Children[1];
if (source.Type == 0)
{
Errors.ErrorParse((CommonErrorNode) source);
break;
}
var s = new Statement(target);
var exp = new Expression(source);
Errors.AddRange(s.GenerateSet(Ctx, exp));
break;
}
case TemplateLexer.If:
{
var ifControl = new If(child);
Errors.AddRange(ifControl.Generate(Ctx));
//.........这里部分代码省略.........