as_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. <----------
-- as_out.sa: Pretty Printing of the Abstract Syntax tree representation
class AS_OUT
class AS_OUT is
shared prog:PROG;
private shared indent : INT;
private iinc is
indent := indent + 3;-- AS_OUT::indent AS_OUT::indent INT::plus
end;
private idec is
indent := indent - 3;-- AS_OUT::indent AS_OUT::indent INT::minus
end;
private ind is
loop indent.times!;-- AS_OUT::indent INT::times!
#OUT+" ";-- OUT::create OUT::plus
end;
end;
-- Output an AS tree for debugging purposes.
AS_NODE_out(t:$AS_NODE) is
if void(t) then #OUT + "$AS_NODE=void "; return end;-- OUT::create OUT::plus
typecase t
when AS_CLASS_DEF then AS_CLASS_DEF_out(t)-- AS_OUT::AS_CLASS_DEF_out
when AS_CONST_DEF then AS_CONST_DEF_out(t)-- AS_OUT::AS_CONST_DEF_out
when AS_SHARED_DEF then AS_SHARED_DEF_out(t)-- AS_OUT::AS_SHARED_DEF_out
when AS_ATTR_DEF then AS_ATTR_DEF_out(t)-- AS_OUT::AS_ATTR_DEF_out
when AS_ROUT_DEF then AS_ROUT_DEF_out(t)-- AS_OUT::AS_ROUT_DEF_out
when AS_INCLUDE_CLAUSE then AS_INCLUDE_CLAUSE_out(t)-- AS_OUT::AS_INCLUDE_CLAUSE_out
when AS_STMT_LIST then AS_STMT_LIST_out(t)-- AS_OUT::AS_STMT_LIST_out
when AS_DEC_STMT then AS_DEC_STMT_out(t)-- AS_OUT::AS_DEC_STMT_out
when AS_ASSIGN_STMT then AS_ASSIGN_STMT_out(t)-- AS_OUT::AS_ASSIGN_STMT_out
when AS_IF_STMT then AS_IF_STMT_out(t)-- AS_OUT::AS_IF_STMT_out
when AS_LOOP_STMT then AS_LOOP_STMT_out(t)-- AS_OUT::AS_LOOP_STMT_out
when AS_RETURN_STMT then AS_RETURN_STMT_out(t)-- AS_OUT::AS_RETURN_STMT_out
when AS_YIELD_STMT then AS_YIELD_STMT_out(t)-- AS_OUT::AS_YIELD_STMT_out
when AS_QUIT_STMT then AS_QUIT_STMT_out(t)-- AS_OUT::AS_QUIT_STMT_out
when AS_CASE_STMT then AS_CASE_STMT_out(t)-- AS_OUT::AS_CASE_STMT_out
when AS_TYPECASE_STMT then AS_TYPECASE_STMT_out(t)-- AS_OUT::AS_TYPECASE_STMT_out
when AS_ASSERT_STMT then AS_ASSERT_STMT_out(t)-- AS_OUT::AS_ASSERT_STMT_out
when AS_PROTECT_STMT then AS_PROTECT_STMT_out(t)-- AS_OUT::AS_PROTECT_STMT_out
when AS_RAISE_STMT then AS_RAISE_STMT_out(t)-- AS_OUT::AS_RAISE_STMT_out
when AS_EXPR_STMT then AS_EXPR_STMT_out(t)-- AS_OUT::AS_EXPR_STMT_out
when AS_SELF_EXPR then AS_SELF_EXPR_out(t)-- AS_OUT::AS_SELF_EXPR_out
when AS_CALL_EXPR then AS_CALL_EXPR_out(t)-- AS_OUT::AS_CALL_EXPR_out
when AS_VOID_EXPR then AS_VOID_EXPR_out(t)-- AS_OUT::AS_VOID_EXPR_out
when AS_IS_VOID_EXPR then AS_IS_VOID_EXPR_out(t)-- AS_OUT::AS_IS_VOID_EXPR_out
when AS_ARRAY_EXPR then AS_ARRAY_EXPR_out(t)-- AS_OUT::AS_ARRAY_EXPR_out
when AS_CREATE_EXPR then AS_CREATE_EXPR_out(t)-- AS_OUT::AS_CREATE_EXPR_out
when AS_BOUND_CREATE_EXPR then AS_BOUND_CREATE_EXPR_out(t)-- AS_OUT::AS_BOUND_CREATE_EXPR_out
when AS_UNDERSCORE_ARG then AS_UNDERSCORE_ARG_out(t)-- AS_OUT::AS_UNDERSCORE_ARG_out
when AS_AND_EXPR then AS_AND_EXPR_out(t)-- AS_OUT::AS_AND_EXPR_out
when AS_OR_EXPR then AS_OR_EXPR_out(t)-- AS_OUT::AS_OR_EXPR_out
when AS_EXCEPT_EXPR then AS_EXCEPT_EXPR_out(t)-- AS_OUT::AS_EXCEPT_EXPR_out
when AS_NEW_EXPR then AS_NEW_EXPR_out(t)-- AS_OUT::AS_NEW_EXPR_out
when AS_INITIAL_EXPR then AS_INITIAL_EXPR_out(t)-- AS_OUT::AS_INITIAL_EXPR_out
when AS_BREAK_EXPR then AS_BREAK_EXPR_out(t)-- AS_OUT::AS_BREAK_EXPR_out
when AS_RESULT_EXPR then AS_RESULT_EXPR_out(t)-- AS_OUT::AS_RESULT_EXPR_out
when AS_BOOL_LIT_EXPR then AS_BOOL_LIT_EXPR_out(t)-- AS_OUT::AS_BOOL_LIT_EXPR_out
when AS_CHAR_LIT_EXPR then AS_CHAR_LIT_EXPR_out(t)-- AS_OUT::AS_CHAR_LIT_EXPR_out
when AS_STR_LIT_EXPR then AS_STR_LIT_EXPR_out(t)-- AS_OUT::AS_STR_LIT_EXPR_out
when AS_INT_LIT_EXPR then AS_INT_LIT_EXPR_out(t)-- AS_OUT::AS_INT_LIT_EXPR_out
when AS_FLT_LIT_EXPR then AS_FLT_LIT_EXPR_out(t)-- AS_OUT::AS_FLT_LIT_EXPR_out
when AS_PARAM_DEC then AS_PARAM_DEC_out(t)-- AS_OUT::AS_PARAM_DEC_out
when AS_TYPE_SPEC then AS_TYPE_SPEC_out(t)-- AS_OUT::AS_TYPE_SPEC_out
when AS_ARG_DEC then AS_ARG_DEC_out(t)-- AS_OUT::AS_ARG_DEC_out
when AS_FEAT_MOD then AS_FEAT_MOD_out(t)-- AS_OUT::AS_FEAT_MOD_out
when AS_CASE_WHEN then AS_CASE_WHEN_out(t)-- AS_OUT::AS_CASE_WHEN_out
when AS_TYPECASE_WHEN then AS_TYPECASE_WHEN_out(t)-- AS_OUT::AS_TYPECASE_WHEN_out
when AS_PROTECT_WHEN then AS_PROTECT_WHEN_out(t)-- AS_OUT::AS_PROTECT_WHEN_out
when AS_LOCK_IF_WHEN then AS_LOCK_IF_WHEN_out(t)-- AS_OUT::AS_LOCK_IF_WHEN_out
when AS_PAR_STMT then AS_PAR_STMT_out(t)-- AS_OUT::AS_PAR_STMT_out
when AS_INTERF_ATTACH_STMT then AS_INTERF_ATTACH_STMT_out(t)-- AS_OUT::AS_INTERF_ATTACH_STMT_out
when AS_LOCK_STMT then AS_LOCK_STMT_out(t)-- AS_OUT::AS_LOCK_STMT_out
when AS_UNLOCK_STMT then AS_UNLOCK_STMT_out(t)-- AS_OUT::AS_UNLOCK_STMT_out
when AS_WITH_NEAR_STMT then AS_WITH_NEAR_STMT_out(t)-- AS_OUT::AS_WITH_NEAR_STMT_out
when AS_ATTACH_STMT then AS_ATTACH_STMT_out(t)-- AS_OUT::AS_ATTACH_STMT_out
when AS_FORK_STMT then AS_FORK_STMT_out(t)-- AS_OUT::AS_FORK_STMT_out
when AS_SYNC_STMT then AS_SYNC_STMT_out(t)-- AS_OUT::AS_SYNC_STMT_out
end end;
AS_CLASS_ELT_out(t:$AS_CLASS_ELT) is
if void(t) then return end;
typecase t
when AS_CONST_DEF then AS_CONST_DEF_out(t)-- AS_OUT::AS_CONST_DEF_out
when AS_SHARED_DEF then AS_SHARED_DEF_out(t)-- AS_OUT::AS_SHARED_DEF_out
when AS_ATTR_DEF then AS_ATTR_DEF_out(t)-- AS_OUT::AS_ATTR_DEF_out
when AS_ROUT_DEF then AS_ROUT_DEF_out(t)-- AS_OUT::AS_ROUT_DEF_out
when AS_INCLUDE_CLAUSE then AS_INCLUDE_CLAUSE_out(t) -- AS_OUT::AS_INCLUDE_CLAUSE_out
end end;
AS_STMT_LIST_out(t:AS_STMT_LIST) is
if void(t) then return end;
AS_STMT_out(t.stmts);-- AS_OUT::AS_STMT_out AS_STMT_LIST::stmts
end;
AS_STMT_out(t:$AS_STMT) is
if void(t) then return end;
if void(t.surr_stmt_list) then #OUT+"void surr_ptr" end;-- OUT::create OUT::plus
typecase t
when AS_DEC_STMT then AS_DEC_STMT_out(t)-- AS_OUT::AS_DEC_STMT_out
when AS_ASSIGN_STMT then AS_ASSIGN_STMT_out(t)-- AS_OUT::AS_ASSIGN_STMT_out
when AS_IF_STMT then AS_IF_STMT_out(t)-- AS_OUT::AS_IF_STMT_out
when AS_LOOP_STMT then AS_LOOP_STMT_out(t)-- AS_OUT::AS_LOOP_STMT_out
when AS_RETURN_STMT then AS_RETURN_STMT_out(t)-- AS_OUT::AS_RETURN_STMT_out
when AS_YIELD_STMT then AS_YIELD_STMT_out(t)-- AS_OUT::AS_YIELD_STMT_out
when AS_QUIT_STMT then AS_QUIT_STMT_out(t)-- AS_OUT::AS_QUIT_STMT_out
when AS_CASE_STMT then AS_CASE_STMT_out(t)-- AS_OUT::AS_CASE_STMT_out
when AS_TYPECASE_STMT then AS_TYPECASE_STMT_out(t)-- AS_OUT::AS_TYPECASE_STMT_out
when AS_ASSERT_STMT then AS_ASSERT_STMT_out(t)-- AS_OUT::AS_ASSERT_STMT_out
when AS_PROTECT_STMT then AS_PROTECT_STMT_out(t)-- AS_OUT::AS_PROTECT_STMT_out
when AS_RAISE_STMT then AS_RAISE_STMT_out(t)-- AS_OUT::AS_RAISE_STMT_out
when AS_EXPR_STMT then AS_EXPR_STMT_out(t) -- AS_OUT::AS_EXPR_STMT_out
--pSather
when AS_PAR_STMT then AS_PAR_STMT_out(t)-- AS_OUT::AS_PAR_STMT_out
when AS_INTERF_ATTACH_STMT then AS_INTERF_ATTACH_STMT_out(t)-- AS_OUT::AS_INTERF_ATTACH_STMT_out
when AS_LOCK_STMT then AS_LOCK_STMT_out(t)-- AS_OUT::AS_LOCK_STMT_out
when AS_UNLOCK_STMT then AS_UNLOCK_STMT_out(t)-- AS_OUT::AS_UNLOCK_STMT_out
when AS_WITH_NEAR_STMT then AS_WITH_NEAR_STMT_out(t)-- AS_OUT::AS_WITH_NEAR_STMT_out
when AS_ATTACH_STMT then AS_ATTACH_STMT_out(t)-- AS_OUT::AS_ATTACH_STMT_out
when AS_FORK_STMT then AS_FORK_STMT_out(t)-- AS_OUT::AS_FORK_STMT_out
when AS_SYNC_STMT then AS_SYNC_STMT_out(t)-- AS_OUT::AS_SYNC_STMT_out
end;
if ~void(t.next) then-- BOOL::not
AS_STMT_out(t.next);-- AS_OUT::AS_STMT_out
end;
end;
AS_EXPR_out(t:$AS_EXPR) is
if void(t) then #OUT + "$AS_EXPR=void"; return end;-- OUT::create OUT::plus
typecase t
when AS_SELF_EXPR then AS_SELF_EXPR_out(t)-- AS_OUT::AS_SELF_EXPR_out
when AS_CALL_EXPR then AS_CALL_EXPR_out(t)-- AS_OUT::AS_CALL_EXPR_out
when AS_VOID_EXPR then AS_VOID_EXPR_out(t)-- AS_OUT::AS_VOID_EXPR_out
when AS_IS_VOID_EXPR then AS_IS_VOID_EXPR_out(t)-- AS_OUT::AS_IS_VOID_EXPR_out
when AS_ARRAY_EXPR then AS_ARRAY_EXPR_out(t)-- AS_OUT::AS_ARRAY_EXPR_out
when AS_CREATE_EXPR then AS_CREATE_EXPR_out(t)-- AS_OUT::AS_CREATE_EXPR_out
when AS_BOUND_CREATE_EXPR then AS_BOUND_CREATE_EXPR_out(t)-- AS_OUT::AS_BOUND_CREATE_EXPR_out
when AS_UNDERSCORE_ARG then AS_UNDERSCORE_ARG_out(t)-- AS_OUT::AS_UNDERSCORE_ARG_out
when AS_AND_EXPR then AS_AND_EXPR_out(t)-- AS_OUT::AS_AND_EXPR_out
when AS_OR_EXPR then AS_OR_EXPR_out(t)-- AS_OUT::AS_OR_EXPR_out
when AS_EXCEPT_EXPR then AS_EXCEPT_EXPR_out(t)-- AS_OUT::AS_EXCEPT_EXPR_out
when AS_NEW_EXPR then AS_NEW_EXPR_out(t)-- AS_OUT::AS_NEW_EXPR_out
when AS_INITIAL_EXPR then AS_INITIAL_EXPR_out(t)-- AS_OUT::AS_INITIAL_EXPR_out
when AS_BREAK_EXPR then AS_BREAK_EXPR_out(t)-- AS_OUT::AS_BREAK_EXPR_out
when AS_RESULT_EXPR then AS_RESULT_EXPR_out(t)-- AS_OUT::AS_RESULT_EXPR_out
when AS_BOOL_LIT_EXPR then AS_BOOL_LIT_EXPR_out(t)-- AS_OUT::AS_BOOL_LIT_EXPR_out
when AS_CHAR_LIT_EXPR then AS_CHAR_LIT_EXPR_out(t)-- AS_OUT::AS_CHAR_LIT_EXPR_out
when AS_STR_LIT_EXPR then AS_STR_LIT_EXPR_out(t)-- AS_OUT::AS_STR_LIT_EXPR_out
when AS_INT_LIT_EXPR then AS_INT_LIT_EXPR_out(t)-- AS_OUT::AS_INT_LIT_EXPR_out
when AS_FLT_LIT_EXPR then AS_FLT_LIT_EXPR_out(t) -- AS_OUT::AS_FLT_LIT_EXPR_out
-- pSather
when AS_HERE_EXPR then AS_HERE_EXPR_out(t)-- AS_OUT::AS_HERE_EXPR_out
when AS_ANY_EXPR then AS_ANY_EXPR_out(t)-- AS_OUT::AS_ANY_EXPR_out
when AS_WHERE_EXPR then AS_WHERE_EXPR_out(t)-- AS_OUT::AS_WHERE_EXPR_out
when AS_NEAR_EXPR then AS_NEAR_EXPR_out(t)-- AS_OUT::AS_NEAR_EXPR_out
when AS_FAR_EXPR then AS_FAR_EXPR_out(t)-- AS_OUT::AS_FAR_EXPR_out
when AS_AT_EXPR then AS_AT_EXPR_out(t)-- AS_OUT::AS_AT_EXPR_out
when AS_CLUSTER_EXPR then AS_CLUSTER_EXPR_out(t)-- AS_OUT::AS_CLUSTER_EXPR_out
when AS_CLUSTER_SIZE_EXPR then AS_CLUSTER_SIZE_EXPR_out(t) -- AS_OUT::AS_CLUSTER_SIZE_EXPR_out
when AS_COHORT_EXPR then AS_COHORT_EXPR_out(t)-- AS_OUT::AS_COHORT_EXPR_out
end;
if ~void(t.next) then-- BOOL::not
#OUT+", ";-- OUT::create OUT::plus
AS_EXPR_out(t.next);-- AS_OUT::AS_EXPR_out
end;
end;
AS_MODE_EXPR_out(m: AS_ARG_MODE, t:$AS_EXPR) is
if void(t) then #OUT + "$AS_EXPR=void"; return end;-- OUT::create OUT::plus
AS_MODE_out(m);-- AS_OUT::AS_MODE_out
typecase t
when AS_SELF_EXPR then AS_SELF_EXPR_out(t)-- AS_OUT::AS_SELF_EXPR_out
when AS_CALL_EXPR then AS_CALL_EXPR_out(t)-- AS_OUT::AS_CALL_EXPR_out
when AS_VOID_EXPR then AS_VOID_EXPR_out(t)-- AS_OUT::AS_VOID_EXPR_out
when AS_IS_VOID_EXPR then AS_IS_VOID_EXPR_out(t)-- AS_OUT::AS_IS_VOID_EXPR_out
when AS_ARRAY_EXPR then AS_ARRAY_EXPR_out(t)-- AS_OUT::AS_ARRAY_EXPR_out
when AS_CREATE_EXPR then AS_CREATE_EXPR_out(t)-- AS_OUT::AS_CREATE_EXPR_out
when AS_BOUND_CREATE_EXPR then AS_BOUND_CREATE_EXPR_out(t)-- AS_OUT::AS_BOUND_CREATE_EXPR_out
when AS_UNDERSCORE_ARG then AS_UNDERSCORE_ARG_out(t)-- AS_OUT::AS_UNDERSCORE_ARG_out
when AS_AND_EXPR then AS_AND_EXPR_out(t)-- AS_OUT::AS_AND_EXPR_out
when AS_OR_EXPR then AS_OR_EXPR_out(t)-- AS_OUT::AS_OR_EXPR_out
when AS_EXCEPT_EXPR then AS_EXCEPT_EXPR_out(t)-- AS_OUT::AS_EXCEPT_EXPR_out
when AS_NEW_EXPR then AS_NEW_EXPR_out(t)-- AS_OUT::AS_NEW_EXPR_out
when AS_INITIAL_EXPR then AS_INITIAL_EXPR_out(t)-- AS_OUT::AS_INITIAL_EXPR_out
when AS_BREAK_EXPR then AS_BREAK_EXPR_out(t)-- AS_OUT::AS_BREAK_EXPR_out
when AS_RESULT_EXPR then AS_RESULT_EXPR_out(t)-- AS_OUT::AS_RESULT_EXPR_out
when AS_BOOL_LIT_EXPR then AS_BOOL_LIT_EXPR_out(t)-- AS_OUT::AS_BOOL_LIT_EXPR_out
when AS_CHAR_LIT_EXPR then AS_CHAR_LIT_EXPR_out(t)-- AS_OUT::AS_CHAR_LIT_EXPR_out
when AS_STR_LIT_EXPR then AS_STR_LIT_EXPR_out(t)-- AS_OUT::AS_STR_LIT_EXPR_out
when AS_INT_LIT_EXPR then AS_INT_LIT_EXPR_out(t)-- AS_OUT::AS_INT_LIT_EXPR_out
when AS_FLT_LIT_EXPR then AS_FLT_LIT_EXPR_out(t) -- AS_OUT::AS_FLT_LIT_EXPR_out
-- pSather
when AS_HERE_EXPR then AS_HERE_EXPR_out(t)-- AS_OUT::AS_HERE_EXPR_out
when AS_ANY_EXPR then AS_ANY_EXPR_out(t)-- AS_OUT::AS_ANY_EXPR_out
when AS_WHERE_EXPR then AS_WHERE_EXPR_out(t)-- AS_OUT::AS_WHERE_EXPR_out
when AS_NEAR_EXPR then AS_NEAR_EXPR_out(t)-- AS_OUT::AS_NEAR_EXPR_out
when AS_FAR_EXPR then AS_FAR_EXPR_out(t)-- AS_OUT::AS_FAR_EXPR_out
when AS_AT_EXPR then AS_AT_EXPR_out(t)-- AS_OUT::AS_AT_EXPR_out
when AS_CLUSTER_EXPR then AS_CLUSTER_EXPR_out(t)-- AS_OUT::AS_CLUSTER_EXPR_out
when AS_CLUSTER_SIZE_EXPR then AS_CLUSTER_SIZE_EXPR_out(t) -- AS_OUT::AS_CLUSTER_SIZE_EXPR_out
when AS_COHORT_EXPR then AS_COHORT_EXPR_out(t)-- AS_OUT::AS_COHORT_EXPR_out
end;
if ~void(t.next) then-- BOOL::not
#OUT+", ";-- OUT::create OUT::plus
AS_MODE_EXPR_out(m.next, t.next);-- AS_OUT::AS_MODE_EXPR_out AS_ARG_MODE::next
end;
end;
AS_CLASS_DEF_out(t:AS_CLASS_DEF) is
indent := 0;-- AS_OUT::indent
if void(t) then #OUT + "AS_CLASS_DEF=void\n\n"; return end;-- OUT::create OUT::plus
case t.kind-- AS_CLASS_DEF::kind
when t.imm then #OUT + "immutable class ";-- AS_CLASS_DEF::imm OUT::create OUT::plus
when t.ref then #OUT + "class "-- AS_CLASS_DEF::ref OUT::create
when t.abs then #OUT + "type ";-- OUT::plus AS_CLASS_DEF::abs OUT::create OUT::plus
when t.c_ext then #OUT + "external C class " -- AS_CLASS_DEF::c_ext OUT::create
when t.fortran_ext then #OUT + "external FORTRAN class " -- OUT::plus AS_CLASS_DEF::fortran_ext OUT::create
when t.spr then #OUT + "spread class "-- OUT::plus AS_CLASS_DEF::spr OUT::create
end; -- OUT::plus
#OUT + withoutunder(t.name.str.upper) + ' ';-- OUT::create OUT::plus AS_OUT::withoutunder AS_CLASS_DEF::name IDENT::str STR::upper OUT::plus
if ~void(t.params) then-- AS_CLASS_DEF::params BOOL::not
#OUT+"{";-- OUT::create OUT::plus
AS_PARAM_DEC_out(t.params);-- AS_OUT::AS_PARAM_DEC_out AS_CLASS_DEF::params
#OUT+"}";-- OUT::create OUT::plus
end;
if ~void(t.under) then -- AS_CLASS_DEF::under BOOL::not
#OUT+" < ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.under);-- AS_OUT::AS_TYPE_SPEC_out AS_CLASS_DEF::under
end;
if ~void(t.over) then -- AS_CLASS_DEF::over BOOL::not
#OUT+" > ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.over);-- AS_OUT::AS_TYPE_SPEC_out AS_CLASS_DEF::over
end;
#OUT+" is \n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_CLASS_ELT_out(t.body);-- AS_OUT::AS_CLASS_ELT_out AS_CLASS_DEF::body
#OUT+"end; -- of " + withoutunder(t.name.str.upper) + "\n";-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_CLASS_DEF::name IDENT::str STR::upper OUT::plus
end;
AS_CONST_DEF_out(t:AS_CONST_DEF) is
if void(t) then #OUT + "AS_CONST_DEF=void\n\n"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
if t.is_private then #OUT+"private "; end;-- AS_CONST_DEF::is_private OUT::create OUT::plus
#OUT+"const "+withoutunder(t.name.str)+' ';-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_CONST_DEF::name IDENT::str OUT::plus
if ~void(t.tp) then-- AS_CONST_DEF::tp BOOL::not
#OUT+": ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_CONST_DEF::tp
end;
if ~void(t.init) then-- AS_CONST_DEF::init BOOL::not
#OUT+":= ";-- OUT::create OUT::plus
AS_EXPR_out(t.init);-- AS_OUT::AS_EXPR_out AS_CONST_DEF::init
end;
#OUT+";\n";-- OUT::create OUT::plus
if ~void(t.next) then AS_CLASS_ELT_out(t.next) end;-- AS_CONST_DEF::next BOOL::not AS_OUT::AS_CLASS_ELT_out AS_CONST_DEF::next
end;
AS_SHARED_DEF_out(t:AS_SHARED_DEF) is
if void(t) then #OUT + "AS_SHARED_DEF=void\n\n"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
if t.is_private then #OUT+"private "; end;-- AS_SHARED_DEF::is_private OUT::create OUT::plus
if t.is_readonly then #OUT+"readonly "; end;-- AS_SHARED_DEF::is_readonly OUT::create OUT::plus
#OUT+"shared "+withoutunder(t.name.str)+' ';-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_SHARED_DEF::name IDENT::str OUT::plus
if ~void(t.tp) then-- AS_SHARED_DEF::tp BOOL::not
#OUT+": ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_SHARED_DEF::tp
end;
if ~void(t.init) then-- AS_SHARED_DEF::init BOOL::not
#OUT+":= ";-- OUT::create OUT::plus
end;
#OUT+";\n";-- OUT::create OUT::plus
if ~void(t.next) then AS_CLASS_ELT_out(t.next) end;-- AS_SHARED_DEF::next BOOL::not AS_OUT::AS_CLASS_ELT_out AS_SHARED_DEF::next
end;
AS_ATTR_DEF_out(t:AS_ATTR_DEF) is
if void(t) then #OUT + "AS_ATTR_DEF=void\n\n"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
if t.is_private then #OUT+"private "; end;-- AS_ATTR_DEF::is_private OUT::create OUT::plus
if t.is_readonly then #OUT+"readonly "; end;-- AS_ATTR_DEF::is_readonly OUT::create OUT::plus
#OUT+"attr "+withoutunder(t.name.str)+' ';-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_ATTR_DEF::name IDENT::str OUT::plus
if ~void(t.tp) then-- AS_ATTR_DEF::tp BOOL::not
#OUT+": ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_ATTR_DEF::tp
end;
#OUT+";\n";-- OUT::create OUT::plus
if ~void(t.next) then AS_CLASS_ELT_out(t.next) end;-- AS_ATTR_DEF::next BOOL::not AS_OUT::AS_CLASS_ELT_out AS_ATTR_DEF::next
end;
AS_ROUT_DEF_out(t:AS_ROUT_DEF) is
if void(t) then #OUT + "AS_ROUT_DEF=void\n\n"; return end; -- OUT::create OUT::plus
ind; -- AS_OUT::ind
if t.is_private then #OUT+"private "; end;-- AS_ROUT_DEF::is_private OUT::create OUT::plus
#OUT+withoutunder(t.name.str)+' ';-- OUT::create OUT::plus AS_OUT::withoutunder AS_ROUT_DEF::name IDENT::str OUT::plus
if ~void(t.args_dec) then-- AS_ROUT_DEF::args_dec BOOL::not
#OUT+"(";-- OUT::create OUT::plus
AS_ARG_DEC_out(t.args_dec);-- AS_OUT::AS_ARG_DEC_out AS_ROUT_DEF::args_dec
#OUT+")";-- OUT::create OUT::plus
end;
if ~void(t.ret_dec) then-- AS_ROUT_DEF::ret_dec BOOL::not
#OUT+": ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.ret_dec);-- AS_OUT::AS_TYPE_SPEC_out AS_ROUT_DEF::ret_dec
if ~void(t.pre_e) or ~void(t.post_e) then #OUT+"\n";ind; end;-- AS_ROUT_DEF::pre_e BOOL::not AS_ROUT_DEF::post_e BOOL::not OUT::create OUT::plus AS_OUT::ind
end;
if ~void(t.pre_e) then-- AS_ROUT_DEF::pre_e BOOL::not
#OUT+"pre ";-- OUT::create OUT::plus
AS_EXPR_out(t.pre_e);-- AS_OUT::AS_EXPR_out AS_ROUT_DEF::pre_e
#OUT+"\n";ind;-- OUT::create OUT::plus AS_OUT::ind
end;
if ~void(t.post_e) then-- AS_ROUT_DEF::post_e BOOL::not
#OUT+"post ";-- OUT::create OUT::plus
AS_EXPR_out(t.post_e);-- AS_OUT::AS_EXPR_out AS_ROUT_DEF::post_e
#OUT+"\n";ind;-- OUT::create OUT::plus AS_OUT::ind
end;
if t.is_abstract then -- AS_ROUT_DEF::is_abstract
#OUT+";\n";-- OUT::create OUT::plus
elsif t.is_builtin then-- AS_ROUT_DEF::is_builtin
#OUT+"builtin "+t.builtin_name.str+";\n";-- OUT::create OUT::plus OUT::plus AS_ROUT_DEF::builtin_name IDENT::str OUT::plus
else
#OUT+" is\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.body);-- AS_OUT::AS_STMT_LIST_out AS_ROUT_DEF::body
idec;-- AS_OUT::idec
ind;-- AS_OUT::ind
#OUT+"end; -- of "+withoutunder(t.name.str)+"\n";-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_ROUT_DEF::name IDENT::str OUT::plus
end;
if ~void(t.next) then AS_CLASS_ELT_out(t.next) end -- AS_ROUT_DEF::next BOOL::not AS_OUT::AS_CLASS_ELT_out AS_ROUT_DEF::next
end;
AS_INCLUDE_CLAUSE_out(t:AS_INCLUDE_CLAUSE) is
if void(t) then #OUT + "AS_INCLUDE_CLAUSE=void\n\n"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
if t.is_private then #OUT+"private "; end;-- AS_INCLUDE_CLAUSE::is_private OUT::create OUT::plus
#OUT+"include "; -- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_INCLUDE_CLAUSE::tp
if ~void(t.mods) then-- AS_INCLUDE_CLAUSE::mods BOOL::not
#OUT+"\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_FEAT_MOD_out(t.mods);-- AS_OUT::AS_FEAT_MOD_out AS_INCLUDE_CLAUSE::mods
end;
#OUT+";\n";-- OUT::create OUT::plus
if ~void(t.mods) then-- AS_INCLUDE_CLAUSE::mods BOOL::not
idec;-- AS_OUT::idec
end;
if ~void(t.next) then AS_CLASS_ELT_out(t.next) end -- AS_INCLUDE_CLAUSE::next BOOL::not AS_OUT::AS_CLASS_ELT_out AS_INCLUDE_CLAUSE::next
end;
AS_DEC_STMT_out(t:AS_DEC_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+withoutunder(t.name.str)+": ";-- OUT::create OUT::plus AS_OUT::withoutunder AS_DEC_STMT::name IDENT::str OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_DEC_STMT::tp
#OUT+";\n"; -- OUT::create OUT::plus
end;
AS_ASSIGN_STMT_out(t:AS_ASSIGN_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind; -- AS_OUT::ind
if ~void(t.lhs_expr) then-- AS_ASSIGN_STMT::lhs_expr BOOL::not
AS_EXPR_out(t.lhs_expr);-- AS_OUT::AS_EXPR_out AS_ASSIGN_STMT::lhs_expr
else
#OUT+withoutunder(t.name.str);-- OUT::create OUT::plus AS_OUT::withoutunder AS_ASSIGN_STMT::name IDENT::str
#OUT+":";-- OUT::create OUT::plus
end;
if ~void(t.tp) then-- AS_ASSIGN_STMT::tp BOOL::not
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_ASSIGN_STMT::tp
end;
#OUT+":=";-- OUT::create OUT::plus
AS_EXPR_out(t.rhs);-- AS_OUT::AS_EXPR_out AS_ASSIGN_STMT::rhs
#OUT+";\n";-- OUT::create OUT::plus
end;
AS_IF_STMT_out(t:AS_IF_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"if ";-- OUT::create OUT::plus
AS_EXPR_out(t.test);-- AS_OUT::AS_EXPR_out AS_IF_STMT::test
#OUT+" then\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.then_part);-- AS_OUT::AS_STMT_LIST_out AS_IF_STMT::then_part
idec;-- AS_OUT::idec
if ~void(t.else_part) then-- AS_IF_STMT::else_part BOOL::not
ind;-- AS_OUT::ind
#OUT+"else\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.else_part);-- AS_OUT::AS_STMT_LIST_out AS_IF_STMT::else_part
idec;-- AS_OUT::idec
end;
ind;-- AS_OUT::ind
#OUT+"end; -- of if\n";-- OUT::create OUT::plus
end;
AS_LOOP_STMT_out(t:AS_LOOP_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"loop\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.body);-- AS_OUT::AS_STMT_LIST_out AS_LOOP_STMT::body
idec; ind;-- AS_OUT::idec AS_OUT::ind
#OUT+"end; -- of loop\n";-- OUT::create OUT::plus
end;
AS_RETURN_STMT_out(t:AS_RETURN_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"return ";-- OUT::create OUT::plus
if ~void(t.val) then-- AS_RETURN_STMT::val BOOL::not
AS_EXPR_out(t.val);-- AS_OUT::AS_EXPR_out AS_RETURN_STMT::val
end;
#OUT+";\n";-- OUT::create OUT::plus
end;
AS_YIELD_STMT_out(t:AS_YIELD_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"yield ";-- OUT::create OUT::plus
if ~void(t.val) then-- AS_YIELD_STMT::val BOOL::not
AS_EXPR_out(t.val);-- AS_OUT::AS_EXPR_out AS_YIELD_STMT::val
end;
#OUT+";\n";-- OUT::create OUT::plus
end;
AS_QUIT_STMT_out(t:AS_QUIT_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"quit;\n";-- OUT::create OUT::plus
end;
AS_CASE_STMT_out(t:AS_CASE_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"case ";-- OUT::create OUT::plus
AS_EXPR_out(t.test);-- AS_OUT::AS_EXPR_out AS_CASE_STMT::test
#OUT+"\n";-- OUT::create OUT::plus
if ~void(t.when_part) then-- AS_CASE_STMT::when_part BOOL::not
AS_CASE_WHEN_out(t.when_part);-- AS_OUT::AS_CASE_WHEN_out AS_CASE_STMT::when_part
end;
if ~t.no_else then-- AS_CASE_STMT::no_else BOOL::not
ind;-- AS_OUT::ind
#OUT+"else\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.else_part);-- AS_OUT::AS_STMT_LIST_out AS_CASE_STMT::else_part
idec;-- AS_OUT::idec
end;
ind;-- AS_OUT::ind
#OUT+"end; -- of case\n";-- OUT::create OUT::plus
end;
AS_TYPECASE_STMT_out(t:AS_TYPECASE_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"typecase "+withoutunder(t.name.str)+"\n";-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_TYPECASE_STMT::name IDENT::str OUT::plus
if ~void(t.when_part) then-- AS_TYPECASE_STMT::when_part BOOL::not
AS_TYPECASE_WHEN_out(t.when_part);-- AS_OUT::AS_TYPECASE_WHEN_out AS_TYPECASE_STMT::when_part
end;
if ~t.no_else then-- AS_TYPECASE_STMT::no_else BOOL::not
ind;-- AS_OUT::ind
#OUT+"else\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.else_part);-- AS_OUT::AS_STMT_LIST_out AS_TYPECASE_STMT::else_part
idec;-- AS_OUT::idec
end;
ind;-- AS_OUT::ind
#OUT+"end; -- of typecase\n";-- OUT::create OUT::plus
end;
AS_ASSERT_STMT_out(t:AS_ASSERT_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"assert ";-- OUT::create OUT::plus
AS_EXPR_out(t.test);-- AS_OUT::AS_EXPR_out AS_ASSERT_STMT::test
#OUT+";\n";-- OUT::create OUT::plus
end;
AS_PROTECT_STMT_out(t:AS_PROTECT_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"protect\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.body);-- AS_OUT::AS_STMT_LIST_out AS_PROTECT_STMT::body
idec;-- AS_OUT::idec
if ~void(t.when_part) then-- AS_PROTECT_STMT::when_part BOOL::not
AS_PROTECT_WHEN_out(t.when_part);-- AS_OUT::AS_PROTECT_WHEN_out AS_PROTECT_STMT::when_part
end;
if ~t.no_else then-- AS_PROTECT_STMT::no_else BOOL::not
ind;-- AS_OUT::ind
#OUT+"else\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.else_part);-- AS_OUT::AS_STMT_LIST_out AS_PROTECT_STMT::else_part
idec;-- AS_OUT::idec
end;
ind;-- AS_OUT::ind
#OUT+"end; -- of protect\n";-- OUT::create OUT::plus
end;
AS_RAISE_STMT_out(t:AS_RAISE_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"raise ";-- OUT::create OUT::plus
AS_EXPR_out(t.val);-- AS_OUT::AS_EXPR_out AS_RAISE_STMT::val
#OUT+";\n";-- OUT::create OUT::plus
end;
AS_EXPR_STMT_out(t:AS_EXPR_STMT) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_EXPR_STMT::e
if ~void(t.at) then-- AS_EXPR_STMT::at BOOL::not
#OUT+" @ ";-- OUT::create OUT::plus
AS_EXPR_out(t.at);-- AS_OUT::AS_EXPR_out AS_EXPR_STMT::at
end;
#OUT+";\n";-- OUT::create OUT::plus
end;
-- pSather
AS_PAR_STMT_out(t:AS_PAR_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"-- par:\n";-- OUT::create OUT::plus
if ~void(t.body) then-- AS_PAR_STMT::body BOOL::not
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.body);-- AS_OUT::AS_STMT_LIST_out AS_PAR_STMT::body
idec;-- AS_OUT::idec
ind;-- AS_OUT::ind
#OUT+"-- end; -- of par\n";-- OUT::create OUT::plus
end;
end;
-- pSather
AS_INTERF_ATTACH_STMT_out(t:AS_INTERF_ATTACH_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"THREAD("+withoutunder(t.routname.str)+", ";-- OUT::create OUT::plus OUT::plus AS_OUT::withoutunder AS_INTERF_ATTACH_STMT::routname IDENT::str OUT::plus
#OUT+withoutunder(t.helpername.str)+", ";-- OUT::create OUT::plus AS_OUT::withoutunder AS_INTERF_ATTACH_STMT::helpername IDENT::str OUT::plus
#OUT+withoutunder(t.gatename.str)+", ";-- OUT::create OUT::plus AS_OUT::withoutunder AS_INTERF_ATTACH_STMT::gatename IDENT::str OUT::plus
if void(t.at) then #OUT+"void" else AS_EXPR_out(t.at) end;-- AS_INTERF_ATTACH_STMT::at OUT::create OUT::plus AS_OUT::AS_EXPR_out AS_INTERF_ATTACH_STMT::at
#OUT+"); -- conc.\n"-- OUT::create
end;-- OUT::plus
-- pSather
AS_LOCK_STMT_out(t:AS_LOCK_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"lock\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_LOCK_IF_WHEN_out(t.if_when_part);-- AS_OUT::AS_LOCK_IF_WHEN_out AS_LOCK_STMT::if_when_part
if ~t.no_else then-- AS_LOCK_STMT::no_else BOOL::not
ind;-- AS_OUT::ind
#OUT+"else\n"; -- OUT::create OUT::plus
AS_STMT_LIST_out(t.else_part);-- AS_OUT::AS_STMT_LIST_out AS_LOCK_STMT::else_part
end;
idec;-- AS_OUT::idec
ind;-- AS_OUT::ind
#OUT+"end; -- of lock\n";-- OUT::create OUT::plus
end;
-- pSather
AS_LOCK_IF_WHEN_out(t:AS_LOCK_IF_WHEN) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
with_guard ::= true;
tv ::= t.val;-- AS_LOCK_IF_WHEN::val
typecase tv
when AS_BOOL_LIT_EXPR then
if tv.val = true then with_guard := false end;-- AS_BOOL_LIT_EXPR::val BOOL::is_eq
else
end;
if with_guard then
#OUT+"if ";-- OUT::create OUT::plus
AS_EXPR_out(t.val);-- AS_OUT::AS_EXPR_out AS_LOCK_IF_WHEN::val
#OUT+" ";-- OUT::create OUT::plus
end;
#OUT+"when ";-- OUT::create OUT::plus
AS_EXPR_out(t.e_list);-- AS_OUT::AS_EXPR_out AS_LOCK_IF_WHEN::e_list
#OUT+" then\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.then_part);-- AS_OUT::AS_STMT_LIST_out AS_LOCK_IF_WHEN::then_part
idec;-- AS_OUT::idec
ind;-- AS_OUT::ind
#OUT+"end -- lock clause\n";-- OUT::create OUT::plus
if ~void(t.next) then AS_LOCK_IF_WHEN_out(t.next);-- AS_LOCK_IF_WHEN::next BOOL::not AS_OUT::AS_LOCK_IF_WHEN_out AS_LOCK_IF_WHEN::next
end;
end;
-- pSather
AS_UNLOCK_STMT_out(t:AS_UNLOCK_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"unlock ";-- OUT::create OUT::plus
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_UNLOCK_STMT::e
#OUT+";\n";-- OUT::create OUT::plus
end;
-- pSather
AS_WITH_NEAR_STMT_out(t:AS_WITH_NEAR_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"with ";-- OUT::create OUT::plus
AS_IDENT_LIST_out(t.idents);-- AS_OUT::AS_IDENT_LIST_out AS_WITH_NEAR_STMT::idents
if t.self_occurred then-- AS_WITH_NEAR_STMT::self_occurred
if ~void(t.idents) then-- AS_WITH_NEAR_STMT::idents BOOL::not
#OUT+", ";-- OUT::create OUT::plus
end;
#OUT+"self";-- OUT::create OUT::plus
end;
#OUT+" near\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.near_part);-- AS_OUT::AS_STMT_LIST_out AS_WITH_NEAR_STMT::near_part
idec;-- AS_OUT::idec
if ~void(t.else_part) then-- AS_WITH_NEAR_STMT::else_part BOOL::not
ind;-- AS_OUT::ind
#OUT+"else\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.else_part);-- AS_OUT::AS_STMT_LIST_out AS_WITH_NEAR_STMT::else_part
idec;-- AS_OUT::idec
end;
ind;-- AS_OUT::ind
#OUT+"end; -- of with-near\n";-- OUT::create OUT::plus
end;
-- pSather
AS_ATTACH_STMT_out(t:AS_ATTACH_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
if t.dont_print then-- AS_ATTACH_STMT::dont_print
#OUT+"-- attach:\n";-- OUT::create OUT::plus
else
AS_EXPR_out(t.lhs);-- AS_OUT::AS_EXPR_out AS_ATTACH_STMT::lhs
#OUT+" :- ";-- OUT::create OUT::plus
AS_EXPR_out(t.rhs);-- AS_OUT::AS_EXPR_out AS_ATTACH_STMT::rhs
#OUT+";\n";-- OUT::create OUT::plus
end;
end;
-- pSather
AS_FORK_STMT_out(t:AS_FORK_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"-- fork @ ";-- OUT::create OUT::plus
AS_EXPR_out(t.at);-- AS_OUT::AS_EXPR_out AS_FORK_STMT::at
#OUT+"\n";-- OUT::create OUT::plus
if ~void(t.body) then -- this will be set to void during pSather trafo-- AS_FORK_STMT::body BOOL::not
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.body);-- AS_OUT::AS_STMT_LIST_out AS_FORK_STMT::body
idec;-- AS_OUT::idec
ind;-- AS_OUT::ind
#OUT+"-- end; -- of fork\n";-- OUT::create OUT::plus
end;
end;
-- pSather
AS_SYNC_STMT_out(t:AS_SYNC_STMT) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"sync;\n";-- OUT::create OUT::plus
end;
AS_SELF_EXPR_out(t:AS_SELF_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"self";-- OUT::create OUT::plus
end;
AS_CALL_EXPR_out(t:AS_CALL_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
if ~void(t.ob) then-- AS_CALL_EXPR::ob BOOL::not
e::=t.ob; close_it:BOOL:=false;-- AS_CALL_EXPR::ob
typecase e
when AS_VOID_EXPR then
when AS_CREATE_EXPR then
when AS_ARRAY_EXPR then
when AS_UNDERSCORE_ARG then
else #OUT+"("; close_it:=true;-- OUT::create OUT::plus
end;
AS_EXPR_out(t.ob);-- AS_OUT::AS_EXPR_out AS_CALL_EXPR::ob
if close_it then #OUT+")"; end;-- OUT::create OUT::plus
if ~t.is_array then #OUT+"."; end;-- AS_CALL_EXPR::is_array BOOL::not OUT::create OUT::plus
end;
if ~void(t.tp)-- AS_CALL_EXPR::tp
and ( (t.tp.name.str /= "SYS")-- BOOL::not AS_CALL_EXPR::tp AS_TYPE_SPEC::name IDENT::str STR::is_eq
or (~void(t.name) and t.name.str /= "cluster!"))-- AS_CALL_EXPR::name BOOL::not AS_CALL_EXPR::name IDENT::str STR::is_eq BOOL::not
then
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_CALL_EXPR::tp
#OUT+"::";-- OUT::create OUT::plus
end;
if ~void(t.name) then-- AS_CALL_EXPR::name BOOL::not
#OUT+withoutunder(t.name.str);-- OUT::create OUT::plus AS_OUT::withoutunder AS_CALL_EXPR::name IDENT::str
end;
if ~void(t.args) then-- AS_CALL_EXPR::args BOOL::not
if t.is_array then -- AS_CALL_EXPR::is_array
#OUT+"["; -- OUT::create OUT::plus
AS_EXPR_out(t.args);-- AS_OUT::AS_EXPR_out AS_CALL_EXPR::args
#OUT+"]";-- OUT::create OUT::plus
else
#OUT + "(";-- OUT::create OUT::plus
AS_MODE_EXPR_out(t.modes, t.args);-- AS_OUT::AS_MODE_EXPR_out AS_CALL_EXPR::modes AS_CALL_EXPR::args
#OUT+")"; -- OUT::create OUT::plus
end;
end;
end;
AS_VOID_EXPR_out(t:AS_VOID_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"void";-- OUT::create OUT::plus
end;
AS_IS_VOID_EXPR_out(t:AS_IS_VOID_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"void(";-- OUT::create OUT::plus
AS_EXPR_out(t.arg);-- AS_OUT::AS_EXPR_out AS_IS_VOID_EXPR::arg
#OUT+")";-- OUT::create OUT::plus
end;
AS_ARRAY_EXPR_out(t:AS_ARRAY_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"|";-- OUT::create OUT::plus
AS_EXPR_out(t.elts);-- AS_OUT::AS_EXPR_out AS_ARRAY_EXPR::elts
#OUT+"|";-- OUT::create OUT::plus
end;
AS_CREATE_EXPR_out(t:AS_CREATE_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"#";-- OUT::create OUT::plus
if ~void(t.tp) then-- AS_CREATE_EXPR::tp BOOL::not
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_CREATE_EXPR::tp
end;
if ~void(t.elts) then-- AS_CREATE_EXPR::elts BOOL::not
#OUT+"(";-- OUT::create OUT::plus
AS_MODE_EXPR_out(t.modes, t.elts);-- AS_OUT::AS_MODE_EXPR_out AS_CREATE_EXPR::modes AS_CREATE_EXPR::elts
#OUT+")";-- OUT::create OUT::plus
end;
end;
AS_BOUND_CREATE_EXPR_out(t:AS_BOUND_CREATE_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"#";-- OUT::create OUT::plus
if t.is_iter then #OUT+"ITER(" else #OUT+"ROUT(" end;-- AS_BOUND_CREATE_EXPR::is_iter OUT::create OUT::plus OUT::create OUT::plus
AS_CALL_EXPR_out(t.call);-- AS_OUT::AS_CALL_EXPR_out AS_BOUND_CREATE_EXPR::call
if ~void(t.ret) then-- AS_BOUND_CREATE_EXPR::ret BOOL::not
#OUT+":";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.ret);-- AS_OUT::AS_TYPE_SPEC_out AS_BOUND_CREATE_EXPR::ret
end;
#OUT+")";-- OUT::create OUT::plus
end;
AS_AND_EXPR_out(t:AS_AND_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"(";-- OUT::create OUT::plus
AS_EXPR_out(t.e1);-- AS_OUT::AS_EXPR_out AS_AND_EXPR::e1
#OUT+") and (";-- OUT::create OUT::plus
AS_EXPR_out(t.e2);-- AS_OUT::AS_EXPR_out AS_AND_EXPR::e2
#OUT+")";-- OUT::create OUT::plus
end;
AS_OR_EXPR_out(t:AS_OR_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"(";-- OUT::create OUT::plus
AS_EXPR_out(t.e1);-- AS_OUT::AS_EXPR_out AS_OR_EXPR::e1
#OUT+") or (";-- OUT::create OUT::plus
AS_EXPR_out(t.e2);-- AS_OUT::AS_EXPR_out AS_OR_EXPR::e2
#OUT+")";-- OUT::create OUT::plus
end;
AS_EXCEPT_EXPR_out(t:AS_EXCEPT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"exception";-- OUT::create OUT::plus
end;
AS_NEW_EXPR_out(t:AS_NEW_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"new";-- OUT::create OUT::plus
if ~void(t.arg) then-- AS_NEW_EXPR::arg BOOL::not
#OUT+"(";-- OUT::create OUT::plus
AS_EXPR_out(t.arg);-- AS_OUT::AS_EXPR_out AS_NEW_EXPR::arg
#OUT+")";-- OUT::create OUT::plus
end;
end;
AS_INITIAL_EXPR_out(t:AS_INITIAL_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"initial(";-- OUT::create OUT::plus
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_INITIAL_EXPR::e
#OUT+")";-- OUT::create OUT::plus
end;
AS_BREAK_EXPR_out(t:AS_BREAK_EXPR) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
#OUT+"break!"; -- OUT::create OUT::plus
end;
AS_RESULT_EXPR_out(t:AS_RESULT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"result";-- OUT::create OUT::plus
end;
AS_BOOL_LIT_EXPR_out(t:AS_BOOL_LIT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+t.val;-- OUT::create OUT::plus AS_BOOL_LIT_EXPR::val
end;
AS_CHAR_LIT_EXPR_out(t:AS_CHAR_LIT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+t.val.char.pretty; -- OUT::create OUT::plus AS_CHAR_LIT_EXPR::val INT::char CHAR::pretty
end;
AS_STR_LIT_EXPR_out(t:AS_STR_LIT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+t.s.pretty;-- OUT::create OUT::plus AS_STR_LIT_EXPR::s STR::pretty
end;
AS_INT_LIT_EXPR_out(t:AS_INT_LIT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+t.val;-- OUT::create OUT::plus AS_INT_LIT_EXPR::val
if t.is_inti then #OUT+"i" end;-- AS_INT_LIT_EXPR::is_inti OUT::create OUT::plus
end;
AS_FLT_LIT_EXPR_out(t:AS_FLT_LIT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
s,s2,s3:STR;
case t.tp-- AS_FLT_LIT_EXPR::tp
when AS_FLT_LIT_EXPR::flt then -- AS_FLT_LIT_EXPR::flt
s:= t.val.str(8);-- AS_FLT_LIT_EXPR::val RAT::str
else
s:= t.val.str(17);-- AS_FLT_LIT_EXPR::val RAT::str
end;
posi ::= s.search('e');-- STR::search
if posi /= -1 then-- INT::is_eq BOOL::not
s2:= s.head(posi) +".0"+s.tail(s.length-posi);-- STR::head STR::plus STR::plus STR::tail STR::length INT::minus
else
s2:= s+".0";-- STR::plus
end;
case t.tp-- AS_FLT_LIT_EXPR::tp
when AS_FLT_LIT_EXPR::flti then s3 := s2+"i";-- AS_FLT_LIT_EXPR::flti STR::plus
when AS_FLT_LIT_EXPR::fltdx then s3 := s2+"dx";-- AS_FLT_LIT_EXPR::fltdx STR::plus
when AS_FLT_LIT_EXPR::fltd then s3 := s2+"d";-- AS_FLT_LIT_EXPR::fltd STR::plus
when AS_FLT_LIT_EXPR::fltx then s3 := s2+"x";-- AS_FLT_LIT_EXPR::fltx STR::plus
else
s3:=s2;
end;
#OUT+s3;-- OUT::create OUT::plus
end;
--pSather
AS_HERE_EXPR_out(t:AS_HERE_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"here" -- OUT::create
end;-- OUT::plus
--pSather
AS_ANY_EXPR_out(t:AS_ANY_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"any"-- OUT::create
end;-- OUT::plus
--pSather
AS_CLUSTER_EXPR_out(t:AS_CLUSTER_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"clusters"-- OUT::create
end;-- OUT::plus
AS_CLUSTER_SIZE_EXPR_out(t:AS_CLUSTER_SIZE_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"cluster_size"-- OUT::create
end;-- OUT::plus
--pSather
AS_COHORT_EXPR_out(t:AS_COHORT_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
if void(t.name_after_pSather_trafo) then-- AS_COHORT_EXPR::name_after_pSather_trafo
#OUT+"cohort"-- OUT::create
else-- OUT::plus
#OUT+t.name_after_pSather_trafo.str;-- OUT::create OUT::plus AS_COHORT_EXPR::name_after_pSather_trafo IDENT::str
end;
end;
--pSather
AS_WHERE_EXPR_out(t:AS_WHERE_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"where(";-- OUT::create OUT::plus
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_WHERE_EXPR::e
#OUT+")";-- OUT::create OUT::plus
end;
--pSather
AS_NEAR_EXPR_out(t:AS_NEAR_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"near(";-- OUT::create OUT::plus
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_NEAR_EXPR::e
#OUT+")";-- OUT::create OUT::plus
end;
--pSather
AS_FAR_EXPR_out(t:AS_FAR_EXPR) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+"far(";-- OUT::create OUT::plus
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_FAR_EXPR::e
#OUT+")";-- OUT::create OUT::plus
end;
--pSather
AS_AT_EXPR_out(t:AS_AT_EXPR) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
AS_EXPR_out(t.e);-- AS_OUT::AS_EXPR_out AS_AT_EXPR::e
#OUT+" @ ";-- OUT::create OUT::plus
AS_EXPR_out(t.at);-- AS_OUT::AS_EXPR_out AS_AT_EXPR::at
end;
AS_PARAM_DEC_out(t:AS_PARAM_DEC) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
#OUT+withoutunder(t.name.str);-- OUT::create OUT::plus AS_OUT::withoutunder AS_PARAM_DEC::name IDENT::str
if ~void(t.type_constraint) then-- AS_PARAM_DEC::type_constraint BOOL::not
#OUT+" < ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.type_constraint);-- AS_OUT::AS_TYPE_SPEC_out AS_PARAM_DEC::type_constraint
end;
if ~void(t.next) then-- AS_PARAM_DEC::next BOOL::not
#OUT+", ";-- OUT::create OUT::plus
AS_PARAM_DEC_out(t.next);-- AS_OUT::AS_PARAM_DEC_out AS_PARAM_DEC::next
end;
end;
AS_TYPE_SPEC_out(t:AS_TYPE_SPEC) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
if ~void(t.mode) then-- AS_TYPE_SPEC::mode BOOL::not
AS_MODE_out(t.mode);-- AS_OUT::AS_MODE_out AS_TYPE_SPEC::mode
end;
case t.kind-- AS_TYPE_SPEC::kind
when AS_TYPE_SPEC::same then -- AS_TYPE_SPEC::same
#OUT+"SAME";-- OUT::create OUT::plus
when AS_TYPE_SPEC::rt then -- AS_TYPE_SPEC::rt
#OUT+"ROUT";-- OUT::create OUT::plus
if ~void(t.params) then-- AS_TYPE_SPEC::params BOOL::not
#OUT+"{";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.params);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPE_SPEC::params
#OUT+"}";-- OUT::create OUT::plus
end;
if ~void(t.ret) then-- AS_TYPE_SPEC::ret BOOL::not
#OUT+":";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.ret);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPE_SPEC::ret
end;
when AS_TYPE_SPEC::it then -- AS_TYPE_SPEC::it
#OUT+"ITER";-- OUT::create OUT::plus
if ~void(t.params) then-- AS_TYPE_SPEC::params BOOL::not
#OUT+"{";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.params);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPE_SPEC::params
#OUT+"}";-- OUT::create OUT::plus
end;
if ~void(t.ret) then-- AS_TYPE_SPEC::ret BOOL::not
#OUT+":";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.ret);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPE_SPEC::ret
end;
else
#OUT+withoutunder(t.name.str.upper);-- OUT::create OUT::plus AS_OUT::withoutunder AS_TYPE_SPEC::name IDENT::str STR::upper
if ~void(t.params) then-- AS_TYPE_SPEC::params BOOL::not
#OUT+"{";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.params);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPE_SPEC::params
#OUT+"}";-- OUT::create OUT::plus
end;
end;
if t.is_hot then #OUT+"!"; end;-- AS_TYPE_SPEC::is_hot OUT::create OUT::plus
if ~void(t.next) then-- AS_TYPE_SPEC::next BOOL::not
#OUT+", ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.next);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPE_SPEC::next
end;
end;
AS_ARG_DEC_out(t:AS_ARG_DEC) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
AS_MODE_out(t.mode);-- AS_OUT::AS_MODE_out AS_ARG_DEC::mode
#OUT+withoutunder(t.name.str)+":";-- OUT::create OUT::plus AS_OUT::withoutunder AS_ARG_DEC::name IDENT::str OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_ARG_DEC::tp
if t.is_hot then #OUT+"!"; end;-- AS_ARG_DEC::is_hot OUT::create OUT::plus
if ~void(t.next) then-- AS_ARG_DEC::next BOOL::not
#OUT+", ";-- OUT::create OUT::plus
AS_ARG_DEC_out(t.next);-- AS_OUT::AS_ARG_DEC_out AS_ARG_DEC::next
end;
end;
AS_FEAT_MOD_out(t:AS_FEAT_MOD) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+withoutunder(t.name.str)+" -> ";-- OUT::create OUT::plus AS_OUT::withoutunder AS_FEAT_MOD::name IDENT::str OUT::plus
if t.is_private then #OUT+"private "; end;-- AS_FEAT_MOD::is_private OUT::create OUT::plus
if t.is_readonly then #OUT+"readonly "; end;-- AS_FEAT_MOD::is_readonly OUT::create OUT::plus
if ~void(t.new_name) then-- AS_FEAT_MOD::new_name BOOL::not
#OUT+withoutunder(t.new_name.str);-- OUT::create OUT::plus AS_OUT::withoutunder AS_FEAT_MOD::new_name IDENT::str
end;
if ~void(t.next) then-- AS_FEAT_MOD::next BOOL::not
#OUT+", \n";-- OUT::create OUT::plus
AS_FEAT_MOD_out(t.next);-- AS_OUT::AS_FEAT_MOD_out AS_FEAT_MOD::next
end;
end;
AS_CASE_WHEN_out(t:AS_CASE_WHEN) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"when ";-- OUT::create OUT::plus
AS_EXPR_out(t.val);-- AS_OUT::AS_EXPR_out AS_CASE_WHEN::val
#OUT+" then\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.then_part);-- AS_OUT::AS_STMT_LIST_out AS_CASE_WHEN::then_part
idec;-- AS_OUT::idec
if ~void(t.next) then-- AS_CASE_WHEN::next BOOL::not
AS_CASE_WHEN_out(t.next);-- AS_OUT::AS_CASE_WHEN_out AS_CASE_WHEN::next
end;
end;
AS_TYPECASE_WHEN_out(t:AS_TYPECASE_WHEN) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"when ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_TYPECASE_WHEN::tp
#OUT+" then\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.then_part);-- AS_OUT::AS_STMT_LIST_out AS_TYPECASE_WHEN::then_part
idec;-- AS_OUT::idec
if ~void(t.next) then-- AS_TYPECASE_WHEN::next BOOL::not
AS_TYPECASE_WHEN_out(t.next);-- AS_OUT::AS_TYPECASE_WHEN_out AS_TYPECASE_WHEN::next
end;
end;
AS_PROTECT_WHEN_out(t:AS_PROTECT_WHEN) is
if void(t) then #OUT + "void"; return end; -- OUT::create OUT::plus
ind;-- AS_OUT::ind
#OUT+"when ";-- OUT::create OUT::plus
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_PROTECT_WHEN::tp
#OUT+" then\n";-- OUT::create OUT::plus
iinc;-- AS_OUT::iinc
AS_STMT_LIST_out(t.then_part);-- AS_OUT::AS_STMT_LIST_out AS_PROTECT_WHEN::then_part
idec;-- AS_OUT::idec
if ~void(t.next) then-- AS_PROTECT_WHEN::next BOOL::not
AS_PROTECT_WHEN_out(t.next);-- AS_OUT::AS_PROTECT_WHEN_out AS_PROTECT_WHEN::next
end;
end;
AS_IDENT_LIST_out(t:AS_IDENT_LIST) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
#OUT+withoutunder(t.name.str);-- OUT::create OUT::plus AS_OUT::withoutunder AS_IDENT_LIST::name IDENT::str
if ~void(t.next) then-- AS_IDENT_LIST::next BOOL::not
#OUT+", ";-- OUT::create OUT::plus
AS_IDENT_LIST_out(t.next);-- AS_OUT::AS_IDENT_LIST_out AS_IDENT_LIST::next
end;
end;
AS_UNDERSCORE_ARG_out(t:AS_UNDERSCORE_ARG) is
if void(t) then #OUT + "void"; return end;-- OUT::create OUT::plus
if ~void(t.tp) then-- AS_UNDERSCORE_ARG::tp BOOL::not
AS_MODE_out(t.tp.mode);-- AS_OUT::AS_MODE_out AS_UNDERSCORE_ARG::tp AS_TYPE_SPEC::mode
end;
#OUT+"_";-- OUT::create OUT::plus
if ~void(t.tp) then-- AS_UNDERSCORE_ARG::tp BOOL::not
AS_TYPE_SPEC_out(t.tp);-- AS_OUT::AS_TYPE_SPEC_out AS_UNDERSCORE_ARG::tp
end;
end;
AS_MODE_out(m: AS_ARG_MODE) is
case m.mod-- AS_ARG_MODE::mod
when AS_ARG_MODE::out_mode then-- AS_ARG_MODE::out_mode
#OUT + "out ";-- OUT::create OUT::plus
when AS_ARG_MODE::inout_mode then-- AS_ARG_MODE::inout_mode
#OUT + "inout ";-- OUT::create OUT::plus
when AS_ARG_MODE::once_mode then-- AS_ARG_MODE::once_mode
#OUT + "once ";-- OUT::create OUT::plus
when AS_ARG_MODE::in_mode then-- AS_ARG_MODE::in_mode
#OUT + "in ";-- OUT::create OUT::plus
end;
end;
private withoutunder(s:STR):STR is
if void(s) then
return void
else
if s.head(1) = "_" then-- STR::head STR::is_eq
return s.tail(s.size-1);-- STR::tail STR::size INT::minus
else
return s;
end;
end;
end;
end;