
Wildcard:
    Identifier ":" TypeExpr ("*"?)
TypeExpr:
    BinaryExpr
    | UnaryExpr 
   | PrimitiveExpr 

BinaryExpr: 
    TypeExpr { Operator TypeExpr }*

UnaryExpr:
    {UnaryOperator}? TypeExpr

PrimitiveExpr:
    GroupExpr | Identifier

GroupExpr:
    "(" TypeExpr ")"


