home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
sa104os2.zip
/
SATHR104.ZIP
/
SATHER
/
COMPILER
/
AM_OUT.SA
next >
Wrap
Text File
|
1994-10-25
|
21KB
|
525 lines
-- Copyright (C) International Computer Science Institute, 1994. 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 is
-- Output AM code for debugging purposes.
AM_out(a:$AM) is
if void(a) then #OUT + "(void($AM)) "; return end;
typecase a
when AM_OB_DEF then AM_OB_DEF_out(a)
when AM_ROUT_DEF then AM_ROUT_DEF_out(a)
when AM_ASSIGN_STMT then AM_ASSIGN_STMT_out(a)
when AM_IF_STMT then AM_IF_STMT_out(a)
when AM_LOOP_STMT then AM_LOOP_STMT_out(a)
when AM_BREAK_STMT then AM_BREAK_STMT_out(a)
when AM_RETURN_STMT then AM_RETURN_STMT_out(a)
when AM_YIELD_STMT then AM_YIELD_STMT_out(a)
when AM_CASE_STMT then AM_CASE_STMT_out(a)
when AM_TYPECASE_STMT then AM_TYPECASE_STMT_out(a)
when AM_PRE_STMT then AM_PRE_STMT_out(a)
when AM_POST_STMT then AM_POST_STMT_out(a)
when AM_INITIAL_STMT then AM_INITIAL_STMT_out(a)
when AM_ASSERT_STMT then AM_ASSERT_STMT_out(a)
when AM_INVARIANT_STMT then AM_INVARIANT_STMT_out(a)
when AM_PROTECT_STMT then AM_PROTECT_STMT_out(a)
when AM_RAISE_STMT then AM_RAISE_STMT_out(a)
when AM_EXPR_STMT then AM_EXPR_STMT_out(a)
when AM_LOCAL_EXPR then AM_LOCAL_EXPR_out(a)
when AM_ARRAY_EXPR then AM_ARRAY_EXPR_out(a)
when AM_BND_CREATE_EXPR then AM_BND_CREATE_EXPR_out(a)
when AM_IF_EXPR then AM_IF_EXPR_out(a)
when AM_NEW_EXPR then AM_NEW_EXPR_out(a)
when AM_IS_VOID_EXPR then AM_IS_VOID_EXPR_out(a)
when AM_GLOBAL_EXPR then AM_GLOBAL_EXPR_out(a)
when AM_ATTR_EXPR then AM_ATTR_EXPR_out(a)
when AM_ARR_EXPR then AM_ARR_EXPR_out(a)
when AM_VATTR_ASSIGN_EXPR then AM_VATTR_ASSIGN_EXPR_out(a)
when AM_VARR_ASSIGN_EXPR then AM_VARR_ASSIGN_EXPR_out(a)
when AM_EXCEPT_EXPR then AM_EXCEPT_EXPR_out(a)
when AM_STMT_EXPR then AM_STMT_EXPR_out(a)
when AM_ROUT_CALL_EXPR then AM_ROUT_CALL_EXPR_out(a)
when AM_ITER_CALL_EXPR then AM_ITER_CALL_EXPR_out(a)
when AM_BND_ROUT_CALL_EXPR then AM_BND_ROUT_CALL_EXPR_out(a)
when AM_BND_ITER_CALL_EXPR then AM_BND_ITER_CALL_EXPR_out(a)
when AM_EXT_CALL_EXPR then AM_EXT_CALL_EXPR_out(a)
when AM_VOID_CONST then AM_VOID_CONST_out(a)
when AM_ARR_CONST then AM_ARR_CONST_out(a)
when AM_BOOL_CONST then AM_BOOL_CONST_out(a)
when AM_CHAR_CONST then AM_CHAR_CONST_out(a)
when AM_STR_CONST then AM_STR_CONST_out(a)
when AM_INT_CONST then AM_INT_CONST_out(a)
when AM_INTI_CONST then AM_INTI_CONST_out(a)
when AM_FLT_CONST then AM_FLT_CONST_out(a)
when AM_FLTD_CONST then AM_FLTD_CONST_out(a)
when AM_FLTX_CONST then AM_FLTX_CONST_out(a)
when AM_FLTDX_CONST then AM_FLTDX_CONST_out(a)
when AM_FLTI_CONST then AM_FLTI_CONST_out(a)
end end;
AM_STMT_out(a:$AM_STMT) is
if void(a) then #OUT + "(void($AM_STMT)) "; return end;
#OUT + "(";
typecase a
when AM_ASSIGN_STMT then AM_ASSIGN_STMT_out(a)
when AM_IF_STMT then AM_IF_STMT_out(a)
when AM_LOOP_STMT then AM_LOOP_STMT_out(a)
when AM_BREAK_STMT then AM_BREAK_STMT_out(a)
when AM_RETURN_STMT then AM_RETURN_STMT_out(a)
when AM_YIELD_STMT then AM_YIELD_STMT_out(a)
when AM_CASE_STMT then AM_CASE_STMT_out(a)
when AM_TYPECASE_STMT then AM_TYPECASE_STMT_out(a)
when AM_PRE_STMT then AM_PRE_STMT_out(a)
when AM_POST_STMT then AM_POST_STMT_out(a)
when AM_INITIAL_STMT then AM_INITIAL_STMT_out(a)
when AM_ASSERT_STMT then AM_ASSERT_STMT_out(a)
when AM_INVARIANT_STMT then AM_INVARIANT_STMT_out(a)
when AM_PROTECT_STMT then AM_PROTECT_STMT_out(a)
when AM_RAISE_STMT then AM_RAISE_STMT_out(a)
when AM_EXPR_STMT then AM_EXPR_STMT_out(a)
end;
#OUT + ") ";
if ~void(a.next) then AM_STMT_out(a.next) end;
end;
AM_EXPR_out(a:$AM_EXPR) is
if void(a) then #OUT + "(void($AM_EXPR)) "; return end;
#OUT + "(";
typecase a
when AM_LOCAL_EXPR then AM_LOCAL_EXPR_out(a)
when AM_ARRAY_EXPR then AM_ARRAY_EXPR_out(a)
when AM_BND_CREATE_EXPR then AM_BND_CREATE_EXPR_out(a)
when AM_IF_EXPR then AM_IF_EXPR_out(a)
when AM_NEW_EXPR then AM_NEW_EXPR_out(a)
when AM_IS_VOID_EXPR then AM_IS_VOID_EXPR_out(a)
when AM_GLOBAL_EXPR then AM_GLOBAL_EXPR_out(a)
when AM_ATTR_EXPR then AM_ATTR_EXPR_out(a)
when AM_ARR_EXPR then AM_ARR_EXPR_out(a)
when AM_VATTR_ASSIGN_EXPR then AM_VATTR_ASSIGN_EXPR_out(a)
when AM_VARR_ASSIGN_EXPR then AM_VARR_ASSIGN_EXPR_out(a)
when AM_EXCEPT_EXPR then AM_EXCEPT_EXPR_out(a)
when AM_STMT_EXPR then AM_STMT_EXPR_out(a)
when AM_ROUT_CALL_EXPR then AM_ROUT_CALL_EXPR_out(a)
when AM_ITER_CALL_EXPR then AM_ITER_CALL_EXPR_out(a)
when AM_BND_ROUT_CALL_EXPR then AM_BND_ROUT_CALL_EXPR_out(a)
when AM_BND_ITER_CALL_EXPR then AM_BND_ITER_CALL_EXPR_out(a)
when AM_EXT_CALL_EXPR then AM_EXT_CALL_EXPR_out(a)
when AM_VOID_CONST then AM_VOID_CONST_out(a)
when AM_ARR_CONST then AM_ARR_CONST_out(a)
when AM_BOOL_CONST then AM_BOOL_CONST_out(a)
when AM_CHAR_CONST then AM_CHAR_CONST_out(a)
when AM_STR_CONST then AM_STR_CONST_out(a)
when AM_INT_CONST then AM_INT_CONST_out(a)
when AM_INTI_CONST then AM_INTI_CONST_out(a)
when AM_FLT_CONST then AM_FLT_CONST_out(a)
when AM_FLTD_CONST then AM_FLTD_CONST_out(a)
when AM_FLTX_CONST then AM_FLTX_CONST_out(a)
when AM_FLTDX_CONST then AM_FLTDX_CONST_out(a)
when AM_FLTI_CONST then AM_FLTI_CONST_out(a) end;
#OUT + ") " end;
AM_CALL_EXPR_out(a:$AM_CALL_EXPR) is
if void(a) then #OUT + "(void($AM_CALL_EXPR)) "; return end;
#OUT + "(";
typecase a
when AM_ROUT_CALL_EXPR then AM_ROUT_CALL_EXPR_out(a)
when AM_ITER_CALL_EXPR then AM_ITER_CALL_EXPR_out(a)
when AM_BND_ROUT_CALL_EXPR then AM_BND_ROUT_CALL_EXPR_out(a)
when AM_BND_ITER_CALL_EXPR then AM_BND_ITER_CALL_EXPR_out(a)
when AM_EXT_CALL_EXPR then AM_EXT_CALL_EXPR_out(a) end;
#OUT + ") " end;
AM_CONST_out(a:$AM_CONST) is
if void(a) then #OUT + "(void($AM_CONST)) "; return end;
#OUT + "(";
typecase a
when AM_VOID_CONST then AM_VOID_CONST_out(a)
when AM_ARR_CONST then AM_ARR_CONST_out(a)
when AM_BOOL_CONST then AM_BOOL_CONST_out(a)
when AM_CHAR_CONST then AM_CHAR_CONST_out(a)
when AM_STR_CONST then AM_STR_CONST_out(a)
when AM_INT_CONST then AM_INT_CONST_out(a)
when AM_INTI_CONST then AM_INTI_CONST_out(a)
when AM_FLT_CONST then AM_FLT_CONST_out(a)
when AM_FLTD_CONST then AM_FLTD_CONST_out(a)
when AM_FLTX_CONST then AM_FLTX_CONST_out(a)
when AM_FLTDX_CONST then AM_FLTDX_CONST_out(a)
when AM_FLTI_CONST then AM_FLTI_CONST_out(a) end;
#OUT + ") " end;
AM_OB_DEF_out(a:AM_OB_DEF) is
if void(a) then #OUT + "(void(AM_OB_DEF)) "; return end;
#OUT + "(AM_OB_DEF ";
if void(a.tp) then #OUT + "void(tp) "
else #OUT + "tp=" + a.tp.str + " " end; #OUT + "\n";
if void(a.at) then #OUT + "void(attributes)"
else
#OUT + "attributes= ";
loop p::=a.at.pairs!;
#OUT + "(" + p.t1.str + "->" + p.t2.str + ") " end end;
#OUT + "(array type=";
if void(a.arr) then #OUT + "void" else #OUT + a.arr.str end;
#OUT + " asize=" + a.asize + ")) \n" end;
AM_ROUT_DEF_out(a:AM_ROUT_DEF) is
if void(a) then #OUT + "(void(AM_ROUT_DEF)) "; return end;
#OUT + "(AM_ROUT_DEF= ";
if void(a.sig) then #OUT + "(void(sig))";
else #OUT + "(sig=" + a.sig.str + ") " end;
if a.is_abstract then #OUT + " is abstract)"; return end;
if a.size>1 then
#OUT + "(args=";
i:INT:=1;
loop while!(i<a.asize);
AM_LOCAL_EXPR_out(a[i]); #OUT + " ";
i:=i+1 end;
#OUT + ") " end;
if void(a.locals) then #OUT + "(void(locals)) ";
else #OUT + "(locals=";
i:INT:=0;
loop while!(i<a.locals.size);
AM_LOCAL_EXPR_out(a.locals[i]); #OUT + " ";
i:=i+1 end;
#OUT + ") " end;
if void(a.code) then #OUT + "(void(code)) ";
else #OUT + "(code="; AM_STMT_out(a.code) end;
#OUT + ")\n";
end;
AM_ASSIGN_STMT_out(a:AM_ASSIGN_STMT) is
if void(a) then #OUT + "void(AM_ASSIGN_STMT)"; return end;
#OUT + "AM_ASSIGN_STMT";
#OUT + " dest="; AM_EXPR_out(a.dest);
#OUT + " src="; AM_EXPR_out(a.src);
end;
AM_IF_STMT_out(a:AM_IF_STMT) is
if void(a) then #OUT + "void(AM_IF_STMT)"; return end;
#OUT + "AM_IF_STMT";
#OUT + " test="; AM_EXPR_out(a.test);
#OUT + " if_true="; AM_STMT_out(a.if_true);
#OUT + " if_false="; AM_STMT_out(a.if_false) end;
AM_LOOP_STMT_out(a:AM_LOOP_STMT) is
if void(a) then #OUT + "void(AM_LOOP_STMT)"; return end;
#OUT + "AM_LOOP_STMT";
if a.has_yield then #OUT + " has_yield=true"
else #OUT + " has_yield=false" end;
#OUT + " body="; AM_STMT_out(a.body) end;
AM_BREAK_STMT_out(a:AM_BREAK_STMT) is
if void(a) then #OUT + "void(AM_BREAK_STMT)"; return end;
#OUT + "AM_BREAK_STMT" end;
AM_RETURN_STMT_out(a:AM_RETURN_STMT) is
if void(a) then #OUT + "void(AM_RETURN_STMT)"; return end;
#OUT + "AM_RETURN_STMT";
#OUT + " val="; AM_EXPR_out(a.val) end;
AM_YIELD_STMT_out(a:AM_YIELD_STMT) is
if void(a) then #OUT + "void(AM_YIELD_STMT)"; return end;
#OUT + "AM_YIELD_STMT";
#OUT + " ret=" + a.ret;
#OUT + " val="; AM_EXPR_out(a.val) end;
AM_CASE_STMT_out(a:AM_CASE_STMT) is
if void(a) then #OUT + "void(AM_CASE_STMT)"; return end;
#OUT + "AM_CASE_STMT";
#OUT + " test="; AM_EXPR_out(a.test);
#OUT + " branches=";
i:INT:=0;
loop while!(i<a.tgts.size);
#OUT + "(";
j:INT:=0;
loop while!(j<a.tgts[i].size);
AM_CONST_out(a.tgts[i][j]); #OUT + " ";
j:=j+1 end;
AM_STMT_out(a.stmts[i]);
#OUT + ")";
i:=i+1 end;
#OUT + " else_stmts="; AM_STMT_out(a.else_stmts) end;
AM_TYPECASE_STMT_out(a:AM_TYPECASE_STMT) is
if void(a) then #OUT + "void(AM_TYPECASE_STMT)"; return end;
#OUT + "AM_TYPECASE_STMT";
#OUT + " test="; AM_LOCAL_EXPR_out(a.test);
#OUT + " branches=";
i:INT:=0;
loop while!(i<a.tgts.size);
#OUT + "(";
#OUT + a.tgts[i].str + " ";
AM_STMT_out(a.stmts[i]);
#OUT + ")";
i:=i+1 end;
#OUT + " else_stmts="; AM_STMT_out(a.else_stmts) end;
AM_PRE_STMT_out(a:AM_PRE_STMT) is
if void(a) then #OUT + "void(AM_PRE_STMT)"; return end;
#OUT + "AM_PRE_STMT";
#OUT + " test="; AM_EXPR_out(a.test) end;
AM_POST_STMT_out(a:AM_POST_STMT) is
if void(a) then #OUT + "void(AM_POST_STMT)"; return end;
#OUT + "AM_POST_STMT";
#OUT + " test="; AM_EXPR_out(a.test) end;
AM_INITIAL_STMT_out(a:AM_INITIAL_STMT) is
if void(a) then #OUT + "void(AM_INITIAL_STMT)"; return end;
#OUT + "AM_INITIAL_STMT";
#OUT + " stmts="; AM_STMT_out(a.stmts) end;
AM_ASSERT_STMT_out(a:AM_ASSERT_STMT) is
if void(a) then #OUT + "void(AM_ASSERT_STMT)"; return end;
#OUT + "AM_ASSERT_STMT";
#OUT + " test="; AM_EXPR_out(a.test) end;
AM_INVARIANT_STMT_out(a:AM_INVARIANT_STMT) is
if void(a) then #OUT + "void(AM_INVARIANT_STMT)"; return end;
#OUT + "AM_INVARIANT_STMT" end;
AM_PROTECT_STMT_out(a:AM_PROTECT_STMT) is
if void(a) then #OUT + "void(AM_PROTECT_STMT)"; return end;
#OUT + "AM_PROTECT_STMT";
#OUT + " body="; AM_STMT_out(a.body);
#OUT + " branches=";
i:INT:=0;
loop while!(i<a.tgts.size);
#OUT + "(";
#OUT + a.tgts[i].str + " ";
AM_STMT_out(a.stmts[i]);
#OUT + ")";
i:=i+1 end;
#OUT + " else_stmts="; AM_STMT_out(a.else_stmts) end;
AM_RAISE_STMT_out(a:AM_RAISE_STMT) is
if void(a) then #OUT + "void(AM_RAISE_STMT)"; return end;
#OUT + "AM_RAISE_STMT";
#OUT + " val="; AM_EXPR_out(a.val) end;
AM_EXPR_STMT_out(a:AM_EXPR_STMT) is
if void(a) then #OUT + "void(AM_EXPR_STMT)"; return end;
#OUT + "AM_EXPR_STMT";
#OUT + " expr="; AM_EXPR_out(a.expr) end;
AM_LOCAL_EXPR_out(a:AM_LOCAL_EXPR) is
if void(a) then #OUT + "void((AM_LOCAL_EXPR))"; return end;
if void(a.name) and void(a.tp_at) then
#OUT + "noname:notype"
elsif void(a.name) then
#OUT + "noname:" + a.tp_at.str
elsif void(a.tp_at) then
#OUT + a.name.str + ":notype"
else #OUT + a.name.str + ":" + a.tp_at.str end end;
AM_ARRAY_EXPR_out(a:AM_ARRAY_EXPR) is
if void(a) then #OUT + "void"; return end;
#OUT + "AM_ARRAY_EXPR";
#OUT + " tp=" + a.tp_at.str;
loop #OUT + " "; AM_EXPR_out(a.elt!) end end;
AM_BND_CREATE_EXPR_out(a:AM_BND_CREATE_EXPR) is
if void(a) then #OUT + "void(AM_BMD_CREATE_EXPR)"; return end;
#OUT + "AM_BMD_CREATE_EXPR";
#OUT + " args=(";
loop i::=a.ind!;
if i/=0 then #OUT + " " end;
AM_EXPR_out(a[i]) end;
#OUT + ")";
#OUT + " fun=" + a.fun.str;
#OUT + " (bnd_args=";
loop j::=a.bnd_args.ind!;
if j/=0 then #OUT + " " end;
#OUT + a.bnd_args[j] end;
#OUT + ")(unbnd_args=";
loop j::=a.unbnd_args.ind!;
if j/=0 then #OUT + " " end;
#OUT + a.unbnd_args[j] end;
#OUT + ")";
#OUT + "tp_at=" + a.tp_at.str end;
AM_IF_EXPR_out(a:AM_IF_EXPR) is
if void(a) then #OUT + "void(AM_IF_EXPR)"; return end;
#OUT + "AM_IF_EXPR";
#OUT + " test="; AM_EXPR_out(a.test);
#OUT + " if_true="; AM_EXPR_out(a.if_true);
#OUT + " if_false="; AM_EXPR_out(a.if_false) end;
AM_NEW_EXPR_out(a:AM_NEW_EXPR) is
if void(a) then #OUT + "void(AM_NEW_EXPR)"; return end;
#OUT + "AM_NEW_EXPR";
#OUT + " asz="; AM_EXPR_out(a.asz) end;
AM_IS_VOID_EXPR_out(a:AM_IS_VOID_EXPR) is
if void(a) then #OUT + "void(AM_IS_VOID_EXPR)"; return end;
#OUT + "AM_IS_VOID_EXPR";
#OUT + " arg="; AM_EXPR_out(a.arg) end;
AM_GLOBAL_EXPR_out(a:AM_GLOBAL_EXPR) is
if void(a) then #OUT + "void(AM_GLOBAL_EXPR)"; return end;
#OUT + "AM_GLOBAL_EXPR";
#OUT + " name=";
if void(a.name) then #OUT + "void" else #OUT + a.name.str end;
#OUT + " tp=";
if void(a.tp_at) then #OUT + "void" else #OUT + a.tp_at.str end;
#OUT + " class_tp=";
if void(a.class_tp) then #OUT + "void" else
#OUT + a.class_tp.str end;
#OUT + " init="; AM_EXPR_out(a.init) end;
AM_ATTR_EXPR_out(a:AM_ATTR_EXPR) is
if void(a) then #OUT + "void(AM_ATTR_EXPR)"; return end;
#OUT + "AM_ATTR_EXPR";
#OUT + " ob="; AM_EXPR_out(a.ob);
#OUT + " at=" + a.at.str;
#OUT + " tp=" + a.tp_at.str end;
AM_ARR_EXPR_out(a:AM_ARR_EXPR) is
if void(a) then #OUT + "void(AM_ARR_EXPR)"; return end;
#OUT + "AM_ARR_EXPR";
#OUT + " ob="; AM_EXPR_out(a.ob);
#OUT + " ind="; AM_EXPR_out(a.ind);
#OUT + " tp=" + a.tp_at.str end;
AM_VATTR_ASSIGN_EXPR_out(a:AM_VATTR_ASSIGN_EXPR) is
if void(a) then #OUT + "void(AM_VATTR_EXPR)"; return end;
#OUT + "AM_VATTR_EXPR";
if void(a.ob) then #OUT + " void(ob)";
else #OUT + " ob="; AM_EXPR_out(a.ob) end;
if void(a.at) then #OUT + " void(at)";
else #OUT + " at=" + a.at.str end;
if void(a.val) then #OUT + " void(val)";
else #OUT + " val="; AM_EXPR_out(a.val) end end;
AM_VARR_ASSIGN_EXPR_out(a:AM_VARR_ASSIGN_EXPR) is
if void(a) then #OUT + "void(AM_VARR_EXPR)"; return end;
#OUT + "AM_VARR_EXPR";
if void(a.ob) then #OUT + " void(ob)";
else #OUT + " ob="; AM_EXPR_out(a.ob) end;
if void(a.ind) then #OUT + " void(ind)";
else #OUT + " ind="; AM_EXPR_out(a.ind) end;
if void(a.val) then #OUT + " void(val)";
else #OUT + " val="; AM_EXPR_out(a.val) end end;
AM_EXCEPT_EXPR_out(a:AM_EXCEPT_EXPR) is
if void(a) then #OUT + "void(AM_EXCEPT_EXPR)"; return end;
#OUT + "AM_EXCEPT_EXPR" end;
AM_STMT_EXPR_out(a:AM_STMT_EXPR) is
if void(a) then #OUT + "void(AM_STMT_EXPR)"; return end;
#OUT + "AM_STMT_EXPR";
if void(a.stmts) then #OUT + " void(stmts)";
else #OUT + " stmts="; AM_STMT_out(a.stmts) end;
if void(a.expr) then #OUT + " void(expr)";
else #OUT + " expr="; AM_EXPR_out(a.expr) end end;
AM_ROUT_CALL_EXPR_out(a:AM_ROUT_CALL_EXPR) is
if void(a) then #OUT + "void(AM_ROUT_CALL_EXPR)"; return end;
#OUT + "AM_ROUT_CALL_EXPR";
#OUT + " fun=" + a.fun.str;
#OUT + " args=";
loop AM_EXPR_out(a.elt!) end end;
AM_ITER_CALL_EXPR_out(a:AM_ITER_CALL_EXPR) is
if void(a) then #OUT + "void(AM_ITER_CALL_EXPR)"; return end;
#OUT + "AM_ITER_CALL_EXPR";
#OUT + " fun=" + a.fun.str;
#OUT + " init="; AM_STMT_out(a.init);
#OUT + " args=";
loop AM_EXPR_out(a.elt!) end end;
AM_BND_ROUT_CALL_EXPR_out(a:AM_BND_ROUT_CALL_EXPR) is
if void(a) then #OUT + "void(AM_BND_ROUT_CALL_EXPR)"; return end;
#OUT + "AM_BND_ROUT_CALL_EXPR";
#OUT + " br="; AM_EXPR_out(a.br);
#OUT + " args=";
loop AM_EXPR_out(a.elt!) end end;
AM_BND_ITER_CALL_EXPR_out(a:AM_BND_ITER_CALL_EXPR) is
if void(a) then #OUT + "void(AM_BND_ITER_CALL_EXPR)"; return end;
#OUT + "AM_BND_ITER_CALL_EXPR";
#OUT + " bi="; AM_EXPR_out(a.bi);
#OUT + " init="; AM_STMT_out(a.init);
#OUT + " args=";
loop AM_EXPR_out(a.elt!) end end;
AM_EXT_CALL_EXPR_out(a:AM_EXT_CALL_EXPR) is
if void(a) then #OUT + "void(AM_EXT_CALL_EXPR)"; return end;
#OUT + "AM_EXT_CALL_EXPR";
#OUT + " fun=" + a.fun.str;
#OUT + " args=";
loop AM_EXPR_out(a.elt!) end end;
AM_VOID_CONST_out(a:AM_VOID_CONST) is
if void(a) then #OUT + "void(void(AM_VOID_CONST)"; return end;
#OUT + "(AM_VOID_CONST:";
if void(a.tp_at) then #OUT + "void)" else
#OUT + a.tp_at.str + ") " end end;
AM_ARR_CONST_out(a:AM_ARR_CONST) is
if void(a) then #OUT + "void(AM_ARR_CONST)"; return end;
#OUT + "AM_ARR_CONST";
#OUT + " elt_tp=" + a.elt_tp.str;
#OUT + " elts=";
loop AM_EXPR_out(a.elts.elt!) end end;
AM_BOOL_CONST_out(a:AM_BOOL_CONST) is
if void(a) then #OUT + "void(AM_BOOL_CONST)"; return end;
#OUT + "AM_BOOL_CONST";
if a.val then #OUT + " val=true"
else #OUT + " val=false" end end;
AM_CHAR_CONST_out(a:AM_CHAR_CONST) is
if void(a) then #OUT + "void(AM_CHAR_CONST)"; return end;
#OUT + "AM_CHAR_CONST";
#OUT + " bval='" + a.bval + "'" end;
AM_STR_CONST_out(a:AM_STR_CONST) is
if void(a) then #OUT + "void(AM_STR_CONST)"; return end;
#OUT + "AM_STR_CONST";
#OUT + " bval=" + a.bval end;
AM_INT_CONST_out(a:AM_INT_CONST) is
if void(a) then #OUT + "void(AM_INT_CONST)"; return end;
#OUT + "AM_INT_CONST";
#OUT + " val=" + a.val end;
AM_INTI_CONST_out(a:AM_INTI_CONST) is
if void(a) then #OUT + "void(AM_INTI_CONST)"; return end;
#OUT + "AM_INTI_CONST";
#OUT + " val=" + a.val.str end;
AM_FLT_CONST_out(a:AM_FLT_CONST) is
if void(a) then #OUT + "void(AM_FLT_CONST)"; return end;
#OUT + "AM_FLT_CONST";
#OUT + " val=" + a.val.str end;
AM_FLTD_CONST_out(a:AM_FLTD_CONST) is
if void(a) then #OUT + "void(AM_FLTD_CONST)"; return end;
#OUT + "AM_FLTD_CONST";
#OUT + " val=" + a.val.str end;
AM_FLTX_CONST_out(a:AM_FLTX_CONST) is
if void(a) then #OUT + "void(AM_FLTX_CONST)"; return end;
#OUT + "AM_FLTX_CONST";
#OUT + " val=" + a.val.str end;
AM_FLTDX_CONST_out(a:AM_FLTDX_CONST) is
if void(a) then #OUT + "void(AM_FLTDX_CONST)"; return end;
#OUT + "AM_FLTDX_CONST";
#OUT + " val=" + a.val.str end;
AM_FLTI_CONST_out(a:AM_FLTI_CONST) is
if void(a) then #OUT + "void(AM_FLTI_CONST)"; return end;
#OUT + "AM_FLTI_CONST";
#OUT + " val=" + a.val.str end;
end; -- class AM_OUT
-------------------------------------------------------------------