Bash++
Bash++ compiler internal documentation
BashppParser.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <memory>
9#include <variant>
10#include <stack>
11#include <AST/ASTNode.h>
12#include <AST/Nodes/Nodes.h>
13
14typedef void* yyscan_t;
15
16namespace AST {
17
25 private:
27 std::shared_ptr<AST::Program> m_program = nullptr;
28 bool current_command_can_receive_lvalues = true; // State variable needed by the parser
29
30 bool utf16_mode = false; // Whether to use UTF-16 mode for character counting
32
33 std::string input_file_path = "<stdin>";
34 std::vector<std::string> include_chain;
35
41
42 std::variant<std::string, FILE*, std::monostate> input_source = std::monostate{}; // Can be a file path, FILE*, or string contents
44
45 FILE* input_file = nullptr;
46
47 void _initialize_lexer();
48 void _destroy_lexer();
49 void _parse();
50 public:
51 BashppParser() = default;
52
53 void setUTF16Mode(bool enabled);
54 bool getUTF16Mode() const;
55
56 void setDisplayLexerOutput(bool enabled);
57 bool getDisplayLexerOutput() const;
58
59 void setInputFromFilePath(const std::string& file_path);
60 void setInputFromFilePtr(FILE* file_ptr, const std::string& file_path);
61 void setInputFromStringContents(const std::string& contents);
62
63 void setIncludeChain(const std::vector<std::string>& includes);
64
65 std::shared_ptr<AST::Program> program();
66};
67
68} // namespace AST
void * yyscan_t
Definition BashppParser.h:14
A driver class to wrap around the Bison-generated parser for Bash++. This class manages both the lexe...
Definition BashppParser.h:24
void setInputFromFilePath(const std::string &file_path)
Definition BashppParser.cpp:113
void setInputFromFilePtr(FILE *file_ptr, const std::string &file_path)
Definition BashppParser.cpp:119
void setDisplayLexerOutput(bool enabled)
Definition BashppParser.cpp:106
enum AST::BashppParser::InputType input_type
std::variant< std::string, FILE *, std::monostate > input_source
Definition BashppParser.h:42
std::vector< std::string > include_chain
Definition BashppParser.h:34
bool getUTF16Mode() const
Definition BashppParser.cpp:102
std::shared_ptr< AST::Program > m_program
Definition BashppParser.h:27
void _parse()
Definition BashppParser.cpp:81
void _destroy_lexer()
Definition BashppParser.cpp:71
std::string input_file_path
Definition BashppParser.h:33
std::shared_ptr< AST::Program > program()
Definition BashppParser.cpp:134
BashppParser()=default
bool current_command_can_receive_lvalues
Definition BashppParser.h:28
bool display_lexer_output
Definition BashppParser.h:31
void _initialize_lexer()
Definition BashppParser.cpp:26
void setIncludeChain(const std::vector< std::string > &includes)
Definition BashppParser.cpp:130
void setInputFromStringContents(const std::string &contents)
Definition BashppParser.cpp:125
InputType
Definition BashppParser.h:36
bool getDisplayLexerOutput() const
Definition BashppParser.cpp:109
std::string input_string_contents
Definition BashppParser.h:43
bool utf16_mode
Definition BashppParser.h:30
FILE * input_file
Definition BashppParser.h:45
void setUTF16Mode(bool enabled)
Definition BashppParser.cpp:99
yyscan_t lexer
Definition BashppParser.h:26
Definition AccessModifier.h:8