您的位置:首页 > 编程语言 > C语言/C++

C语言解释器-9 控制结构之if

2013-03-28 16:47 323 查看
勿庸质疑,说到控制结构,首先会想到if。其实现应如下所示:

public class IfThen : ControlFlow
    {
        public Expression.ExpressionNode Condition;

        public Block ThenClause
        {
            get { return Children.Count > 0 ? Children.First() as Block: null; }
        }

        public Block ElseClause
        {
            get { return Children.Count > 1 ? Children.Last() as Block: null; }
        }


运行时处理则应该如下:

public override void Run(Context ctx)
        {
            Debug.WriteLine("if(" + Condition.ToString() + ")");
            
            Expression.Operand.Operand condVal = Condition.Evaluate(this);

            Debug.WriteLine("Condition=" + condVal.GetValue(this).ToString());

            if (condVal.GetValue(this).AsInt != 0)
            {
                if (ThenClause != null)
                {
                    Debug.WriteLine("Then");
                    ThenClause.Run(this);
                }
            }
            else
            {
                if (ElseClause != null)
                {
                    Debug.WriteLine("Else");
                    ElseClause.Run(this);
                }
            }
        }


看起来相当简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: