[p++];
if(ch=='=') //:=
{
syn=18;
token[m++]=ch;
}
else //:
{
syn=17;
p--;
}
break;
case '+':
ch=prog[p++];
if(ch>='0'&;&;ch<='9') //数字(2)
{
sum=0;
while(ch>='0'&;&;ch<='9')
{
sum=sum*10+ch-'0';
ch=prog[p++];
}
if(ch=='.') //有小数点
{
e=-1;
ch=prog[p++];
if(ch>='0'&;&;ch<='9')
{
while(ch>='0'&;&;ch<='9')
{
sum=sum+(ch-'0')*pow(10,e--);
ch=prog[p++];
}
}
}
if(ch=='e'||ch=='E') //有e
{
e=0,f=1;
ch=prog[p++];
if(ch=='+')
{
f=1;
ch=prog[p++];
}
else if(ch=='-')
{
f=-1;
ch=prog[p++];
}
if(ch>='0'&;&;ch<='9')
{
while(ch>='0'&;&;ch<='9')
{
e=e*10+ch-'0';
ch=prog[p++];
}
}
e=e*f;
sum=sum*pow(10,e);
}
p--;
syn=11;
}
else //+
{
syn=13;
p--;
ch=prog[p-1];
token[0]=ch;
}
break;
case '-':
ch=prog[p++];
if(ch>='0'&;&;ch<='9') //数字(3)
{
sum=0;
while(ch>='0'&;&;ch<='9')
{
sum=sum*10+ch-'0';
ch=prog[p++];
}
if(ch=='.') //有小数点
{
e=-1;
ch=prog[p++];
if(ch>='0'&;&;ch<='9')
{
while(ch>='0'&;&;ch<='9')
{
sum=sum+(ch-'0')*pow(10,e--);
ch=prog[p++];
}
}
}
if(ch=='e'||ch=='E') //有e
{
e=0,f=1;
ch=prog[p++];
if(ch=='+')
{
f=1;
ch=prog[p++];
}
else if(ch=='-')
{
f=-1;
ch=prog[p++];
}
if(ch>='0'&;&;ch<='9')
{
while(ch>='0'&;&;ch<='9')
{
e=e*10+ch-'0';
ch=prog[p++];
}
}
e=e*f;
sum=sum*pow(10,e);
}
sum=-sum;
p--;
syn=11;
}
else //-
{
syn=13;
p--;
ch=prog[p-1];
token[0]=ch;
}
break;
case '*': syn=15;token[0]=ch;break;
case '/': syn=16
;token[0]=ch;break;
case '=': syn=25;token[0]=ch;break;
case ';': syn=26;token[0]=ch;break;
case '(': syn=27;token[0]=ch;break;
case ')': syn=28;token[0]=ch;break;
case '#': syn=0;token[0]=ch;break;
default: syn=-1;
}
}