ast.ExprNode ParseExpressionAssignment(ParseContext ctx) { // Parse the LHS var lhs = ParseExpressionTernary(ctx); // Parse all consecutive RHS while (true) { // Check operator at same precedence level if (t.token >= Token.assign && t.token <= Token.bitwiseAndAssign) { // Save the operator token var bmk = t.GetBookmark(); t.Next(); // Parse the RHS and join to the LHS with appropriate operator. lhs = new ast.ExprNodeAssignment(bmk, lhs, ParseExpressionTernary(ctx), bmk.token); } else { return(lhs); } } }
ast.ExprNode ParseExpressionAssignment(ParseContext ctx) { // Parse the LHS var lhs = ParseExpressionTernary(ctx); // Parse all consecutive RHS while (true) { // Check operator at same precedence level if (t.token>=Token.assign && t.token<=Token.bitwiseAndAssign) { // Save the operator token var bmk = t.GetBookmark(); t.Next(); // Parse the RHS and join to the LHS with appropriate operator. lhs = new ast.ExprNodeAssignment(bmk, lhs, ParseExpressionTernary(ctx), bmk.token); } else return lhs; } }