~
(?<=^|\v)
\h*+\*\h*+
(?:
(?:
(?P<annotation>
@(?P<name>\w++)
(?:
(?<=@param)\h++(?P<type>\w++(?:\[\])?)\h++\$(?P<variable>\w++)
|(?<=@return)\h++(?P<type>\w++(?:\[\])?)
|(?<=@throws)\h++(?P<class>\w++)
|(?<=@cache)\h++(?P<time>\d++)
|(?<=@roles)\h++(?P<roles>\w++(?:\h*+,\h*+\w++)*)
)?
)
)
(?P<comment>\h++[^\v]++)?
(?:(?P<comment>\v)\h*+\*\h*+(?P<comment>[^\v@\h\*][^\v]++))*+
|(?P<description>(?:[^\v@\h\*][^\v]++)