<>) are defined elsewhere.
<name>
   identifier
<qualified-name>
The following list describes expression syntax:
<name>
   identifier
<qualified-name>
<typedef-name>
   identifier
<class-name>
   identifier
<qualified-name>
   <qualified-class-name>::<name>
<qualified-class-name>
   <class-name>
<class-name>::<qualified-class-name>
<complete-class-name>
   <qualified-class-name>
:: <qualified-class-name>
<qualified-type-name>
   <typedef-name>
<class-name>::<qualified-type-name>
<simple-type-name>
   <complete-class-name>
<qualified-type-name>
char
short
int
long
signed
unsigned
float
double
void
<ptr-operator>
   *
&
<type-specifier>
   <simple-type-name>
<type-specifier-list>
   <type-specifier> <type-specifier-list>(opt)
<abstract-declarator>
   <ptr-operator> <abstract-declarator>(opt)
(<abstract-declarator>)
<type-name>
   <type-specifier-list> <abstract-declarator>(opt)
<literal>
   integer-constant
character-constant
floating-constant
string-literal
<register-name>
   ¨PC
¨SP
¨Dnumber
¨Anumber
<register-name>
   ¨Rnumber
¨FPnumber
¨RTOC
<register-name>
   $PC
$SP
$RTOC
$Anumber
NOTE
NOTE
<primary-expression>
   <literal>
this
::identifier
::<qualified-name>
(<expression>)
<name>
<register-name>
<postfix-expression>
   <primary-expression>
<postfix-expression>[<expression>]
<postfix-expression>.<name>
<postfix-expression>-><name>
<unary-operator>
   *
&
+
-
!
~
<unary-expression>
   <postfix-expression>
<unary-operator> <cast-expression>
sizeof <unary-expression>
sizeof(<type-name>)
<cast-expression>
   <unary-expression>
(<type-name>)<cast-expression>
<multiplicative-expression>
   <cast-expression>
<multiplicative-expression> * <cast-expression>
<multiplicative-expression> / <cast-expression>
<multiplicative-expression> % <cast-expression>
<additive-expression>
   <multiplicative-expression>
<additive-expression> + <multiplicative-expression>
<additive-expression> - <multiplicative-expression>
<shift-expression>
   <additive-expression>
<shift-expression> << <additive-expression>
<shift-expression> >> <additive-expression>
<relational-expression>
   <shift-expression>
<relational-expression> < <shift-expression>
<relational-expression> > <shift-expression>
<relational-expression> <= <shift-expression>
<relational-expression> >= <shift-expression>
<equality-expression>
   <relational-expression>
<equality-expression> == <relational-expression>
<equality-expression> != <relational-expression>
<and-expression>
   <equality-expression>
<and-expression> & <equality-expression>
<exclusive-or-expression>
   <and-expression>
<exclusive-or-expression> ^ <and-expression>
<inclusive-or-expression>
   <exclusive-or-expression>
<inclusive-or-expression> | <exclusive-or-expression>
<logical-and-expression>
   <inclusive-or-expression>
<logical-and-expression> && <inclusive-or-expression>
<logical-or-expression>
   <logical-and-expression>
<logical-or-expression> || <logical-and-expression>
<conditional-expression>
   <logical-or-expression>
<logical-or-expression> ? <expression> : <conditional-expression>
<expression>
   <conditional-expression>