Syntax of derived tag expressions, that are applied to a tagset:

Expr :=   tag			True if tag exists in the set
	| ! Expr		Opposite of the result of Expr
	| ( Expr )		Same value of Expr
	| ( Expr || Expr )	True if one of Expr is true
	| ( Expr && Expr )	True if both Expr are true

During parsing, if a tag refer to a derived tag, the derived tag expression is
substituted to it.  This opens the possibility of introducing circular loops of
tag expressions, and if present, they will be broken in unpredictable ways.

TODO:
 - Need help in sanitizing the bison and flex code so that they won't pollute
   the namespace with their yy* cruft.  This is needed to enable the code to be
   included in some library without further headaches.
