May be that ConTeXt is not a 'context free language' ;-)
than it will be difficult to express something in a BNF grammar
http://en.wikipedia.org/wiki/Backus-Naur_form.
But if (ConTeXt == formal_language), it should be possible to
develop TEXT, NUMBER, DIMENSION, REFERENCE, etc
and also to add examples for "[optional user data]".