You can&#x27;t assign a category to the tokens in something like &quot;T * p&quot; unless you know whether &quot;T&quot; is a type or not. Suppose you have the following line of code:<p><pre><code>    T *p;
</code></pre>
It means one thing if it were preceded by this, making the line a variable declaration:<p><pre><code>    struct T;
    typedef struct T T;
</code></pre>
It means quite another if it were preceded by this, making the line an expression:<p><pre><code>    int T=5,p=0;
</code></pre>
(This particular problem also affects C.)