}
}
{
case DIGIT: p=p*10+d;CurrentState=6;break; default: report_error(1);Class=0; }
CurrentState=EndState;
break;
{
case DIGIT:p=p*10+d;break;
default: FCON=(float)w*pow(10,e*p-n);Class=ClassF;CurrentState=EndState; }
case 6:switch (symbol)
break;
return CurrentState;
int LEX (FILE *fp) { }
//*****************浮点数部分代码*********
int out(int n,char *p) {
int t=0; switch(n) {
case 1:printf(\,rw[n-1].Word);t=1;break; case 2:printf(\,rw[n-1].Word);t=2;break; case 3:printf(\,rw[n-1].Word);t=3;break; case 4:printf(\,rw[n-1].Word);t=4;break; case 5:printf(\,rw[n-1].Word);t=5;break; case 6:printf(\,p);t=6;break; case 7:printf(\,ICON);t=7;break; case 8:printf(\);t=8;break; case 9:printf(\);t=9;break; case 10:printf(\);t=10;break; case 11:printf(\);t=11;break; int ch;
CurrentState=0;
while (CurrentState!=EndState){ }
return Class;
ch=GetChar(fp);
EXCUTE (CurrentState,ch);
}
case 12:printf(\);t=12;break; case 13:printf(\);t=13;break; case 14:printf(\);t=14;break; case 15:printf(\);t=15;break; case 16:printf(\);t=16;break; case 17:printf(\);t=17;break; case 18:printf(\);t=18;break;
case 27:printf(\,FCON);return 27;break; case 28:printf(\);t=28;break; case 29:printf(\);t=29;break; case 30:printf(\);t=30;break; default : t=report_error(3); } return t;
break;
int scanner_example (FILE *fp) {
char ch; int i, c,t; lf=l;
ch=fgetc(fp); l+=1;
if (isalpha(ch)) /*it must be a identifer!*/ {
TOKEN[0]=ch; ch=fgetc(fp); l+=1; i=1;
while(isalnum(ch)) { }
TOKEN[i]='\\0'; c=lookup (TOKEN); if (c==0)
t=out (ID,TOKEN); t=out (c,\); else
fseek(fp,-1,1);
TOKEN[i]=ch; i++; ch=fgetc(fp); l+=1;
}
l-=1;
else if(isdigit(ch)||ch=='.'){ }
else switch(ch){ l+=1;
if(ch=='=')t=out(LE,\); else if(ch=='>') t=out (NE,\); else{ } break; break; l+=1; if(ch=='=') } break; l+=1; if(ch=='=')
t=out(GE,\); fseek(fp,-1,1); l-=1;
t=out(GT,\); else{
fseek(fp,-1,1); l-=1;
t=out (LT,\); TOKEN[0]=ch; fseek(fp,-1,1); l-=1;
int k=LEX(fp); if(k==ClassF) { }
else if(UINT==k) { }
fseek(fp,-1,1); l-=1;
t=out(UINT,\); t=out(UFCON,\);
case '<': ch=fgetc(fp);
case '=': t=out(EQ, \); case '>': ch=fgetc(fp);
case ':': t=ch=fgetc(fp);
}
t=out(IS,\); fseek(fp,-1,1); t=report_error(2); l-=1; break;
else {
case '+':t=out(ADD,\);break; case '-':t=out(SUB,\);break; case '*':t=out(MUL,\);break; case '/':t=out(DIV,\);break; case '(':t=out(LP,\);break; case ')':t=out(RP,\);break; case '#':t=out(EOI,\);break;
default: t=report_error(3); }
int IsVt(int a) { }
/*存储算符优先关系表,大于为,小于或等于为-1,其它为表示出*/ int changchartoint(FILE *fp) /*将字符转为数字,以得到算符优先值*/ {
int t; char ch; lf=l;
ch=fgetc(fp); coor(ch);
if(ch==EOF) t=20; while(ch!=EOF) {
if(ch==' '||ch==9||ch==10){
ch=fgetc(fp); coor(ch);
if(ch==EOF) return 20;
if(a==0||a==1||a==2||a==3||a==4||a==5||a==6||a==7||a==8||a==9)
return RIGHT; return ERROR; else break; }
return t;
}
}
} else{ }
fseek(fp,-1,1); l-=1;
switch(scanner_example(fp)){ case ADD:t=0;break; case SUB:t=1;break; case MUL:t=2;break; case DIV:t=3;break; case LP:t=4;break; case RP:t=5;break; case ID:t=6;break; case UINT:t=7;break; case UFCON:t=7;break; case IS:t=8;break; case EOI:t=9;break; case 10:t=10;break; }
break;
return t;
void changinttochar(int t){ }
switch(t){
case 0:printf(\);break; case 1:printf(\);break; case 2:printf(\);break; case 3:printf(\);break; case 4:printf(\);break; case 5:printf(\);break; case 6:printf(\);break; case 7:printf(\);break; case 8:printf(\);break; case 9:printf(\);break; case 10:printf(\);break; }

