Exemple #1
0
        public Object VisitAssigmentNode(IAssigmentASTNode assigment)
        {
            IASTNode rightOp = assigment.Expression;

            // if right operator is just an identifier or a value, then assign it immediately
            if (rightOp.Type == E_NODE_TYPE.NT_VALUE)
            {
                int[] assignedValue = (rightOp as IValueASTNode).Value;

                mEnvironment.Assign(assigment.Id.Name, assignedValue);

                return(assignedValue);
            }

            if (rightOp.Type == E_NODE_TYPE.NT_IDENTIFIER)
            {
                string id = (rightOp as IIdentifierASTNode).Name;

                int[] assignedValue = mEnvironment.Get(id);

                mEnvironment.Assign(assigment.Id.Name, assignedValue);

                return(assignedValue);
            }

            // common case
            Object value = assigment.Expression.Accept(this);

            mEnvironment.Assign(assigment.Id.Name, (int[])value);

            return(value);
        }
Exemple #2
0
        public string VisitAssigmentNode(IAssigmentASTNode assigment)
        {
            StringBuilder assigmentStr = new StringBuilder();

            assigmentStr.AppendFormat("{0} <- {1}", assigment.Id.Name, assigment.Expression.Accept(this));

            return(assigmentStr.ToString());
        }