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) { 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(); }