Haha seems legit...
Must be a pretty difficult grammar rule to setup :)
It's quite tricky when symbols are being used in more than one places of the grammar. A great example in C might be the '*' , which is the multiply symbol and also being used for pointers. The big problem with the generics in Java must have been something similar! The symbols < and > are also being used as relational operators. So, there might have been conflicts between function calls (object constructor actually), objects etc, which of course can also be compared using such relational operator!
Nice topic!