public override void Compile(ICompileContext context) { if (_prefix != null) { context.Child(_prefix, "(Prefix)", null, null, context.Failure); } context.Child(_inner, null, context.Result, null, context.Failure); if (_suffix != null) { context.Child(_suffix, "(Suffix)", null, null, context.Failure); } context.Succeed(); }
public override void Compile(ICompileContext context) { var match = context.Cache(Default(typeof(string))); context.Child(regex, null, match, null, context.Failure); context.Succeed(Call(parseMethod, match, Constant(styles))); context.Release(match); }
public override void Compile(ICompileContext context) { if (context.Cut == null) { previous.Compile(context); } else { var success = Label(); context.Child(previous, null, context.Result, success, context.Failure); context.Append(Label(success)); context.Append(Assign(context.Cut, Constant(true))); context.Succeed(); } }
public override void Compile(ICompileContext context) { var success = context.Success ?? Label(); var cut = context.Cache(Constant(false)); foreach (var option in _options) { var savePoint = context.Save(); context.Child(option, null, context.Result, success, savePoint, cut); context.Restore(savePoint); context.Append(IfThen(cut, Goto(context.Failure))); context.Release(savePoint); } context.Release(cut); context.Fail(); if (context.Success == null) { context.Append(Label(success)); } context.Succeed(); }