/// <summary>
        /// Create a new assignment target (variable reference) node.
        /// </summary>
        /// <param name="parent">The parent node that defines this node.</param>
        /// <param name="token">Identifier token containing the name of the variable.</param>
        protected internal AssignmentTargetNode(AssignmentNode parent, IdentifierToken token)
        {
#if DEBUG
            if (parent == null)
            {
                throw new ArgumentNullException("parent");
            }
            if (token == null)
            {
                throw new ArgumentNullException("token");
            }
#endif
            this.Parent = parent;
            this.Token  = token;
        }
 /// <summary>
 /// Create a new assignment target (variable reference) node.
 /// </summary>
 /// <param name="parent">The parent node that defines this node.</param>
 /// <param name="token">Identifier token containing the name of the variable.</param>
 protected internal AssignmentTargetNode(AssignmentNode parent, IdentifierToken token)
 {
     #if DEBUG
     if (parent == null)
         throw new ArgumentNullException("parent");
     if (token == null)
         throw new ArgumentNullException("token");
     #endif
     this.Parent = parent;
     this.Token = token;
 }
示例#3
0
        protected virtual AssignmentNode ParseAssignment(SemanticNode parent, IdentifierToken identifier, AssignmentOperatorToken assignmentOperator)
        {
            // PARSE: <assignment> ::= <assignment target> assignmentOperator <expression>
            //      <assignment target> := identifier
            AssignmentNode result = new AssignmentNode(parent, identifier, assignmentOperator);

            Token token = this.GetNextTokenxx(Preference.NegativeSign);
            ExpressionNode expression = this.ParseExpression(result, token);

            if (expression == null)
                this.ReportParserError(result, SemanticErrors.MissingExpression, token);
            else
                result.SetContents(expression);

            return result;
        }