Current definition is:
<calc-size()> = calc-size( <calc-size-basis>, <calc-sum> )
<calc-size-basis> = [ <size-keyword> | <calc-size()> | any | <calc-sum> ]
And in prose:
Within the calc-size calculation, if the calc-size basis is not any, the keyword size is allowed. This keyword is a <length>, and resolves at used value time.
If I am reading the spec correctly we could also define the syntax as:
<calc-size()> = calc-size( [ [ <calc-size-basis> , [ <calc-sum> | size ] ] | [ any , <calc-sum> ] ] )
<calc-size-basis> = [ <size-keyword> | <calc-size()> | <calc-sum> ]