


## prettyprint-symbolmapstack.pkg
# Compiled by:
# src/lib/compiler/core.sublibstipulate
package mld = module_level_declarations; # module_level_declarations is from src/lib/compiler/front/typer-stuff/modules/module-level-declarations.pkg package pp = prettyprint; # prettyprint is from src/lib/prettyprint/big/src/prettyprint.pkg package sxe = symbolmapstack_entry; # symbolmapstack_entry is from src/lib/compiler/front/typer-stuff/symbolmapstack/symbolmapstack-entry.pkg package sy = symbol; # symbol is from src/lib/compiler/front/basics/map/symbol.pkg package syx = symbolmapstack; # symbolmapstack is from src/lib/compiler/front/typer-stuff/symbolmapstack/symbolmapstack.pkg package ty = types; # types is from src/lib/compiler/front/typer-stuff/types/types.pkg package upl = unparse_package_language; # unparse_package_language is from src/lib/compiler/front/typer/print/unparse-package-language.pkg package ut = unparse_type; # unparse_type is from src/lib/compiler/front/typer/print/unparse-type.pkg package uv = unparse_value; # unparse_value is from src/lib/compiler/front/typer/print/unparse-value.pkg package vac = variables_and_constructors; # variables_and_constructors is from src/lib/compiler/front/typer-stuff/deep-syntax/variables-and-constructors.pkg #
include symbolmapstack_entry;
herein
package prettyprint_symbolmapstack
: Prettyprint_Symbolmapstack # Prettyprint_Symbolmapstack is from src/lib/compiler/front/typer-stuff/symbolmapstack/prettyprint-symbolmapstack.api {
#
# 2007-12-05: At the moment we are called only from
#
# src/lib/compiler/toplevel/main/translate-raw-syntax-to-execode-g.pkg #
fun prettyprint_symbolmapstack pps symbolmapstack # "pps" == "prettyprint_stream"
=
{ map
do_symbol_binding
symbolmapstack_contents;
pp::newline pps;
}
where
symbolmapstack_contents # A list of (symbol, value) pairs.
=
syx::to_sorted_list symbolmapstack;
fun do_symbol_binding (symbol, binding) # symbol is from src/lib/compiler/front/basics/map/symbol.pkg =
{
fun print_tagged_name ()
=
{ namespace = sy::name_space_to_string (sy::name_space symbol);
name = sy::name symbol;
pp::string pps (namespace + " " + name + ": " );
};
fun print_name ()
=
{ name = sy::name symbol;
pp::string pps name;
};
case binding
NAMED_VARIABLE (v: vac::Variable)
=>
uv::unparse_variable
pps
(symbolmapstack, v);
NAMED_CONSTRUCTOR (v: ty::Valcon)
=>
{ uv::unparse_constructor
pps
symbolmapstack
v;
pp::string pps ";";
};
NAMED_TYPE (t: ty::Typ)
=>
{ ut::unparse_typ
symbolmapstack # XXX BUGGO FIXME we need to standardize on "stream symbolmapstack" or "symbolmapstack stream" arg order.
pps
t;
pp::string pps ";";
};
NAMED_API (m: mld::Api)
=>
{ pp::newline pps;
pp::string pps "api ";
print_name ();
pp::newline pps;
pp::string pps "=";
pp::newline pps;
upl::unparse_api
pps
(m, symbolmapstack, /* max prettyprint recursion depth: */ 200);
};
NAMED_PACKAGE (m: mld::Package)
=>
{ pp::newline pps;
pp::string pps "package ";
print_name ();
pp::newline pps;
pp::string pps ":";
pp::newline pps;
upl::unparse_package
pps
(m, symbolmapstack, /* max prettyprint recursion depth: */ 200);
};
NAMED_GENERIC_API (m: mld::Generic_Api)
=>
{ pp::newline pps;
pp::string pps "generic_api ";
print_name ();
pp::newline pps;
pp::string pps ":";
pp::newline pps;
upl::unparse_generic_api
pps
(m, symbolmapstack, /* max prettyprint recursion depth: */ 200);
};
# print_tagged_name ();
NAMED_GENERIC (m: mld::Generic)
=>
{ pp::newline pps;
pp::string pps "generic ";
print_name ();
pp::newline pps;
pp::string pps ":";
pp::newline pps;
upl::unparse_generic
pps
(m, symbolmapstack, /* max prettyprint recursion depth: */ 200);
};
# print_tagged_name ();
NAMED_FIXITY (f: fixity::Fixity)
=>
print_tagged_name ();
esac;
pp::newline pps;
}; # fun do_symbol_binding in fun prettyprint_symbolmapstack
end;
};
end;


