Line data Source code
1 : #ifndef PARSER_H
2 : #define PARSER_H
3 :
4 : #include "../../lexicalAnalysis/sintax.h"
5 : #include "../ast/tree.h"
6 : #include <set>
7 : #include <vector>
8 :
9 : namespace nicole {
10 :
11 : class Parser {
12 : protected:
13 : Lexer lexer_;
14 : mutable TokenStream tkStream_{{}};
15 : mutable std::set<std::filesystem::path> parsedFiles_{};
16 :
17 : public:
18 : explicit Parser(const std::shared_ptr<Sintax> &sintax) noexcept
19 0 : : lexer_{sintax->createLexer()} {}
20 :
21 0 : virtual ~Parser() noexcept = default;
22 :
23 : [[nodiscard]] virtual const std::expected<std::shared_ptr<Tree>, Error>
24 : parse(const std::filesystem::path &entryFile) const noexcept = 0;
25 : };
26 :
27 : } // namespace nicole
28 :
29 : #endif // AST_H
|