I think DrYap is correct.
x = + + a + + + a + + + 5;
matches with:
x = + (+ a) + (+ (+ a)) + (+ (+ 5));
The key points here are:
1) c, C ++ do not have + as a postfix operator, so we know that we should interpret it as a prefix
2) monadic + binds more rigidly (higher priority) than dyadic +
It's funny, isn't it? If it were - signs, it would not look so strange. Monadic +/- is simply a leading character, or, to put it another way, "+ x" matches "0 + x".
source
share