/// <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; }
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; }