diff options
Diffstat (limited to 'include/cru/parse')
-rw-r--r-- | include/cru/parse/Base.hpp | 11 | ||||
-rw-r--r-- | include/cru/parse/Grammar.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/Nonterminal.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/ParsingAlgorithm.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/ParsingAlgorithmContext.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/ParsingContext.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/ParsingTreeNode.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/Production.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/RecursiveDescentAlgorithm.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/RecursiveDescentAlgorithmContext.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/Symbol.hpp | 4 | ||||
-rw-r--r-- | include/cru/parse/Terminal.hpp | 2 | ||||
-rw-r--r-- | include/cru/parse/TokenType.hpp | 4 |
13 files changed, 27 insertions, 12 deletions
diff --git a/include/cru/parse/Base.hpp b/include/cru/parse/Base.hpp new file mode 100644 index 00000000..8f3a05e9 --- /dev/null +++ b/include/cru/parse/Base.hpp @@ -0,0 +1,11 @@ +#pragma once + +#ifdef CRU_PLATFORM_WINDOWS +#ifdef CRU_PARSE_EXPORT_API +#define CRU_PARSE_API __declspec(dllexport) +#else +#define CRU_PARSE_API __declspec(dllimport) +#endif +#else +#define CRU_PARSE_API +#endif diff --git a/include/cru/parse/Grammar.hpp b/include/cru/parse/Grammar.hpp index 606fcc33..8dc1833f 100644 --- a/include/cru/parse/Grammar.hpp +++ b/include/cru/parse/Grammar.hpp @@ -5,7 +5,7 @@ #include <vector> namespace cru::parse { -class Grammar : public Object { +class CRU_PARSE_API Grammar : public Object { public: Grammar(); diff --git a/include/cru/parse/Nonterminal.hpp b/include/cru/parse/Nonterminal.hpp index 1bc6f9ff..b01c7c8a 100644 --- a/include/cru/parse/Nonterminal.hpp +++ b/include/cru/parse/Nonterminal.hpp @@ -2,7 +2,7 @@ #include "Symbol.hpp" namespace cru::parse { -class Nonterminal : public Symbol { +class CRU_PARSE_API Nonterminal : public Symbol { public: Nonterminal(Grammar* grammar, String name); diff --git a/include/cru/parse/ParsingAlgorithm.hpp b/include/cru/parse/ParsingAlgorithm.hpp index acca159e..8f38c0ab 100644 --- a/include/cru/parse/ParsingAlgorithm.hpp +++ b/include/cru/parse/ParsingAlgorithm.hpp @@ -7,7 +7,7 @@ class ParsingAlgorithmContext; // Represents a parsing algorithm. // It does not relate to any specific grammar. // It is used to validate a grammar and create a parsing algorithm context. -class ParsingAlgorithm { +class CRU_PARSE_API ParsingAlgorithm { public: ParsingAlgorithm() = default; diff --git a/include/cru/parse/ParsingAlgorithmContext.hpp b/include/cru/parse/ParsingAlgorithmContext.hpp index f67ccbbc..b959462c 100644 --- a/include/cru/parse/ParsingAlgorithmContext.hpp +++ b/include/cru/parse/ParsingAlgorithmContext.hpp @@ -10,7 +10,7 @@ class ParsingAlgorithm; // A parsing algorithm context contains all data a parsing algorithm needs to // parse for a grammar. It does not relate to any input. For example, it can // contain any state machine. -class ParsingAlgorithmContext { +class CRU_PARSE_API ParsingAlgorithmContext { public: ParsingAlgorithmContext(Grammar* grammar, const ParsingAlgorithm* algorithm); diff --git a/include/cru/parse/ParsingContext.hpp b/include/cru/parse/ParsingContext.hpp index ebb7115a..cfb850b9 100644 --- a/include/cru/parse/ParsingContext.hpp +++ b/include/cru/parse/ParsingContext.hpp @@ -5,7 +5,7 @@ namespace cru::parse { // A parsing context contains all info that a program needs to know when parsing // a input sequence of terminals. -class ParsingContext { +class CRU_PARSE_API ParsingContext { public: ParsingContext(const ParsingAlgorithmContext* parsing_algorithm_context, std::vector<Terminal*> input); diff --git a/include/cru/parse/ParsingTreeNode.hpp b/include/cru/parse/ParsingTreeNode.hpp index d1c3d058..7119ca0b 100644 --- a/include/cru/parse/ParsingTreeNode.hpp +++ b/include/cru/parse/ParsingTreeNode.hpp @@ -4,7 +4,7 @@ #include <vector> namespace cru::parse { -class ParsingTreeNode { +class CRU_PARSE_API ParsingTreeNode { public: ParsingTreeNode(Symbol* symbol, Production* production); diff --git a/include/cru/parse/Production.hpp b/include/cru/parse/Production.hpp index 8a1331b9..cb3c79c0 100644 --- a/include/cru/parse/Production.hpp +++ b/include/cru/parse/Production.hpp @@ -7,7 +7,7 @@ #include <vector> namespace cru::parse { -class Production : public Object { +class CRU_PARSE_API Production : public Object { public: Production(Grammar* grammar, String name, Nonterminal* left, std::vector<Symbol*> right); diff --git a/include/cru/parse/RecursiveDescentAlgorithm.hpp b/include/cru/parse/RecursiveDescentAlgorithm.hpp index c12a84f6..373724ea 100644 --- a/include/cru/parse/RecursiveDescentAlgorithm.hpp +++ b/include/cru/parse/RecursiveDescentAlgorithm.hpp @@ -3,7 +3,7 @@ #include "ParsingAlgorithm.hpp" namespace cru::parse { -class RecursiveDescentAlgorithm : public ParsingAlgorithm { +class CRU_PARSE_API RecursiveDescentAlgorithm : public ParsingAlgorithm { public: RecursiveDescentAlgorithm() = default; diff --git a/include/cru/parse/RecursiveDescentAlgorithmContext.hpp b/include/cru/parse/RecursiveDescentAlgorithmContext.hpp index 1b888da9..b29ee1a1 100644 --- a/include/cru/parse/RecursiveDescentAlgorithmContext.hpp +++ b/include/cru/parse/RecursiveDescentAlgorithmContext.hpp @@ -6,7 +6,7 @@ #include "cru/parse/Terminal.hpp" namespace cru::parse { -class RecursiveDescentAlgorithmContext : public ParsingAlgorithmContext { +class CRU_PARSE_API RecursiveDescentAlgorithmContext : public ParsingAlgorithmContext { public: RecursiveDescentAlgorithmContext(Grammar* grammar, const RecursiveDescentAlgorithm* algorithm); diff --git a/include/cru/parse/Symbol.hpp b/include/cru/parse/Symbol.hpp index e22fb9bc..7404a5e7 100644 --- a/include/cru/parse/Symbol.hpp +++ b/include/cru/parse/Symbol.hpp @@ -1,11 +1,13 @@ #pragma once +#include "Base.hpp" + #include "cru/common/String.hpp" namespace cru::parse { class Grammar; // Base class of Terminal and Nonterminal. -class Symbol : public Object { +class CRU_PARSE_API Symbol : public Object { public: explicit Symbol(Grammar* grammar, String name); diff --git a/include/cru/parse/Terminal.hpp b/include/cru/parse/Terminal.hpp index 8d4a31b6..4ff8f898 100644 --- a/include/cru/parse/Terminal.hpp +++ b/include/cru/parse/Terminal.hpp @@ -2,7 +2,7 @@ #include "Symbol.hpp" namespace cru::parse { -class Terminal : public Symbol { +class CRU_PARSE_API Terminal : public Symbol { public: Terminal(Grammar* grammar, String name); diff --git a/include/cru/parse/TokenType.hpp b/include/cru/parse/TokenType.hpp index 54bdf712..49415d3b 100644 --- a/include/cru/parse/TokenType.hpp +++ b/include/cru/parse/TokenType.hpp @@ -1,9 +1,11 @@ #pragma once +#include "Base.hpp" + #include "cru/common/Base.hpp" #include "cru/common/String.hpp" namespace cru::parse { -class TokenType : public Object { +class CRU_PARSE_API TokenType : public Object { public: explicit TokenType(String name); |