布尔表达式的翻译程序设计 下载本文

int tcount=0; int wcount=0;

char *rwtab[9]={\class tuidao { public: char a[10]; char b[10]; char c[10]; char d[10];

void emit(char *m,char *n,char *p,char *q);

void print() {cout<

}t[100];

void tuidao::emit(char *m,char *n,char *p,char *q) {

strcpy(a,m); strcpy(b,n); strcpy(c,p); strcpy(d,q);

}

class interpreter {

private: ifstream SourceFile; char buffercode[200]; int syn; int current;

char token[8];

9

public: void scaner(); void B(); void B1(); void T(); void F(); void T1(); void run(); void read(); void bolon(); void toword(); char *unit(); char *expression(); char *term(); void bolan(); void reset() { current=0;

};

void run1() {

scaner(); expression();

};

};

void bolan() { strcpy(n.nibolan[tear].w,q[0].arg1);tear++;

strcpy(n.nibolan[tear].w,q[0].arg2);tear++;

10

strcpy(n.nibolan[tear].w,q[0].op);tear++; for(int i=0;i

for (int j=i-1;j>=0;j--) {

if (strcmp(q[i].arg1,q[j].result)==0) {

if

(strcmp(q[i].arg2,q[j+1].result)==0)

{strcpy(n.nibolan[tear].w,q[i].op);tear++;break;}

} if

else {

strcpy(n.nibolan[tear].w,q[i].arg2);tear++; strcpy(n.nibolan[tear].w,q[i].op);tear++; break; }

((strcmp(q[i].arg1,q[j].result)!=0)&&(strcmp(q[i].arg2,q[j+1].result)==0))

{ } if

strcpy(n.nibolan[tear].w,q[i].op);tear++; strcpy(n.nibolan[head].w,q[i].arg1);head--; break;

((strcmp(q[i].arg1,q[j].result)!=0)&&(strcmp(q[i].arg2,q[j].result)!=0))

{

strcpy(n.nibolan[tear].w,q[i].arg1);tear++;

11

strcpy(n.nibolan[tear].w,q[i].arg2);tear++; strcpy(n.nibolan[tear].w,q[i].op);tear++; break;

}

}

}

}

void interpreter::toword() { current=0; int i=0;

while (buffercode[current]!='#') { scaner();

strcpy(wr[wcount].w,token); wcount++; i++;

}

};

void interpreter::read() { cin.getline(buffercode,200); cout<

}

void interpreter::run() { current=0;

{

12