コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }