Test: mg_4_2

Higher SubleqErrorOutputSubleqITR
int i=+2, j=&j-&i+1;
int a='a', b="abc";
void main()
{
   __out i+48;
   __out j+48;
   __out a;
   __out b[0];
}


22aa

   top:top top sqmain

.  _i:2 _j:((_j-_i)+1)

.  _a:97 _b:c1

_main:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; bp 0
   bp; sp bp
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t1 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t2 0
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; t3 0

   t1; t2; _i t1; c2 t1; t1 t2
   t2 (-1)

   t1; t2; _j t1; c2 t1; t1 t2
   t2 (-1)

   _a (-1)

   t1; t2; _b t1; c3 t1; t1 t2
   t1; t3; ?+11; t2 Z; Z ?+4; Z; 0 t1; t1 t3
   t3 (-1)

   ?+8; sp ?+4; t3; 0 t3; inc sp
   ?+8; sp ?+4; t2; 0 t2; inc sp
   ?+8; sp ?+4; t1; 0 t1; inc sp
   sp; bp sp
   ?+8; sp ?+4; bp; 0 bp; inc sp
   ?+8; sp ?+4; ?+7; 0 ?+3; Z Z 0

sqmain:
   dec sp; ?+11; sp ?+7; ?+6; sp ?+2; 0
   ?+6; sp ?+2; ?+2 0 _main; . ?; inc sp

   Z Z (-1)

. c3:0 c2:48 c1:97 98 99 0

. t1:0 t2:0 t3:0

. inc:-1 Z:0 dec:1 ax:0 bp:0 sp:-sp

Root (mg_4_2.hsq:10)
   Declaration (mg_4_2.hsq:1)
      Keyword [int] (mg_4_2.hsq:1)
      Declarator [=] (mg_4_2.hsq:1)
         Id [i] (mg_4_2.hsq:1)
         Const [2] (mg_4_2.hsq:1)
      Declarator [=] (mg_4_2.hsq:1)
         Id [j] (mg_4_2.hsq:1)
         Additive [+] (mg_4_2.hsq:1)
            Additive [-] (mg_4_2.hsq:1)
               Unary [&] (mg_4_2.hsq:1)
                  Variable [j] (mg_4_2.hsq:1) =:1
               Unary [&] (mg_4_2.hsq:1)
                  Variable [i] (mg_4_2.hsq:1) =:1
            Const [1] (mg_4_2.hsq:1)
   Declaration (mg_4_2.hsq:2)
      Keyword [int] (mg_4_2.hsq:2)
      Declarator [=] (mg_4_2.hsq:2)
         Id [a] (mg_4_2.hsq:2)
         Const ['a'] (mg_4_2.hsq:2)
      Declarator [=] (mg_4_2.hsq:2)
         Id [b] (mg_4_2.hsq:2)
         String [abc] (mg_4_2.hsq:2)
   Function:0 [main] (mg_4_2.hsq:3)
      Keyword [void] (mg_4_2.hsq:3)
      Param-type-list (mg_4_2.hsq:3)
      Block (mg_4_2.hsq:4)
         OperatorIO [__out] (mg_4_2.hsq:5)
            Additive [+] (mg_4_2.hsq:5)
               Variable [i] (mg_4_2.hsq:5) =:1
               Const [48] (mg_4_2.hsq:5)
         OperatorIO [__out] (mg_4_2.hsq:6)
            Additive [+] (mg_4_2.hsq:6)
               Variable [j] (mg_4_2.hsq:6) =:1
               Const [48] (mg_4_2.hsq:6)
         OperatorIO [__out] (mg_4_2.hsq:7)
            Variable [a] (mg_4_2.hsq:7) =:2
         OperatorIO [__out] (mg_4_2.hsq:8)
            Unary [*] (mg_4_2.hsq:8)
               Additive [+] (mg_4_2.hsq:8)
                  Variable [b] (mg_4_2.hsq:8) =:2
                  Const [0] (mg_4_2.hsq:8)