User Guide
verbatim_driver.hpp
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
8
#pragma once
9
10
#include <iostream>
11
12
13
namespace
nmodl
{
14
namespace
parser {
15
16
/**
17
* @addtogroup parser
18
* @{
19
*/
20
21
/**
22
* \class VerbatimDriver
23
* \brief Class that binds lexer and parser together for parsing VERBATIM block
24
*/
25
class
VerbatimDriver
{
26
protected
:
27
void
init_scanner
();
28
void
destroy_scanner
();
29
30
public
:
31
void
*
scanner
=
nullptr
;
32
std::istream*
is
=
nullptr
;
33
std::string*
result
=
nullptr
;
34
35
VerbatimDriver
(std::istream*
is
= &std::cin) {
36
init_scanner
();
37
this->is =
is
;
38
}
39
40
virtual
~VerbatimDriver
() {
41
destroy_scanner
();
42
if
(
result
) {
43
delete
result
;
44
}
45
}
46
};
47
48
/** @} */
// end of parser
49
50
}
// namespace parser
51
}
// namespace nmodl
52
53
54
int
Verbatim_parse
(
nmodl::parser::VerbatimDriver
*);
nmodl::parser::VerbatimDriver::VerbatimDriver
VerbatimDriver(std::istream *is=&std::cin)
Definition:
verbatim_driver.hpp:35
nmodl::parser::VerbatimDriver::init_scanner
void init_scanner()
nmodl::parser::VerbatimDriver::scanner
void * scanner
Definition:
verbatim_driver.hpp:31
nmodl
encapsulates code generation backend implementations
Definition:
ast_common.hpp:26
nmodl::parser::VerbatimDriver
Class that binds lexer and parser together for parsing VERBATIM block.
Definition:
verbatim_driver.hpp:25
nmodl::parser::VerbatimDriver::is
std::istream * is
Definition:
verbatim_driver.hpp:32
nmodl::parser::VerbatimDriver::result
std::string * result
Definition:
verbatim_driver.hpp:33
nmodl::parser::VerbatimDriver::destroy_scanner
void destroy_scanner()
Verbatim_parse
int Verbatim_parse(nmodl::parser::VerbatimDriver *)
nmodl::parser::VerbatimDriver::~VerbatimDriver
virtual ~VerbatimDriver()
Definition:
verbatim_driver.hpp:40
src
parser
verbatim_driver.hpp