The grammar for uC++ can be represented by editing the grammar for C++ listed
in Chapter 17 of "The Annotated C++ Reference Manual" by Ellis and Stroustrup.

The ellipsis in the following rules represent the productions listed in the C++
grammar.

uC++ keywords begin with a lower case 'u' followed by some upper case letter.

type-qualifier:
	...
	uMutex
	uNoMutex

class-key:
	...
	uCoroutine
	uTask
	uException
	uDualEvent
	uRaiseEvent
	uThrowEvent
	uRealTimeTask
	uPeriodicTask
	uSporadicTask

statement:
	...
	wait-statement
	signal-statement
	suspend-statement
	resume-statement
	accept-statement
	throw-statement
	disable-statement
	enable-statement

wait-statement:
	uWait expression ;
	uWait expression uWith expression ;

signal-statement:
	uSignal expression ;
	uSignalBlock expression ;

suspend-statement:
	uSuspend ;

resume-statement:
	uResume ;

accept-statement:
	uWhen ( expression ) uAccept ( dname ) statement
	uWhen ( expression ) uAccept ( dname ) statement uOr accept-statement
	uWhen ( expression ) uAccept ( dname ) statement uTimeout ( expression ) statement
	uWhen ( expression ) uAccept ( dname ) statement uElse statement
	uWhen ( expression ) uTimeout ( expression ) statement
	uAccept ( dname ) statement
	uAccept ( dname ) statement uOr accept-statement
	uAccept ( dname ) statement uTimeout statement
	uAccept ( dname ) statement uElse statement
	uTimeout ( expression ) statement

throw-statement:
	uThrow expression ;
	uThrow expression uAt expression ;
	uRaise expression ;
	uRaise expression uAt expression ;

disable-statement:
	uDisable statement;

enable-statement:
	uEnable statement;
