scan def ( out>):
        "(", white stuff, scan def ( out>),
        ")", white stuff, ->;
scan def ( DefAtom * atorig * atnm * atptyp * atctyp>):
        "DefAtom", white stuff,
        scan orig (atorig>),
        scan symbol (atnm>),
        where (>atnm , STRING * name>),
        add to (>name,>empty,>empty),
        scan partyp list (atptyp>),
        scan typ (atctyp>),  ->;
scan def ( DefBasetype * baseorig * basename>):
        "DefBasetype", white stuff,
        scan orig (baseorig>),
        scan symbol (basename>),
        where (>basename , STRING * name>),
        add to (>name,>empty,>empty),  ->;
scan def ( DefVal * valorig * valnm * valtyp * valas>):
        "DefVal", white stuff,
        scan orig (valorig>),
        scan symbol (valnm>),
        where (>valnm , STRING * name>),
        add to (>name,>empty,>empty),
        scan typ (valtyp>),
        scan val (valas>),  ->;
scan def ( DefCon * conorig * defcon * conas>):
        "DefCon", white stuff,
        scan orig (conorig>),
        scan val (defcon>),
        scan val (conas>),  ->;
scan def ( DefTyp * typorig * typnm * typas>):
        "DefTyp", white stuff,
        scan orig (typorig>),
        scan symbol (typnm>),
        where (>typnm , STRING * name>),
        add to (>name,>empty,>empty),
        scan typ (typas>),  ->;
scan def ( DefErr * msg>):
        "DefErr", layout,
        scan string (msg>).
scan partyp ( out>):
        "(", white stuff, scan partyp ( out>),
        ")", white stuff, ->;
scan partyp ( PTInt>):
        "PTInt", white stuff,  ->;
scan partyp ( PTFlo>):
        "PTFlo", white stuff,  ->;
scan partyp ( PTStr>):
        "PTStr", white stuff,  ->;
scan partyp ( PTBool>):
        "PTBool", white stuff,  ->;
scan partyp ( PTErr * msg>):
        "PTErr", white stuff,
        scan string (msg>).


scan typ ( out>):
        "(", white stuff, scan typ ( out>),
        ")", white stuff, ->;
scan typ ( TypBase * basenm>):
        "TypBase", white stuff,
        scan symbol (basenm>),  ->;
scan typ ( TypIn * ityp>):
        "TypIn", white stuff,
        scan typ (ityp>),  ->;
scan typ ( TypOut * otyp>):
        "TypOut", white stuff,
        scan typ (otyp>),  ->;
scan typ ( TypUni * uityp * uotyp>):
        "TypUni", white stuff,
        scan typ (uityp>),
        scan typ (uotyp>),  ->;
scan typ ( TypNon * nontyp>):
        "TypNon", white stuff,
        scan typ (nontyp>),  ->;
scan typ ( TypProd * ptypes>):
        "TypProd", white stuff,
        scan typ list (ptypes>),  ->;
scan typ ( TypSym * sym>):
        "TypSym", white stuff,
        scan symbol (sym>),  ->;
scan typ ( TypErr * msg>):
        "TypErr", layout,
        scan string (msg>).


scan formcon ( out>):
        "(", white stuff, scan formcon ( out>),
        ")", white stuff, ->;
scan formcon ( FCList * l>):
        "FCList", white stuff,
        scan formcon list (l>),  ->;
scan formcon ( FCSym * sym>):
        "FCSym", white stuff,
        scan symbol (sym>),  ->;
scan formcon ( FCComp * fcfirst * fcrest>):
        "FCComp", white stuff,
        scan formcon (fcfirst>),
        scan formcon (fcrest>),  ->;
scan formcon ( FCErr * msg>):
        "FCErr", layout,
        scan string (msg>).
