Exemplo n.º 1
0
        private void Assign(Assignment assignment)
        {
            if (assignment.IsSimple)
            {
                if (assignment.IsGlobal)
                {
                    this.env.Modify(
                        assignment.Variable,
                        this.evaluator.Evaluate(assignment.Value, this.env)
                        );
                }
                else
                {
                    this.env.Declcare(
                        assignment.Variable,
                        this.evaluator.Evaluate(assignment.Value, this.env)
                        );
                }
            }
            else
            {
                List <string>   accessor   = assignment.AccesKey;
                ExpressionValue MainObject = this.env.Get(accessor [0]) as ExpressionValue;

                for (int i = 1; i < accessor.Count - 1; i++)
                {
                    MainObject = MainObject.GetProperty(accessor [i]);
                }

                MainObject.SetProperty(
                    accessor [accessor.Count - 1],
                    this.evaluator.Evaluate(assignment.Value, env)
                    );
            }
        }