#define j(n,r,i) A*n=R(r[i].a);// #define E X("syntax error\n",1)// #define d(n) A*n(A*x,A*y)// #define k(d,v) D(d);e v;// #define F X("fail\n",-1)// #define h(n) A*n(A*x)// #include // #define u(n) n[0].l// #include // #define w union A// #define e return// #define N 5// #define q c=getc(p)// #define o(i,v) [i]={[1].p=v},// #define m(i,I,n) [i]={{I},[1].l=n},// #define g(n) A*r=C(&(A){.l=n});r[1].a=// #define s(x,y,i,q,n,o) if(x[3].a){if(u(x)==rT||u(x)==rC){i;if(q)k(y,x)}g(n)y;o;r[3].a=x;e r;}// // void X(char*f,int r){ fputs(f,stderr);exit(r);}typedef w{w* (*t) (w*x);w* (*l) (w*x,w*y);w*a;long long p;}A;h(R) {x[N-1].p++;e x;}h(Ch) ;h(Y) ;h(fA) ;d(fD) ;d(fT) ;d(fW) ;d(fCh) ;d(rA2) ;d(fA2) ;d(rY2) ;d(Y2) ;d(rS2) ;d(fS22) ;d(rD) ;d(rE) ;d(rT) ;d(rC) ;void D(A*f) {if(f&&!--f[N-1].p) {if(u(f)!=fW&&u(f)!=fCh) D(f[1].a);if(u(f)!=fT) D(f[2].a);if(u(f)!=rE&&u(f)!=rT&&u(f)!=rC) D(f[3].a);free(f);}}int ch=EOF,c;FILE*p;A T[256][2];void U(void) {do{if(c==EOF) e;if(T[c][0].t) e;if(!T[c][1].p) E;if(T[c][1].p==4) for(/**??/ / q;c!='\n'&&c!=EOF;q);q;}while(1);}A*I(void){if(c==EOF)E;A*f=T[c];if (f[0].t!=Ch){q;U();}e f[0].t(&f[1]);}h(C){A*r=malloc(sizeof(A[N])); if(!r) X("memory error\n",-2); r[0]=*x; for(int i=1;i