Languages like c# define unary operator +/- that can be applied not only to numbers but to expressions, like:
In this case, allowing signed numbers introduces ambiguity. How the string "-3" should be parsed? - as a signed number or as an unary expression "unop + expr", where expr is unsigned number "3"?
To avoid this ambiguity, numbers in c# and most other languages are defined as unsigned.
Why we need this signed flag for numbers then?
There are cases when language allows only numbers in some places, and number can be preceded with sign. In this case it would be a trouble to define an extra unary expression rule just for this, so Irony provides this shortcut.