Rule assignmentExpression() {
		return Sequence(
				assignmentLHS(), set(),
				assignmentOperator().label("operator"),
				group.basics.optWS(),
				assignmentExpressionChaining().label("RHS"),
				set(actions.createAssignmentExpression(value(), text("operator"), lastValue())));
	}
Rule assignmentExpression ( ) { return Sequence ( assignmentLHS ( ) , set ( ) , assignmentOperator ( ) . label ( "operator" ) , group . basics . optWS ( ) , assignmentExpressionChaining ( ) . label ( "RHS" ) , set ( actions . createAssignmentExpression ( value ( ) , text ( "operator" ) , lastValue ( ) ) ) ) ; }
TODO add checks to see if an LHS that isn't valid for assignment shows up as a syntax error of some sort, e.g. a.b() = 2;