User Guide
verbatim_visitor.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2023 Blue Brain Project, EPFL.
3  * See the top-level LICENSE file for details.
4  *
5  * SPDX-License-Identifier: Apache-2.0
6  */
7 
9 
10 #include <iostream>
11 
12 #include "ast/string.hpp"
13 #include "ast/verbatim.hpp"
14 
15 namespace nmodl {
16 namespace visitor {
17 
19  std::string block;
20  const auto& statement = node.get_statement();
21  if (statement) {
22  block = statement->eval();
23  }
24  if (!block.empty() && verbose) {
25  std::cout << "BLOCK START" << block << "\nBLOCK END \n\n";
26  }
27 
28  blocks.push_back(block);
29 }
30 
31 } // namespace visitor
32 } // namespace nmodl
nmodl::ast::Verbatim
Represents a C code block.
Definition: verbatim.hpp:38
nmodl::visitor::VerbatimVisitor::visit_verbatim
void visit_verbatim(const ast::Verbatim &node) override
visit node of type ast::Verbatim
Definition: verbatim_visitor.cpp:18
nmodl::visitor::VerbatimVisitor::blocks
std::vector< std::string > blocks
vector containing all verbatim blocks
Definition: verbatim_visitor.hpp:44
verbatim.hpp
Auto generated AST classes declaration.
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
nmodl::ast::Verbatim::get_statement
std::shared_ptr< String > get_statement() const noexcept
Getter for member variable Verbatim::statement.
Definition: verbatim.hpp:157
string.hpp
Auto generated AST classes declaration.
nmodl::visitor::VerbatimVisitor::verbose
bool verbose
flag to enable/disable printing blocks as we visit them
Definition: verbatim_visitor.hpp:41
verbatim_visitor.hpp
Visitor for verbatim blocks of AST