Пример #1
0
        private void GenerateChecks(IPredicate predicate, Context ctx, Assembly asm)
        {
            var relation = predicate as Relation;

            if (relation != null)
            {
                GenerateChecks(relation.Left, ctx, asm);
                GenerateChecks(relation.Right, ctx, asm);
            }
            else
            {
                LastPredicate = predicate;
                predicate.Generate(asm, ctx);
                var labelToJump = predicate.JumpToElse ? Else.BeginLabel : Code.BeginLabel;
                asm.Add($"{predicate.Jump} {labelToJump}");
            }
        }