StatementExpression is described in the same specification document as Expression Statements.
I would like to quote this passage specifically:
Certain kinds of expressions may be used as statements by following them with semicolons.
Unlike C and C++, the Java programming language allows only certain
forms of expressions to be used as expression statements.
ParExpression is described as Parenthesized Expressions and Primary Expressions.
A parenthesized expression is a primary expression whose type is the
type of the contained expression and whose value at run time is the
value of the contained expression. If the contained expression denotes
a variable then the parenthesized expression also denotes that
The use of parentheses affects only the order of evaluation, except
for a corner case whereby (-2147483648) and (-9223372036854775808L)
are legal but -(2147483648) and -(9223372036854775808L) are illegal.
About your question:
Why have this and other redundant rules in the grammar?
They are not redundant, that is a mistake in the document, they are different types of expressions. See the grammar for the next version: