Brackets - the language of a BCC: generation

Welcome to []. The express purpose of this language is to provide MS Outlook with "Active Content" in mail headers. The idea comes from the habit of the members of the esolang news group to encode all their subjects in square brackets and put them in the header, although it can be quite difficult to do so when the subjects are still alive.

Features

Code model

The code model is very simple, and looks like a small assembler:

MoveXtoY
({<<x]y)
AddXtoY
({[<x]y)
SubXFromY
({{<x]y)
MultiplyXWithY
({}<x]y)
DivideXWithY
([(<x]y)
CompareXAndY
(]<<x]y)
NandXToY
(}[<x]y)
GotoLabelXIfNotEqual
(((<x)
GotoLabelX
((<<x)
DeclareLabelX
(([<x)
PrintX
(({<x)
ClearX
((}<x)
NegateX
({(<x)
ImmediateX
((<x>
RegisterXIndirect
(<<x>
RegisterXIndirectIncrement
([<x>
RegisterXIndirectDecrement
({<x>
GotoLabelXIfEqual
(}<x]
RegisterX
(<x>
DeclareDataX
[x}

Here is a typical [] code:

Subject: <>(()[Brackets])<()0)}())[)()0))(]])1)
         <>>([)0)>[0]{(]()2)()))([)0))([])1)(]])2)

SDK

The [] source is a beauty to behold, if I may say so myself:

#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 [ ] = { { "({<<x]y)", _a} , {"({[<x]y)", _b } , { 
"({{<x]y)",_c},{"({}<x]y)",_d},{"([(<x]y)",_e}, {"(]<<x]y)",_f},{"(}[<x]y)",
_g},{"(((<x)",_h},{"((<<x)",_i},{"(([<x)",_k},{"(({<x)",_l},{"((}<x)",_m},{
"({(<x)",_n},{"((<x>",_u},{"(<<x>",_v},{"([<x>",_w},{"({<x>",_x},{"(}<x]",
_j},{"(<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<R[8736] l M++) t[M].d(&t[M]) l 
	
    return 0;
} // main()

You can download the whole package here.