#include "trefal.hh" namespace fab { tfun int Fab (TExpr _ge_arg1, tout Expr _v_res1); } namespace refal { namespace StdIO { int PrintLn (TExpr&); } } namespace fab { int Main (TExpr&); } namespace fab { static GExpr empty; static GExpr _c_3; static GExpr _c_1; static GExpr _c_0; static GExpr _c_2; } namespace fab { int Main (TExpr& _v_res1) { TExpr _ve_1 (TExpr (_c_0).get_ref()); ::refal::StdIO::PrintLn(_ve_1); TExpr _ge_auxcall1; Fab(_ve_1, _ge_auxcall1); TExpr _ge_auxcall2; Fab(TExpr (_c_1).get_ref(), _ge_auxcall2); TExpr _ge_auxcall3; Fab(TExpr (_c_1).get_ref(), _ge_auxcall3); ::refal::StdIO::PrintLn(((_ge_auxcall1 + (_ge_auxcall2 + _ge_auxcall3 ().get_ref()).get_ref()).get_ref())); (Expr&)_v_res1 = (Expr&)TExpr(empty); return 0; } tfun int Fab (TExpr _ge_arg1, tout Expr _v_res1) { { { int _v_len1 = ((Expr&)_ge_arg1).get_len(); int _v_len2 = 1; if (_v_len1 < _v_len2) { goto _block1__branch1; } int _v_len__2 = (_v_len1 - _v_len2); if (!(_c_1[0] == ((Expr&)_ge_arg1)[0])) { goto _block1__branch1; } TExpr _ve_2(_ge_arg1, (0 + 1), _v_len__2); TExpr _v_Fab1; Fab(_ve_2, _v_Fab1); (Expr&)_v_res1 = (Expr&)((TExpr (_c_2).get_ref() + _v_Fab1).get_ref()); goto _block1; } _block1__branch1: {} { int _v_len3 = ((Expr&)_ge_arg1).get_len(); int _v_len4 = 1; if (_v_len3 < _v_len4) { goto _block1__branch2; } int _v_len__22 = (_v_len3 - _v_len4); if (!((Expr&)_ge_arg1).symbol_at(0)) { goto _block1__branch2; } TExpr _vs_1(_ge_arg1, 0, 1); TExpr _ve_2(_ge_arg1, (0 + 1), _v_len__22); TExpr _v_Fab2; Fab(_ve_2, _v_Fab2); (Expr&)_v_res1 = (Expr&)((_vs_1 + _v_Fab2).get_ref()); goto _block1; } _block1__branch2: {} { int _v_len5 = ((Expr&)_ge_arg1).get_len(); int _v_len6 = 1; if (_v_len5 < _v_len6) { goto _block1__branch3; } int _v_len__23 = (_v_len5 - _v_len6); if (((Expr&)_ge_arg1).symbol_at(0)) { goto _block1__branch3; } TExpr _v_deref__arg1(((Expr&)_ge_arg1)[0]); int _v_len7 = ((Expr&)_v_deref__arg1).get_len(); int _v_len8 = 0; if (_v_len7 < _v_len8) { goto _block1__branch3; } int _v_len__1 = (_v_len7 - _v_len8); TExpr _ve_2(_ge_arg1, (0 + 1), _v_len__23); TExpr _ve_1(_v_deref__arg1, 0, _v_len__1); TExpr _ge_auxcall1; Fab(_ve_1, _ge_auxcall1); TExpr _v_Fab3; Fab(_ve_2, _v_Fab3); (Expr&)_v_res1 = (Expr&)((_ge_auxcall1 ().get_ref() + _v_Fab3).get_ref()); goto _block1; } _block1__branch3: {} if (((Expr&)_ge_arg1).get_len() != 0) { { TExpr ex; ((Expr&)ex).init_str("Unexpected fail", 15); throw ex; } } (Expr&)_v_res1 = (Expr&)TExpr(empty); } _block1: {} return 0; } } namespace fab { tfun int init_ () { _c_3 = GExpr(3).add("AEA", 3); _c_1 = _c_3.subexpr(0, 1); _c_0 = GExpr(8).add("ABABA", 5).add(GExpr(5).add("CA", 2).add(GExpr(9).add("A", 1).add(_c_3).add("ADA", 3).add(GExpr(3).add("EA", 2).add(_c_1)).add("AAA", 3)).add("AC", 2)).add("BA", 2); _c_2 = _c_0.subexpr(1, 1); return 0; } tfun int cleanup_ () { global_exprs.clear(); return 0; } } GlobalExprs global_exprs; tfun int main (int argc, char *argv[]) { for (int i = 0; i < ts::realsuperSize; i++) { tct(atRank(i)); (int)fab::init_(); } TExpr res; fab::Main(res); for (int i = 0; i < ts::realsuperSize; i++) { tct(atRank(i)); (int)fab::cleanup_(); } return 0; }