#include "precomp.h" #include "gtools.h" // The whole code is based on RESPECT. #define D(x) char*x #define E bool #define F long #define g return #define G else #define h false #define H if #define i true #define I struct #define j typedef #define J for #define k while #define K *b[0].b #define L PString #define l ; #define n -> #define m a n a[ #define M R[11] #define N (C*a){ #define o == #define O atoi #define r(X,Y) E X N g(a n e=O(m 0]),(a n e>=0)&&(a n e<=13))?a n b=Y R[a n e],i:h l } #define S(x) H(x) g h l #define V(x) !a n f||!*a n f||!__(&a n f,&b[x],i) #define X(y,z) E y N C b[2] l a n f=m 0] l S(V(0))a n f=m 1] l S(V(1))S(!b[1].b)S(!b[0].b)z l s(&b[0]) l U(s(&b[1]))} #define v(x,y) X(x,*b[1].b y=K) #define Q(x,y) E x N C b[1] l a n f=m 0] l S(V(0))S(!b[0].b)y l s(&b[0]) l U(s(&b[0]))} #define q(x,y) E x N y l g i l } #define U(x) x l g i l I C l j E ( * c ) ( C * ) l I C { L a [ 2 ] l F * b , e l c d l D ( f ) l } l F R [ 50000 ] l C t [ 931 ] l I T { D ( a ) l c b l } l T B [ ] l E _A( D ( * d ) , F _ , C * f ) { D ( b = * d ) l D ( c = B [ _ ] . a ) l D ( e = 0 ) l f n e = 0 l k ( * c ) { H ( * c o 'x' ||* c o 'y' ) { H ( c [ 1 ] o * b ) { * b = 0 l f n a [ f n e++ ] = e l e = 0 l * b = c [ 1 ] l c +=2 l b++ l } G { H ( ! e ) e = b l b++ l } } G S ( *c!=* b ) G c++ , b++ l } * d = b l f n b = 0 l U ( f n d = B [ _ ] . b ) } E _k( C * a ) l E __( D ( * a ) , C * c , E b ) { J ( F _ = 0 l B [ _ ] . a l _ ++) H ( _A( a , _ , c ) ) g ( b ||( c n d o _k) ) ? c n d ( c ) : i l g h l } E _z( C * a ) { U ( l ) }E _u N U ( ( a n e = O ( m 0 ] ) , a n b = & a n e ) ) } r ( _y, & ) r ( _v, ( F * ) ) r ( _x, ( F * ) ) r ( _w, ( F * ) ) E s ( C * a ) { H ( a n d o _x) R [ a n e ] -=4 l H ( a n d o _w) R [ a n e ] +=4 l g i l } q ( _j, H (R[8737 ] ) M = R [ 28361 + O ( m 0 ] ) ] ) q ( _h, H ( ! R [ 8737 ] ) M = R [28361 + O ( m 0 ] ) ] ) q ( _i, M = R [ 28361 + O ( m 0 ] ) ] ) E _k( C * a ) { U ( R [ 28361 + O ( m 0 ] ) ] = M ) } Q ( _m, K = 0 ) Q ( _l, putchar ( K ) ) Q ( _n, K = ~ K ) E _a( C * a ) { C b [ 2 ] l a n f = m 0 ] l S ( V ( 0 ) ) a n f = m 1 ] l S ( V ( 1 ) ) S ( ! b [ 1 ] . b ) H ( b [ 0 ] . d o _z) { * b [ 1 ] . b = ( F ) & ( R [13 + R [ 12] ] ) l J ( a n f = b [ 0 ] . a [ 0 ] l * a n f l a n f++ ) R [ 13+ R [ 12] ++] = * a n f l R [ 13+ R [ 12] ++] = 0 l } G H ( b [ 0 ] . b ) * b [ 1 ] . b = K , s ( & b [ 0 ] ) l G g h l U ( s ( & b [ 1 ] ) ) } v ( _b, + ) v ( _c , - ) v ( _d, * ) v ( _e, / ) X ( _f , R [ 8737] = ( * b [ 1 ] . b o K ) ) X ( _g, * b [ 1 ] . b = ~ ( * b [ 1 ] . b ) &&~ ( K ) ) T B [ ] = { { "({<",_u},{"(<",_v},{"([",_w},{"({",_x},{"(}",_y},{"[x}",_z},{NULL,0}} l int main( int argc, char* argv[] ) { static char szSampleCode[] = "({<<[Brackets!}](<0>)" // move "Brackets!",R0 "((}<(<1>)" // clear R1 "(([<1)" // declare label 1 "({<<([<0>](<2>)" // move.b (R0)+,R2 "(]<<(<1>](<2>)" // cmp.b r1,r2 "(}<0]" // if equal, goto label 0 "(({<(<2>)" // print.b R2 "((<<1)" // goto label 1 "(([<0)"; // declare label 0 D(a=szSampleCode) l C c l M = 0 l k(*a&&__(&a,&t[M++],h)) l R[8736]=M l J(M=0 l M