Beispiel #1
0
        private MidExp SimplifyLabelExpImpl(
            MidLabelExp labelExp,
            MidBreakExp breakExp,
            SimplifyEnv env)
        {
            if (labelExp.Label == breakExp.Label)
            {
                return(breakExp.Value);
            }

            return(labelExp);
        }
        private EmitValHLSL EmitExpImpl(MidBreakExp exp, Span span)
        {
            var value = EmitVal(exp.Value, span);

            Label label;
            if (_labels.TryGetValue(exp.Label, out label))
            {
                label.Emit(value, span);
                return VoidVal;
            }

            var topLabel = _nestedLabels.Peek();
            if (topLabel is BreakLabel)
            {
                var breakLabel = (BreakLabel)topLabel;
                if (breakLabel.MidLabel == exp.Label)
                {
                    breakLabel.Emit(value, span);
                    return VoidVal;
                }
            }

            Diagnostics.Add(
                Severity.Error,
                exp.Range,
                "Control flow to complex for HLSL emit. Sorry.");
            return new ErrorValHLSL();
        }
 public void PreEmitExpImpl(
     MidBreakExp exp,
     Span span)
 {
     PreEmitExp(exp.Value, span);
 }
Beispiel #4
0
 private void TransformChildrenImpl(
     MidBreakExp exp)
 {
     exp.Value = Transform(exp.Value);
 }
        private MidExp SimplifyLabelExpImpl(
            MidLabelExp labelExp,
            MidBreakExp breakExp,
            SimplifyEnv env)
        {
            if (labelExp.Label == breakExp.Label)
            {
                return breakExp.Value;
            }

            return labelExp;
        }
 private void TransformChildrenImpl(
     MidBreakExp exp)
 {
     exp.Value = Transform(exp.Value);
 }