am_out.sa


Generated by gen_html_sa_files from ICSI. Contact gomes@icsi.berkeley.edu for details
 
---------------------------> Sather 1.1 source file <--------------------------
-- Copyright (C) International Computer Science Institute, 1995.  COPYRIGHT  --
-- NOTICE: This code is provided "AS IS" WITHOUT ANY WARRANTY and is subject --
-- to the terms of the SATHER LIBRARY GENERAL PUBLIC LICENSE contained in    --
-- the file "Doc/License" of the Sather distribution.  The license is also   --
-- available from ICSI, 1947 Center St., Suite 600, Berkeley CA 94704, USA.  --
--------> Please email comments to sather-bugs@icsi.berkeley.edu. <----------

-- am_out.sa: Print out AM representation for debugging.


class AM_OUT

class AM_OUT is -- Output AM code for debugging purposes. AM_one_stmt(a:$AM_STMT) is n::=a.next; a.next:=void; AM_out(a);-- AM_OUT::AM_out a.next:=n; end; AM_out(a:$AM) is AM_out(a,0,0); end;-- AM_OUT::AM_out AM_out(a:$AM,first:INT,indent:INT) is prindent(first);-- AM_OUT::prindent if void(a) then #OUT + "(void($AM))\n"; return end;-- OUT::create OUT::plus #OUT+SYS::str_for_tp(SYS::tp(a))+"["+SYS::id(a)+"] ";-- OUT::create OUT::plus SYS::str_for_tp SYS::tp OUT::plus OUT::plus SYS::id OUT::plus typecase a when AM_OB_DEF then AM_OB_DEF_out(a,0,indent);-- AM_OUT::AM_OB_DEF_out when AM_ROUT_DEF then AM_ROUT_DEF_out(a,0,indent);-- AM_OUT::AM_ROUT_DEF_out when AM_ASSIGN_STMT then AM_ASSIGN_STMT_out(a,0,indent);-- AM_OUT::AM_ASSIGN_STMT_out when AM_COMMENT_STMT then AM_COMMENT_STMT_out(a,0,indent);-- AM_OUT::AM_COMMENT_STMT_out when AM_IF_STMT then AM_IF_STMT_out(a,0,indent);-- AM_OUT::AM_IF_STMT_out when AM_LOOP_STMT then AM_LOOP_STMT_out(a,0,indent);-- AM_OUT::AM_LOOP_STMT_out when AM_BREAK_STMT then AM_BREAK_STMT_out(a,0,indent);-- AM_OUT::AM_BREAK_STMT_out when AM_RETURN_STMT then AM_RETURN_STMT_out(a,0,indent);-- AM_OUT::AM_RETURN_STMT_out when AM_YIELD_STMT then AM_YIELD_STMT_out(a,0,indent);-- AM_OUT::AM_YIELD_STMT_out when AM_CASE_STMT then AM_CASE_STMT_out(a,0,indent);-- AM_OUT::AM_CASE_STMT_out when AM_TYPECASE_STMT then AM_TYPECASE_STMT_out(a,0,indent);-- AM_OUT::AM_TYPECASE_STMT_out when AM_PRE_STMT then AM_PRE_STMT_out(a,0,indent);-- AM_OUT::AM_PRE_STMT_out when AM_POST_STMT then AM_POST_STMT_out(a,0,indent);-- AM_OUT::AM_POST_STMT_out when AM_INITIAL_STMT then AM_INITIAL_STMT_out(a,0,indent);-- AM_OUT::AM_INITIAL_STMT_out when AM_ASSERT_STMT then AM_ASSERT_STMT_out(a,0,indent);-- AM_OUT::AM_ASSERT_STMT_out when AM_INVARIANT_STMT then AM_INVARIANT_STMT_out(a,0,indent);-- AM_OUT::AM_INVARIANT_STMT_out when AM_PROTECT_STMT then AM_PROTECT_STMT_out(a,0,indent);-- AM_OUT::AM_PROTECT_STMT_out when AM_RAISE_STMT then AM_RAISE_STMT_out(a,0,indent); -- AM_OUT::AM_RAISE_STMT_out when AM_EXPR_STMT then AM_EXPR_STMT_out(a,0,indent);-- AM_OUT::AM_EXPR_STMT_out when AM_LOCAL_EXPR then AM_LOCAL_EXPR_out(a,0,indent);-- AM_OUT::AM_LOCAL_EXPR_out when AM_ARRAY_EXPR then AM_ARRAY_EXPR_out(a,0,indent);-- AM_OUT::AM_ARRAY_EXPR_out when AM_BND_CREATE_EXPR then AM_BND_CREATE_EXPR_out(a,0,indent);-- AM_OUT::AM_BND_CREATE_EXPR_out when AM_IF_EXPR then AM_IF_EXPR_out(a,0,indent);-- AM_OUT::AM_IF_EXPR_out when AM_NEW_EXPR then AM_NEW_EXPR_out(a,0,indent);-- AM_OUT::AM_NEW_EXPR_out when AM_IS_VOID_EXPR then AM_IS_VOID_EXPR_out(a,0,indent); -- AM_OUT::AM_IS_VOID_EXPR_out when AM_GLOBAL_EXPR then AM_GLOBAL_EXPR_out(a,0,indent);-- AM_OUT::AM_GLOBAL_EXPR_out when AM_ATTR_EXPR then AM_ATTR_EXPR_out(a,0,indent);-- AM_OUT::AM_ATTR_EXPR_out when AM_VATTR_ASSIGN_EXPR then AM_VATTR_ASSIGN_EXPR_out(a,0,indent);-- AM_OUT::AM_VATTR_ASSIGN_EXPR_out when AM_VARR_ASSIGN_EXPR then AM_VARR_ASSIGN_EXPR_out(a,0,indent); -- AM_OUT::AM_VARR_ASSIGN_EXPR_out when AM_EXCEPT_EXPR then AM_EXCEPT_EXPR_out(a,0,indent); -- AM_OUT::AM_EXCEPT_EXPR_out when AM_STMT_EXPR then AM_STMT_EXPR_out(a,0,indent); -- AM_OUT::AM_STMT_EXPR_out when AM_CALL_ARG then AM_CALL_ARG_out(a,0,indent);-- AM_OUT::AM_CALL_ARG_out when AM_FORMAL_ARG then AM_FORMAL_ARG_out(a,0,indent);-- AM_OUT::AM_FORMAL_ARG_out when AM_ROUT_CALL_EXPR then AM_ROUT_CALL_EXPR_out(a,0,indent);-- AM_OUT::AM_ROUT_CALL_EXPR_out when AM_ITER_CALL_EXPR then AM_ITER_CALL_EXPR_out(a,0,indent);-- AM_OUT::AM_ITER_CALL_EXPR_out when AM_BND_ROUT_CALL_EXPR then AM_BND_ROUT_CALL_EXPR_out(a,0,indent);-- AM_OUT::AM_BND_ROUT_CALL_EXPR_out when AM_BND_ITER_CALL_EXPR then AM_BND_ITER_CALL_EXPR_out(a,0,indent);-- AM_OUT::AM_BND_ITER_CALL_EXPR_out when AM_EXT_CALL_EXPR then AM_EXT_CALL_EXPR_out(a,0,indent);-- AM_OUT::AM_EXT_CALL_EXPR_out when AM_VOID_CONST then AM_VOID_CONST_out(a,0,indent);-- AM_OUT::AM_VOID_CONST_out when AM_ARR_CONST then AM_ARR_CONST_out(a,0,indent);-- AM_OUT::AM_ARR_CONST_out when AM_BOOL_CONST then AM_BOOL_CONST_out(a,0,indent);-- AM_OUT::AM_BOOL_CONST_out when AM_CHAR_CONST then AM_CHAR_CONST_out(a,0,indent);-- AM_OUT::AM_CHAR_CONST_out when AM_STR_CONST then AM_STR_CONST_out(a,0,indent);-- AM_OUT::AM_STR_CONST_out when AM_INT_CONST then AM_INT_CONST_out(a,0,indent);-- AM_OUT::AM_INT_CONST_out when AM_INTI_CONST then AM_INTI_CONST_out(a,0,indent);-- AM_OUT::AM_INTI_CONST_out when AM_FLT_CONST then AM_FLT_CONST_out(a,0,indent);-- AM_OUT::AM_FLT_CONST_out when AM_FLTD_CONST then AM_FLTD_CONST_out(a,0,indent);-- AM_OUT::AM_FLTD_CONST_out when AM_FLTX_CONST then AM_FLTX_CONST_out(a,0,indent);-- AM_OUT::AM_FLTX_CONST_out when AM_FLTDX_CONST then AM_FLTDX_CONST_out(a,0,indent);-- AM_OUT::AM_FLTDX_CONST_out when AM_FLTI_CONST then AM_FLTI_CONST_out(a,0,indent);-- AM_OUT::AM_FLTI_CONST_out --pSather when AM_ATTACH_STMT then AM_ATTACH_STMT_out(a,0,indent);-- AM_OUT::AM_ATTACH_STMT_out when AM_LOCK_STMT then AM_LOCK_STMT_out(a,0,indent);-- AM_OUT::AM_LOCK_STMT_out when AM_UNLOCK_STMT then AM_UNLOCK_STMT_out(a,0,indent);-- AM_OUT::AM_UNLOCK_STMT_out when AM_WITH_NEAR_STMT then AM_WITH_NEAR_STMT_out(a,0,indent);-- AM_OUT::AM_WITH_NEAR_STMT_out when AM_SYNC_STMT then AM_SYNC_STMT_out(a,0,indent);-- AM_OUT::AM_SYNC_STMT_out when AM_PREFETCH_STMT then AM_PREFETCH_STMT_out(a,0,indent);-- AM_OUT::AM_PREFETCH_STMT_out when AM_WAITFOR_STMT then AM_WAITFOR_STMT_out(a,0,indent);-- AM_OUT::AM_WAITFOR_STMT_out --pSather when AM_HERE_EXPR then AM_HERE_EXPR_out(a,0,indent);-- AM_OUT::AM_HERE_EXPR_out when AM_ANY_EXPR then AM_ANY_EXPR_out(a,0,indent);-- AM_OUT::AM_ANY_EXPR_out when AM_WHERE_EXPR then AM_WHERE_EXPR_out(a,0,indent);-- AM_OUT::AM_WHERE_EXPR_out when AM_NEAR_EXPR then AM_NEAR_EXPR_out(a,0,indent);-- AM_OUT::AM_NEAR_EXPR_out when AM_FAR_EXPR then AM_FAR_EXPR_out(a,0,indent);-- AM_OUT::AM_FAR_EXPR_out when AM_AT_EXPR then AM_AT_EXPR_out(a,0,indent);-- AM_OUT::AM_AT_EXPR_out when AM_CLUSTER_EXPR then AM_CLUSTER_EXPR_out(a,0,indent);-- AM_OUT::AM_CLUSTER_EXPR_out when AM_CLUSTER_SIZE_EXPR then AM_CLUSTER_SIZE_EXPR_out(a,0,indent); -- AM_OUT::AM_CLUSTER_SIZE_EXPR_out end; typecase a when $AM_STMT then if ~void(a.next) then AM_out(a.next,indent,indent); end;-- BOOL::not AM_OUT::AM_out else end; end; private prindent(i:INT) is loop i.times!;-- INT::times! #OUT+" ";-- OUT::create OUT::plus end; end; private AM_OB_DEF_out(a:AM_OB_DEF,first:INT,indent:INT) is if void(a.tp) then #OUT + "void(tp) " -- AM_OB_DEF::tp OUT::create else #OUT + "tp=" + a.tp.str + " " end; #OUT + "\n";-- OUT::plus OUT::create OUT::plus OUT::plus AM_OB_DEF::tp OUT::plus OUT::create OUT::plus if void(a.at) then #OUT + "void(attributes)" -- AM_OB_DEF::at OUT::create else-- OUT::plus #OUT+"\n";prindent(indent+11);-- OUT::create OUT::plus AM_OUT::prindent INT::plus #OUT + "attributes= ";-- OUT::create OUT::plus loop p::=a.at.pairs!;-- AM_OB_DEF::at FMAP{2}::pairs! #OUT + "(" + p.t1.str + "->" + p.t2.str + ") " end end;-- OUT::create OUT::plus OUT::plus TUP{2}::t1 IDENT::str OUT::plus OUT::plus TUP{2}::t2 OUT::plus #OUT+"\n";prindent(indent+11);-- OUT::create OUT::plus AM_OUT::prindent INT::plus #OUT + "(array type=";-- OUT::create OUT::plus if void(a.arr) then #OUT + "void" else #OUT + a.arr.str end;-- AM_OB_DEF::arr OUT::create OUT::plus OUT::create OUT::plus AM_OB_DEF::arr #OUT + "\n" end;-- OUT::create OUT::plus private AM_ROUT_DEF_out(a:AM_ROUT_DEF,first:INT,indent:INT) is if void(a.sig) then #OUT + " void(sig)";-- AM_ROUT_DEF::sig OUT::create OUT::plus else #OUT + " sig=" + a.sig.str;-- OUT::create OUT::plus OUT::plus AM_ROUT_DEF::sig SIG::str end; if a.sig.needs_import then #OUT+" needs_import"; end;-- AM_ROUT_DEF::sig SIG::needs_import OUT::create OUT::plus if a.sig.needs_export then #OUT+" needs_export"; end;-- AM_ROUT_DEF::sig SIG::needs_export OUT::create OUT::plus if a.is_abstract then #OUT + " is abstract"; return; end;-- AM_ROUT_DEF::is_abstract OUT::create OUT::plus #OUT+"\n";-- OUT::create OUT::plus if a.size>1 then-- AM_ROUT_DEF::size INT::is_lt prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=";-- OUT::create OUT::plus AM_out(a[1],0,indent+8);-- AM_OUT::AM_out AM_ROUT_DEF::aget INT::plus i:INT:=2; loop AM_out(a[2.upto!(a.asize-1)],indent+8,indent+8);-- AM_OUT::AM_out AM_ROUT_DEF::aget INT::upto! AM_ROUT_DEF::asize INT::minus INT::plus INT::plus end; end; prindent(indent+3);-- AM_OUT::prindent INT::plus if ~void(a.specul_prefetch) then #OUT+"prefetch: ";AM_out(a.specul_prefetch,indent+10,indent+10);#OUT+"\n";prindent(indent+3); end;-- AM_ROUT_DEF::specul_prefetch BOOL::not OUT::create OUT::plus AM_OUT::AM_out AM_ROUT_DEF::specul_prefetch INT::plus INT::plus OUT::create OUT::plus AM_OUT::prindent INT::plus if void(a.locals) then #OUT + "void(locals)\n";-- AM_ROUT_DEF::locals OUT::create OUT::plus else #OUT + "locals=";-- OUT::create OUT::plus i:INT:=0; AM_out(a.locals[0],indent+10,indent+10);-- AM_OUT::AM_out AM_ROUT_DEF::locals FLIST{1}::aget INT::plus INT::plus if a.locals.size>1 then -- AM_ROUT_DEF::locals FLIST{1}::size INT::is_lt loop; AM_out(a.locals[1.upto!(a.locals.size-1)],indent+10,indent+10);-- AM_OUT::AM_out AM_ROUT_DEF::locals FLIST{1}::aget INT::upto! AM_ROUT_DEF::locals FLIST{1}::size INT::minus INT::plus INT::plus end; end; end; prindent(indent+3);-- AM_OUT::prindent INT::plus if void(a.code) then #OUT + "void(code)\n";-- AM_ROUT_DEF::code OUT::create OUT::plus else #OUT + "code="; AM_out(a.code,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_ROUT_DEF::code INT::plus end; end; private AM_COMMENT_STMT_out(a:AM_COMMENT_STMT,first:INT,indent:INT) is #OUT + "/* "+a.comment+" */\n";-- OUT::create OUT::plus OUT::plus AM_COMMENT_STMT::comment OUT::plus end; private AM_ASSIGN_STMT_out(a:AM_ASSIGN_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "dest="; AM_out(a.dest,0,indent+8); -- OUT::create OUT::plus AM_OUT::AM_out AM_ASSIGN_STMT::dest INT::plus #OUT+"\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "src= "; AM_out(a.src,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_ASSIGN_STMT::src INT::plus #OUT+"\n";-- OUT::create OUT::plus end; private AM_IF_STMT_out(a:AM_IF_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "test= "; AM_out(a.test,0,indent+12); #OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_out AM_IF_STMT::test INT::plus OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "if_true= "; AM_out(a.if_true,0,indent+12);-- OUT::create OUT::plus AM_OUT::AM_out AM_IF_STMT::if_true INT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "if_false="; AM_out(a.if_false,0,indent+12) end;-- OUT::create OUT::plus AM_OUT::AM_out AM_IF_STMT::if_false INT::plus private AM_LOOP_STMT_out(a:AM_LOOP_STMT,first:INT,indent:INT) is if a.has_yield then #OUT + " has_yield=true"-- AM_LOOP_STMT::has_yield OUT::create else #OUT + " has_yield=false" end;-- OUT::plus OUT::create OUT::plus #OUT+"\n";-- OUT::create OUT::plus if ~void(a.its) then-- AM_LOOP_STMT::its BOOL::not prindent(indent+3);#OUT+"its=";-- AM_OUT::prindent INT::plus OUT::create OUT::plus loop #OUT+",".separate!(a.its.elt!.fun.str); end;-- OUT::create OUT::plus STR::separate! AM_LOOP_STMT::its FLIST{1}::elt! AM_ITER_CALL_EXPR::fun SIG::str #OUT+"\n";-- OUT::create OUT::plus end; prindent(indent+3);#OUT+"init=";-- AM_OUT::prindent INT::plus OUT::create OUT::plus AM_out(a.init,0,indent+8);-- AM_OUT::AM_out AM_LOOP_STMT::init INT::plus AM_out(a.body,indent+3,indent+3) end;-- AM_OUT::AM_out AM_LOOP_STMT::body INT::plus INT::plus private AM_BREAK_STMT_out(a:AM_BREAK_STMT,first:INT,indent:INT) is #OUT + "\n" end;-- OUT::create OUT::plus private AM_RETURN_STMT_out(a:AM_RETURN_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "val="; AM_out(a.val,0,indent+7);-- OUT::create OUT::plus AM_OUT::AM_out AM_RETURN_STMT::val INT::plus #OUT+"\n";-- OUT::create OUT::plus end; private AM_YIELD_STMT_out(a:AM_YIELD_STMT,first:INT,indent:INT) is prindent(indent+3);#OUT + "ret=" + a.ret; #OUT+"\n";-- AM_OUT::prindent INT::plus OUT::create OUT::plus OUT::plus AM_YIELD_STMT::ret OUT::create OUT::plus prindent(indent+3);#OUT + "val="; AM_out(a.val,0,indent+7); #OUT+"\n";-- AM_OUT::prindent INT::plus OUT::create OUT::plus AM_OUT::AM_out AM_YIELD_STMT::val INT::plus OUT::create OUT::plus end; private AM_CASE_STMT_out(a:AM_CASE_STMT,first:INT,indent:INT) is prindent(indent);-- AM_OUT::prindent #OUT + "test="; AM_out(a.test,0,indent+8); #OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_out AM_CASE_STMT::test INT::plus OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "branches:\n";-- OUT::create OUT::plus i:INT:=0; loop while!(i<a.tgts.size);-- INT::is_lt AM_CASE_STMT::tgts FLIST{1}::size prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "cond: ";-- OUT::create OUT::plus j:INT:=0; loop AM_OUT::AM_out(a.tgts[i].elt!);-- AM_OUT::AM_out AM_CASE_STMT::tgts FLIST{1}::aget FLIST{1}::elt! #OUT+", ";-- OUT::create OUT::plus end; #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT+"code: ";-- OUT::create OUT::plus AM_out(a.stmts[i],0,indent+10);-- AM_OUT::AM_out AM_CASE_STMT::stmts FLIST{1}::aget INT::plus i:=i+1;-- INT::plus end; prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "else_stmts: "; AM_out(a.else_stmts,0,indent+15) -- OUT::create OUT::plus AM_OUT::AM_out AM_CASE_STMT::else_stmts INT::plus end; private AM_TYPECASE_STMT_out(a:AM_TYPECASE_STMT,first:INT,indent:INT) is prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "test="; AM_out(a.test,0,indent+8); #OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_out AM_TYPECASE_STMT::test INT::plus OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "branches:\n";-- OUT::create OUT::plus i:INT:=0; loop while!(i<a.tgts.size);-- INT::is_lt AM_TYPECASE_STMT::tgts FLIST{1}::size prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "type: "+a.tgts[i].str+"\n";-- OUT::create OUT::plus OUT::plus AM_TYPECASE_STMT::tgts FLIST{1}::aget OUT::plus AM_out(a.stmts[i],indent+6,indent+6);-- AM_OUT::AM_out AM_TYPECASE_STMT::stmts FLIST{1}::aget INT::plus INT::plus i:=i+1;-- INT::plus end; prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT+"else_stmts="; AM_out(a.else_stmts,0,indent+14);-- OUT::create OUT::plus AM_OUT::AM_out AM_TYPECASE_STMT::else_stmts INT::plus end; private AM_PRE_STMT_out(a:AM_PRE_STMT,first:INT,indent:INT) is if void(a) then #OUT + "void(AM_PRE_STMT)\n"; return end;-- OUT::create OUT::plus #OUT + "AM_PRE_STMT";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "test="; AM_out(a.test,0,indent+9); #OUT+"\n"; end;-- OUT::create OUT::plus AM_OUT::AM_out AM_PRE_STMT::test INT::plus OUT::create OUT::plus private AM_POST_STMT_out(a:AM_POST_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "test="; AM_out(a.test,0,indent+9); #OUT+"\n"; end;-- OUT::create OUT::plus AM_OUT::AM_out AM_POST_STMT::test INT::plus OUT::create OUT::plus private AM_INITIAL_STMT_out(a:AM_INITIAL_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "stmts="; AM_out(a.stmts,0,indent+9);-- OUT::create OUT::plus AM_OUT::AM_out AM_INITIAL_STMT::stmts INT::plus end; private AM_ASSERT_STMT_out(a:AM_ASSERT_STMT,first:INT,indent:INT) is #OUT + "\n";prindent(indent+3);-- OUT::create OUT::plus AM_OUT::prindent INT::plus #OUT + "test="; AM_out(a.test,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_ASSERT_STMT::test INT::plus #OUT + "\n";-- OUT::create OUT::plus end; private AM_INVARIANT_STMT_out(a:AM_INVARIANT_STMT,first:INT,indent:INT) is #OUT + "\n" end;-- OUT::create OUT::plus private AM_PROTECT_STMT_out(a:AM_PROTECT_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "body="; AM_out(a.body,0,indent+8); -- OUT::create OUT::plus AM_OUT::AM_out AM_PROTECT_STMT::body INT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "branches:\n";-- OUT::create OUT::plus i:INT:=0; loop while!(i<a.tgts.size);-- INT::is_lt AM_PROTECT_STMT::tgts FLIST{1}::size prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "type: "+a.tgts[i].str+"\n";-- OUT::create OUT::plus OUT::plus AM_PROTECT_STMT::tgts FLIST{1}::aget OUT::plus AM_out(a.stmts[i],indent+6,indent+6);-- AM_OUT::AM_out AM_PROTECT_STMT::stmts FLIST{1}::aget INT::plus INT::plus i:=i+1;-- INT::plus end; prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT+"else_stmts="; AM_out(a.else_stmts,0,indent+14);-- OUT::create OUT::plus AM_OUT::AM_out AM_PROTECT_STMT::else_stmts INT::plus end; private AM_RAISE_STMT_out(a:AM_RAISE_STMT,first:INT,indent:INT) is #OUT + " val="; AM_out(a.val,0,indent+18);#OUT+"\n"; end;-- OUT::create OUT::plus AM_OUT::AM_out AM_RAISE_STMT::val INT::plus OUT::create OUT::plus private AM_EXPR_STMT_out(a:AM_EXPR_STMT,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "expr="; AM_out(a.expr,0,indent+8);#OUT+"\n"; end;-- OUT::create OUT::plus AM_OUT::AM_out AM_EXPR_STMT::expr INT::plus OUT::create OUT::plus private AM_SYNC_STMT_out(a:AM_SYNC_STMT,first:INT,indent:INT) is #OUT+"\n";-- OUT::create OUT::plus end; private AM_PREFETCH_STMT_out(a:AM_PREFETCH_STMT,first:INT,indent:INT) is #OUT + " prefetch=";AM_out(a.prefetch,0,indent+29);-- OUT::create OUT::plus AM_OUT::AM_out AM_PREFETCH_STMT::prefetch INT::plus #OUT+"\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "dest="; AM_out(a.dest,0,indent+8); -- OUT::create OUT::plus AM_OUT::AM_out AM_PREFETCH_STMT::dest INT::plus #OUT+"\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "src= "; AM_out(a.src,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_PREFETCH_STMT::src INT::plus #OUT+"\n";-- OUT::create OUT::plus end; private AM_WAITFOR_STMT_out(a:AM_WAITFOR_STMT,first:INT,indent:INT) is #OUT + " prefetch=";AM_out(a.prefetch,0,indent+29);-- OUT::create OUT::plus AM_OUT::AM_out AM_WAITFOR_STMT::prefetch INT::plus #OUT+"\n";-- OUT::create OUT::plus end; private AM_ATTACH_STMT_out(a:AM_ATTACH_STMT,first:INT,indent:INT) is --pSather #OUT + "\n";-- OUT::create OUT::plus #OUT + "routine=" + a.rout.str + "\n";-- OUT::create OUT::plus OUT::plus AM_ATTACH_STMT::rout SIG::str OUT::plus #OUT + "helper= "; AM_LOCAL_EXPR_out(a.helper,0,indent+11); #OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_LOCAL_EXPR_out AM_ATTACH_STMT::helper INT::plus OUT::create OUT::plus #OUT + "gate= "; AM_LOCAL_EXPR_out(a.gate,0,indent+11); #OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_LOCAL_EXPR_out AM_ATTACH_STMT::gate INT::plus OUT::create OUT::plus #OUT + "at= ";-- OUT::create OUT::plus if void(a.at) then #OUT+" any" else AM_out(a.at,0,indent+11); end;-- AM_ATTACH_STMT::at OUT::create OUT::plus AM_OUT::AM_out AM_ATTACH_STMT::at INT::plus #OUT+"\n";-- OUT::create OUT::plus end; private AM_LOCK_STMT_out(a:AM_LOCK_STMT,first:INT,indent:INT) is --pSather #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus i:INT:=0; loop while!(i<a.guards.size);-- INT::is_lt AM_LOCK_STMT::guards FLIST{1}::size #OUT + "GUARD ";-- OUT::create OUT::plus AM_out(a.guards[i],0,9);-- AM_OUT::AM_out AM_LOCK_STMT::guards FLIST{1}::aget #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT+"LOCK ";-- OUT::create OUT::plus loop lck::=a.locks[i].elt!;-- AM_LOCK_STMT::locks FLIST{1}::aget ARRAY{1}::elt! AM_out(lck,0,indent+9);#OUT+", ";-- AM_OUT::AM_out INT::plus OUT::create OUT::plus end; #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "THEN ";-- OUT::create OUT::plus AM_out(a.stmts[i],0,indent+9);-- AM_OUT::AM_out AM_LOCK_STMT::stmts FLIST{1}::aget INT::plus #OUT+"\n";-- OUT::create OUT::plus i := 1+ 1;-- INT::plus end; #OUT+"ELSE_STMT "; AM_out(a.else_stmts,0,13);-- OUT::create OUT::plus AM_OUT::AM_out AM_LOCK_STMT::else_stmts end; private AM_UNLOCK_STMT_out(a:AM_UNLOCK_STMT,first:INT,indent:INT) is --pSather -- #OUT + " expr="; AM_out(a.lock) end; private AM_WITH_NEAR_STMT_out(a:AM_WITH_NEAR_STMT,first:INT,indent:INT) is --pSather #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "near="; AM_out(a.near_part,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_WITH_NEAR_STMT::near_part INT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "else="; AM_out(a.else_part,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_WITH_NEAR_STMT::else_part INT::plus end; private AM_LOCAL_EXPR_out(a:AM_LOCAL_EXPR,first:INT,indent:INT) is if void(a.name) and void(a.tp_at) then-- AM_LOCAL_EXPR::name AM_LOCAL_EXPR::tp_at #OUT + "noname:notype"-- OUT::create elsif void(a.name) then-- OUT::plus AM_LOCAL_EXPR::name #OUT + "noname:" + a.tp_at.str;-- OUT::create OUT::plus OUT::plus AM_LOCAL_EXPR::tp_at elsif void(a.tp_at) then -- AM_LOCAL_EXPR::tp_at #OUT + a.name.str + ":notype";-- OUT::create OUT::plus AM_LOCAL_EXPR::name IDENT::str OUT::plus else #OUT + a.name.str + ":" + a.tp_at.str;-- OUT::create OUT::plus AM_LOCAL_EXPR::name IDENT::str OUT::plus OUT::plus AM_LOCAL_EXPR::tp_at end; end; private AM_ARRAY_EXPR_out(a:AM_ARRAY_EXPR,first:INT,indent:INT) is #OUT + " tp=" + a.tp_at.str+" |";-- OUT::create OUT::plus OUT::plus AM_ARRAY_EXPR::tp_at OUT::plus loop i::=a.ind!;-- AM_ARRAY_EXPR::ind! if i/=0 then #OUT + "), ";-- INT::is_eq BOOL::not OUT::create OUT::plus else #OUT+"(";-- OUT::create OUT::plus end; AM_out(a.elt!,0,0);-- AM_OUT::AM_out AM_ARRAY_EXPR::elt! end; #OUT+")|";-- OUT::create OUT::plus end; private AM_BND_CREATE_EXPR_out(a:AM_BND_CREATE_EXPR,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=(";-- OUT::create OUT::plus loop i::=a.ind!; -- AM_BND_CREATE_EXPR::ind! if i/=0 then #OUT + " " end; -- INT::is_eq BOOL::not OUT::create OUT::plus AM_out(a[i]);-- AM_OUT::AM_out AM_BND_CREATE_EXPR::aget end; #OUT + ")\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "fun=" + a.fun.str+"\n"; -- OUT::create OUT::plus OUT::plus AM_BND_CREATE_EXPR::fun SIG::str OUT::plus #OUT + "bnd_args=";-- OUT::create OUT::plus loop j::=a.bnd_args.ind!;-- AM_BND_CREATE_EXPR::bnd_args ARRAY{1}::ind! if j/=0 then #OUT + " " end; -- INT::is_eq BOOL::not OUT::create OUT::plus #OUT + a.bnd_args[j] end;-- OUT::create OUT::plus AM_BND_CREATE_EXPR::bnd_args ARRAY{1}::aget #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT+"unbnd_args=";-- OUT::create OUT::plus loop j::=a.unbnd_args.ind!;-- AM_BND_CREATE_EXPR::unbnd_args ARRAY{1}::ind! if j/=0 then #OUT + " " end; -- INT::is_eq BOOL::not OUT::create OUT::plus #OUT + a.unbnd_args[j] end;-- OUT::create OUT::plus AM_BND_CREATE_EXPR::unbnd_args ARRAY{1}::aget #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "tp_at=" + a.tp_at.str end;-- OUT::create OUT::plus OUT::plus AM_BND_CREATE_EXPR::tp_at private AM_IF_EXPR_out(a:AM_IF_EXPR,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "test= "; AM_out(a.test,0,indent+12);-- OUT::create OUT::plus AM_OUT::AM_out AM_IF_EXPR::test INT::plus #OUT+"\n";prindent(indent+3);-- OUT::create OUT::plus AM_OUT::prindent INT::plus #OUT + "if_true= "; AM_out(a.if_true,0,indent+12);-- OUT::create OUT::plus AM_OUT::AM_out AM_IF_EXPR::if_true INT::plus #OUT+"\n";prindent(indent+3);-- OUT::create OUT::plus AM_OUT::prindent INT::plus #OUT + "if_false="; AM_out(a.if_false,0,indent+12);-- OUT::create OUT::plus AM_OUT::AM_out AM_IF_EXPR::if_false INT::plus end; private AM_NEW_EXPR_out(a:AM_NEW_EXPR,first:INT,indent:INT) is #OUT + "asz="; AM_out(a.asz,0,indent+16);-- OUT::create OUT::plus AM_OUT::AM_out AM_NEW_EXPR::asz INT::plus end; private AM_IS_VOID_EXPR_out(a:AM_IS_VOID_EXPR,first:INT,indent:INT) is #OUT + "arg="; AM_out(a.arg,0,indent+20); -- OUT::create OUT::plus AM_OUT::AM_out AM_IS_VOID_EXPR::arg INT::plus end; private AM_GLOBAL_EXPR_out(a:AM_GLOBAL_EXPR,first:INT,indent:INT) is #OUT + "name=";-- OUT::create OUT::plus if void(a.name) then #OUT + "void" else #OUT + a.name.str end;-- AM_GLOBAL_EXPR::name OUT::create OUT::plus OUT::create OUT::plus AM_GLOBAL_EXPR::name IDENT::str #OUT + " tp=";-- OUT::create OUT::plus if void(a.tp_at) then #OUT + "void" else #OUT + a.tp_at.str end;-- AM_GLOBAL_EXPR::tp_at OUT::create OUT::plus OUT::create OUT::plus AM_GLOBAL_EXPR::tp_at #OUT + " class_tp=";-- OUT::create OUT::plus if void(a.class_tp) then #OUT + "void" else -- AM_GLOBAL_EXPR::class_tp OUT::create OUT::plus #OUT + a.class_tp.str end;-- OUT::create OUT::plus AM_GLOBAL_EXPR::class_tp --# if void(a.invar_ent) then --# #OUT+" invar=void"; --# else --# #OUT+" invar/=void"; --# end; #OUT+"\n";prindent(indent+3);-- OUT::create OUT::plus AM_OUT::prindent INT::plus #OUT + "init="; AM_out(a.init,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_GLOBAL_EXPR::init INT::plus end; private AM_ATTR_EXPR_out(a:AM_ATTR_EXPR,first:INT,indent:INT) is #OUT + " ob="; AM_out(a.ob,0,0); -- OUT::create OUT::plus AM_OUT::AM_out AM_ATTR_EXPR::ob #OUT + " at=" + a.at.str;-- OUT::create OUT::plus OUT::plus AM_ATTR_EXPR::at IDENT::str #OUT + " self_tp=" + a.self_tp.str; -- OUT::create OUT::plus OUT::plus AM_ATTR_EXPR::self_tp #OUT + " tp=" + a.tp_at.str end;-- OUT::create OUT::plus OUT::plus AM_ATTR_EXPR::tp_at private AM_VATTR_ASSIGN_EXPR_out(a:AM_VATTR_ASSIGN_EXPR,first:INT,indent:INT) is if void(a.ob) then #OUT + " void(ob)"; -- AM_VATTR_ASSIGN_EXPR::ob OUT::create OUT::plus else #OUT + " ob="; AM_out(a.ob,0,0) end; -- OUT::create OUT::plus AM_OUT::AM_out AM_VATTR_ASSIGN_EXPR::ob if void(a.at) then #OUT + " void(at)";-- AM_VATTR_ASSIGN_EXPR::at OUT::create OUT::plus else #OUT + " at=" + a.at.str end;-- OUT::create OUT::plus OUT::plus AM_VATTR_ASSIGN_EXPR::at IDENT::str if void(a.val) then #OUT + " void(val)";-- AM_VATTR_ASSIGN_EXPR::val OUT::create OUT::plus else #OUT + " val="; AM_out(a.val,0,0) end end; -- OUT::create OUT::plus AM_OUT::AM_out AM_VATTR_ASSIGN_EXPR::val private AM_VARR_ASSIGN_EXPR_out(a:AM_VARR_ASSIGN_EXPR,first:INT,indent:INT) is if void(a.ob) then #OUT + " void(ob)"; -- AM_VARR_ASSIGN_EXPR::ob OUT::create OUT::plus else #OUT + " ob="; AM_out(a.ob,0,0) end; -- OUT::create OUT::plus AM_OUT::AM_out AM_VARR_ASSIGN_EXPR::ob if void(a.ind) then #OUT + " void(ind)";-- AM_VARR_ASSIGN_EXPR::ind OUT::create OUT::plus else #OUT + " ind="; AM_out(a.ind,0,0) end;-- OUT::create OUT::plus AM_OUT::AM_out AM_VARR_ASSIGN_EXPR::ind if void(a.val) then #OUT + " void(val)";-- AM_VARR_ASSIGN_EXPR::val OUT::create OUT::plus else #OUT + " val="; AM_out(a.val,0,0) end end;-- OUT::create OUT::plus AM_OUT::AM_out AM_VARR_ASSIGN_EXPR::val private AM_EXCEPT_EXPR_out(a:AM_EXCEPT_EXPR,first:INT,indent:INT) is end; private AM_STMT_EXPR_out(a:AM_STMT_EXPR,first:INT,indent:INT) is #OUT + "\n";-- OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus if void(a.stmts) then #OUT + " void(stmts)"; -- AM_STMT_EXPR::stmts OUT::create OUT::plus else #OUT + "stmts="; AM_out(a.stmts,0,indent+9) end;-- OUT::create OUT::plus AM_OUT::AM_out AM_STMT_EXPR::stmts INT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus if void(a.expr) then #OUT + " void(expr)";-- AM_STMT_EXPR::expr OUT::create OUT::plus else #OUT + "expr= "; AM_out(a.expr,0,indent+9) end end;-- OUT::create OUT::plus AM_OUT::AM_out AM_STMT_EXPR::expr INT::plus private AM_HERE_EXPR_out(a:AM_HERE_EXPR,first:INT,indent:INT) is --pSather end; private AM_ANY_EXPR_out(a:AM_ANY_EXPR,first:INT,indent:INT) is --pSather end; private AM_WHERE_EXPR_out(a:AM_WHERE_EXPR,first:INT,indent:INT) is --pSather #OUT + " expr="; AM_out(a.arg,0,indent+19); end;-- OUT::create OUT::plus AM_OUT::AM_out AM_WHERE_EXPR::arg INT::plus private AM_NEAR_EXPR_out(a:AM_NEAR_EXPR,first:INT,indent:INT) is --pSather #OUT + " expr="; AM_out(a.arg,0,indent+18); end;-- OUT::create OUT::plus AM_OUT::AM_out AM_NEAR_EXPR::arg INT::plus private AM_FAR_EXPR_out(a:AM_FAR_EXPR,first:INT,indent:INT) is --pSather #OUT + " expr="; AM_out(a.arg,0,17); end;-- OUT::create OUT::plus AM_OUT::AM_out AM_FAR_EXPR::arg private AM_AT_EXPR_out(a:AM_AT_EXPR,first:INT,indent:INT) is --pSather #OUT + " expr="; AM_out(a.e,0,indent+15); -- OUT::create OUT::plus AM_OUT::AM_out AM_AT_EXPR::e INT::plus #OUT + " at="; AM_out(a.at,0,0); end;-- OUT::create OUT::plus AM_OUT::AM_out AM_AT_EXPR::at private AM_CLUSTER_EXPR_out(a:AM_CLUSTER_EXPR,first:INT,indent:INT) is --pSather end; private AM_CLUSTER_SIZE_EXPR_out(a:AM_CLUSTER_SIZE_EXPR,first:INT,indent:INT) is --pSather #OUT + "cluster_size";-- OUT::create OUT::plus end; private AM_CALL_ARG_out(a:AM_CALL_ARG, first:INT, indent:INT) is #OUT + " (";-- OUT::create OUT::plus #OUT + " mode=" + a.mode.str; -- OUT::create OUT::plus OUT::plus AM_CALL_ARG::mode #OUT + " expr="; -- OUT::create OUT::plus AM_out(a.expr,0,indent+8); -- AM_OUT::AM_out AM_CALL_ARG::expr INT::plus #OUT + ")";-- OUT::create OUT::plus end; private AM_FORMAL_ARG_out(a:AM_FORMAL_ARG, first:INT, indent:INT) is #OUT + " (";-- OUT::create OUT::plus #OUT + " mode=" + a.mode.str; -- OUT::create OUT::plus OUT::plus AM_FORMAL_ARG::mode #OUT + " expr="; -- OUT::create OUT::plus AM_out(a.expr,0,indent+8); -- AM_OUT::AM_out AM_FORMAL_ARG::expr INT::plus #OUT + ")";-- OUT::create OUT::plus end; private AM_ROUT_CALL_EXPR_out(a:AM_ROUT_CALL_EXPR,first:INT,indent:INT) is #OUT + " fun=" + a.fun.str+"\n";-- OUT::create OUT::plus OUT::plus AM_ROUT_CALL_EXPR::fun SIG::str OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=";-- OUT::create OUT::plus loop i::=a.ind!;-- AM_ROUT_CALL_EXPR::ind! if i/=0 then prindent(indent+8); end;-- INT::is_eq BOOL::not AM_OUT::prindent INT::plus AM_out(a.elt!,0,indent+8);-- AM_OUT::AM_out AM_ROUT_CALL_EXPR::elt! INT::plus #OUT+"\n";-- OUT::create OUT::plus end; end; private AM_ITER_CALL_EXPR_out(a:AM_ITER_CALL_EXPR,first:INT,indent:INT) is #OUT + "fun=" + a.fun.str+" init_before_loop="+a.init_before_loop+"\n";-- OUT::create OUT::plus OUT::plus AM_ITER_CALL_EXPR::fun SIG::str OUT::plus OUT::plus AM_ITER_CALL_EXPR::init_before_loop OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "init="; AM_out(a.init,0,indent+8);-- OUT::create OUT::plus AM_OUT::AM_out AM_ITER_CALL_EXPR::init INT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=";-- OUT::create OUT::plus loop i::=a.ind!;-- AM_ITER_CALL_EXPR::ind! if i/=0 then prindent(indent+8); end;-- INT::is_eq BOOL::not AM_OUT::prindent INT::plus AM_out(a.elt!,0,indent+8);-- AM_OUT::AM_out AM_ITER_CALL_EXPR::elt! INT::plus #OUT+"\n";-- OUT::create OUT::plus end; end; private AM_BND_ROUT_CALL_EXPR_out(a:AM_BND_ROUT_CALL_EXPR,first:INT,indent:INT) is prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "br="; AM_out(a.br); #OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_out AM_BND_ROUT_CALL_EXPR::br OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=";-- OUT::create OUT::plus loop i::=a.ind!;-- AM_BND_ROUT_CALL_EXPR::ind! if i/=0 then prindent(indent+8); end;-- INT::is_eq BOOL::not AM_OUT::prindent INT::plus AM_out(a.elt!,0,indent+8);-- AM_OUT::AM_out AM_BND_ROUT_CALL_EXPR::elt! INT::plus #OUT+"\n";-- OUT::create OUT::plus end; end; private AM_BND_ITER_CALL_EXPR_out(a:AM_BND_ITER_CALL_EXPR,first:INT,indent:INT) is #OUT + "bi="; AM_out(a.bi,0,indent+25);#OUT+"\n";-- OUT::create OUT::plus AM_OUT::AM_out AM_BND_ITER_CALL_EXPR::bi INT::plus OUT::create OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "init="; AM_out(a.init,0,indent+8); -- OUT::create OUT::plus AM_OUT::AM_out AM_BND_ITER_CALL_EXPR::init INT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=";-- OUT::create OUT::plus loop i::=a.ind!;-- AM_BND_ITER_CALL_EXPR::ind! if i/=0 then prindent(indent+8); end;-- INT::is_eq BOOL::not AM_OUT::prindent INT::plus AM_out(a.elt!,0,indent+8);-- AM_OUT::AM_out AM_BND_ITER_CALL_EXPR::elt! INT::plus #OUT+"\n";-- OUT::create OUT::plus end; end; private AM_EXT_CALL_EXPR_out(a:AM_EXT_CALL_EXPR,first:INT,indent:INT) is #OUT + "fun=" + a.fun.str+"\n";-- OUT::create OUT::plus OUT::plus AM_EXT_CALL_EXPR::fun SIG::str OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "args=";-- OUT::create OUT::plus loop i::=a.ind!;-- AM_EXT_CALL_EXPR::ind! if i/=0 then prindent(indent+8); end;-- INT::is_eq BOOL::not AM_OUT::prindent INT::plus AM_out(a.elt!,0,indent+8);-- AM_OUT::AM_out AM_EXT_CALL_EXPR::elt! INT::plus #OUT+"\n";-- OUT::create OUT::plus end; end; private AM_VOID_CONST_out(a:AM_VOID_CONST,first:INT,indent:INT) is if void(a.tp_at) then #OUT + "void" else -- AM_VOID_CONST::tp_at OUT::create OUT::plus #OUT + a.tp_at.str; end; end;-- OUT::create OUT::plus AM_VOID_CONST::tp_at private AM_ARR_CONST_out(a:AM_ARR_CONST,first:INT,indent:INT) is #OUT + "elt_tp=" + a.elt_tp.str+"\n";-- OUT::create OUT::plus OUT::plus AM_ARR_CONST::elt_tp TP_CLASS::str OUT::plus prindent(indent+3);-- AM_OUT::prindent INT::plus #OUT + "elts=";-- OUT::create OUT::plus loop AM_out(a.elts.elt!) end end; -- AM_OUT::AM_out AM_ARR_CONST::elts ARRAY{1}::elt! private AM_BOOL_CONST_out(a:AM_BOOL_CONST,first:INT,indent:INT) is if a.val then #OUT + "val=true" -- AM_BOOL_CONST::val OUT::create else #OUT + " val=false" end end;-- OUT::plus OUT::create OUT::plus private AM_CHAR_CONST_out(a:AM_CHAR_CONST,first:INT,indent:INT) is #OUT + "bval='" + a.bval + "'" end;-- OUT::create OUT::plus OUT::plus AM_CHAR_CONST::bval OUT::plus private AM_STR_CONST_out(a:AM_STR_CONST,first:INT,indent:INT) is #OUT + "bval=" + a.bval end;-- OUT::create OUT::plus OUT::plus AM_STR_CONST::bval private AM_INT_CONST_out(a:AM_INT_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val end;-- OUT::create OUT::plus OUT::plus AM_INT_CONST::val private AM_INTI_CONST_out(a:AM_INTI_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val.str end;-- OUT::create OUT::plus OUT::plus AM_INTI_CONST::val INTI::str private AM_FLT_CONST_out(a:AM_FLT_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val.str end;-- OUT::create OUT::plus OUT::plus AM_FLT_CONST::val RAT::str private AM_FLTD_CONST_out(a:AM_FLTD_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val.str end;-- OUT::create OUT::plus OUT::plus AM_FLTD_CONST::val RAT::str private AM_FLTX_CONST_out(a:AM_FLTX_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val.str end; -- OUT::create OUT::plus OUT::plus AM_FLTX_CONST::val RAT::str private AM_FLTDX_CONST_out(a:AM_FLTDX_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val.str end; -- OUT::create OUT::plus OUT::plus AM_FLTDX_CONST::val RAT::str private AM_FLTI_CONST_out(a:AM_FLTI_CONST,first:INT,indent:INT) is #OUT + "val=" + a.val.str end; -- OUT::create OUT::plus OUT::plus AM_FLTI_CONST::val RAT::str end; -- class AM_OUT
-- vim:sw=3:nosmartindent