Theoretically i view shaping and policing in pretty much the same way. CIR is he allowed rate over a second, Bc is the maximum number of bits allow in a given time interval and Tc is the time interval i.e. a fraction of 1 second.

Tc = Bc/CIR

In any give time interval Tc you can send a burst of Bc, over a 1 second period that will allow a rate of CIR. Following this rule, shaping will buffer the excess, policing will drop the excess. I find the leaky bucket concept confusing and i don't see any real point in differentiating between policing and shaping. The concept that policing doesn't have Tc and it uses packet arrival rate times the CIR to replenish tokens is just a complicated analogy as opposed to, i can send this amount of bits in this time interval.

What i do find interesting is how this is implemented in the real world, as an example take the 6500 with a PFC. Tc is fixed to a predefined hardware interval 1/4000sec i.e. .25ms.This no longer adheres to the Tc = Bc/CIR rule as Tc is now fixed and Bc and CIR are randomly selected by the user.
In this case every Tc i.e. .25ms CIR/4000 bits can be sent. Bc in this case just becomes an extended Be, taking into account for random bursts. Due to this fixed Tc, and Bc becoming an extension of Be, it makes the concept of Be pointless in this scenario.