

walk def list (>i, >LIST * walk def*walk def els ,#
                     i+"["+show def+show def els +i+"]">):
	walk def(>i+I+I,>walk def,show def>),->,
	walk def els (>i,>walk def els ,show def els >);
walk def list (>i,>LIST*empty,i+"[]">):.

walk def els (>i,>walk def * walk def els ,","+show def+show def els >):
	walk def(>i+I+I,>walk def,show def>),->,
	walk def els (>i,>walk def els ,show def els >);
walk def els (>i,>empty,empty>):.

walk orig(>i,> TUPLE * file * line," ("+show file+", "+show line+" ) ">):
	walk string (>i+I,>file,show file>),
	walk inum (>i+I,>line,show line>).

walk partyp list (>i, >LIST * walk partyp*walk partyp els ,#
                    i+"["+show partyp+show partyp els +i+"]">):
	walk partyp(>i+I+I,>walk partyp,show partyp>),->,
	walk partyp els (>i,>walk partyp els ,show partyp els >);
walk partyp list (>i,>LIST*empty,i+"[]">):.

walk partyp els (>i,>walk partyp * walk partyp els ,#
               ","+show partyp+show partyp els >):
	walk partyp(>i+I+I,>walk partyp,show partyp>),->,
	walk partyp els (>i,>walk partyp els ,show partyp els >);
walk partyp els (>i,>empty,empty>):.

walk typ list (>i, >LIST * walk typ*walk typ els ,#
                     i+"["+show typ+show typ els +i+"]">):
	walk typ(>i+I+I,>walk typ,show typ>),->,
	walk typ els (>i,>walk typ els ,show typ els >);

walk typ list (>i,>LIST*empty,i+"[]">):.

walk typ els (>i,>walk typ * walk typ els ,","+show typ+show typ els >):
	walk typ(>i+I+I,>walk typ,show typ>),->,
	walk typ els (>i,>walk typ els ,show typ els >);
walk typ els (>i,>empty,empty>):.

walk formcon list (>i, >LIST * walk formcon*walk formcon els ,#
                       i+"["+show formcon+show formcon els +i+"]">):
	walk formcon(>i+I+I,>walk formcon,show formcon>),->,
	walk formcon els (>i,>walk formcon els ,show formcon els >);

walk formcon list (>i,>LIST*empty,i+"[]">):.

walk formcon els (>i,>walk formcon * walk formcon els,#
                       ","+show formcon+show formcon els >):
	walk formcon(>i+I+I,>walk formcon,show formcon>),->,
	walk formcon els (>i,>walk formcon els ,show formcon els >);
walk formcon els (>i,>empty,empty>):.

walk val list (>i, >LIST * walk val*walk val els,#
                     i+"["+show val+show val els +i+"]">):
	walk val(>i+I+I,>walk val,show val>),->,
	walk val els (>i,>walk val els ,show val els >);
walk val list (>i,>LIST*empty,i+"[]">):.

walk val els (>i,>walk val * walk val els ,","+show val+show val els >):
	walk val(>i+I+I,>walk val,show val>),->,
	walk val els (>i,>walk val els ,show val els >);
walk val els (>i,>empty,empty>):.

walk parval list (>i, >LIST * walk parval*walk parval els ,#
                     i+"["+show parval+show parval els +i+"]">):
	walk parval(>i+I+I,>walk parval,show parval>),->,
	walk parval els (>i,>walk parval els ,show parval els >);
walk parval list (>i,>LIST*empty,i+"[]">):.

walk parval els (>i,>walk parval * walk parval els ,#
                    ","+show parval+show parval els >):
	walk parval(>i+I+I,>walk parval,show parval>),->,
	walk parval els (>i,>walk parval els ,show parval els >);
walk parval els (>i,>empty,empty>):.


walk i num (>i,>I NUM * i num," "+NUM>) : 
       more i num (>inum , NUM>),->;
walk i num (>i,>I NUM * nan,"NaN"+quote+nan+quote>) : set exit code. 

more i num (>"_"+x , "-"+x>): ->;
more i num (>x , x>): .


walk f num (>i,> F NUM *IS F NUM," "+IS F NUM>) : ->;
walk f num (>i,> F NUM *nan," NaN"+quote +nan +quote>) : set exit code.

IS F NUM ::@ is f num.

F ::@ must include decimal point.

is f num ("-"+F>): "_", !01234567890.eE-+!*(F>), ->;
is f num (F>):  !01234567890.eE-+!*(F>).

must include decimal point (f+".0">):
 ^!.!* (f>), end of sentence, ->;
must include decimal point (f>):
  ^!! * (f>).
