Line data Source code
1 : #ifndef SINTAX_H
2 : #define SINTAX_H
3 :
4 : #include "lexer.h"
5 : #include <string>
6 :
7 : namespace nicole {
8 :
9 : // Abstract class that represents the sintax of a language
10 : class Sintax {
11 : private:
12 : std::string extension_;
13 :
14 : public:
15 : explicit Sintax(const std::string &extension) noexcept
16 18 : : extension_{extension} {}
17 :
18 18 : virtual ~Sintax() = default;
19 :
20 18 : [[nodiscard]] const std::string &extension() const noexcept {
21 18 : return extension_;
22 18 : }
23 :
24 : [[nodiscard]] virtual const Lexer createLexer() const noexcept = 0;
25 : };
26 :
27 : } // namespace nicole
28 :
29 : #endif
|