Skip to content
Snippets Groups Projects
Select Git revision
  • fcfe877981d1a5ead09465a03ce5f2510287bd6d
  • develop default protected
  • save_clemence
  • feature/composite-scheme-other-fluxes
  • feature/advection
  • origin/stage/bouguettaia
  • feature/local-dt-fsi
  • feature/variational-hydro
  • feature/gmsh-reader
  • feature/reconstruction
  • feature/kinetic-schemes
  • feature/composite-scheme-sources
  • feature/serraille
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

ItemValue.hpp

Blame
  • ASTDotPrinter.cpp 1.17 KiB
    #include <ASTDotPrinter.hpp>
    #include <EscapedString.hpp>
    
    #include <PEGGrammar.hpp>
    
    void
    ASTDotPrinter::_print(std::ostream& os, const ASTNode& node) const
    {
      if (node.is_root()) {
        os << "  x" << &node << " [ label=\"root \\n" << dataTypeName(node.m_data_type) << "\" ]\n";
      } else {
        if (node.has_content()) {
          os << "  x" << &node << " [ label=\"" << node.name() << "\\n"
             << node.string_view() << "\\n"
             << dataTypeName(node.m_data_type) << "\" ]\n";
        } else {
          os << "  x" << &node << " [ label=\"" << node.name() << "\\n" << dataTypeName(node.m_data_type) << "\" ]\n";
        }
      }
      if (!node.children.empty()) {
        os << "  x" << &node << " -> { ";
        for (auto& child : node.children) {
          os << "x" << child.get() << ((child == node.children.back()) ? " }\n" : ", ");
        }
        for (auto& child : node.children) {
          this->_print(os, *child);
        }
      }
    }
    
    std::ostream&
    operator<<(std::ostream& os, const ASTDotPrinter& ast_printer)
    {
      os << "digraph parse_tree\n{\n";
      ast_printer._print(os, ast_printer.m_node);
      os << "}\n";
      return os;
    }
    
    ASTDotPrinter::ASTDotPrinter(const ASTNode& node) : m_node{node}
    {
      Assert(node.is_root());
    }