+basic *symbol::duplicate() const
+{
+ debugmsg("symbol duplicate", LOGLEVEL_DUPLICATE);
+ return new symbol(*this);
+}
+
+void symbol::print(std::ostream & os, unsigned upper_precedence) const
+{
+ debugmsg("symbol print",LOGLEVEL_PRINT);
+ os << name;
+}
+
+void symbol::printraw(std::ostream & os) const
+{
+ debugmsg("symbol printraw",LOGLEVEL_PRINT);
+ os << "symbol(" << "name=" << name << ",serial=" << serial
+ << ",hash=" << hashvalue << ",flags=" << flags << ")";
+}
+
+void symbol::printtree(std::ostream & os, unsigned indent) const
+{
+ debugmsg("symbol printtree",LOGLEVEL_PRINT);
+ os << std::string(indent,' ') << name << " (symbol): "
+ << "serial=" << serial
+ << ", hash=" << hashvalue
+ << " (0x" << std::hex << hashvalue << std::dec << ")"
+ << ", flags=" << flags << std::endl;
+}
+
+void symbol::printcsrc(std::ostream & os, unsigned type, unsigned upper_precedence) const