

#include "BUILTIN.h"
extern OBJ _AString_4(OBJ);extern OBJ __AString_4;
extern OBJ _AString_5(OBJ);extern OBJ __AString_5;

#include "Char.h"

#include "Nat.h"
extern OBJ _AStringReduce_2(OBJ,OBJ,OBJ);OBJ __AStringReduce_2; /* / */
extern OBJ _AStringReduce_3(OBJ,OBJ,OBJ);OBJ __AStringReduce_3; /* \ */
extern OBJ _AStringReduce_4(OBJ,OBJ,OBJ);OBJ __AStringReduce_4; /* /,1 */
extern OBJ _AStringReduce_5(OBJ,OBJ,OBJ);OBJ __AStringReduce_5; /* \,1 */

extern OBJ _AStringReduce_2(OBJ x1,OBJ x2,OBJ x3) /* / */
{OBJ r;
 if(ISPRM(x3)){
  FRCLS(x1,1);
  r=x2;
 }else{
  CPCLS(x1,1);
  CPPRD(x3,1);
  {OBJ x14;OBJ x15;OBJ x16;
   x14=_AString_4(x3);
   x15=_AString_5(x3);
   x16=_AStringReduce_4(x1,x2,x14);
   r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x15,x16);}}
 return r;}

extern OBJ _AStringReduce_3(OBJ x1,OBJ x2,OBJ x3) /* \ */
{OBJ r;
 if(ISPRM(x3)){
  FRCLS(x1,1);
  r=x2;
 }else{
  CPCLS(x1,1);
  CPPRD(x3,1);
  {OBJ x14;OBJ x15;OBJ x16;
   x14=_AString_4(x3);
   x15=_AString_5(x3);
   x16=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x15,x2);
   r=_AStringReduce_5(x1,x16,x14);}}
 return r;}

extern OBJ _AStringReduce_4(OBJ x1,OBJ x2,OBJ x3) /* /,1 */
{OBJ r;
 if(ISPRM(x3)){
  FRCLS(x1,1);
  r=x2;
 }else{
  CPCLS(x1,1);
  CPPRD(x3,1);
  {OBJ x14;OBJ x15;OBJ x16;
   x14=_AString_4(x3);
   x15=_AString_5(x3);
   x16=_AStringReduce_4(x1,x2,x14);
   r=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x15,x16);}}
 return r;}

extern OBJ _AStringReduce_5(register OBJ x1,register OBJ x2,register OBJ x3) /* \,1 */
{OBJ r;
 for(;;){
  if(ISPRM(x3)){
   FRCLS(x1,1);
   r=x2;
  }else{
   CPCLS(x1,1);
   CPPRD(x3,1);
   {OBJ x14;OBJ x15;OBJ x16;
    x14=_AString_4(x3);
    x15=_AString_5(x3);
    x16=(*(OBJ(*)(OBJ,OBJ,OBJ))METHOD(x1,2))(x1,x15,x2);
    x2=x16;x3=x14;continue;}}
  break;}
 return r;}

init_AStringReduce()
{
 static int visited=0; if(visited) return; visited=1;
 init_AString();
 init_AChar();
 init_ANat();
 init_ASeq();
 init_AOption();
 CLS(3,_AStringReduce_5,__AStringReduce_5);
 CLS(3,_AStringReduce_4,__AStringReduce_4);
 CLS(3,_AStringReduce_3,__AStringReduce_3);
 CLS(3,_AStringReduce_2,__AStringReduce_2);}

