void ASTvariable_ref::print (std::ostream &out, int indentlevel) const { indent (out, indentlevel); out << "(" << nodetypename() << " (type: " << (m_sym ? m_sym->typespec().string() : "unknown") << ") " << (m_sym ? m_sym->mangled() : m_name.string()) << ")\n"; DASSERT (nchildren() == 0); }
TypeSpec ASTpostincdec::typecheck (TypeSpec expected) { typecheck_children (); if (! var()->is_lvalue()) error ("%s can only be applied to an lvalue", nodetypename()); m_is_lvalue = false; m_typespec = var()->typespec(); return m_typespec; }
void ASTshader_declaration::print (std::ostream &out, int indentlevel) const { indent (out, indentlevel); out << "(" << nodetypename() << " " << shadertypename() << " \"" << m_shadername << "\"\n"; printchildren (out, indentlevel); indent (out, indentlevel); out << ")\n"; }
void ASTfunction_declaration::print (std::ostream &out, int indentlevel) const { indent (out, indentlevel); out << nodetypename() << " " << m_sym->mangled(); if (m_sym->scope()) out << " (" << m_sym->name() << " in scope " << m_sym->scope() << ")"; out << "\n"; printchildren (out, indentlevel); }
void ASTNode::print (std::ostream &out, int indentlevel) const { indent (out, indentlevel); out << "(" << nodetypename() << " : " << " (type: " << typespec().string() << ") " << (opname() ? opname() : "") << "\n"; printchildren (out, indentlevel); indent (out, indentlevel); out << ")\n"; }
void ASTliteral::print (std::ostream &out, int indentlevel) const { indent (out, indentlevel); out << "(" << nodetypename() << " (type: " << m_typespec.string() << ") "; if (m_typespec.is_int()) out << m_i; else if (m_typespec.is_float()) out << m_f; else if (m_typespec.is_string()) out << "\"" << m_s << "\""; out << ")\n"; }
void ASTvariable_declaration::print (std::ostream &out, int indentlevel) const { indent (out, indentlevel); out << "(" << nodetypename() << " " << m_sym->typespec().string() << " " << m_sym->mangled(); #if 0 if (m_sym->scope()) out << " (" << m_sym->name() << " in scope " << m_sym->scope() << ")"; #endif out << "\n"; printchildren (out, indentlevel); indent (out, indentlevel); out << ")\n"; }