User Guide
unit_driver.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 
8 #include <fstream>
9 #include <sstream>
10 
11 #include "lexer/unit_lexer.hpp"
12 #include "parser/unit_driver.hpp"
13 
14 namespace nmodl {
15 namespace parser {
16 
17 /// parse Units file provided as istream
18 bool UnitDriver::parse_stream(std::istream& in) {
19  UnitLexer scanner(*this, &in);
20  UnitParser parser(scanner, *this);
21 
22  this->lexer = &scanner;
23  this->parser = &parser;
24 
25  return (parser.parse() == 0);
26 }
27 
28 /// parse Units file
29 bool UnitDriver::parse_file(const std::string& filename) {
30  std::ifstream in(filename.c_str());
31  stream_name = filename;
32 
33  if (!in.good()) {
34  return false;
35  }
36  return parse_stream(in);
37 }
38 
39 /// parser Units provided as string (used for testing)
40 bool UnitDriver::parse_string(const std::string& input) {
41  std::istringstream iss(input);
42  return parse_stream(iss);
43 }
44 
45 } // namespace parser
46 } // namespace nmodl
nmodl::parser::UnitDriver::lexer
UnitLexer * lexer
pointer to the lexer instance being used
Definition: unit_driver.hpp:42
nmodl
encapsulates code generation backend implementations
Definition: ast_common.hpp:26
unit_driver.hpp
nmodl::parser::UnitDriver::stream_name
std::string stream_name
file or input stream name (used by scanner for position), see todo
Definition: unit_driver.hpp:55
unit_lexer.hpp
nmodl::parser::UnitDriver::parse_string
bool parse_string(const std::string &input)
parser Units provided as string (used for testing)
Definition: unit_driver.cpp:40
nmodl::parser::UnitLexer
Represent Lexer/Scanner class for Units parsing.
Definition: unit_lexer.hpp:49
nmodl::parser::UnitDriver::parser
UnitParser * parser
pointer to the parser instance being used
Definition: unit_driver.hpp:45
nmodl::parser::UnitDriver::parse_file
bool parse_file(const std::string &filename)
parse Units file
Definition: unit_driver.cpp:29
nmodl::parser::UnitDriver::parse_stream
bool parse_stream(std::istream &in)
parse Units file provided as istream
Definition: unit_driver.cpp:18