
scan parval els (scan parval * scan parval els >):
        scan parval(scan parval>),
        more scan parval els (scan parval els >), ->;
scan parval els (empty>):.

more scan parval els (scan parval * more scan parval els >):
        ",",layout, 
        scan parval(scan parval>),
        more scan parval els (more scan parval els >), ->;
more scan parval els (empty>):.


white stuff:
        !\n\t !*  (ig>).

layout:
        !\n\t !*  (ig>),
        comment.

comment:
        "||",  ^!\n! * (ign>), layout , ->;
comment: .

scan i num (out >) : "(", white stuff, scan i num(out>),
        ")", white stuff, ->;
scan i num (I NUM * i num>) : !-+0123456789!+(inum>), white stuff,->;
scan i num (NaN *msg>) : "NaN", scan string (msg>).

scan f num (out >) : "(", white stuff, scan f num(out>),
        ")", white stuff, ->;
scan f num (F NUM * ff num>) : ".",->, !+-eE0123456789!+(fnum>), white stuff,
                                where (>"0."+fnum, ff num>);
scan f num (F NUM * f num>) : !.+-eE0123456789!+(fnum>), white stuff,->;
scan f num (NaN *msg>) : "NaN", layout,scan string (msg>).

scan string (out >) : "(", white stuff, scan string(out>),
        ")", white stuff, ->;
scan string (STRING*string>):quote,^!\n"!*(string>),quote,layout.

scan bool (out >) : "(", white stuff, scan bool(out>),
        ")", white stuff, ->;
scan bool (BOOL * True >) : "True", white stuff, ->;
scan bool (BOOL * False >) : "False", white stuff.

scan symbol (out >) : "(", white stuff, scan symbol(out>),
        ")", white stuff, ->;
scan symbol (string>) : scan string (string>).


DefAtom :: "DefAtom".
DefBasetype :: "DefBasetype".
DefVal :: "DefVal".
DefCon :: "DefCon".
DefTyp :: "DefTyp".
PTInt :: "PTInt".
PTFlo :: "PTFlo".
PTStr :: "PTStr".
PTBool :: "PTBool".
TypBase :: "TypBase".
TypIn :: "TypIn".
TypOut :: "TypOut".
TypUni :: "TypUni".
TypNon :: "TypNon".
TypProd :: "TypProd".
TypSym :: "TypSym".
FCList :: "FCList".
FCSym :: "FCSym".
FCComp :: "FCComp".
ParInt :: "ParInt".
ParFlo :: "ParFlo".
ParStr :: "ParStr".
ParBool :: "ParBool".
VSym :: "VSym".
VLambda :: "VLambda".
VSigma :: "VSigma".
VApply :: "VApply".
VWhere :: "VWhere".
VList :: "VList".
VAppset :: "VAppset".
VAtom :: "VAtom".
VSyn :: "VSyn".
VComp :: "VComp".
VInd :: "VInd".
VSlice :: "VSlice".

DefErr :: "DefErr".
PTErr :: "PTErr".
TypErr :: "TypErr".
FCErr :: "FCErr".
ParErr :: "ParErr".
VErr :: "VErr".
I NUM :: "%".
F NUM :: "&".
STRING :: "$".
BOOL :: "?".
 T or F :: @ meta bool (x>).

meta bool (True>): "True", ->;
meta bool (False>): "False".

True :: "True".
False :: "False".

I:: "  ".
N :: nlcr.
S :: " ".
LIST :: "[]".
TUPPLE :: "()".
NaN::"NaN".

%$TEX
\input \jobname.ind
\end{document}
%
