コード例 #1
0
        /// <summary>
        /// Creates a redef expression based on the input of the parser
        /// </summary>
        /// <returns></returns>
        private Expression DerefExpression()
        {
            Expression retVal = null;

            List <Expression> derefArguments = new List <Expression>();
            string            id             = Identifier();

            while (id != null)
            {
                Designator      designator      = new Interpreter.Designator(Root, id);
                Term            term            = new Term(Root, designator);
                UnaryExpression unaryExpression = new UnaryExpression(Root, term);
                derefArguments.Add(unaryExpression);

                id = null;
                if (LookAhead("."))
                {
                    Match(".");
                    id = Identifier();
                }
            }

            if (derefArguments.Count == 1)
            {
                retVal = derefArguments[0];
            }
            else if (derefArguments.Count > 1)
            {
                retVal = new DerefExpression(Root, derefArguments);
            }

            return(retVal);
        }
コード例 #2
0
        /// <summary>
        /// Indicates the name of the checked variable, if any
        /// </summary>
        /// <returns></returns>
        public Interpreter.Designator CheckedVariable()
        {
            Interpreter.Designator retVal = null;

            Interpreter.BinaryExpression binaryExpression = ExpressionTree as Interpreter.BinaryExpression;
            if (binaryExpression != null)
            {
                Interpreter.UnaryExpression unaryExpression = binaryExpression.Left as Interpreter.UnaryExpression;
                if (unaryExpression != null && unaryExpression.Term != null && unaryExpression.Term.Designator != null)
                {
                    retVal = unaryExpression.Term.Designator;
                }
            }

            return(retVal);
        }
コード例 #3
0
        /// <summary>
        /// Creates a redef expression based on the input of the parser
        /// </summary>
        /// <returns></returns>
        private Expression DerefExpression()
        {
            Expression retVal = null;

            List<Expression> derefArguments = new List<Expression>();
            string id = Identifier();
            while (id != null)
            {
                Designator designator = new Interpreter.Designator(Root, id);
                Term term = new Term(Root, designator);
                UnaryExpression unaryExpression = new UnaryExpression(Root, term);
                derefArguments.Add(unaryExpression);

                id = null;
                if (LookAhead("."))
                {
                    Match(".");
                    id = Identifier();
                }
            }

            if (derefArguments.Count == 1)
            {
                retVal = derefArguments[0];
            }
            else if (derefArguments.Count > 1)
            {
                retVal = new DerefExpression(Root, derefArguments);
            }

            return retVal;
        }